@primer-io/react-native 0.15.8 → 0.16.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (75) hide show
  1. package/android/build.gradle +1 -4
  2. package/android/src/main/java/com/primerioreactnative/PrimerCardNumberEditTextManager.kt +83 -0
  3. package/android/src/main/java/com/primerioreactnative/PrimerHeadlessUniversalCheckout.kt +198 -0
  4. package/android/src/main/java/com/primerioreactnative/PrimerRN.kt +3 -7
  5. package/android/src/main/java/com/primerioreactnative/PrimerRNEventListener.kt +1 -0
  6. package/android/src/main/java/com/primerioreactnative/ReactNativePackage.kt +14 -3
  7. package/android/src/main/java/com/primerioreactnative/datamodels/PrimerErrorRN.kt +2 -0
  8. package/android/src/main/java/com/primerioreactnative/huc/assets/AssetsManager.kt +56 -0
  9. package/android/src/main/java/com/primerioreactnative/huc/events/PrimerHeadlessUniversalCheckoutEvent.kt +11 -0
  10. package/android/src/main/java/com/primerioreactnative/huc/extensions/Map.kt +10 -0
  11. package/android/src/main/java/com/primerioreactnative/utils/ErrorHelper.kt +1 -1
  12. package/android/src/main/java/com/primerioreactnative/utils/Keys.kt +7 -0
  13. package/ios/{ReactNative-Bridging-Header.h → Core/ReactNative-Bridging-Header.h} +1 -0
  14. package/ios/Headless Universal Checkout/RNTPrimerCardNumberInputElementManager.m +23 -0
  15. package/ios/Headless Universal Checkout/RNTPrimerHeadlessUniversalCheckout.m +30 -0
  16. package/ios/Headless Universal Checkout/RNTPrimerHeadlessUniversalCheckout.swift +241 -0
  17. package/ios/Headless Universal Checkout/RNTPrimerHeadlessUniversalCheckoutCardFormUIManager.m +14 -0
  18. package/ios/Headless Universal Checkout/RNTPrimerHeadlessUniversalCheckoutCardFormUIManager.swift +113 -0
  19. package/ios/{Pods/Manifest.lock → Podfile.lock} +1 -1
  20. package/lib/commonjs/PrimerInput.js +80 -0
  21. package/lib/commonjs/PrimerInput.js.map +1 -0
  22. package/lib/commonjs/RNTPrimerHeadlessUniversalCheckoutCardFormUIManager.js +14 -0
  23. package/lib/commonjs/RNTPrimerHeadlessUniversalCheckoutCardFormUIManager.js.map +1 -0
  24. package/lib/commonjs/headless_checkout/NativePrimerHeadlessUniversalCheckout.js +110 -0
  25. package/lib/commonjs/headless_checkout/NativePrimerHeadlessUniversalCheckout.js.map +1 -0
  26. package/lib/commonjs/headless_checkout/PrimerHeadlessUniversalCheckout.js +117 -0
  27. package/lib/commonjs/headless_checkout/PrimerHeadlessUniversalCheckout.js.map +1 -0
  28. package/lib/commonjs/headless_checkout/types.js +2 -0
  29. package/lib/commonjs/headless_checkout/types.js.map +1 -0
  30. package/lib/commonjs/index.js +28 -1
  31. package/lib/commonjs/index.js.map +1 -1
  32. package/lib/commonjs/models/primer-callbacks.js +4 -0
  33. package/lib/commonjs/models/primer-config.js +4 -0
  34. package/lib/commonjs/models/primer-settings.js +4 -0
  35. package/lib/commonjs/models/primer.js +4 -0
  36. package/lib/commonjs/utils/index.js +1 -1
  37. package/lib/module/PrimerInput.js +46 -0
  38. package/lib/module/PrimerInput.js.map +1 -0
  39. package/lib/module/RNTPrimerHeadlessUniversalCheckoutCardFormUIManager.js +5 -0
  40. package/lib/module/RNTPrimerHeadlessUniversalCheckoutCardFormUIManager.js.map +1 -0
  41. package/lib/module/headless_checkout/NativePrimerHeadlessUniversalCheckout.js +98 -0
  42. package/lib/module/headless_checkout/NativePrimerHeadlessUniversalCheckout.js.map +1 -0
  43. package/lib/module/headless_checkout/PrimerHeadlessUniversalCheckout.js +100 -0
  44. package/lib/module/headless_checkout/PrimerHeadlessUniversalCheckout.js.map +1 -0
  45. package/lib/module/headless_checkout/types.js +2 -0
  46. package/lib/module/headless_checkout/types.js.map +1 -0
  47. package/lib/module/index.js +4 -3
  48. package/lib/module/index.js.map +1 -1
  49. package/lib/module/models/primer-callbacks.js +1 -1
  50. package/lib/module/models/primer-config.js +1 -1
  51. package/lib/module/models/primer-settings.js +1 -1
  52. package/lib/module/models/primer.js +1 -1
  53. package/lib/typescript/PrimerInput.d.ts +15 -0
  54. package/lib/typescript/RNTPrimerHeadlessUniversalCheckoutCardFormUIManager.d.ts +1 -0
  55. package/lib/typescript/headless_checkout/NativePrimerHeadlessUniversalCheckout.d.ts +13 -0
  56. package/lib/typescript/headless_checkout/PrimerHeadlessUniversalCheckout.d.ts +13 -0
  57. package/lib/typescript/headless_checkout/types.d.ts +16 -0
  58. package/lib/typescript/index.d.ts +3 -1
  59. package/package.json +1 -1
  60. package/primer-io-react-native.podspec +1 -1
  61. package/src/PrimerInput.tsx +73 -0
  62. package/src/RNTPrimerHeadlessUniversalCheckoutCardFormUIManager.tsx +2 -0
  63. package/src/headless_checkout/NativePrimerHeadlessUniversalCheckout.ts +132 -0
  64. package/src/headless_checkout/PrimerHeadlessUniversalCheckout.ts +140 -0
  65. package/src/headless_checkout/types.ts +18 -0
  66. package/src/index.tsx +3 -2
  67. package/ios/Pods/Pods.xcodeproj/project.pbxproj +0 -344
  68. package/ios/Pods/Pods.xcodeproj/xcuserdata/aladintaleb.xcuserdatad/xcschemes/Pods-ReactNative.xcscheme +0 -60
  69. package/ios/Pods/Pods.xcodeproj/xcuserdata/aladintaleb.xcuserdatad/xcschemes/xcschememanagement.plist +0 -16
  70. package/ios/Pods/Target Support Files/Pods-ReactNative/Pods-ReactNative-acknowledgements.markdown +0 -3
  71. package/ios/Pods/Target Support Files/Pods-ReactNative/Pods-ReactNative-acknowledgements.plist +0 -29
  72. package/ios/Pods/Target Support Files/Pods-ReactNative/Pods-ReactNative-dummy.m +0 -5
  73. package/ios/Pods/Target Support Files/Pods-ReactNative/Pods-ReactNative.debug.xcconfig +0 -8
  74. package/ios/Pods/Target Support Files/Pods-ReactNative/Pods-ReactNative.release.xcconfig +0 -8
  75. package/ios/ReactNative.xcworkspace/xcuserdata/aladintaleb.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
