@onramper/onramper-react-native 1.2.2 → 1.3.1

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 (96) hide show
  1. package/CHANGELOG.md +249 -0
  2. package/README.md +64 -4
  3. package/ios/Frameworks/OnramperSDK.xcframework/ios-arm64/OnramperSDK.framework/Modules/OnramperSDK.swiftmodule/arm64-apple-ios.swiftdoc +0 -0
  4. package/ios/Frameworks/OnramperSDK.xcframework/ios-arm64/OnramperSDK.framework/Modules/OnramperSDK.swiftmodule/arm64-apple-ios.swiftinterface +110 -4
  5. package/ios/Frameworks/OnramperSDK.xcframework/ios-arm64/OnramperSDK.framework/OnramperSDK +0 -0
  6. package/ios/Frameworks/OnramperSDK.xcframework/ios-arm64/dSYMs/OnramperSDK.framework.dSYM/Contents/Resources/DWARF/OnramperSDK +0 -0
  7. package/ios/Frameworks/OnramperSDK.xcframework/ios-arm64/dSYMs/OnramperSDK.framework.dSYM/Contents/Resources/Relocations/aarch64/OnramperSDK.yml +3562 -2684
  8. package/ios/Frameworks/OnramperSDK.xcframework/ios-arm64_x86_64-simulator/OnramperSDK.framework/Modules/OnramperSDK.swiftmodule/arm64-apple-ios-simulator.swiftdoc +0 -0
  9. package/ios/Frameworks/OnramperSDK.xcframework/ios-arm64_x86_64-simulator/OnramperSDK.framework/Modules/OnramperSDK.swiftmodule/arm64-apple-ios-simulator.swiftinterface +110 -4
  10. package/ios/Frameworks/OnramperSDK.xcframework/ios-arm64_x86_64-simulator/OnramperSDK.framework/Modules/OnramperSDK.swiftmodule/x86_64-apple-ios-simulator.swiftdoc +0 -0
  11. package/ios/Frameworks/OnramperSDK.xcframework/ios-arm64_x86_64-simulator/OnramperSDK.framework/Modules/OnramperSDK.swiftmodule/x86_64-apple-ios-simulator.swiftinterface +110 -4
  12. package/ios/Frameworks/OnramperSDK.xcframework/ios-arm64_x86_64-simulator/OnramperSDK.framework/OnramperSDK +0 -0
  13. package/ios/Frameworks/OnramperSDK.xcframework/ios-arm64_x86_64-simulator/dSYMs/OnramperSDK.framework.dSYM/Contents/Resources/DWARF/OnramperSDK +0 -0
  14. package/ios/Frameworks/OnramperSDK.xcframework/ios-arm64_x86_64-simulator/dSYMs/OnramperSDK.framework.dSYM/Contents/Resources/Relocations/aarch64/OnramperSDK.yml +3562 -2684
  15. package/ios/Frameworks/OnramperSDK.xcframework/ios-arm64_x86_64-simulator/dSYMs/OnramperSDK.framework.dSYM/Contents/Resources/Relocations/x86_64/OnramperSDK.yml +3525 -2651
  16. package/ios/HybridOnramperCheckoutButton.swift +77 -3
  17. package/ios/HybridOnramperNitro.swift +142 -78
  18. package/ios/OnramperSDKBridge.swift +19 -2
  19. package/ios/PreparedIntentRegistry.swift +124 -6
  20. package/ios/SDKLogRelay.swift +41 -0
  21. package/lib/commonjs/CheckoutButton.js +34 -0
  22. package/lib/commonjs/CheckoutButton.js.map +1 -0
  23. package/lib/commonjs/OnramperClient.js +81 -12
  24. package/lib/commonjs/OnramperClient.js.map +1 -1
  25. package/lib/commonjs/errors.js +19 -5
  26. package/lib/commonjs/errors.js.map +1 -1
  27. package/lib/commonjs/generated/OnramperCheckoutButtonConfig.json +1 -0
  28. package/lib/module/CheckoutButton.js +30 -0
  29. package/lib/module/CheckoutButton.js.map +1 -0
  30. package/lib/module/OnramperClient.js +81 -12
  31. package/lib/module/OnramperClient.js.map +1 -1
  32. package/lib/module/errors.js +19 -5
  33. package/lib/module/errors.js.map +1 -1
  34. package/lib/module/generated/OnramperCheckoutButtonConfig.json +1 -0
  35. package/lib/typescript/commonjs/src/CheckoutButton.d.ts +20 -0
  36. package/lib/typescript/commonjs/src/CheckoutButton.d.ts.map +1 -0
  37. package/lib/typescript/commonjs/src/OnramperClient.d.ts +10 -1
  38. package/lib/typescript/commonjs/src/OnramperClient.d.ts.map +1 -1
  39. package/lib/typescript/commonjs/src/errors.d.ts +6 -1
  40. package/lib/typescript/commonjs/src/errors.d.ts.map +1 -1
  41. package/lib/typescript/commonjs/src/events.d.ts +10 -0
  42. package/lib/typescript/commonjs/src/events.d.ts.map +1 -1
  43. package/lib/typescript/commonjs/src/index.d.ts +1 -1
  44. package/lib/typescript/commonjs/src/index.d.ts.map +1 -1
  45. package/lib/typescript/commonjs/src/specs/OnramperCheckoutButton.nitro.d.ts +6 -0
  46. package/lib/typescript/commonjs/src/specs/OnramperCheckoutButton.nitro.d.ts.map +1 -1
  47. package/lib/typescript/commonjs/src/specs/OnramperNitro.nitro.d.ts +4 -0
  48. package/lib/typescript/commonjs/src/specs/OnramperNitro.nitro.d.ts.map +1 -1
  49. package/lib/typescript/commonjs/src/types.d.ts +32 -3
  50. package/lib/typescript/commonjs/src/types.d.ts.map +1 -1
  51. package/lib/typescript/module/src/CheckoutButton.d.ts +20 -0
  52. package/lib/typescript/module/src/CheckoutButton.d.ts.map +1 -0
  53. package/lib/typescript/module/src/OnramperClient.d.ts +10 -1
  54. package/lib/typescript/module/src/OnramperClient.d.ts.map +1 -1
  55. package/lib/typescript/module/src/errors.d.ts +6 -1
  56. package/lib/typescript/module/src/errors.d.ts.map +1 -1
  57. package/lib/typescript/module/src/events.d.ts +10 -0
  58. package/lib/typescript/module/src/events.d.ts.map +1 -1
  59. package/lib/typescript/module/src/index.d.ts +1 -1
  60. package/lib/typescript/module/src/index.d.ts.map +1 -1
  61. package/lib/typescript/module/src/specs/OnramperCheckoutButton.nitro.d.ts +6 -0
  62. package/lib/typescript/module/src/specs/OnramperCheckoutButton.nitro.d.ts.map +1 -1
  63. package/lib/typescript/module/src/specs/OnramperNitro.nitro.d.ts +4 -0
  64. package/lib/typescript/module/src/specs/OnramperNitro.nitro.d.ts.map +1 -1
  65. package/lib/typescript/module/src/types.d.ts +32 -3
  66. package/lib/typescript/module/src/types.d.ts.map +1 -1
  67. package/nitrogen/generated/ios/OnramperReactNative-Swift-Cxx-Bridge.cpp +11 -3
  68. package/nitrogen/generated/ios/OnramperReactNative-Swift-Cxx-Bridge.hpp +44 -7
  69. package/nitrogen/generated/ios/c++/HybridOnramperCheckoutButtonSpecSwift.hpp +9 -0
  70. package/nitrogen/generated/ios/c++/HybridOnramperNitroSpecSwift.hpp +11 -2
  71. package/nitrogen/generated/ios/c++/views/HybridOnramperCheckoutButtonComponent.mm +5 -0
  72. package/nitrogen/generated/ios/swift/Func_void_double.swift +46 -0
  73. package/nitrogen/generated/ios/swift/Func_void_std__string.swift +5 -5
  74. package/nitrogen/generated/ios/swift/HybridOnramperCheckoutButtonSpec.swift +1 -0
  75. package/nitrogen/generated/ios/swift/HybridOnramperCheckoutButtonSpec_cxx.swift +32 -0
  76. package/nitrogen/generated/ios/swift/HybridOnramperNitroSpec.swift +2 -1
  77. package/nitrogen/generated/ios/swift/HybridOnramperNitroSpec_cxx.swift +32 -11
  78. package/nitrogen/generated/ios/swift/OnramperNitroConfig.swift +16 -6
  79. package/nitrogen/generated/shared/c++/HybridOnramperCheckoutButtonSpec.cpp +2 -0
  80. package/nitrogen/generated/shared/c++/HybridOnramperCheckoutButtonSpec.hpp +4 -0
  81. package/nitrogen/generated/shared/c++/HybridOnramperNitroSpec.cpp +2 -0
  82. package/nitrogen/generated/shared/c++/HybridOnramperNitroSpec.hpp +3 -2
  83. package/nitrogen/generated/shared/c++/OnramperNitroConfig.hpp +10 -2
  84. package/nitrogen/generated/shared/c++/views/HybridOnramperCheckoutButtonComponent.cpp +11 -0
  85. package/nitrogen/generated/shared/c++/views/HybridOnramperCheckoutButtonComponent.hpp +3 -2
  86. package/nitrogen/generated/shared/json/OnramperCheckoutButtonConfig.json +1 -0
  87. package/package.json +5 -2
  88. package/src/CheckoutButton.ts +28 -0
  89. package/src/OnramperClient.ts +82 -9
  90. package/src/errors.ts +29 -6
  91. package/src/events.ts +5 -0
  92. package/src/generated/OnramperCheckoutButtonConfig.json +1 -0
  93. package/src/index.ts +3 -0
  94. package/src/specs/OnramperCheckoutButton.nitro.ts +6 -0
  95. package/src/specs/OnramperNitro.nitro.ts +5 -0
  96. package/src/types.ts +36 -3
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
 