@@ -0,0 +1,13 @@
1
+ import type { PrimerSettings } from 'src/models/primer-settings';
2
+ import type { PrimerHeadlessUniversalCheckoutStartResponse, PrimerHeadlessUniversalCheckoutCallbacks } from './types';
3
+ declare class PrimerHeadlessUniversalCheckoutClass {
4
+ constructor();
5
+ private configureListeners;
6
+ startWithClientToken(clientToken: string, settings: PrimerSettings & PrimerHeadlessUniversalCheckoutCallbacks): Promise<PrimerHeadlessUniversalCheckoutStartResponse>;
7
+ showPaymentMethod(paymentMethod: string): Promise<void>;
8
+ resumeWithClientToken(resumeToken: string): void;
9
+ getAssetForPaymentMethod(paymentMethodType: string, assetType: 'logo' | 'icon'): Promise<string>;
10
+ getAssetForCardNetwork(cardNetwork: string, assetType: 'logo' | 'icon'): Promise<string>;
11
+ }
12
+ declare const PrimerHeadlessUniversalCheckout: PrimerHeadlessUniversalCheckoutClass;
13
+ export default PrimerHeadlessUniversalCheckout;
@@ -0,0 +1,16 @@
1
+ export interface PrimerHeadlessUniversalCheckoutStartResponse {
2
+ paymentMethodTypes: string[];
3
+ }
4
+ export interface PrimerError {
5
+ errorId: string;
6
+ description: string;
7
+ recoverySuggestion?: string;
8
+ }
9
+ export interface PrimerHeadlessUniversalCheckoutCallbacks {
10
+ onPreparationStarted?: () => void;
11
+ onPaymentMethodPresented?: () => void;
12
+ onTokenizeStart?: () => void;
13
+ onTokenizeSuccess?: (paymentMethod: any) => void;
14
+ onResumeSuccess?: (resumeToken: string) => void;
15
+ onFailure?: (error: PrimerError) => void;
16
+ }
@@ -1,3 +1,5 @@
1
+ import PrimerHeadlessUniversalCheckout from './headless_checkout/PrimerHeadlessUniversalCheckout';
1
2
  import type { IPrimer } from './models/primer';
3
+ export * from './PrimerInput';
2
4
  declare const Primer: IPrimer;
3
- export { Primer };
5
+ export { Primer, PrimerHeadlessUniversalCheckout as HeadlessUniversalCheckout };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@primer-io/react-native",
3
- "version": "0.15.8",
3
+ "version": "0.16.2",
4
4
  "description": "Primer SDK for RN",
5
5
  "main": "lib/commonjs/index",
6
6
  "module": "lib/module/index",
@@ -17,5 +17,5 @@ Pod::Spec.new do |s|
17
17
  s.source_files = "ios/**/*.{h,m,mm,swift}"
18
18
 
19
19
  s.dependency "React-Core"
20
- s.dependency "PrimerSDK", "1.35.0"
20
+ s.dependency "PrimerSDK", "1.36.1"
21
21
  end
@@ -0,0 +1,73 @@
1
+ import { PrimerHeadlessUniversalCheckoutCardFormUIManager } from './RNTPrimerHeadlessUniversalCheckoutCardFormUIManager';
2
+ import React, { useEffect, useRef } from 'react';
3
+ import { NativeModules, requireNativeComponent, ViewProps } from 'react-native';
4
+
5
+
6
+ // PrimerCardNumberEditText
7
+ export const PrimerCardNumberEditTextRaw = requireNativeComponent<{}>(
8
+ 'PrimerCardNumberEditText'
9
+ );
10
+
11
+ type PrimerCardNumberEditTextProps = ViewProps;
12
+
13
+ const { PrimerRN } = NativeModules;
14
+
15
+ export const PrimerCardNumberEditText: React.FC<PrimerCardNumberEditTextProps> = (props) => {
16
+ const ref = useRef(React.createRef<any>());
17
+
18
+ useEffect(() => {
19
+ const tag = ref.current.current._nativeTag;
20
+ PrimerHeadlessUniversalCheckoutCardFormUIManager.addInput(tag);
21
+ return () => PrimerRN.removeInput(tag);
22
+ }, []);
23
+
24
+ const rawComponent = (
25
+ <PrimerCardNumberEditTextRaw ref={ref.current} {...props} />
26
+ );
27
+
28
+ return rawComponent;
29
+ };
30
+
31
+ // PrimerCardholderNameEditText
32
+ export const PrimerCardholderNameEditTextRaw = requireNativeComponent<{}>(
33
+ 'PrimerCardholderNameEditText'
34
+ );
35
+
36
+ type PrimerCardholderNameEditTextProps = ViewProps;
37
+
38
+ export const PrimerCardholderNameEditText: React.FC<PrimerCardholderNameEditTextProps> = (
39
+ props
40
+ ) => {
41
+ const ref = useRef(React.createRef<any>());
42
+
43
+ useEffect(() => {
44
+ const tag = ref.current.current._nativeTag;
45
+ PrimerRN.addInput(tag);
46
+ return () => PrimerRN.removeInput(tag);
47
+ }, []);
48
+ return <PrimerCardholderNameEditTextRaw ref={ref.current} {...props} />;
49
+ };
50
+
51
+ // PrimerExpiryEditText
52
+ export const PrimerExpiryEditTextRaw = requireNativeComponent<{}>(
53
+ 'PrimerExpiryEditText'
54
+ );
55
+
56
+ type PrimerExpiryEditTextProps = ViewProps;
57
+
58
+ export const PrimerExpiryEditText: React.FC<PrimerExpiryEditTextProps> = (
59
+ props
60
+ ) => {
61
+ return <PrimerExpiryEditTextRaw {...props} />;
62
+ };
63
+
64
+ // cvv
65
+ export const PrimerCvvEditTextRaw = requireNativeComponent<{}>(
66
+ 'PrimerCvvEditText'
67
+ );
68
+
69
+ type PrimerCvvEditTextProps = ViewProps;
70
+
71
+ export const PrimerCvvEditText: React.FC<PrimerCvvEditTextProps> = (props) => {
72
+ return <PrimerCvvEditTextRaw {...props} />;
73
+ };
@@ -0,0 +1,2 @@
1
+ import { NativeModules } from 'react-native';
2
+ export const { PrimerHeadlessUniversalCheckoutCardFormUIManager } = NativeModules;
@@ -0,0 +1,132 @@
1
+ import { NativeEventEmitter, NativeModules } from 'react-native';
2
+ import type { PrimerSettings } from 'src/models/primer-settings';
3
+ import RNPrimer from '../RNPrimer';
4
+ import type { PrimerHeadlessUniversalCheckoutCallbacks } from './types';
5
+
6
+ const { PrimerHeadlessUniversalCheckout } = NativeModules;
7
+
8
+ const eventEmitter = new NativeEventEmitter(PrimerHeadlessUniversalCheckout);
9
+
10
+ type EventType =
11
+ | 'preparationStarted'
12
+ | 'paymentMethodPresented'
13
+ | 'tokenizationStarted'
14
+ | 'tokenizationSucceeded'
15
+ | 'resume'
16
+ | 'error';
17
+
18
+ let primerSettings: (PrimerSettings & PrimerHeadlessUniversalCheckoutCallbacks) | null = null;
19
+
20
+ const NativePrimerHeadlessUniversalCheckout = {
21
+ ///////////////////////////////////////////
22
+ // Event Emitter
23
+ ///////////////////////////////////////////
24
+ addListener: (eventType: EventType, listener: (...args: any[]) => any) => {
25
+ eventEmitter.addListener(eventType, listener);
26
+ },
27
+
28
+ removeListener: (eventType: EventType, listener: (...args: any[]) => any) => {
29
+ eventEmitter.removeListener(eventType, listener);
30
+ },
31
+
32
+ removeAllListenersForEvent(eventType: EventType) {
33
+ eventEmitter.removeAllListeners(eventType);
34
+ },
35
+
36
+ removeAllListeners() {
37
+ eventEmitter.removeAllListeners('preparationStarted');
38
+ eventEmitter.removeAllListeners('paymentMethodPresented');
39
+ eventEmitter.removeAllListeners('tokenizationStarted');
40
+ eventEmitter.removeAllListeners('tokenizationSucceeded');
41
+ eventEmitter.removeAllListeners('resume');
42
+ eventEmitter.removeAllListeners('error');
43
+ },
44
+
45
+ ///////////////////////////////////////////
46
+ // Native API
47
+ ///////////////////////////////////////////
48
+ getAssetForPaymentMethod: (
49
+ paymentMethodType: string,
50
+ assetType: 'logo' | 'icon'
51
+ ): Promise<string> => {
52
+ return new Promise((resolve, reject) => {
53
+ try {
54
+ PrimerHeadlessUniversalCheckout.getAssetForPaymentMethodType(
55
+ paymentMethodType,
56
+ assetType,
57
+ (err: Error) => {
58
+ reject(err);
59
+ },
60
+ (url: string) => {
61
+ resolve(url);
62
+ }
63
+ );
64
+ } catch (e) {
65
+ reject(e);
66
+ }
67
+ });
68
+ },
69
+
70
+ getAssetForCardNetwork: (
71
+ cardNetwork: string,
72
+ assetType: 'logo' | 'icon'
73
+ ): Promise<string> => {
74
+ return new Promise((resolve, reject) => {
75
+ try {
76
+ PrimerHeadlessUniversalCheckout.getAssetForPaymentMethodType(
77
+ cardNetwork,
78
+ assetType,
79
+ (err: Error) => {
80
+ reject(err);
81
+ },
82
+ (url: string) => {
83
+ resolve(url);
84
+ }
85
+ );
86
+ } catch (e) {
87
+ reject(e);
88
+ }
89
+ });
90
+ },
91
+
92
+ startWithClientToken(clientToken: string, settings: any): Promise<any> {
93
+ primerSettings = settings;
94
+
95
+ return new Promise((resolve, reject) => {
96
+ PrimerHeadlessUniversalCheckout.startWithClientToken(
97
+ clientToken,
98
+ JSON.stringify(settings),
99
+ (err: Error) => {
100
+ console.error(err);
101
+ reject(err);
102
+ },
103
+ (paymentMethodTypes: string[]) => {
104
+ resolve({ paymentMethodTypes });
105
+ }
106
+ );
107
+ });
108
+ },
109
+
110
+ showPaymentMethod: async (paymentMethod: string) => {
111
+ if (primerSettings) {
112
+ let implementedRNCallbacks: any = {
113
+ isTokenAddedToVaultImplemented: false,
114
+ isOnResumeSuccessImplemented: (primerSettings.onResumeSuccess !== undefined),
115
+ isOnResumeErrorImplemented: (primerSettings.onFailure !== undefined),
116
+ isOnCheckoutDismissedImplemented: false,
117
+ isCheckoutFailedImplemented: (primerSettings.onFailure !== undefined),
118
+ isClientSessionActionsImplemented: false
119
+ };
120
+
121
+ await RNPrimer.setImplementedRNCallbacks(implementedRNCallbacks);
122
+ }
123
+
124
+ PrimerHeadlessUniversalCheckout.showPaymentMethod(paymentMethod);
125
+ },
126
+
127
+ resumeWithClientToken(resumeToken: string) {
128
+ PrimerHeadlessUniversalCheckout.resumeWithClientToken(resumeToken);
129
+ }
130
+ };
131
+
132
+ export default NativePrimerHeadlessUniversalCheckout;
@@ -0,0 +1,140 @@
1
+ import type { PaymentInstrumentToken } from 'src/models/payment-instrument-token';
2
+ import type { PrimerError } from 'src/models/primer-error';
3
+ import type { PrimerSettings } from 'src/models/primer-settings';
4
+ import NativePrimerHeadlessUniversalCheckout from './NativePrimerHeadlessUniversalCheckout';
5
+ import type {
6
+ PrimerHeadlessUniversalCheckoutStartResponse,
7
+ PrimerHeadlessUniversalCheckoutCallbacks,
8
+ } from './types';
9
+
10
+ let callbacks: PrimerHeadlessUniversalCheckoutCallbacks | undefined;
11
+
12
+ class PrimerHeadlessUniversalCheckoutClass {
13
+
14
+ ///////////////////////////////////////////
15
+ // Init
16
+ ///////////////////////////////////////////
17
+ constructor() {
18
+
19
+ }
20
+
21
+ private configureListeners() {
22
+ NativePrimerHeadlessUniversalCheckout.removeAllListeners();
23
+
24
+ NativePrimerHeadlessUniversalCheckout.addListener(
25
+ 'preparationStarted',
26
+ () => {
27
+ console.log('preparationStarted');
28
+ callbacks?.onPreparationStarted?.();
29
+ }
30
+ );
31
+
32
+ NativePrimerHeadlessUniversalCheckout.addListener(
33
+ 'paymentMethodPresented',
34
+ () => {
35
+ console.log('paymentMethodPresented');
36
+ callbacks?.onPaymentMethodPresented?.();
37
+ }
38
+ );
39
+
40
+ NativePrimerHeadlessUniversalCheckout.addListener(
41
+ 'tokenizationStarted',
42
+ () => {
43
+ console.log('tokenizationStarted');
44
+ callbacks?.onTokenizeStart?.();
45
+ }
46
+ );
47
+
48
+ NativePrimerHeadlessUniversalCheckout.addListener(
49
+ 'tokenizationSucceeded',
50
+ (data) => {
51
+ console.log('tokenizationSucceeded', data);
52
+
53
+ if (data.paymentMethodToken) {
54
+ const paymentMethodTokenObj: PaymentInstrumentToken = JSON.parse(
55
+ data.paymentMethodToken
56
+ );
57
+ callbacks?.onTokenizeSuccess?.(paymentMethodTokenObj);
58
+ } else {
59
+ const err: PrimerError = {
60
+ name: 'ParseJsonFailed',
61
+ description: 'Failed to parse payment method token',
62
+ };
63
+ //@ts-ignore
64
+ callbacks?.onFailure?.(err);
65
+ }
66
+ }
67
+ );
68
+
69
+ NativePrimerHeadlessUniversalCheckout.addListener('resume', (data) => {
70
+ console.log('resume', data);
71
+ callbacks?.onResumeSuccess?.(data.resumeToken);
72
+ });
73
+
74
+ NativePrimerHeadlessUniversalCheckout.addListener('error', (data) => {
75
+ console.log('error', data);
76
+ callbacks?.onFailure?.(data.error);
77
+ });
78
+ }
79
+
80
+ ///////////////////////////////////////////
81
+ // API
82
+ ///////////////////////////////////////////
83
+ startWithClientToken(
84
+ clientToken: string,
85
+ settings: PrimerSettings & PrimerHeadlessUniversalCheckoutCallbacks
86
+ ): Promise<PrimerHeadlessUniversalCheckoutStartResponse> {
87
+ // Copy callback
88
+ callbacks = {
89
+ onPreparationStarted: settings.onPreparationStarted,
90
+ onPaymentMethodPresented: settings.onPaymentMethodPresented,
91
+ onTokenizeStart: settings.onTokenizeStart,
92
+ onTokenizeSuccess: settings.onTokenizeSuccess,
93
+ onResumeSuccess: settings.onResumeSuccess,
94
+ onFailure: settings.onFailure,
95
+ };
96
+
97
+ return NativePrimerHeadlessUniversalCheckout.startWithClientToken(
98
+ clientToken,
99
+ settings
100
+ );
101
+ }
102
+
103
+ showPaymentMethod(paymentMethod: string) {
104
+ this.configureListeners();
105
+
106
+ return NativePrimerHeadlessUniversalCheckout.showPaymentMethod(
107
+ paymentMethod
108
+ );
109
+ }
110
+
111
+ resumeWithClientToken(resumeToken: string) {
112
+ return NativePrimerHeadlessUniversalCheckout.resumeWithClientToken(
113
+ resumeToken
114
+ );
115
+ }
116
+
117
+ getAssetForPaymentMethod(
118
+ paymentMethodType: string,
119
+ assetType: 'logo' | 'icon'
120
+ ): Promise<string> {
121
+ return NativePrimerHeadlessUniversalCheckout.getAssetForPaymentMethod(
122
+ paymentMethodType,
123
+ assetType
124
+ );
125
+ }
126
+
127
+ getAssetForCardNetwork(
128
+ cardNetwork: string,
129
+ assetType: 'logo' | 'icon'
130
+ ): Promise<string> {
131
+ return NativePrimerHeadlessUniversalCheckout.getAssetForCardNetwork(
132
+ cardNetwork,
133
+ assetType
134
+ );
135
+ }
136
+ }
137
+
138
+ const PrimerHeadlessUniversalCheckout = new PrimerHeadlessUniversalCheckoutClass();
139
+
140
+ export default PrimerHeadlessUniversalCheckout;
@@ -0,0 +1,18 @@
1
+ export interface PrimerHeadlessUniversalCheckoutStartResponse {
2
+ paymentMethodTypes: string[];
3
+ }
4
+
5
+ export interface PrimerError {
6
+ errorId: string;
7
+ description: string;
8
+ recoverySuggestion?: string;
9
+ }
10
+
11
+ export interface PrimerHeadlessUniversalCheckoutCallbacks {
12
+ onPreparationStarted?: () => void;
13
+ onPaymentMethodPresented?: () => void;
14
+ onTokenizeStart?: () => void;
15
+ onTokenizeSuccess?: (paymentMethod: any) => void;
16
+ onResumeSuccess?: (resumeToken: string) => void;
17
+ onFailure?: (error: PrimerError) => void;
18
+ }
package/src/index.tsx CHANGED
@@ -1,7 +1,8 @@
1
+ import PrimerHeadlessUniversalCheckout from './headless_checkout/PrimerHeadlessUniversalCheckout';
1
2
  import type { IPrimer } from './models/primer';
2
3
  import { PrimerNativeMapping } from './Primer';
3
- // import type { IPrimerConfig as PrimerConfig } from './models/primer-config';
4
+ export * from './PrimerInput';
4
5
 
5
6
  const Primer: IPrimer = PrimerNativeMapping;
6
7
 
7
- export { Primer };
8
+ export { Primer, PrimerHeadlessUniversalCheckout as HeadlessUniversalCheckout };