3
3
  import { createElement } from 'react';
4
- import { OnramperCheckoutButtonView } from "./OnramperCheckoutButtonView.js";
4
+ import { CheckoutButton } from "./CheckoutButton.js";
5
5
  import { createOnramperNative } from "./OnramperNative.js";
6
6
  import { OnramperError } from "./errors.js";
7
7
  /**
@@ -11,6 +11,18 @@ import { OnramperError } from "./errors.js";
11
11
  * unions, then fanned out to any number of listeners.
12
12
  */
13
13
  export class OnramperClient {
14
+ /**
15
+ * Version of the native Onramper iOS SDK loaded by this app (not the RN
16
+ * package version). No client configuration or session is required. iOS only.
17
+ */
18
+ static get sdkVersion() {
19
+ const native = createOnramperNative();
20
+ try {
21
+ return native.sdkVersion;
22
+ } finally {
23
+ native.dispose();
24
+ }
25
+ }
14
26
  state = {
15
27
  kind: 'idle'
16
28
  };
@@ -26,9 +38,23 @@ export class OnramperClient {
26
38
  // Resolved when the constructor-issued configure() completes. Public methods
27
39
  // that need the native client await this first.
28
40
 
41
+ destroyed = false;
29
42
  constructor(config) {
43
+ if (config.logHandler) {
44
+ const handler = config.logHandler;
45
+ this.native.setLogListener(json => {
46
+ if (this.destroyed) return;
47
+ try {
48
+ handler(JSON.parse(json));
49
+ } catch {
50
+ // Diagnostics must never interrupt checkout; do not log callback data.
51
+ console.warn('Onramper logHandler failed.');
52
+ }
53
+ });
54
+ }
30
55
  // Single native state callback → update the mirror + fan out to listeners.
31
56
  this.native.setStateListener(json => {
57
+ if (this.destroyed) return;
32
58
  const s = JSON.parse(json);
33
59
  this.state = s;
34
60
  if (s.kind === 'failed') this.lastError = OnramperError.from(s.error);
@@ -38,6 +64,7 @@ export class OnramperClient {
38
64
  // Single native checkout-event callback → keep the transaction ID mirror
39
65
  // synchronized at finalization, then fan out to checkout listeners.
40
66
  this.native.setEventListener(json => {
67
+ if (this.destroyed) return;
41
68
  const e = JSON.parse(json);
42
69
  if (e.type === 'checkoutFinalized') {
43
70
  this.updateCurrentTransactionId(e.response.onramperTransactionId);
@@ -45,6 +72,7 @@ export class OnramperClient {
45
72
  for (const fn of this.eventListeners) fn(e);
46
73
  });
47
74
  this.native.setTransactionIdListener(transactionId => {
75
+ if (this.destroyed) return;
48
76
  // The SDK transiently publishes nil while re-preparing after the payment
49
77
  // sheet is dismissed. The finalized transaction ID remains durable across
50
78
  // that attempt change; only explicit reset()/signOut() clear the JS mirror.
@@ -55,7 +83,9 @@ export class OnramperClient {
55
83
  // Nitro stores the async callback natively and awaits it directly — no
56
84
  // event round-trip needed.
57
85
  this.native.setSessionExpirationHandler(async () => {
86
+ this.assertActive();
58
87
  const creds = await config.onSessionExpired();
88
+ this.assertActive();
59
89
  return {
60
90
  sessionId: creds.sessionId,
61
91
  sessionToken: creds.sessionToken
@@ -66,20 +96,33 @@ export class OnramperClient {
66
96
  clientId: config.clientId,
67
97
  environment: config.environment,
68
98
  theme: config.theme ?? 'system',
69
- logLevel: config.logLevel ?? 'off'
99
+ logLevel: config.logLevel ?? 'off',
100
+ isEventLoggingEnabled: config.isEventLoggingEnabled ?? false,
101
+ isEventConsoleLoggingEnabled: config.isEventConsoleLoggingEnabled ?? false
70
102
  }).catch(e => {
71
103
  const err = OnramperError.from(e);
72
- this.lastError = err;
104
+ if (!this.destroyed) this.lastError = err;
73
105
  throw err;
74
106
  });
75
107
  // Swallow the unhandled-rejection warning when no one awaits .configured
76
108
  // before calling initialize(). The error still surfaces via initialize().
77
109
  this.configured.catch(() => undefined);
78
110
  }
111
+ assertActive() {
112
+ if (this.destroyed) {
113
+ throw new OnramperError({
114
+ code: 'clientDestroyed',
115
+ message: 'This OnramperClient has been destroyed. Create a new client before making SDK calls.',
116
+ userMessage: 'This checkout session has ended. Please reopen checkout.'
117
+ });
118
+ }
119
+ }
79
120
  updateCurrentTransactionId(next) {
121
+ if (this.destroyed) return;
80
122
  if (next === this.currentTransactionId) return;
81
123
  this.currentTransactionId = next;
82
124
  for (const fn of [...this.transactionIdListeners]) {
125
+ if (this.destroyed) break;
83
126
  try {
84
127
  fn(next);
85
128
  } catch (error) {
@@ -89,18 +132,26 @@ export class OnramperClient {
89
132
  }
90
133
  async initialize(creds) {
91
134
  try {
135
+ this.assertActive();
92
136
  await this.configured;
137
+ this.assertActive();
93
138
  await this.native.initialize(creds.sessionId, creds.sessionToken);
139
+ this.assertActive();
94
140
  } catch (e) {
141
+ this.assertActive();
95
142
  throw OnramperError.from(e);
96
143
  }
97
144
  }
98
145
  async reset() {
99
146
  try {
147
+ this.assertActive();
100
148
  await this.configured;
149
+ this.assertActive();
101
150
  await this.native.reset();
151
+ this.assertActive();
102
152
  this.updateCurrentTransactionId(null);
103
153
  } catch (e) {
154
+ this.assertActive();
104
155
  throw OnramperError.from(e);
105
156
  }
106
157
  }
@@ -113,10 +164,14 @@ export class OnramperClient {
113
164
  */
114
165
  async signOut() {
115
166
  try {
167
+ this.assertActive();
116
168
  await this.configured;
169
+ this.assertActive();
117
170
  await this.native.signOut();
171
+ this.assertActive();
118
172
  this.updateCurrentTransactionId(null);
119
173
  } catch (e) {
174
+ this.assertActive();
120
175
  throw OnramperError.from(e);
121
176
  }
122
177
  }
@@ -125,6 +180,8 @@ export class OnramperClient {
125
180
  * Fetches checkout requirements + quote and returns a native checkout button
126
181
  * to render plus the quote. The button handles login / finalize / webview
127
182
  * internally; outcomes surface via the event stream (`addEventListener`).
183
+ * A newer preparation, reset, or sign-out invalidates older unmounted buttons
184
+ * and rejects obsolete in-flight preparations with `intentInvalidated`.
128
185
  *
129
186
  * Pass `prefill` to pre-populate the OnramperID sign-in and additional-info
130
187
  * screens with values you already know about the user. It is best-effort and
@@ -138,32 +195,40 @@ export class OnramperClient {
138
195
  */
139
196
  async getCheckoutRequirements(request, buttonStyle = {}, prefill = {}) {
140
197
  try {
198
+ this.assertActive();
141
199
  await this.configured;
200
+ this.assertActive();
142
201
  const result = await this.native.getCheckoutRequirements(JSON.stringify(request), JSON.stringify(prefill), JSON.stringify(buttonStyle));
202
+ this.assertActive();
143
203
  const quote = JSON.parse(result.quoteJson);
144
- const button = /*#__PURE__*/createElement(OnramperCheckoutButtonView, {
145
- intentHandle: result.intentHandle,
146
- style: {
147
- width: '100%',
148
- minHeight: 56
149
- }
204
+ const button = /*#__PURE__*/createElement(CheckoutButton, {
205
+ intentHandle: result.intentHandle
150
206
  });
151
207
  return {
152
208
  button,
153
209
  quote
154
210
  };
155
211
  } catch (e) {
212
+ this.assertActive();
156
213
  throw OnramperError.from(e);
157
214
  }
158
215
  }
159
216
 
160
217
  /** Discards a prepared intent (e.g. if the user navigates away before checkout). */
161
- cancelPreparedIntent(intentHandle) {
162
- return this.native.cancelPreparedIntent(intentHandle);
218
+ async cancelPreparedIntent(intentHandle) {
219
+ try {
220
+ this.assertActive();
221
+ await this.native.cancelPreparedIntent(intentHandle);
222
+ this.assertActive();
223
+ } catch (e) {
224
+ this.assertActive();
225
+ throw OnramperError.from(e);
226
+ }
163
227
  }
164
228
 
165
229
  /** Subscribe to state changes. Returns an unsubscribe function. */
166
230
  addStateListener(fn) {
231
+ this.assertActive();
167
232
  this.stateListeners.add(fn);
168
233
  return () => {
169
234
  this.stateListeners.delete(fn);
@@ -172,6 +237,7 @@ export class OnramperClient {
172
237
 
173
238
  /** Subscribe to the durable Onramper transaction ID. Successful reset/signOut publish null. */
174
239
  addTransactionIdListener(fn) {
240
+ this.assertActive();
175
241
  this.transactionIdListeners.add(fn);
176
242
  return () => {
177
243
  this.transactionIdListeners.delete(fn);
@@ -180,6 +246,7 @@ export class OnramperClient {
180
246
 
181
247
  /** Subscribe to a specific checkout event. Returns an unsubscribe function. */
182
248
  addEventListener(name, fn) {
249
+ this.assertActive();
183
250
  const wrapper = e => {
184
251
  if (e.type === name) fn(e);
185
252
  };
@@ -189,8 +256,10 @@ export class OnramperClient {
189
256
  };
190
257
  }
191
258
 
192
- /** Tear down: clears JS listeners and releases the native callbacks + SDK client. */
259
+ /** Idempotent teardown. Further operations reject with `clientDestroyed`; create a new client to restart. */
193
260
  destroy() {
261
+ if (this.destroyed) return;
262
+ this.destroyed = true;
194
263
  this.stateListeners.clear();
195
264
  this.eventListeners.clear();
196
265
  this.transactionIdListeners.clear();
@@ -1 +1 @@
1
- {"version":3,"names":["createElement","OnramperCheckoutButtonView","createOnramperNative","OnramperError","OnramperClient","state","kind","lastError","currentTransactionId","native","stateListeners","Set","eventListeners","transactionIdListeners","constructor","config","setStateListener","json","s","JSON","parse","from","error","fn","setEventListener","e","type","updateCurrentTransactionId","response","onramperTransactionId","setTransactionIdListener","transactionId","undefined","setSessionExpirationHandler","creds","onSessionExpired","sessionId","sessionToken","configured","configure","apiKey","clientId","environment","theme","logLevel","catch","err","next","console","initialize","reset","signOut","getCheckoutRequirements","request","buttonStyle","prefill","result","stringify","quote","quoteJson","button","intentHandle","style","width","minHeight","cancelPreparedIntent","addStateListener","add","delete","addTransactionIdListener","addEventListener","name","wrapper","destroy","clear","dispose"],"sourceRoot":"../../src","sources":["OnramperClient.ts"],"mappings":";;AAAA,SAA4BA,aAAa,QAAQ,OAAO;AAExD,SAASC,0BAA0B,QAAQ,iCAA8B;AACzE,SAASC,oBAAoB,QAAQ,qBAAkB;AACvD,SAASC,aAAa,QAAQ,aAAU;AAmBxC;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,MAAMC,cAAc,CAAC;EAC1BC,KAAK,GAAkB;IAAEC,IAAI,EAAE;EAAO,CAAC;EACvCC,SAAS,GAAyB,IAAI;EACtCC,oBAAoB,GAAkB,IAAI;;EAE1C;EACiBC,MAAM,GAAGP,oBAAoB,CAAC,CAAC;EAE/BQ,cAAc,GAAG,IAAIC,GAAG,CAAiC,CAAC;EAC1DC,cAAc,GAAG,IAAID,GAAG,CAAiC,CAAC;EAC1DE,sBAAsB,GAAG,IAAIF,GAAG,CAAyC,CAAC;;EAE3F;EACA;;EAGAG,WAAWA,CAACC,MAA6B,EAAE;IACzC;IACA,IAAI,CAACN,MAAM,CAACO,gBAAgB,CAAEC,IAAI,IAAK;MACrC,MAAMC,CAAC,GAAGC,IAAI,CAACC,KAAK,CAACH,IAAI,CAAkB;MAC3C,IAAI,CAACZ,KAAK,GAAGa,CAAC;MACd,IAAIA,CAAC,CAACZ,IAAI,KAAK,QAAQ,EAAE,IAAI,CAACC,SAAS,GAAGJ,aAAa,CAACkB,IAAI,CAACH,CAAC,CAACI,KAAK,CAAC;MACrE,KAAK,MAAMC,EAAE,IAAI,IAAI,CAACb,cAAc,EAAEa,EAAE,CAACL,CAAC,CAAC;IAC7C,CAAC,CAAC;;IAEF;IACA;IACA,IAAI,CAACT,MAAM,CAACe,gBAAgB,CAAEP,IAAI,IAAK;MACrC,MAAMQ,CAAC,GAAGN,IAAI,CAACC,KAAK,CAACH,IAAI,CAAkB;MAC3C,IAAIQ,CAAC,CAACC,IAAI,KAAK,mBAAmB,EAAE;QAClC,IAAI,CAACC,0BAA0B,CAACF,CAAC,CAACG,QAAQ,CAACC,qBAAqB,CAAC;MACnE;MACA,KAAK,MAAMN,EAAE,IAAI,IAAI,CAACX,cAAc,EAAEW,EAAE,CAACE,CAAC,CAAC;IAC7C,CAAC,CAAC;IAEF,IAAI,CAAChB,MAAM,CAACqB,wBAAwB,CAAEC,aAAa,IAAK;MACtD;MACA;MACA;MACA,IAAIA,aAAa,KAAKC,SAAS,EAAE,IAAI,CAACL,0BAA0B,CAACI,aAAa,CAAC;IACjF,CAAC,CAAC;;IAEF;IACA;IACA;IACA,IAAI,CAACtB,MAAM,CAACwB,2BAA2B,CAAC,YAAY;MAClD,MAAMC,KAAK,GAAG,MAAMnB,MAAM,CAACoB,gBAAgB,CAAC,CAAC;MAC7C,OAAO;QAAEC,SAAS,EAAEF,KAAK,CAACE,SAAS;QAAEC,YAAY,EAAEH,KAAK,CAACG;MAAa,CAAC;IACzE,CAAC,CAAC;IAEF,IAAI,CAACC,UAAU,GAAG,IAAI,CAAC7B,MAAM,CAC1B8B,SAAS,CAAC;MACTC,MAAM,EAAEzB,MAAM,CAACyB,MAAM;MACrBC,QAAQ,EAAE1B,MAAM,CAAC0B,QAAQ;MACzBC,WAAW,EAAE3B,MAAM,CAAC2B,WAAW;MAC/BC,KAAK,EAAE5B,MAAM,CAAC4B,KAAK,IAAI,QAAQ;MAC/BC,QAAQ,EAAE7B,MAAM,CAAC6B,QAAQ,IAAI;IAC/B,CAAC,CAAC,CACDC,KAAK,CAAEpB,CAAU,IAAK;MACrB,MAAMqB,GAAG,GAAG3C,aAAa,CAACkB,IAAI,CAACI,CAAC,CAAC;MACjC,IAAI,CAAClB,SAAS,GAAGuC,GAAG;MACpB,MAAMA,GAAG;IACX,CAAC,CAAC;IACJ;IACA;IACA,IAAI,CAACR,UAAU,CAACO,KAAK,CAAC,MAAMb,SAAS,CAAC;EACxC;EAEQL,0BAA0BA,CAACoB,IAAmB,EAAQ;IAC5D,IAAIA,IAAI,KAAK,IAAI,CAACvC,oBAAoB,EAAE;IAExC,IAAI,CAACA,oBAAoB,GAAGuC,IAAI;IAChC,KAAK,MAAMxB,EAAE,IAAI,CAAC,GAAG,IAAI,CAACV,sBAAsB,CAAC,EAAE;MACjD,IAAI;QACFU,EAAE,CAACwB,IAAI,CAAC;MACV,CAAC,CAAC,OAAOzB,KAAc,EAAE;QACvB0B,OAAO,CAAC1B,KAAK,CAAC,yCAAyC,EAAEA,KAAK,CAAC;MACjE;IACF;EACF;EAEA,MAAM2B,UAAUA,CAACf,KAAyB,EAAiB;IACzD,IAAI;MACF,MAAM,IAAI,CAACI,UAAU;MACrB,MAAM,IAAI,CAAC7B,MAAM,CAACwC,UAAU,CAACf,KAAK,CAACE,SAAS,EAAEF,KAAK,CAACG,YAAY,CAAC;IACnE,CAAC,CAAC,OAAOZ,CAAU,EAAE;MACnB,MAAMtB,aAAa,CAACkB,IAAI,CAACI,CAAC,CAAC;IAC7B;EACF;EAEA,MAAMyB,KAAKA,CAAA,EAAkB;IAC3B,IAAI;MACF,MAAM,IAAI,CAACZ,UAAU;MACrB,MAAM,IAAI,CAAC7B,MAAM,CAACyC,KAAK,CAAC,CAAC;MACzB,IAAI,CAACvB,0BAA0B,CAAC,IAAI,CAAC;IACvC,CAAC,CAAC,OAAOF,CAAU,EAAE;MACnB,MAAMtB,aAAa,CAACkB,IAAI,CAACI,CAAC,CAAC;IAC7B;EACF;;EAEA;AACF;AACA;AACA;AACA;AACA;EACE,MAAM0B,OAAOA,CAAA,EAAkB;IAC7B,IAAI;MACF,MAAM,IAAI,CAACb,UAAU;MACrB,MAAM,IAAI,CAAC7B,MAAM,CAAC0C,OAAO,CAAC,CAAC;MAC3B,IAAI,CAACxB,0BAA0B,CAAC,IAAI,CAAC;IACvC,CAAC,CAAC,OAAOF,CAAU,EAAE;MACnB,MAAMtB,aAAa,CAACkB,IAAI,CAACI,CAAC,CAAC;IAC7B;EACF;;EAEA;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;EACE,MAAM2B,uBAAuBA,CAC3BC,OAAwB,EACxBC,WAAgC,GAAG,CAAC,CAAC,EACrCC,OAA4B,GAAG,CAAC,CAAC,EACO;IACxC,IAAI;MACF,MAAM,IAAI,CAACjB,UAAU;MACrB,MAAMkB,MAAM,GAAG,MAAM,IAAI,CAAC/C,MAAM,CAAC2C,uBAAuB,CACtDjC,IAAI,CAACsC,SAAS,CAACJ,OAAO,CAAC,EACvBlC,IAAI,CAACsC,SAAS,CAACF,OAAO,CAAC,EACvBpC,IAAI,CAACsC,SAAS,CAACH,WAAW,CAC5B,CAAC;MACD,MAAMI,KAAK,GAAGvC,IAAI,CAACC,KAAK,CAACoC,MAAM,CAACG,SAAS,CAAkB;MAC3D,MAAMC,MAAM,gBAAG5D,aAAa,CAACC,0BAA0B,EAAE;QACvD4D,YAAY,EAAEL,MAAM,CAACK,YAAY;QACjCC,KAAK,EAAE;UAAEC,KAAK,EAAE,MAAM;UAAEC,SAAS,EAAE;QAAG;MACxC,CAAC,CAAC;MACF,OAAO;QAAEJ,MAAM;QAAEF;MAAM,CAAC;IAC1B,CAAC,CAAC,OAAOjC,CAAU,EAAE;MACnB,MAAMtB,aAAa,CAACkB,IAAI,CAACI,CAAC,CAAC;IAC7B;EACF;;EAEA;EACAwC,oBAAoBA,CAACJ,YAAoB,EAAiB;IACxD,OAAO,IAAI,CAACpD,MAAM,CAACwD,oBAAoB,CAACJ,YAAY,CAAC;EACvD;;EAEA;EACAK,gBAAgBA,CAAC3C,EAAkC,EAAc;IAC/D,IAAI,CAACb,cAAc,CAACyD,GAAG,CAAC5C,EAAE,CAAC;IAC3B,OAAO,MAAM;MACX,IAAI,CAACb,cAAc,CAAC0D,MAAM,CAAC7C,EAAE,CAAC;IAChC,CAAC;EACH;;EAEA;EACA8C,wBAAwBA,CAAC9C,EAA0C,EAAc;IAC/E,IAAI,CAACV,sBAAsB,CAACsD,GAAG,CAAC5C,EAAE,CAAC;IACnC,OAAO,MAAM;MACX,IAAI,CAACV,sBAAsB,CAACuD,MAAM,CAAC7C,EAAE,CAAC;IACxC,CAAC;EACH;;EAEA;EACA+C,gBAAgBA,CAAsBC,IAAO,EAAEhD,EAAgC,EAAc;IAC3F,MAAMiD,OAAO,GAAI/C,CAAgB,IAAK;MACpC,IAAIA,CAAC,CAACC,IAAI,KAAK6C,IAAI,EAAEhD,EAAE,CAACE,CAAoB,CAAC;IAC/C,CAAC;IACD,IAAI,CAACb,cAAc,CAACuD,GAAG,CAACK,OAAO,CAAC;IAChC,OAAO,MAAM;MACX,IAAI,CAAC5D,cAAc,CAACwD,MAAM,CAACI,OAAO,CAAC;IACrC,CAAC;EACH;;EAEA;EACAC,OAAOA,CAAA,EAAS;IACd,IAAI,CAAC/D,cAAc,CAACgE,KAAK,CAAC,CAAC;IAC3B,IAAI,CAAC9D,cAAc,CAAC8D,KAAK,CAAC,CAAC;IAC3B,IAAI,CAAC7D,sBAAsB,CAAC6D,KAAK,CAAC,CAAC;IACnC,IAAI,CAACjE,MAAM,CAACkE,OAAO,CAAC,CAAC;EACvB;AACF","ignoreList":[]}
1
+ {"version":3,"names":["createElement","CheckoutButton","createOnramperNative","OnramperError","OnramperClient","sdkVersion","native","dispose","state","kind","lastError","currentTransactionId","stateListeners","Set","eventListeners","transactionIdListeners","destroyed","constructor","config","logHandler","handler","setLogListener","json","JSON","parse","console","warn","setStateListener","s","from","error","fn","setEventListener","e","type","updateCurrentTransactionId","response","onramperTransactionId","setTransactionIdListener","transactionId","undefined","setSessionExpirationHandler","assertActive","creds","onSessionExpired","sessionId","sessionToken","configured","configure","apiKey","clientId","environment","theme","logLevel","isEventLoggingEnabled","isEventConsoleLoggingEnabled","catch","err","code","message","userMessage","next","initialize","reset","signOut","getCheckoutRequirements","request","buttonStyle","prefill","result","stringify","quote","quoteJson","button","intentHandle","cancelPreparedIntent","addStateListener","add","delete","addTransactionIdListener","addEventListener","name","wrapper","destroy","clear"],"sourceRoot":"../../src","sources":["OnramperClient.ts"],"mappings":"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","ignoreList":[]}
@@ -5,20 +5,34 @@ export class OnramperError extends Error {
5
5
  super(payload.message);
6
6
  this.name = 'OnramperError';
7
7
  this.code = payload.code;
8
+ this.userMessage = payload.userMessage ?? 'Something went wrong. Please try again.';
9
+ this.supportCode = payload.supportCode ?? payload.code;
8
10
  this.info = payload.info;
9
11
  }
10
12
  static from(value) {
11
13
  if (value instanceof OnramperError) return value;
14
+ // Nitro transports Swift exceptions as message-only JS Errors. Our native
15
+ // bridge encodes SDK errors explicitly so Promise rejections retain the
16
+ // same fields as failed events, without consulting unrelated client state.
17
+ const message = value instanceof Error ? value.message : typeof value === 'string' ? value : undefined;
18
+ if (message?.startsWith('ONRAMPER_ERROR:')) {
19
+ try {
20
+ const payload = JSON.parse(message.slice('ONRAMPER_ERROR:'.length));
21
+ if (payload && typeof payload.code === 'string' && typeof payload.message === 'string') {
22
+ return OnramperError.from(payload);
23
+ }
24
+ } catch {
25
+ // A malformed/non-SDK error falls back to the ordinary error path.
26
+ }
27
+ }
12
28
  if (value && typeof value === 'object') {
13
- // Structured errors (from the `.failed` state) arrive as a plain
14
- // `{ code, message, info? }` object. Thrown promise rejections surface
15
- // as a JS Error with just a message; we default the code in that case
16
- // (the structured error is also available on `client.state` / lastError).
17
29
  const v = value;
18
30
  return new OnramperError({
19
31
  code: v.code ?? 'unrecoverable',
20
32
  message: v.message ?? 'Unknown error',
21
- info: v.info
33
+ info: v.info,
34
+ userMessage: typeof v.userMessage === 'string' ? v.userMessage : undefined,
35
+ supportCode: typeof v.supportCode === 'string' ? v.supportCode : undefined
22
36
  });
23
37
  }
24
38
  return new OnramperError({
@@ -1 +1 @@
1
- {"version":3,"names":["OnramperError","Error","constructor","payload","message","name","code","info","from","value","v","String"],"sourceRoot":"../../src","sources":["errors.ts"],"mappings":";;AAyCA,OAAO,MAAMA,aAAa,SAASC,KAAK,CAAiC;EAIvEC,WAAWA,CAACC,OAA6B,EAAE;IACzC,KAAK,CAACA,OAAO,CAACC,OAAO,CAAC;IACtB,IAAI,CAACC,IAAI,GAAG,eAAe;IAC3B,IAAI,CAACC,IAAI,GAAGH,OAAO,CAACG,IAAI;IACxB,IAAI,CAACC,IAAI,GAAGJ,OAAO,CAACI,IAAI;EAC1B;EAEA,OAAOC,IAAIA,CAACC,KAAc,EAAiB;IACzC,IAAIA,KAAK,YAAYT,aAAa,EAAE,OAAOS,KAAK;IAChD,IAAIA,KAAK,IAAI,OAAOA,KAAK,KAAK,QAAQ,EAAE;MACtC;MACA;MACA;MACA;MACA,MAAMC,CAAC,GAAGD,KAA4E;MACtF,OAAO,IAAIT,aAAa,CAAC;QACvBM,IAAI,EAAGI,CAAC,CAACJ,IAAI,IAAI,eAAqC;QACtDF,OAAO,EAAEM,CAAC,CAACN,OAAO,IAAI,eAAe;QACrCG,IAAI,EAAEG,CAAC,CAACH;MACV,CAAC,CAAC;IACJ;IACA,OAAO,IAAIP,aAAa,CAAC;MAAEM,IAAI,EAAE,eAAe;MAAEF,OAAO,EAAEO,MAAM,CAACF,KAAK;IAAE,CAAC,CAAC;EAC7E;AACF","ignoreList":[]}
1
+ {"version":3,"names":["OnramperError","Error","constructor","payload","message","name","code","userMessage","supportCode","info","from","value","undefined","startsWith","JSON","parse","slice","length","v","String"],"sourceRoot":"../../src","sources":["errors.ts"],"mappings":";;AAgDA,OAAO,MAAMA,aAAa,SAASC,KAAK,CAAiC;EAMvEC,WAAWA,CAACC,OAA6B,EAAE;IACzC,KAAK,CAACA,OAAO,CAACC,OAAO,CAAC;IACtB,IAAI,CAACC,IAAI,GAAG,eAAe;IAC3B,IAAI,CAACC,IAAI,GAAGH,OAAO,CAACG,IAAI;IACxB,IAAI,CAACC,WAAW,GAAGJ,OAAO,CAACI,WAAW,IAAI,yCAAyC;IACnF,IAAI,CAACC,WAAW,GAAGL,OAAO,CAACK,WAAW,IAAIL,OAAO,CAACG,IAAI;IACtD,IAAI,CAACG,IAAI,GAAGN,OAAO,CAACM,IAAI;EAC1B;EAEA,OAAOC,IAAIA,CAACC,KAAc,EAAiB;IACzC,IAAIA,KAAK,YAAYX,aAAa,EAAE,OAAOW,KAAK;IAChD;IACA;IACA;IACA,MAAMP,OAAO,GAAGO,KAAK,YAAYV,KAAK,GAAGU,KAAK,CAACP,OAAO,GAAG,OAAOO,KAAK,KAAK,QAAQ,GAAGA,KAAK,GAAGC,SAAS;IACtG,IAAIR,OAAO,EAAES,UAAU,CAAC,iBAAiB,CAAC,EAAE;MAC1C,IAAI;QACF,MAAMV,OAAO,GAAGW,IAAI,CAACC,KAAK,CAACX,OAAO,CAACY,KAAK,CAAC,iBAAiB,CAACC,MAAM,CAAC,CAAC;QACnE,IAAId,OAAO,IAAI,OAAOA,OAAO,CAACG,IAAI,KAAK,QAAQ,IAAI,OAAOH,OAAO,CAACC,OAAO,KAAK,QAAQ,EAAE;UACtF,OAAOJ,aAAa,CAACU,IAAI,CAACP,OAAO,CAAC;QACpC;MACF,CAAC,CAAC,MAAM;QACN;MAAA;IAEJ;IACA,IAAIQ,KAAK,IAAI,OAAOA,KAAK,KAAK,QAAQ,EAAE;MACtC,MAAMO,CAAC,GAAGP,KAAsC;MAChD,OAAO,IAAIX,aAAa,CAAC;QACvBM,IAAI,EAAGY,CAAC,CAACZ,IAAI,IAAI,eAAqC;QACtDF,OAAO,EAAEc,CAAC,CAACd,OAAO,IAAI,eAAe;QACrCK,IAAI,EAAES,CAAC,CAACT,IAAI;QACZF,WAAW,EAAE,OAAOW,CAAC,CAACX,WAAW,KAAK,QAAQ,GAAGW,CAAC,CAACX,WAAW,GAAGK,SAAS;QAC1EJ,WAAW,EAAE,OAAOU,CAAC,CAACV,WAAW,KAAK,QAAQ,GAAGU,CAAC,CAACV,WAAW,GAAGI;MACnE,CAAC,CAAC;IACJ;IACA,OAAO,IAAIZ,aAAa,CAAC;MAAEM,IAAI,EAAE,eAAe;MAAEF,OAAO,EAAEe,MAAM,CAACR,KAAK;IAAE,CAAC,CAAC;EAC7E;AACF","ignoreList":[]}
@@ -5,6 +5,7 @@
5
5
  "directEventTypes": {},
6
6
  "validAttributes": {
7
7
  "intentHandle": true,
8
+ "onContentHeightChange": true,
8
9
  "hybridRef": true
9
10
  }
10
11
  }
@@ -0,0 +1,20 @@
1
+ export declare const CHECKOUT_BUTTON_FALLBACK_HEIGHT = 56;
2
+ export interface CheckoutButtonProps {
3
+ intentHandle: string;
4
+ }
5
+ /**
6
+ * Sizes the native checkout button to its SwiftUI content. The content grows when
7
+ * the SDK shows ToS text under the Buy button (which can change after mount), and
8
+ * Yoga can't measure a SwiftUI view — so native reports the height and it is
9
+ * applied here as an explicit `height`.
10
+ */
11
+ export declare function CheckoutButton({ intentHandle }: CheckoutButtonProps): import("react").CElement<{
12
+ hybridRef?: import("react-native-nitro-modules").NitroViewWrappedCallback<((ref: import("react-native-nitro-modules").HybridView<import("./OnramperCheckoutButtonView").OnramperCheckoutButtonViewProps, import("./specs/OnramperCheckoutButton.nitro").OnramperCheckoutButtonMethods>) => void) | undefined> | undefined;
13
+ intentHandle: string;
14
+ onContentHeightChange?: import("react-native-nitro-modules").NitroViewWrappedCallback<((height: number) => void) | undefined> | undefined;
15
+ } & import("react-native").ViewProps, import("react").Component<{
16
+ hybridRef?: import("react-native-nitro-modules").NitroViewWrappedCallback<((ref: import("react-native-nitro-modules").HybridView<import("./OnramperCheckoutButtonView").OnramperCheckoutButtonViewProps, import("./specs/OnramperCheckoutButton.nitro").OnramperCheckoutButtonMethods>) => void) | undefined> | undefined;
17
+ intentHandle: string;
18
+ onContentHeightChange?: import("react-native-nitro-modules").NitroViewWrappedCallback<((height: number) => void) | undefined> | undefined;
19
+ } & import("react-native").ViewProps, {}, any> & import("react-native").ReactNativeElement>;
20
+ //# sourceMappingURL=CheckoutButton.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CheckoutButton.d.ts","sourceRoot":"","sources":["../../../../src/CheckoutButton.ts"],"names":[],"mappings":"AAOA,eAAO,MAAM,+BAA+B,KAAK,CAAC;AAElD,MAAM,WAAW,mBAAmB;IAClC,YAAY,EAAE,MAAM,CAAC;CACtB;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,EAAE,YAAY,EAAE,EAAE,mBAAmB;;;;;;;;4FAQnE"}
@@ -15,6 +15,11 @@ export interface GetCheckoutRequirementsResult {
15
15
  * unions, then fanned out to any number of listeners.
16
16
  */
17
17
  export declare class OnramperClient {
18
+ /**
19
+ * Version of the native Onramper iOS SDK loaded by this app (not the RN
20
+ * package version). No client configuration or session is required. iOS only.
21
+ */
22
+ static get sdkVersion(): string;
18
23
  state: OnramperState;
19
24
  lastError: OnramperError | null;
20
25
  currentTransactionId: string | null;
@@ -23,7 +28,9 @@ export declare class OnramperClient {
23
28
  private readonly eventListeners;
24
29
  private readonly transactionIdListeners;
25
30
  private readonly configured;
31
+ private destroyed;
26
32
  constructor(config: OnramperConfiguration);
33
+ private assertActive;
27
34
  private updateCurrentTransactionId;
28
35
  initialize(creds: SessionCredentials): Promise<void>;
29
36
  reset(): Promise<void>;
@@ -38,6 +45,8 @@ export declare class OnramperClient {
38
45
  * Fetches checkout requirements + quote and returns a native checkout button
39
46
  * to render plus the quote. The button handles login / finalize / webview
40
47
  * internally; outcomes surface via the event stream (`addEventListener`).
48
+ * A newer preparation, reset, or sign-out invalidates older unmounted buttons
49
+ * and rejects obsolete in-flight preparations with `intentInvalidated`.
41
50
  *
42
51
  * Pass `prefill` to pre-populate the OnramperID sign-in and additional-info
43
52
  * screens with values you already know about the user. It is best-effort and
@@ -58,7 +67,7 @@ export declare class OnramperClient {
58
67
  addTransactionIdListener(fn: (transactionId: string | null) => void): () => void;
59
68
  /** Subscribe to a specific checkout event. Returns an unsubscribe function. */
60
69
  addEventListener<K extends EventName>(name: K, fn: (e: EventPayload<K>) => void): () => void;
61
- /** Tear down: clears JS listeners and releases the native callbacks + SDK client. */
70
+ /** Idempotent teardown. Further operations reject with `clientDestroyed`; create a new client to restart. */
62
71
  destroy(): void;
63
72
  }
64
73
  //# sourceMappingURL=OnramperClient.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"OnramperClient.d.ts","sourceRoot":"","sources":["../../../../src/OnramperClient.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,YAAY,EAAiB,MAAM,OAAO,CAAC;AAIzD,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,KAAK,EAAiB,SAAS,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AACvE,OAAO,KAAK,EACV,mBAAmB,EACnB,eAAe,EACf,qBAAqB,EACrB,aAAa,EACb,mBAAmB,EACnB,aAAa,EACb,kBAAkB,EACnB,MAAM,SAAS,CAAC;AAEjB,MAAM,WAAW,6BAA6B;IAC5C,yHAAyH;IACzH,MAAM,EAAE,YAAY,CAAC;IACrB,wEAAwE;IACxE,KAAK,EAAE,aAAa,CAAC;CACtB;AAED;;;;;GAKG;AACH,qBAAa,cAAc;IACzB,KAAK,EAAE,aAAa,CAAoB;IACxC,SAAS,EAAE,aAAa,GAAG,IAAI,CAAQ;IACvC,oBAAoB,EAAE,MAAM,GAAG,IAAI,CAAQ;IAG3C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA0B;IAEjD,OAAO,CAAC,QAAQ,CAAC,cAAc,CAA6C;IAC5E,OAAO,CAAC,QAAQ,CAAC,cAAc,CAA6C;IAC5E,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAAqD;IAI5F,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAgB;gBAE/B,MAAM,EAAE,qBAAqB;IAoDzC,OAAO,CAAC,0BAA0B;IAa5B,UAAU,CAAC,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC;IASpD,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAU5B;;;;;OAKG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAU9B;;;;;;;;;;;;;;OAcG;IACG,uBAAuB,CAC3B,OAAO,EAAE,eAAe,EACxB,WAAW,GAAE,mBAAwB,EACrC,OAAO,GAAE,mBAAwB,GAChC,OAAO,CAAC,6BAA6B,CAAC;IAmBzC,oFAAoF;IACpF,oBAAoB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAIzD,mEAAmE;IACnE,gBAAgB,CAAC,EAAE,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,GAAG,MAAM,IAAI;IAOhE,+FAA+F;IAC/F,wBAAwB,CAAC,EAAE,EAAE,CAAC,aAAa,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,GAAG,MAAM,IAAI;IAOhF,+EAA+E;IAC/E,gBAAgB,CAAC,CAAC,SAAS,SAAS,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,KAAK,IAAI,GAAG,MAAM,IAAI;IAU5F,qFAAqF;IACrF,OAAO,IAAI,IAAI;CAMhB"}
1
+ {"version":3,"file":"OnramperClient.d.ts","sourceRoot":"","sources":["../../../../src/OnramperClient.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,YAAY,EAAiB,MAAM,OAAO,CAAC;AAIzD,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,KAAK,EAAiB,SAAS,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AACvE,OAAO,KAAK,EACV,mBAAmB,EACnB,eAAe,EACf,qBAAqB,EAErB,aAAa,EACb,mBAAmB,EACnB,aAAa,EACb,kBAAkB,EACnB,MAAM,SAAS,CAAC;AAEjB,MAAM,WAAW,6BAA6B;IAC5C,yHAAyH;IACzH,MAAM,EAAE,YAAY,CAAC;IACrB,wEAAwE;IACxE,KAAK,EAAE,aAAa,CAAC;CACtB;AAED;;;;;GAKG;AACH,qBAAa,cAAc;IACzB;;;OAGG;IACH,MAAM,KAAK,UAAU,IAAI,MAAM,CAO9B;IAED,KAAK,EAAE,aAAa,CAAoB;IACxC,SAAS,EAAE,aAAa,GAAG,IAAI,CAAQ;IACvC,oBAAoB,EAAE,MAAM,GAAG,IAAI,CAAQ;IAG3C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA0B;IAEjD,OAAO,CAAC,QAAQ,CAAC,cAAc,CAA6C;IAC5E,OAAO,CAAC,QAAQ,CAAC,cAAc,CAA6C;IAC5E,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAAqD;IAI5F,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAgB;IAC3C,OAAO,CAAC,SAAS,CAAS;gBAEd,MAAM,EAAE,qBAAqB;IAuEzC,OAAO,CAAC,YAAY;IAUpB,OAAO,CAAC,0BAA0B;IAe5B,UAAU,CAAC,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC;IAapD,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAc5B;;;;;OAKG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAc9B;;;;;;;;;;;;;;;;OAgBG;IACG,uBAAuB,CAC3B,OAAO,EAAE,eAAe,EACxB,WAAW,GAAE,mBAAwB,EACrC,OAAO,GAAE,mBAAwB,GAChC,OAAO,CAAC,6BAA6B,CAAC;IAoBzC,oFAAoF;IAC9E,oBAAoB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAW/D,mEAAmE;IACnE,gBAAgB,CAAC,EAAE,EAAE,CAAC,KAAK,EAAE,aAAa,KAAK,IAAI,GAAG,MAAM,IAAI;IAQhE,+FAA+F;IAC/F,wBAAwB,CAAC,EAAE,EAAE,CAAC,aAAa,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,GAAG,MAAM,IAAI;IAQhF,+EAA+E;IAC/E,gBAAgB,CAAC,CAAC,SAAS,SAAS,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC,KAAK,IAAI,GAAG,MAAM,IAAI;IAW5F,6GAA6G;IAC7G,OAAO,IAAI,IAAI;CAQhB"}
@@ -1,11 +1,16 @@
1
- export type OnramperErrorCode = 'notInitialized' | 'initializationFailed' | 'attestationFailed' | 'invalidStateTransition' | 'invalidState' | 'networkError' | 'decodingError' | 'timeout' | 'requirementNotSatisfied' | 'amountOutOfRange' | 'oidcFlowCancelled' | 'oidcTokenExchangeFailed' | 'oidcFlowFailed' | 'userTokenInvalid' | 'userTokenRefreshFailed' | 'webviewLoadFailed' | 'deepLinkFailed' | 'invalidRequest' | 'quoteUnavailable' | 'checkoutForbidden' | 'temporaryFailure' | 'unrecoverable' | 'configurationError' | 'deviceBlocked' | 'securityStorageFailed' | 'securityTrustFailed' | 'platformUnsupported' | 'intentInvalidated' | 'intentAlreadyConsumed' | 'clientAlreadyConfigured' | 'sessionExpirationHandlerFailed';
1
+ export type OnramperErrorCode = 'notInitialized' | 'initializationFailed' | 'attestationFailed' | 'invalidStateTransition' | 'invalidState' | 'networkError' | 'decodingError' | 'timeout' | 'paymentFailed' | 'providerFailed' | 'applePayNotConfigured' | 'requirementNotSatisfied' | 'amountOutOfRange' | 'oidcFlowCancelled' | 'oidcTokenExchangeFailed' | 'oidcFlowFailed' | 'userTokenInvalid' | 'userTokenRefreshFailed' | 'webviewLoadFailed' | 'deepLinkFailed' | 'invalidRequest' | 'quoteUnavailable' | 'checkoutForbidden' | 'temporaryFailure' | 'unrecoverable' | 'configurationError' | 'deviceBlocked' | 'securityStorageFailed' | 'securityTrustFailed' | 'platformUnsupported' | 'intentInvalidated' | 'intentAlreadyConsumed' | 'clientAlreadyConfigured' | 'clientDestroyed' | 'sessionExpirationHandlerFailed';
2
2
  export interface OnramperErrorPayload {
3
3
  code: OnramperErrorCode;
4
4
  message: string;
5
+ /** Customer-facing SDK copy; optional for backwards-compatible payload construction. */
6
+ userMessage?: string;
7
+ supportCode?: string;
5
8
  info?: Record<string, unknown>;
6
9
  }
7
10
  export declare class OnramperError extends Error implements OnramperErrorPayload {
8
11
  readonly code: OnramperErrorCode;
12
+ readonly userMessage: string;
13
+ readonly supportCode: string;
9
14
  readonly info?: Record<string, unknown>;
10
15
  constructor(payload: OnramperErrorPayload);
11
16
  static from(value: unknown): OnramperError;
@@ -1 +1 @@
1
- {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../../../src/errors.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,iBAAiB,GAEzB,gBAAgB,GAChB,sBAAsB,GACtB,mBAAmB,GACnB,wBAAwB,GACxB,cAAc,GACd,cAAc,GACd,eAAe,GACf,SAAS,GACT,yBAAyB,GACzB,kBAAkB,GAClB,mBAAmB,GACnB,yBAAyB,GACzB,gBAAgB,GAChB,kBAAkB,GAClB,wBAAwB,GACxB,mBAAmB,GACnB,gBAAgB,GAChB,gBAAgB,GAChB,kBAAkB,GAClB,mBAAmB,GACnB,kBAAkB,GAClB,eAAe,GACf,oBAAoB,GACpB,eAAe,GACf,uBAAuB,GACvB,qBAAqB,GAErB,qBAAqB,GACrB,mBAAmB,GACnB,uBAAuB,GACvB,yBAAyB,GACzB,gCAAgC,CAAC;AAErC,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,iBAAiB,CAAC;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAChC;AAED,qBAAa,aAAc,SAAQ,KAAM,YAAW,oBAAoB;IACtE,QAAQ,CAAC,IAAI,EAAE,iBAAiB,CAAC;IACjC,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;gBAE5B,OAAO,EAAE,oBAAoB;IAOzC,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,GAAG,aAAa;CAgB3C"}
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../../../src/errors.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,iBAAiB,GAEzB,gBAAgB,GAChB,sBAAsB,GACtB,mBAAmB,GACnB,wBAAwB,GACxB,cAAc,GACd,cAAc,GACd,eAAe,GACf,SAAS,GACT,eAAe,GACf,gBAAgB,GAChB,uBAAuB,GACvB,yBAAyB,GACzB,kBAAkB,GAClB,mBAAmB,GACnB,yBAAyB,GACzB,gBAAgB,GAChB,kBAAkB,GAClB,wBAAwB,GACxB,mBAAmB,GACnB,gBAAgB,GAChB,gBAAgB,GAChB,kBAAkB,GAClB,mBAAmB,GACnB,kBAAkB,GAClB,eAAe,GACf,oBAAoB,GACpB,eAAe,GACf,uBAAuB,GACvB,qBAAqB,GAErB,qBAAqB,GACrB,mBAAmB,GACnB,uBAAuB,GACvB,yBAAyB,GACzB,iBAAiB,GACjB,gCAAgC,CAAC;AAErC,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,iBAAiB,CAAC;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,wFAAwF;IACxF,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAChC;AAED,qBAAa,aAAc,SAAQ,KAAM,YAAW,oBAAoB;IACtE,QAAQ,CAAC,IAAI,EAAE,iBAAiB,CAAC;IACjC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;gBAE5B,OAAO,EAAE,oBAAoB;IASzC,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,GAAG,aAAa;CA4B3C"}
@@ -35,6 +35,16 @@ export type CheckoutEvent = {
35
35
  type: 'paymentAuthorized';
36
36
  } | {
37
37
  type: 'paymentProcessing';
38
+ }
39
+ /** Accepted but not settled; use currentTransactionId to track the payment. */
40
+ | {
41
+ type: 'paymentPending';
42
+ } | {
43
+ type: 'challengeStarted';
44
+ } | {
45
+ type: 'challengeCompleted';
46
+ } | {
47
+ type: 'customerOnboardingRequired';
38
48
  } | {
39
49
  type: 'paymentCancelled';
40
50
  } | {
@@ -1 +1 @@
1
- {"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../../../../src/events.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAC;AACrD,OAAO,KAAK,EAAE,wBAAwB,EAAE,mBAAmB,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAExG,MAAM,MAAM,aAAa,GACrB;IAAE,IAAI,EAAE,cAAc,CAAC;IAAC,KAAK,EAAE,aAAa,CAAA;CAAE,GAC9C;IAAE,IAAI,EAAE,iBAAiB,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,GAC7C;IAAE,IAAI,EAAE,eAAe,CAAC;IAAC,YAAY,EAAE,mBAAmB,EAAE,CAAA;CAAE,GAC9D;IAAE,IAAI,EAAE,iBAAiB,CAAA;CAAE,GAC3B;IAAE,IAAI,EAAE,sBAAsB,CAAC;IAAC,eAAe,EAAE,MAAM,CAAA;CAAE,GACzD;IAAE,IAAI,EAAE,mBAAmB,CAAC;IAAC,QAAQ,EAAE,wBAAwB,CAAA;CAAE,GACjE;IAAE,IAAI,EAAE,kBAAkB,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,UAAU,CAAA;CAAE,GACjE;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,GACzC;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,KAAK,EAAE,oBAAoB,CAAA;CAAE,GAC/C;IAAE,IAAI,EAAE,WAAW,CAAA;CAAE,GAErB;IAAE,IAAI,EAAE,eAAe,CAAA;CAAE,GACzB;IAAE,IAAI,EAAE,mBAAmB,CAAA;CAAE,GAC7B;IAAE,IAAI,EAAE,mBAAmB,CAAA;CAAE,GAC7B;IAAE,IAAI,EAAE,kBAAkB,CAAA;CAAE,GAC5B;IAAE,IAAI,EAAE,eAAe,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAE9C,MAAM,MAAM,SAAS,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;AAC9C,MAAM,MAAM,YAAY,CAAC,CAAC,SAAS,SAAS,IAAI,OAAO,CAAC,aAAa,EAAE;IAAE,IAAI,EAAE,CAAC,CAAA;CAAE,CAAC,CAAC"}
1
+ {"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../../../../src/events.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAC;AACrD,OAAO,KAAK,EAAE,wBAAwB,EAAE,mBAAmB,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAExG,MAAM,MAAM,aAAa,GACrB;IAAE,IAAI,EAAE,cAAc,CAAC;IAAC,KAAK,EAAE,aAAa,CAAA;CAAE,GAC9C;IAAE,IAAI,EAAE,iBAAiB,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,GAC7C;IAAE,IAAI,EAAE,eAAe,CAAC;IAAC,YAAY,EAAE,mBAAmB,EAAE,CAAA;CAAE,GAC9D;IAAE,IAAI,EAAE,iBAAiB,CAAA;CAAE,GAC3B;IAAE,IAAI,EAAE,sBAAsB,CAAC;IAAC,eAAe,EAAE,MAAM,CAAA;CAAE,GACzD;IAAE,IAAI,EAAE,mBAAmB,CAAC;IAAC,QAAQ,EAAE,wBAAwB,CAAA;CAAE,GACjE;IAAE,IAAI,EAAE,kBAAkB,CAAC;IAAC,GAAG,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,UAAU,CAAA;CAAE,GACjE;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,UAAU,EAAE,MAAM,CAAA;CAAE,GACzC;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,KAAK,EAAE,oBAAoB,CAAA;CAAE,GAC/C;IAAE,IAAI,EAAE,WAAW,CAAA;CAAE,GAErB;IAAE,IAAI,EAAE,eAAe,CAAA;CAAE,GACzB;IAAE,IAAI,EAAE,mBAAmB,CAAA;CAAE,GAC7B;IAAE,IAAI,EAAE,mBAAmB,CAAA;CAAE;AAC/B,+EAA+E;GAC7E;IAAE,IAAI,EAAE,gBAAgB,CAAA;CAAE,GAC1B;IAAE,IAAI,EAAE,kBAAkB,CAAA;CAAE,GAC5B;IAAE,IAAI,EAAE,oBAAoB,CAAA;CAAE,GAC9B;IAAE,IAAI,EAAE,4BAA4B,CAAA;CAAE,GACtC;IAAE,IAAI,EAAE,kBAAkB,CAAA;CAAE,GAC5B;IAAE,IAAI,EAAE,eAAe,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAE9C,MAAM,MAAM,SAAS,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC;AAC9C,MAAM,MAAM,YAAY,CAAC,CAAC,SAAS,SAAS,IAAI,OAAO,CAAC,aAAa,EAAE;IAAE,IAAI,EAAE,CAAC,CAAA;CAAE,CAAC,CAAC"}
@@ -4,6 +4,6 @@ export { OnramperCheckoutButtonView } from './OnramperCheckoutButtonView';
4
4
  export type { OnramperCheckoutButtonViewProps } from './OnramperCheckoutButtonView';
5
5
  export { OnramperError } from './errors';
6
6
  export type { OnramperErrorCode, OnramperErrorPayload } from './errors';
7
- export type { CheckoutButtonStyle, CheckoutFinalizeResponse, CheckoutRequest, CheckoutPaymentType, CheckoutRequirement, HeadlessCheckoutData, OnramperConfiguration, OnramperEnvironment, OnramperLogLevel, OnramperState, OnramperTheme, OnramperUserPrefill, QuoteResponse, RenderType, ReverificationField, SessionCredentials, ToSItem, TransactionType, UserInfoField, UserInfoFieldType, WalletInfo, } from './types';
7
+ export type { CheckoutButtonStyle, CheckoutFinalizeResponse, CheckoutRequest, CheckoutPaymentType, CheckoutRequirement, HeadlessCheckoutData, OnramperConfiguration, OnramperEnvironment, OnramperLogLevel, OnramperLogRecord, ProviderJSONValue, PaymentDisclosure, OnramperState, OnramperTheme, OnramperUserPrefill, QuoteResponse, RenderType, ReverificationField, SessionCredentials, ToSItem, TransactionType, UserInfoField, UserInfoFieldType, WalletInfo, } from './types';
8
8
  export type { CheckoutEvent, EventName, EventPayload } from './events';
9
9
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,YAAY,EAAE,6BAA6B,EAAE,MAAM,kBAAkB,CAAC;AACtE,OAAO,EAAE,0BAA0B,EAAE,MAAM,8BAA8B,CAAC;AAC1E,YAAY,EAAE,+BAA+B,EAAE,MAAM,8BAA8B,CAAC;AACpF,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,YAAY,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAC;AACxE,YAAY,EACV,mBAAmB,EACnB,wBAAwB,EACxB,eAAe,EACf,mBAAmB,EACnB,mBAAmB,EACnB,oBAAoB,EACpB,qBAAqB,EACrB,mBAAmB,EACnB,gBAAgB,EAChB,aAAa,EACb,aAAa,EACb,mBAAmB,EACnB,aAAa,EACb,UAAU,EACV,mBAAmB,EACnB,kBAAkB,EAClB,OAAO,EACP,eAAe,EACf,aAAa,EACb,iBAAiB,EACjB,UAAU,GACX,MAAM,SAAS,CAAC;AACjB,YAAY,EAAE,aAAa,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,YAAY,EAAE,6BAA6B,EAAE,MAAM,kBAAkB,CAAC;AACtE,OAAO,EAAE,0BAA0B,EAAE,MAAM,8BAA8B,CAAC;AAC1E,YAAY,EAAE,+BAA+B,EAAE,MAAM,8BAA8B,CAAC;AACpF,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,YAAY,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAC;AACxE,YAAY,EACV,mBAAmB,EACnB,wBAAwB,EACxB,eAAe,EACf,mBAAmB,EACnB,mBAAmB,EACnB,oBAAoB,EACpB,qBAAqB,EACrB,mBAAmB,EACnB,gBAAgB,EAChB,iBAAiB,EACjB,iBAAiB,EACjB,iBAAiB,EACjB,aAAa,EACb,aAAa,EACb,mBAAmB,EACnB,aAAa,EACb,UAAU,EACV,mBAAmB,EACnB,kBAAkB,EAClB,OAAO,EACP,eAAe,EACf,aAAa,EACb,iBAAiB,EACjB,UAAU,GACX,MAAM,SAAS,CAAC;AACjB,YAAY,EAAE,aAAa,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC"}
@@ -1,6 +1,12 @@
1
1
  import type { HybridView, HybridViewMethods, HybridViewProps } from 'react-native-nitro-modules';
2
2
  export interface OnramperCheckoutButtonProps extends HybridViewProps {
3
3
  intentHandle: string;
4
+ /**
5
+ * Called with the hosted SwiftUI content's height (points) whenever it changes —
6
+ * e.g. when ToS text appears under the Buy button. React Native can't measure
7
+ * the SwiftUI content itself, so the JS wrapper applies this as `height`.
8
+ */
9
+ onContentHeightChange?: (height: number) => void;
4
10
  }
5
11
  export interface OnramperCheckoutButtonMethods extends HybridViewMethods {
6
12
  }
@@ -1 +1 @@
1
- {"version":3,"file":"OnramperCheckoutButton.nitro.d.ts","sourceRoot":"","sources":["../../../../../src/specs/OnramperCheckoutButton.nitro.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAKjG,MAAM,WAAW,2BAA4B,SAAQ,eAAe;IAClE,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,6BAA8B,SAAQ,iBAAiB;CAAG;AAE3E,MAAM,MAAM,sBAAsB,GAAG,UAAU,CAC7C,2BAA2B,EAC3B,6BAA6B,EAC7B;IAAE,GAAG,EAAE,OAAO,CAAA;CAAE,CACjB,CAAC"}
1
+ {"version":3,"file":"OnramperCheckoutButton.nitro.d.ts","sourceRoot":"","sources":["../../../../../src/specs/OnramperCheckoutButton.nitro.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAKjG,MAAM,WAAW,2BAA4B,SAAQ,eAAe;IAClE,YAAY,EAAE,MAAM,CAAC;IACrB;;;;OAIG;IACH,qBAAqB,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;CAClD;AAED,MAAM,WAAW,6BAA8B,SAAQ,iBAAiB;CAAG;AAE3E,MAAM,MAAM,sBAAsB,GAAG,UAAU,CAC7C,2BAA2B,EAC3B,6BAA6B,EAC7B;IAAE,GAAG,EAAE,OAAO,CAAA;CAAE,CACjB,CAAC"}
@@ -5,6 +5,8 @@ export interface OnramperNitroConfig {
5
5
  environment: string;
6
6
  theme: string;
7
7
  logLevel: string;
8
+ isEventLoggingEnabled: boolean;
9
+ isEventConsoleLoggingEnabled: boolean;
8
10
  }
9
11
  export interface NitroSessionCredentials {
10
12
  sessionId: string;
@@ -26,12 +28,14 @@ export interface PreparedIntentResult {
26
28
  export interface OnramperNitro extends HybridObject<{
27
29
  ios: 'swift';
28
30
  }> {
31
+ readonly sdkVersion: string;
29
32
  configure(config: OnramperNitroConfig): Promise<void>;
30
33
  initialize(sessionId: string, sessionToken: string): Promise<void>;
31
34
  reset(): Promise<void>;
32
35
  signOut(): Promise<void>;
33
36
  getCheckoutRequirements(requestJson: string, prefillJson: string, styleJson: string): Promise<PreparedIntentResult>;
34
37
  cancelPreparedIntent(intentHandle: string): Promise<void>;
38
+ setLogListener(onLog: (recordJson: string) => void): void;
35
39
  setStateListener(onState: (stateJson: string) => void): void;
36
40
  setEventListener(onEvent: (eventJson: string) => void): void;
37
41
  setTransactionIdListener(onTransactionId: (transactionId: string | undefined) => void): void;
@@ -1 +1 @@
1
- {"version":3,"file":"OnramperNitro.nitro.d.ts","sourceRoot":"","sources":["../../../../../src/specs/OnramperNitro.nitro.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAI/D,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;CAClB;AAID,MAAM,WAAW,uBAAuB;IACtC,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;CACtB;AAID,MAAM,WAAW,oBAAoB;IACnC,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;;;;;;;GAQG;AACH,MAAM,WAAW,aAAc,SAAQ,YAAY,CAAC;IAAE,GAAG,EAAE,OAAO,CAAA;CAAE,CAAC;IACnE,SAAS,CAAC,MAAM,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACtD,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACnE,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACvB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IASzB,uBAAuB,CAAC,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAAC;IACpH,oBAAoB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAG1D,gBAAgB,CAAC,OAAO,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,GAAG,IAAI,CAAC;IAC7D,gBAAgB,CAAC,OAAO,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,GAAG,IAAI,CAAC;IAE7D,wBAAwB,CAAC,eAAe,EAAE,CAAC,aAAa,EAAE,MAAM,GAAG,SAAS,KAAK,IAAI,GAAG,IAAI,CAAC;IAI7F,2BAA2B,CAAC,OAAO,EAAE,MAAM,OAAO,CAAC,uBAAuB,CAAC,GAAG,IAAI,CAAC;CAKpF"}
1
+ {"version":3,"file":"OnramperNitro.nitro.d.ts","sourceRoot":"","sources":["../../../../../src/specs/OnramperNitro.nitro.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAI/D,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,qBAAqB,EAAE,OAAO,CAAC;IAC/B,4BAA4B,EAAE,OAAO,CAAC;CACvC;AAID,MAAM,WAAW,uBAAuB;IACtC,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;CACtB;AAID,MAAM,WAAW,oBAAoB;IACnC,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;;;;;;;GAQG;AACH,MAAM,WAAW,aAAc,SAAQ,YAAY,CAAC;IAAE,GAAG,EAAE,OAAO,CAAA;CAAE,CAAC;IAEnE,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,SAAS,CAAC,MAAM,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACtD,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACnE,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACvB,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IASzB,uBAAuB,CAAC,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAAC;IACpH,oBAAoB,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAG1D,cAAc,CAAC,KAAK,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,IAAI,GAAG,IAAI,CAAC;IAC1D,gBAAgB,CAAC,OAAO,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,GAAG,IAAI,CAAC;IAC7D,gBAAgB,CAAC,OAAO,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,GAAG,IAAI,CAAC;IAE7D,wBAAwB,CAAC,eAAe,EAAE,CAAC,aAAa,EAAE,MAAM,GAAG,SAAS,KAAK,IAAI,GAAG,IAAI,CAAC;IAI7F,2BAA2B,CAAC,OAAO,EAAE,MAAM,OAAO,CAAC,uBAAuB,CAAC,GAAG,IAAI,CAAC;CAKpF"}
@@ -1,6 +1,15 @@
1
1
  import type { OnramperErrorPayload } from './errors';
2
2
  export type OnramperEnvironment = 'development' | 'production';
3
3
  export type OnramperLogLevel = 'off' | 'error' | 'info' | 'debug';
4
+ /** A sanitized native SDK diagnostic. Timestamp is Unix milliseconds. */
5
+ export interface OnramperLogRecord {
6
+ timestamp: number;
7
+ level: OnramperLogLevel;
8
+ category: string;
9
+ event: string;
10
+ context: Record<string, string>;
11
+ message: string;
12
+ }
4
13
  export type OnramperTheme = 'system' | 'light' | 'dark';
5
14
  export type TransactionType = 'buy' | 'sell';
6
15
  export interface SessionCredentials {
@@ -13,12 +22,16 @@ export interface OnramperConfiguration {
13
22
  environment: OnramperEnvironment;
14
23
  theme?: OnramperTheme;
15
24
  logLevel?: OnramperLogLevel;
25
+ /** Receives native records in JS; system Console output is preserved. Off unless logLevel enables it. */
26
+ logHandler?: (record: OnramperLogRecord) => void;
27
+ /** Opt-in provider-event telemetry to the BFF. Defaults to false. */
28
+ isEventLoggingEnabled?: boolean;
29
+ /** Emit provider events at info even when logLevel is lower. Defaults to false. */
30
+ isEventConsoleLoggingEnabled?: boolean;
16
31
  /**
17
32
  * Called by the SDK when the session token expires and needs to be re-issued.
18
33
  *
19
- * May be synchronous or async — under the hood the bridge uses an event
20
- * round-trip (`onSessionExpired` → `provideSessionCredentials`) so Promises
21
- * are awaited normally. Throw or reject to signal that no fresh credentials
34
+ * May be synchronous or async; the Nitro bridge awaits the callback directly. Throw or reject to signal that no fresh credentials
22
35
  * are available; the SDK will surface `userTokenRefreshFailed`.
23
36
  */
24
37
  onSessionExpired: () => SessionCredentials | Promise<SessionCredentials>;
@@ -48,6 +61,17 @@ export interface QuoteResponse {
48
61
  networkFee: number;
49
62
  transactionFee: number;
50
63
  recommendations?: string[];
64
+ providerContext?: Record<string, ProviderJSONValue>;
65
+ }
66
+ /** JSON values used in provider-specific quote metadata (including booleans and limits). */
67
+ export type ProviderJSONValue = string | number | boolean | null | ProviderJSONValue[] | {
68
+ [key: string]: ProviderJSONValue;
69
+ };
70
+ export interface PaymentDisclosure {
71
+ code: string;
72
+ version: string;
73
+ contentMarkdown: string;
74
+ contentHtml: string;
51
75
  }
52
76
  export interface OnramperUserPrefill {
53
77
  email?: string;
@@ -67,6 +91,9 @@ export interface HeadlessCheckoutData {
67
91
  checkoutPaymentType: CheckoutPaymentType;
68
92
  url: string;
69
93
  renderType: RenderType;
94
+ providerBootstrap?: {
95
+ framesBaseUrl?: string;
96
+ };
70
97
  }
71
98
  export interface CheckoutFinalizeResponse {
72
99
  headlessCheckoutId: string;
@@ -131,6 +158,8 @@ export type OnramperState = {
131
158
  url: string;
132
159
  renderType: RenderType;
133
160
  paymentType: CheckoutPaymentType;
161
+ } | {
162
+ kind: 'paymentPending';
134
163
  } | {
135
164
  kind: 'completed';
136
165
  } | {