@edge-markets/connect 1.2.0 → 1.4.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.
package/dist/index.d.ts CHANGED
@@ -1,9 +1,145 @@
1
+ type EdgeEnvironment = 'production' | 'staging' | 'sandbox' | 'development';
2
+ interface EdgeEnvironmentConfig {
3
+ /**
4
+ * @deprecated cognitoDomain is no longer used. Token exchange now goes through EdgeBoost API.
5
+ */
6
+ cognitoDomain: string;
7
+ apiBaseUrl: string;
8
+ oauthBaseUrl: string;
9
+ userClientUrl: string;
10
+ displayName: string;
11
+ isProduction: boolean;
12
+ }
13
+ declare const EDGE_ENVIRONMENTS: Readonly<Record<EdgeEnvironment, EdgeEnvironmentConfig>>;
14
+ declare function getEnvironmentConfig(environment: EdgeEnvironment): EdgeEnvironmentConfig;
15
+ declare function isProductionEnvironment(environment: EdgeEnvironment): boolean;
16
+ declare function getAvailableEnvironments(): readonly EdgeEnvironment[];
17
+
18
+ /**
19
+ * EDGE Connect OAuth Scopes
20
+ *
21
+ * OAuth scopes define what permissions your application requests from users.
22
+ * Each scope grants access to specific API endpoints.
23
+ *
24
+ * @module @edge-markets/connect/config
25
+ */
26
+ /**
27
+ * Available OAuth scopes for EDGE Connect.
28
+ *
29
+ * Request the minimum scopes your application needs.
30
+ * Users see these permissions during the consent flow.
31
+ *
32
+ * @example
33
+ * ```typescript
34
+ * // Request only what you need
35
+ * link.open({
36
+ * scopes: [EDGE_SCOPES.USER_READ, EDGE_SCOPES.BALANCE_READ],
37
+ * })
38
+ *
39
+ * // Or request all scopes
40
+ * link.open({
41
+ * scopes: ALL_EDGE_SCOPES,
42
+ * })
43
+ * ```
44
+ */
45
+ declare const EDGE_SCOPES: {
46
+ /**
47
+ * Read user profile information (name, email).
48
+ * Required for: `GET /v1/user`
49
+ */
50
+ readonly USER_READ: "user.read";
51
+ /**
52
+ * Read account balance.
53
+ * Required for: `GET /v1/balance`
54
+ */
55
+ readonly BALANCE_READ: "balance.read";
56
+ /**
57
+ * Initiate and verify fund transfers.
58
+ * Required for: `POST /v1/transfer`, `POST /v1/transfer/:id/verify`, `GET /v1/transfers`
59
+ */
60
+ readonly TRANSFER_WRITE: "transfer.write";
61
+ };
62
+ /**
63
+ * Type representing a valid EDGE Connect scope.
64
+ */
65
+ type EdgeScope = (typeof EDGE_SCOPES)[keyof typeof EDGE_SCOPES];
66
+ /**
67
+ * All available scopes as an array.
68
+ * Use when you need full access to all API features.
69
+ *
70
+ * @example
71
+ * ```typescript
72
+ * const link = new EdgeLink({
73
+ * clientId: 'your-client-id',
74
+ * environment: 'staging',
75
+ * scopes: ALL_EDGE_SCOPES, // Request all permissions
76
+ * onSuccess: handleSuccess,
77
+ * })
78
+ * ```
79
+ */
80
+ declare const ALL_EDGE_SCOPES: readonly EdgeScope[];
81
+ /**
82
+ * Human-readable descriptions for each scope.
83
+ * Useful for building custom consent UIs or explaining permissions.
84
+ */
85
+ declare const SCOPE_DESCRIPTIONS: Readonly<Record<EdgeScope, string>>;
86
+ /**
87
+ * Icons for each scope (for UI display).
88
+ * Using common icon library names (e.g., Lucide, Heroicons).
89
+ */
90
+ declare const SCOPE_ICONS: Readonly<Record<EdgeScope, string>>;
91
+ /**
92
+ * Builds the full scope string for a given environment.
93
+ *
94
+ * Different environments may use different scope prefixes in the API Gateway.
95
+ * This function handles the prefix automatically.
96
+ *
97
+ * Note: 'development' environment uses 'staging' scope prefix because it
98
+ * connects to the staging API Gateway for local testing.
99
+ *
100
+ * @param scope - The scope to format
101
+ * @param environment - The target environment
102
+ * @returns The full scope string for API Gateway authorization
103
+ *
104
+ * @example
105
+ * ```typescript
106
+ * formatScopeForEnvironment('user.read', 'staging')
107
+ * // Returns: 'edge-connect-staging/user.read'
108
+ *
109
+ * formatScopeForEnvironment('user.read', 'production')
110
+ * // Returns: 'edge-connect/user.read'
111
+ *
112
+ * formatScopeForEnvironment('user.read', 'development')
113
+ * // Returns: 'edge-connect-staging/user.read' (maps to staging)
114
+ * ```
115
+ */
116
+ declare function formatScopeForEnvironment(scope: EdgeScope, environment: 'production' | 'staging' | 'sandbox' | 'development'): string;
117
+ /**
118
+ * Formats multiple scopes for an environment.
119
+ *
120
+ * @param scopes - Array of scopes to format
121
+ * @param environment - The target environment
122
+ * @returns Array of full scope strings
123
+ */
124
+ declare function formatScopesForEnvironment(scopes: readonly EdgeScope[] | EdgeScope[], environment: 'production' | 'staging' | 'sandbox' | 'development'): string[];
125
+ /**
126
+ * Parses a full scope string to extract the base scope.
127
+ *
128
+ * @param fullScope - The full scope string (e.g., 'edge-connect-staging/user.read')
129
+ * @returns The base scope (e.g., 'user.read') or null if invalid
130
+ */
131
+ declare function parseScope(fullScope: string): EdgeScope | null;
132
+ /**
133
+ * Checks if a scope string is valid.
134
+ */
135
+ declare function isValidScope(scope: string): scope is EdgeScope;
136
+
1
137
  /**
2
138
  * This file was auto-generated by openapi-typescript.
3
139
  * Do not make direct changes to the file.
4
140
  */
5
141
  interface paths {
6
- "/auth/register": {
142
+ '/auth/register': {
7
143
  parameters: {
8
144
  query?: never;
9
145
  header?: never;
@@ -12,14 +148,14 @@ interface paths {
12
148
  };
13
149
  get?: never;
14
150
  put?: never;
15
- post: operations["RegistrationController_register"];
151
+ post: operations['RegistrationController_register'];
16
152
  delete?: never;
17
153
  options?: never;
18
154
  head?: never;
19
155
  patch?: never;
20
156
  trace?: never;
21
157
  };
22
- "/auth/verify-email-otp": {
158
+ '/auth/verify-email-otp': {
23
159
  parameters: {
24
160
  query?: never;
25
161
  header?: never;
@@ -28,14 +164,14 @@ interface paths {
28
164
  };
29
165
  get?: never;
30
166
  put?: never;
31
- post: operations["RegistrationController_verifyEmailOTP"];
167
+ post: operations['RegistrationController_verifyEmailOTP'];
32
168
  delete?: never;
33
169
  options?: never;
34
170
  head?: never;
35
171
  patch?: never;
36
172
  trace?: never;
37
173
  };
38
- "/auth/accept-terms": {
174
+ '/auth/accept-terms': {
39
175
  parameters: {
40
176
  query?: never;
41
177
  header?: never;
@@ -44,14 +180,14 @@ interface paths {
44
180
  };
45
181
  get?: never;
46
182
  put?: never;
47
- post: operations["RegistrationController_acceptTerms"];
183
+ post: operations['RegistrationController_acceptTerms'];
48
184
  delete?: never;
49
185
  options?: never;
50
186
  head?: never;
51
187
  patch?: never;
52
188
  trace?: never;
53
189
  };
54
- "/auth/complete-profile": {
190
+ '/auth/complete-profile': {
55
191
  parameters: {
56
192
  query?: never;
57
193
  header?: never;
@@ -60,14 +196,14 @@ interface paths {
60
196
  };
61
197
  get?: never;
62
198
  put?: never;
63
- post: operations["RegistrationController_completeProfile"];
199
+ post: operations['RegistrationController_completeProfile'];
64
200
  delete?: never;
65
201
  options?: never;
66
202
  head?: never;
67
203
  patch?: never;
68
204
  trace?: never;
69
205
  };
70
- "/auth/update-ssn": {
206
+ '/auth/update-ssn': {
71
207
  parameters: {
72
208
  query?: never;
73
209
  header?: never;
@@ -76,14 +212,14 @@ interface paths {
76
212
  };
77
213
  get?: never;
78
214
  put?: never;
79
- post: operations["RegistrationController_updateSSN"];
215
+ post: operations['RegistrationController_updateSSN'];
80
216
  delete?: never;
81
217
  options?: never;
82
218
  head?: never;
83
219
  patch?: never;
84
220
  trace?: never;
85
221
  };
86
- "/auth/setup-mfa": {
222
+ '/auth/setup-mfa': {
87
223
  parameters: {
88
224
  query?: never;
89
225
  header?: never;
@@ -92,14 +228,14 @@ interface paths {
92
228
  };
93
229
  get?: never;
94
230
  put?: never;
95
- post: operations["MFASetupController_setupMFA"];
231
+ post: operations['MFASetupController_setupMFA'];
96
232
  delete?: never;
97
233
  options?: never;
98
234
  head?: never;
99
235
  patch?: never;
100
236
  trace?: never;
101
237
  };
102
- "/auth/resend-sms-setup": {
238
+ '/auth/resend-sms-setup': {
103
239
  parameters: {
104
240
  query?: never;
105
241
  header?: never;
@@ -108,14 +244,14 @@ interface paths {
108
244
  };
109
245
  get?: never;
110
246
  put?: never;
111
- post: operations["MFASetupController_resendSMSSetup"];
247
+ post: operations['MFASetupController_resendSMSSetup'];
112
248
  delete?: never;
113
249
  options?: never;
114
250
  head?: never;
115
251
  patch?: never;
116
252
  trace?: never;
117
253
  };
118
- "/auth/verify-authenticator-setup": {
254
+ '/auth/verify-authenticator-setup': {
119
255
  parameters: {
120
256
  query?: never;
121
257
  header?: never;
@@ -124,14 +260,14 @@ interface paths {
124
260
  };
125
261
  get?: never;
126
262
  put?: never;
127
- post: operations["MFASetupController_verifyAuthenticatorSetup"];
263
+ post: operations['MFASetupController_verifyAuthenticatorSetup'];
128
264
  delete?: never;
129
265
  options?: never;
130
266
  head?: never;
131
267
  patch?: never;
132
268
  trace?: never;
133
269
  };
134
- "/auth/verify-sms-setup": {
270
+ '/auth/verify-sms-setup': {
135
271
  parameters: {
136
272
  query?: never;
137
273
  header?: never;
@@ -140,14 +276,14 @@ interface paths {
140
276
  };
141
277
  get?: never;
142
278
  put?: never;
143
- post: operations["MFASetupController_verifySMSSetup"];
279
+ post: operations['MFASetupController_verifySMSSetup'];
144
280
  delete?: never;
145
281
  options?: never;
146
282
  head?: never;
147
283
  patch?: never;
148
284
  trace?: never;
149
285
  };
150
- "/auth/login": {
286
+ '/auth/login': {
151
287
  parameters: {
152
288
  query?: never;
153
289
  header?: never;
@@ -156,14 +292,14 @@ interface paths {
156
292
  };
157
293
  get?: never;
158
294
  put?: never;
159
- post: operations["LoginController_login"];
295
+ post: operations['LoginController_login'];
160
296
  delete?: never;
161
297
  options?: never;
162
298
  head?: never;
163
299
  patch?: never;
164
300
  trace?: never;
165
301
  };
166
- "/auth/verify-login-otp": {
302
+ '/auth/verify-login-otp': {
167
303
  parameters: {
168
304
  query?: never;
169
305
  header?: never;
@@ -172,14 +308,14 @@ interface paths {
172
308
  };
173
309
  get?: never;
174
310
  put?: never;
175
- post: operations["LoginController_verifyLoginOTP"];
311
+ post: operations['LoginController_verifyLoginOTP'];
176
312
  delete?: never;
177
313
  options?: never;
178
314
  head?: never;
179
315
  patch?: never;
180
316
  trace?: never;
181
317
  };
182
- "/auth/verify-mfa": {
318
+ '/auth/verify-mfa': {
183
319
  parameters: {
184
320
  query?: never;
185
321
  header?: never;
@@ -188,14 +324,14 @@ interface paths {
188
324
  };
189
325
  get?: never;
190
326
  put?: never;
191
- post: operations["LoginController_verifyMFA"];
327
+ post: operations['LoginController_verifyMFA'];
192
328
  delete?: never;
193
329
  options?: never;
194
330
  head?: never;
195
331
  patch?: never;
196
332
  trace?: never;
197
333
  };
198
- "/auth/resend-email-otp": {
334
+ '/auth/resend-email-otp': {
199
335
  parameters: {
200
336
  query?: never;
201
337
  header?: never;
@@ -204,14 +340,14 @@ interface paths {
204
340
  };
205
341
  get?: never;
206
342
  put?: never;
207
- post: operations["LoginController_resendEmailOTP"];
343
+ post: operations['LoginController_resendEmailOTP'];
208
344
  delete?: never;
209
345
  options?: never;
210
346
  head?: never;
211
347
  patch?: never;
212
348
  trace?: never;
213
349
  };
214
- "/auth/resend-sms-mfa": {
350
+ '/auth/resend-sms-mfa': {
215
351
  parameters: {
216
352
  query?: never;
217
353
  header?: never;
@@ -220,14 +356,14 @@ interface paths {
220
356
  };
221
357
  get?: never;
222
358
  put?: never;
223
- post: operations["LoginController_resendSMSMFA"];
359
+ post: operations['LoginController_resendSMSMFA'];
224
360
  delete?: never;
225
361
  options?: never;
226
362
  head?: never;
227
363
  patch?: never;
228
364
  trace?: never;
229
365
  };
230
- "/auth/refresh-token": {
366
+ '/auth/refresh-token': {
231
367
  parameters: {
232
368
  query?: never;
233
369
  header?: never;
@@ -236,14 +372,14 @@ interface paths {
236
372
  };
237
373
  get?: never;
238
374
  put?: never;
239
- post: operations["LoginController_refreshToken"];
375
+ post: operations['LoginController_refreshToken'];
240
376
  delete?: never;
241
377
  options?: never;
242
378
  head?: never;
243
379
  patch?: never;
244
380
  trace?: never;
245
381
  };
246
- "/auth/debug/ip": {
382
+ '/auth/debug/ip': {
247
383
  parameters: {
248
384
  query?: never;
249
385
  header?: never;
@@ -252,22 +388,22 @@ interface paths {
252
388
  };
253
389
  get?: never;
254
390
  put?: never;
255
- post: operations["LoginController_debugIp"];
391
+ post: operations['LoginController_debugIp'];
256
392
  delete?: never;
257
393
  options?: never;
258
394
  head?: never;
259
395
  patch?: never;
260
396
  trace?: never;
261
397
  };
262
- "/auth/profile": {
398
+ '/auth/profile': {
263
399
  parameters: {
264
400
  query?: never;
265
401
  header?: never;
266
402
  path?: never;
267
403
  cookie?: never;
268
404
  };
269
- get: operations["ProfileController_getProfile"];
270
- put: operations["ProfileController_updateProfile"];
405
+ get: operations['ProfileController_getProfile'];
406
+ put: operations['ProfileController_updateProfile'];
271
407
  post?: never;
272
408
  delete?: never;
273
409
  options?: never;
@@ -275,7 +411,7 @@ interface paths {
275
411
  patch?: never;
276
412
  trace?: never;
277
413
  };
278
- "/auth/fill-account-vip": {
414
+ '/auth/fill-account-vip': {
279
415
  parameters: {
280
416
  query?: never;
281
417
  header?: never;
@@ -283,7 +419,7 @@ interface paths {
283
419
  cookie?: never;
284
420
  };
285
421
  get?: never;
286
- put: operations["ProfileController_fillAccountVIP"];
422
+ put: operations['ProfileController_fillAccountVIP'];
287
423
  post?: never;
288
424
  delete?: never;
289
425
  options?: never;
@@ -291,7 +427,7 @@ interface paths {
291
427
  patch?: never;
292
428
  trace?: never;
293
429
  };
294
- "/auth/logout": {
430
+ '/auth/logout': {
295
431
  parameters: {
296
432
  query?: never;
297
433
  header?: never;
@@ -300,14 +436,14 @@ interface paths {
300
436
  };
301
437
  get?: never;
302
438
  put?: never;
303
- post: operations["LogoutController_logout"];
439
+ post: operations['LogoutController_logout'];
304
440
  delete?: never;
305
441
  options?: never;
306
442
  head?: never;
307
443
  patch?: never;
308
444
  trace?: never;
309
445
  };
310
- "/vgs/ping": {
446
+ '/vgs/ping': {
311
447
  parameters: {
312
448
  query?: never;
313
449
  header?: never;
@@ -316,21 +452,21 @@ interface paths {
316
452
  };
317
453
  get?: never;
318
454
  put?: never;
319
- post: operations["VGSController_pingGalileo"];
455
+ post: operations['VGSController_pingGalileo'];
320
456
  delete?: never;
321
457
  options?: never;
322
458
  head?: never;
323
459
  patch?: never;
324
460
  trace?: never;
325
461
  };
326
- "/vgs/card/{cardId}": {
462
+ '/vgs/card/{cardId}': {
327
463
  parameters: {
328
464
  query?: never;
329
465
  header?: never;
330
466
  path?: never;
331
467
  cookie?: never;
332
468
  };
333
- get: operations["VGSController_getCardDetails"];
469
+ get: operations['VGSController_getCardDetails'];
334
470
  put?: never;
335
471
  post?: never;
336
472
  delete?: never;
@@ -339,7 +475,7 @@ interface paths {
339
475
  patch?: never;
340
476
  trace?: never;
341
477
  };
342
- "/vgs/card/{cardId}/pin-change-key": {
478
+ '/vgs/card/{cardId}/pin-change-key': {
343
479
  parameters: {
344
480
  query?: never;
345
481
  header?: never;
@@ -348,14 +484,14 @@ interface paths {
348
484
  };
349
485
  get?: never;
350
486
  put?: never;
351
- post: operations["VGSController_getPinChangeKey"];
487
+ post: operations['VGSController_getPinChangeKey'];
352
488
  delete?: never;
353
489
  options?: never;
354
490
  head?: never;
355
491
  patch?: never;
356
492
  trace?: never;
357
493
  };
358
- "/vgs/card/{cardId}/commit-pin-change": {
494
+ '/vgs/card/{cardId}/commit-pin-change': {
359
495
  parameters: {
360
496
  query?: never;
361
497
  header?: never;
@@ -364,21 +500,21 @@ interface paths {
364
500
  };
365
501
  get?: never;
366
502
  put?: never;
367
- post: operations["VGSController_commitPinChange"];
503
+ post: operations['VGSController_commitPinChange'];
368
504
  delete?: never;
369
505
  options?: never;
370
506
  head?: never;
371
507
  patch?: never;
372
508
  trace?: never;
373
509
  };
374
- "/admin/migration/status": {
510
+ '/admin/migration/status': {
375
511
  parameters: {
376
512
  query?: never;
377
513
  header?: never;
378
514
  path?: never;
379
515
  cookie?: never;
380
516
  };
381
- get: operations["MigrationController_getStatus"];
517
+ get: operations['MigrationController_getStatus'];
382
518
  put?: never;
383
519
  post?: never;
384
520
  delete?: never;
@@ -387,7 +523,7 @@ interface paths {
387
523
  patch?: never;
388
524
  trace?: never;
389
525
  };
390
- "/admin/migration/mark-users": {
526
+ '/admin/migration/mark-users': {
391
527
  parameters: {
392
528
  query?: never;
393
529
  header?: never;
@@ -396,14 +532,14 @@ interface paths {
396
532
  };
397
533
  get?: never;
398
534
  put?: never;
399
- post: operations["MigrationController_markUsers"];
535
+ post: operations['MigrationController_markUsers'];
400
536
  delete?: never;
401
537
  options?: never;
402
538
  head?: never;
403
539
  patch?: never;
404
540
  trace?: never;
405
541
  };
406
- "/admin/migration/validate": {
542
+ '/admin/migration/validate': {
407
543
  parameters: {
408
544
  query?: never;
409
545
  header?: never;
@@ -412,14 +548,14 @@ interface paths {
412
548
  };
413
549
  get?: never;
414
550
  put?: never;
415
- post: operations["MigrationController_validateUsers"];
551
+ post: operations['MigrationController_validateUsers'];
416
552
  delete?: never;
417
553
  options?: never;
418
554
  head?: never;
419
555
  patch?: never;
420
556
  trace?: never;
421
557
  };
422
- "/admin/migration/preview": {
558
+ '/admin/migration/preview': {
423
559
  parameters: {
424
560
  query?: never;
425
561
  header?: never;
@@ -428,14 +564,14 @@ interface paths {
428
564
  };
429
565
  get?: never;
430
566
  put?: never;
431
- post: operations["MigrationController_preview"];
567
+ post: operations['MigrationController_preview'];
432
568
  delete?: never;
433
569
  options?: never;
434
570
  head?: never;
435
571
  patch?: never;
436
572
  trace?: never;
437
573
  };
438
- "/admin/migration/trigger": {
574
+ '/admin/migration/trigger': {
439
575
  parameters: {
440
576
  query?: never;
441
577
  header?: never;
@@ -444,21 +580,21 @@ interface paths {
444
580
  };
445
581
  get?: never;
446
582
  put?: never;
447
- post: operations["MigrationController_triggerMigration"];
583
+ post: operations['MigrationController_triggerMigration'];
448
584
  delete?: never;
449
585
  options?: never;
450
586
  head?: never;
451
587
  patch?: never;
452
588
  trace?: never;
453
589
  };
454
- "/admin/migration/pending": {
590
+ '/admin/migration/pending': {
455
591
  parameters: {
456
592
  query?: never;
457
593
  header?: never;
458
594
  path?: never;
459
595
  cookie?: never;
460
596
  };
461
- get: operations["MigrationController_getPending"];
597
+ get: operations['MigrationController_getPending'];
462
598
  put?: never;
463
599
  post?: never;
464
600
  delete?: never;
@@ -467,7 +603,7 @@ interface paths {
467
603
  patch?: never;
468
604
  trace?: never;
469
605
  };
470
- "/admin/migration/rollback/{userId}": {
606
+ '/admin/migration/rollback/{userId}': {
471
607
  parameters: {
472
608
  query?: never;
473
609
  header?: never;
@@ -476,21 +612,21 @@ interface paths {
476
612
  };
477
613
  get?: never;
478
614
  put?: never;
479
- post: operations["MigrationController_rollbackUser"];
615
+ post: operations['MigrationController_rollbackUser'];
480
616
  delete?: never;
481
617
  options?: never;
482
618
  head?: never;
483
619
  patch?: never;
484
620
  trace?: never;
485
621
  };
486
- "/hubspot/identification-token": {
622
+ '/hubspot/identification-token': {
487
623
  parameters: {
488
624
  query?: never;
489
625
  header?: never;
490
626
  path?: never;
491
627
  cookie?: never;
492
628
  };
493
- get: operations["HubspotController_getIdentificationToken"];
629
+ get: operations['HubspotController_getIdentificationToken'];
494
630
  put?: never;
495
631
  post?: never;
496
632
  delete?: never;
@@ -499,7 +635,7 @@ interface paths {
499
635
  patch?: never;
500
636
  trace?: never;
501
637
  };
502
- "/v1/user": {
638
+ '/v1/user': {
503
639
  parameters: {
504
640
  query?: never;
505
641
  header?: never;
@@ -510,7 +646,7 @@ interface paths {
510
646
  * Get user profile
511
647
  * @description Returns the authenticated user's profile information including name and email.
512
648
  */
513
- get: operations["getUser"];
649
+ get: operations['getUser'];
514
650
  put?: never;
515
651
  post?: never;
516
652
  delete?: never;
@@ -519,7 +655,7 @@ interface paths {
519
655
  patch?: never;
520
656
  trace?: never;
521
657
  };
522
- "/v1/balance": {
658
+ '/v1/balance': {
523
659
  parameters: {
524
660
  query?: never;
525
661
  header?: never;
@@ -530,7 +666,7 @@ interface paths {
530
666
  * Get user balance
531
667
  * @description Returns the authenticated user's current EdgeBoost balance.
532
668
  */
533
- get: operations["getBalance"];
669
+ get: operations['getBalance'];
534
670
  put?: never;
535
671
  post?: never;
536
672
  delete?: never;
@@ -539,7 +675,7 @@ interface paths {
539
675
  patch?: never;
540
676
  trace?: never;
541
677
  };
542
- "/v1/transfer": {
678
+ '/v1/transfer': {
543
679
  parameters: {
544
680
  query?: never;
545
681
  header?: never;
@@ -562,14 +698,14 @@ interface paths {
562
698
  * **OTP Verification:**
563
699
  * After initiating, the transfer will be in `pending_verification` status. Call `POST /transfer/{transferId}/verify` with the OTP to complete.
564
700
  */
565
- post: operations["initiateTransfer"];
701
+ post: operations['initiateTransfer'];
566
702
  delete?: never;
567
703
  options?: never;
568
704
  head?: never;
569
705
  patch?: never;
570
706
  trace?: never;
571
707
  };
572
- "/v1/transfer/{transferId}": {
708
+ '/v1/transfer/{transferId}': {
573
709
  parameters: {
574
710
  query?: never;
575
711
  header?: never;
@@ -580,7 +716,7 @@ interface paths {
580
716
  * Get transfer status
581
717
  * @description Returns the current status of a transfer. Use this for polling after initiating a transfer.
582
718
  */
583
- get: operations["getTransferStatus"];
719
+ get: operations['getTransferStatus'];
584
720
  put?: never;
585
721
  post?: never;
586
722
  delete?: never;
@@ -589,7 +725,7 @@ interface paths {
589
725
  patch?: never;
590
726
  trace?: never;
591
727
  };
592
- "/v1/transfers": {
728
+ '/v1/transfers': {
593
729
  parameters: {
594
730
  query?: never;
595
731
  header?: never;
@@ -600,7 +736,7 @@ interface paths {
600
736
  * List transfers
601
737
  * @description Returns a paginated list of transfers for the authenticated user. Useful for reconciliation.
602
738
  */
603
- get: operations["listTransfers"];
739
+ get: operations['listTransfers'];
604
740
  put?: never;
605
741
  post?: never;
606
742
  delete?: never;
@@ -609,7 +745,7 @@ interface paths {
609
745
  patch?: never;
610
746
  trace?: never;
611
747
  };
612
- "/v1/transfer/{transferId}/verify": {
748
+ '/v1/transfer/{transferId}/verify': {
613
749
  parameters: {
614
750
  query?: never;
615
751
  header?: never;
@@ -628,14 +764,14 @@ interface paths {
628
764
  *
629
765
  * The OTP method is indicated in the `otpMethod` field of the transfer response.
630
766
  */
631
- post: operations["verifyTransfer"];
767
+ post: operations['verifyTransfer'];
632
768
  delete?: never;
633
769
  options?: never;
634
770
  head?: never;
635
771
  patch?: never;
636
772
  trace?: never;
637
773
  };
638
- "/v1/consent": {
774
+ '/v1/consent': {
639
775
  parameters: {
640
776
  query?: never;
641
777
  header?: never;
@@ -654,36 +790,36 @@ interface paths {
654
790
  * - The user must re-authenticate and grant consent to restore access
655
791
  * - Partners should implement this as a "disconnect" or "unlink" feature
656
792
  */
657
- delete: operations["revokeConsent"];
793
+ delete: operations['revokeConsent'];
658
794
  options?: never;
659
795
  head?: never;
660
796
  patch?: never;
661
797
  trace?: never;
662
798
  };
663
- "/oauth/consent": {
799
+ '/oauth/consent': {
664
800
  parameters: {
665
801
  query?: never;
666
802
  header?: never;
667
803
  path?: never;
668
804
  cookie?: never;
669
805
  };
670
- get: operations["ConsentController_showConsentPage"];
806
+ get: operations['ConsentController_showConsentPage'];
671
807
  put?: never;
672
- post: operations["ConsentController_handleConsentDecision"];
808
+ post: operations['ConsentController_handleConsentDecision'];
673
809
  delete?: never;
674
810
  options?: never;
675
811
  head?: never;
676
812
  patch?: never;
677
813
  trace?: never;
678
814
  };
679
- "/api/v3/user/connected-apps": {
815
+ '/api/v3/user/connected-apps': {
680
816
  parameters: {
681
817
  query?: never;
682
818
  header?: never;
683
819
  path?: never;
684
820
  cookie?: never;
685
821
  };
686
- get: operations["ConnectedAppsController_getConnectedApps"];
822
+ get: operations['ConnectedAppsController_getConnectedApps'];
687
823
  put?: never;
688
824
  post?: never;
689
825
  delete?: never;
@@ -692,7 +828,7 @@ interface paths {
692
828
  patch?: never;
693
829
  trace?: never;
694
830
  };
695
- "/api/v3/user/connected-apps/{clientId}": {
831
+ '/api/v3/user/connected-apps/{clientId}': {
696
832
  parameters: {
697
833
  query?: never;
698
834
  header?: never;
@@ -702,20 +838,20 @@ interface paths {
702
838
  get?: never;
703
839
  put?: never;
704
840
  post?: never;
705
- delete: operations["ConnectedAppsController_revokeApp"];
841
+ delete: operations['ConnectedAppsController_revokeApp'];
706
842
  options?: never;
707
843
  head?: never;
708
844
  patch?: never;
709
845
  trace?: never;
710
846
  };
711
- "/health": {
847
+ '/health': {
712
848
  parameters: {
713
849
  query?: never;
714
850
  header?: never;
715
851
  path?: never;
716
852
  cookie?: never;
717
853
  };
718
- get: operations["AppController_getHealth"];
854
+ get: operations['AppController_getHealth'];
719
855
  put?: never;
720
856
  post?: never;
721
857
  delete?: never;
@@ -724,46 +860,46 @@ interface paths {
724
860
  patch?: never;
725
861
  trace?: never;
726
862
  };
727
- "/test": {
863
+ '/test': {
728
864
  parameters: {
729
865
  query?: never;
730
866
  header?: never;
731
867
  path?: never;
732
868
  cookie?: never;
733
869
  };
734
- get: operations["TestController_getAll"];
870
+ get: operations['TestController_getAll'];
735
871
  put?: never;
736
- post: operations["TestController_create"];
872
+ post: operations['TestController_create'];
737
873
  delete?: never;
738
874
  options?: never;
739
875
  head?: never;
740
876
  patch?: never;
741
877
  trace?: never;
742
878
  };
743
- "/test/{id}": {
879
+ '/test/{id}': {
744
880
  parameters: {
745
881
  query?: never;
746
882
  header?: never;
747
883
  path?: never;
748
884
  cookie?: never;
749
885
  };
750
- get: operations["TestController_getById"];
751
- put: operations["TestController_update"];
886
+ get: operations['TestController_getById'];
887
+ put: operations['TestController_update'];
752
888
  post?: never;
753
- delete: operations["TestController_delete"];
889
+ delete: operations['TestController_delete'];
754
890
  options?: never;
755
891
  head?: never;
756
892
  patch?: never;
757
893
  trace?: never;
758
894
  };
759
- "/test/legacy/data": {
895
+ '/test/legacy/data': {
760
896
  parameters: {
761
897
  query?: never;
762
898
  header?: never;
763
899
  path?: never;
764
900
  cookie?: never;
765
901
  };
766
- get: operations["TestController_getLegacyData"];
902
+ get: operations['TestController_getLegacyData'];
767
903
  put?: never;
768
904
  post?: never;
769
905
  delete?: never;
@@ -772,14 +908,14 @@ interface paths {
772
908
  patch?: never;
773
909
  trace?: never;
774
910
  };
775
- "/config-test": {
911
+ '/config-test': {
776
912
  parameters: {
777
913
  query?: never;
778
914
  header?: never;
779
915
  path?: never;
780
916
  cookie?: never;
781
917
  };
782
- get: operations["ConfigTestController_getConfigInfo"];
918
+ get: operations['ConfigTestController_getConfigInfo'];
783
919
  put?: never;
784
920
  post?: never;
785
921
  delete?: never;
@@ -788,14 +924,14 @@ interface paths {
788
924
  patch?: never;
789
925
  trace?: never;
790
926
  };
791
- "/config-test/raw": {
927
+ '/config-test/raw': {
792
928
  parameters: {
793
929
  query?: never;
794
930
  header?: never;
795
931
  path?: never;
796
932
  cookie?: never;
797
933
  };
798
- get: operations["ConfigTestController_getRawConfigValues"];
934
+ get: operations['ConfigTestController_getRawConfigValues'];
799
935
  put?: never;
800
936
  post?: never;
801
937
  delete?: never;
@@ -923,7 +1059,7 @@ interface components {
923
1059
  * @example debit
924
1060
  * @enum {string}
925
1061
  */
926
- type: "debit" | "credit";
1062
+ type: 'debit' | 'credit';
927
1063
  /**
928
1064
  * @description Amount to transfer in USD (as string to preserve precision)
929
1065
  * @example 100.00
@@ -946,13 +1082,13 @@ interface components {
946
1082
  * @example pending_verification
947
1083
  * @enum {string}
948
1084
  */
949
- status: "pending_verification" | "completed" | "failed" | "expired";
1085
+ status: 'pending_verification' | 'completed' | 'failed' | 'expired';
950
1086
  /**
951
1087
  * @description OTP method to use for verification (only present when status is pending_verification)
952
1088
  * @example sms
953
1089
  * @enum {string}
954
1090
  */
955
- otpMethod?: "sms" | "totp";
1091
+ otpMethod?: 'sms' | 'totp' | 'email';
956
1092
  };
957
1093
  TransferListItemDto: {
958
1094
  /**
@@ -965,7 +1101,7 @@ interface components {
965
1101
  * @example debit
966
1102
  * @enum {string}
967
1103
  */
968
- type: "debit" | "credit";
1104
+ type: 'debit' | 'credit';
969
1105
  /**
970
1106
  * @description Transfer amount in USD
971
1107
  * @example 100
@@ -976,7 +1112,7 @@ interface components {
976
1112
  * @example completed
977
1113
  * @enum {string}
978
1114
  */
979
- status: "pending_verification" | "completed" | "failed" | "expired";
1115
+ status: 'pending_verification' | 'completed' | 'failed' | 'expired';
980
1116
  /**
981
1117
  * Format: date-time
982
1118
  * @description Transfer creation timestamp
@@ -992,7 +1128,7 @@ interface components {
992
1128
  };
993
1129
  ListTransfersResponseDto: {
994
1130
  /** @description Array of transfers */
995
- transfers: components["schemas"]["TransferListItemDto"][];
1131
+ transfers: components['schemas']['TransferListItemDto'][];
996
1132
  /**
997
1133
  * @description Total number of transfers matching the query
998
1134
  * @example 42
@@ -1030,7 +1166,7 @@ interface operations {
1030
1166
  };
1031
1167
  requestBody: {
1032
1168
  content: {
1033
- "application/json": components["schemas"]["RegisterDto"];
1169
+ 'application/json': components['schemas']['RegisterDto'];
1034
1170
  };
1035
1171
  };
1036
1172
  responses: {
@@ -1051,7 +1187,7 @@ interface operations {
1051
1187
  };
1052
1188
  requestBody: {
1053
1189
  content: {
1054
- "application/json": components["schemas"]["VerifyEmailOTPDto"];
1190
+ 'application/json': components['schemas']['VerifyEmailOTPDto'];
1055
1191
  };
1056
1192
  };
1057
1193
  responses: {
@@ -1072,7 +1208,7 @@ interface operations {
1072
1208
  };
1073
1209
  requestBody: {
1074
1210
  content: {
1075
- "application/json": components["schemas"]["AcceptTermsDto"];
1211
+ 'application/json': components['schemas']['AcceptTermsDto'];
1076
1212
  };
1077
1213
  };
1078
1214
  responses: {
@@ -1093,7 +1229,7 @@ interface operations {
1093
1229
  };
1094
1230
  requestBody: {
1095
1231
  content: {
1096
- "application/json": components["schemas"]["CompleteProfileDto"];
1232
+ 'application/json': components['schemas']['CompleteProfileDto'];
1097
1233
  };
1098
1234
  };
1099
1235
  responses: {
@@ -1114,7 +1250,7 @@ interface operations {
1114
1250
  };
1115
1251
  requestBody: {
1116
1252
  content: {
1117
- "application/json": components["schemas"]["UpdateSSNDto"];
1253
+ 'application/json': components['schemas']['UpdateSSNDto'];
1118
1254
  };
1119
1255
  };
1120
1256
  responses: {
@@ -1135,7 +1271,7 @@ interface operations {
1135
1271
  };
1136
1272
  requestBody: {
1137
1273
  content: {
1138
- "application/json": components["schemas"]["SetupMfaDto"];
1274
+ 'application/json': components['schemas']['SetupMfaDto'];
1139
1275
  };
1140
1276
  };
1141
1277
  responses: {
@@ -1173,7 +1309,7 @@ interface operations {
1173
1309
  };
1174
1310
  requestBody: {
1175
1311
  content: {
1176
- "application/json": components["schemas"]["VerifyMfaSetupDto"];
1312
+ 'application/json': components['schemas']['VerifyMfaSetupDto'];
1177
1313
  };
1178
1314
  };
1179
1315
  responses: {
@@ -1194,7 +1330,7 @@ interface operations {
1194
1330
  };
1195
1331
  requestBody: {
1196
1332
  content: {
1197
- "application/json": components["schemas"]["VerifyMfaSetupDto"];
1333
+ 'application/json': components['schemas']['VerifyMfaSetupDto'];
1198
1334
  };
1199
1335
  };
1200
1336
  responses: {
@@ -1215,7 +1351,7 @@ interface operations {
1215
1351
  };
1216
1352
  requestBody: {
1217
1353
  content: {
1218
- "application/json": components["schemas"]["InitiateLoginDto"];
1354
+ 'application/json': components['schemas']['InitiateLoginDto'];
1219
1355
  };
1220
1356
  };
1221
1357
  responses: {
@@ -1236,7 +1372,7 @@ interface operations {
1236
1372
  };
1237
1373
  requestBody: {
1238
1374
  content: {
1239
- "application/json": components["schemas"]["VerifyLoginOTPDto"];
1375
+ 'application/json': components['schemas']['VerifyLoginOTPDto'];
1240
1376
  };
1241
1377
  };
1242
1378
  responses: {
@@ -1257,7 +1393,7 @@ interface operations {
1257
1393
  };
1258
1394
  requestBody: {
1259
1395
  content: {
1260
- "application/json": components["schemas"]["VerifyMfaDto"];
1396
+ 'application/json': components['schemas']['VerifyMfaDto'];
1261
1397
  };
1262
1398
  };
1263
1399
  responses: {
@@ -1278,7 +1414,7 @@ interface operations {
1278
1414
  };
1279
1415
  requestBody: {
1280
1416
  content: {
1281
- "application/json": components["schemas"]["ResendEmailOTPDto"];
1417
+ 'application/json': components['schemas']['ResendEmailOTPDto'];
1282
1418
  };
1283
1419
  };
1284
1420
  responses: {
@@ -1299,7 +1435,7 @@ interface operations {
1299
1435
  };
1300
1436
  requestBody: {
1301
1437
  content: {
1302
- "application/json": components["schemas"]["ResendSMSMFADto"];
1438
+ 'application/json': components['schemas']['ResendSMSMFADto'];
1303
1439
  };
1304
1440
  };
1305
1441
  responses: {
@@ -1320,7 +1456,7 @@ interface operations {
1320
1456
  };
1321
1457
  requestBody: {
1322
1458
  content: {
1323
- "application/json": components["schemas"]["RefreshTokenDto"];
1459
+ 'application/json': components['schemas']['RefreshTokenDto'];
1324
1460
  };
1325
1461
  };
1326
1462
  responses: {
@@ -1375,7 +1511,7 @@ interface operations {
1375
1511
  };
1376
1512
  requestBody: {
1377
1513
  content: {
1378
- "application/json": components["schemas"]["UpdateProfileDto"];
1514
+ 'application/json': components['schemas']['UpdateProfileDto'];
1379
1515
  };
1380
1516
  };
1381
1517
  responses: {
@@ -1396,7 +1532,7 @@ interface operations {
1396
1532
  };
1397
1533
  requestBody: {
1398
1534
  content: {
1399
- "application/json": components["schemas"]["FillAccountVIPDto"];
1535
+ 'application/json': components['schemas']['FillAccountVIPDto'];
1400
1536
  };
1401
1537
  };
1402
1538
  responses: {
@@ -1417,7 +1553,7 @@ interface operations {
1417
1553
  };
1418
1554
  requestBody: {
1419
1555
  content: {
1420
- "application/json": components["schemas"]["LogoutDto"];
1556
+ 'application/json': components['schemas']['LogoutDto'];
1421
1557
  };
1422
1558
  };
1423
1559
  responses: {
@@ -1489,7 +1625,7 @@ interface operations {
1489
1625
  };
1490
1626
  requestBody: {
1491
1627
  content: {
1492
- "application/json": components["schemas"]["CommitPinChangeBodyDto"];
1628
+ 'application/json': components['schemas']['CommitPinChangeBodyDto'];
1493
1629
  };
1494
1630
  };
1495
1631
  responses: {
@@ -1527,7 +1663,7 @@ interface operations {
1527
1663
  };
1528
1664
  requestBody: {
1529
1665
  content: {
1530
- "application/json": components["schemas"]["MarkUsersDto"];
1666
+ 'application/json': components['schemas']['MarkUsersDto'];
1531
1667
  };
1532
1668
  };
1533
1669
  responses: {
@@ -1548,7 +1684,7 @@ interface operations {
1548
1684
  };
1549
1685
  requestBody: {
1550
1686
  content: {
1551
- "application/json": components["schemas"]["BatchValidationDto"];
1687
+ 'application/json': components['schemas']['BatchValidationDto'];
1552
1688
  };
1553
1689
  };
1554
1690
  responses: {
@@ -1569,7 +1705,7 @@ interface operations {
1569
1705
  };
1570
1706
  requestBody: {
1571
1707
  content: {
1572
- "application/json": components["schemas"]["PreviewMigrationDto"];
1708
+ 'application/json': components['schemas']['PreviewMigrationDto'];
1573
1709
  };
1574
1710
  };
1575
1711
  responses: {
@@ -1590,7 +1726,7 @@ interface operations {
1590
1726
  };
1591
1727
  requestBody: {
1592
1728
  content: {
1593
- "application/json": components["schemas"]["TriggerMigrationDto"];
1729
+ 'application/json': components['schemas']['TriggerMigrationDto'];
1594
1730
  };
1595
1731
  };
1596
1732
  responses: {
@@ -1673,7 +1809,7 @@ interface operations {
1673
1809
  [name: string]: unknown;
1674
1810
  };
1675
1811
  content: {
1676
- "application/json": components["schemas"]["ConnectUserResponseDto"];
1812
+ 'application/json': components['schemas']['ConnectUserResponseDto'];
1677
1813
  };
1678
1814
  };
1679
1815
  /** @description Invalid or expired access token */
@@ -1682,7 +1818,7 @@ interface operations {
1682
1818
  [name: string]: unknown;
1683
1819
  };
1684
1820
  content: {
1685
- "application/json": components["schemas"]["ErrorResponseDto"];
1821
+ 'application/json': components['schemas']['ErrorResponseDto'];
1686
1822
  };
1687
1823
  };
1688
1824
  /** @description User consent required or insufficient scope */
@@ -1691,7 +1827,7 @@ interface operations {
1691
1827
  [name: string]: unknown;
1692
1828
  };
1693
1829
  content: {
1694
- "application/json": components["schemas"]["ConsentRequiredErrorDto"];
1830
+ 'application/json': components['schemas']['ConsentRequiredErrorDto'];
1695
1831
  };
1696
1832
  };
1697
1833
  };
@@ -1711,7 +1847,7 @@ interface operations {
1711
1847
  [name: string]: unknown;
1712
1848
  };
1713
1849
  content: {
1714
- "application/json": components["schemas"]["ConnectBalanceResponseDto"];
1850
+ 'application/json': components['schemas']['ConnectBalanceResponseDto'];
1715
1851
  };
1716
1852
  };
1717
1853
  /** @description Invalid or expired access token */
@@ -1720,7 +1856,7 @@ interface operations {
1720
1856
  [name: string]: unknown;
1721
1857
  };
1722
1858
  content: {
1723
- "application/json": components["schemas"]["ErrorResponseDto"];
1859
+ 'application/json': components['schemas']['ErrorResponseDto'];
1724
1860
  };
1725
1861
  };
1726
1862
  /** @description User consent required or insufficient scope */
@@ -1729,7 +1865,7 @@ interface operations {
1729
1865
  [name: string]: unknown;
1730
1866
  };
1731
1867
  content: {
1732
- "application/json": components["schemas"]["ConsentRequiredErrorDto"];
1868
+ 'application/json': components['schemas']['ConsentRequiredErrorDto'];
1733
1869
  };
1734
1870
  };
1735
1871
  };
@@ -1743,7 +1879,7 @@ interface operations {
1743
1879
  };
1744
1880
  requestBody: {
1745
1881
  content: {
1746
- "application/json": components["schemas"]["InitiateTransferRequestDto"];
1882
+ 'application/json': components['schemas']['InitiateTransferRequestDto'];
1747
1883
  };
1748
1884
  };
1749
1885
  responses: {
@@ -1753,7 +1889,7 @@ interface operations {
1753
1889
  [name: string]: unknown;
1754
1890
  };
1755
1891
  content: {
1756
- "application/json": components["schemas"]["TransferResponseDto"];
1892
+ 'application/json': components['schemas']['TransferResponseDto'];
1757
1893
  };
1758
1894
  };
1759
1895
  /** @description Invalid request (amount, balance, etc.) */
@@ -1762,7 +1898,7 @@ interface operations {
1762
1898
  [name: string]: unknown;
1763
1899
  };
1764
1900
  content: {
1765
- "application/json": components["schemas"]["ErrorResponseDto"];
1901
+ 'application/json': components['schemas']['ErrorResponseDto'];
1766
1902
  };
1767
1903
  };
1768
1904
  /** @description Invalid or expired access token */
@@ -1771,7 +1907,7 @@ interface operations {
1771
1907
  [name: string]: unknown;
1772
1908
  };
1773
1909
  content: {
1774
- "application/json": components["schemas"]["ErrorResponseDto"];
1910
+ 'application/json': components['schemas']['ErrorResponseDto'];
1775
1911
  };
1776
1912
  };
1777
1913
  /** @description User consent required or insufficient scope */
@@ -1780,7 +1916,7 @@ interface operations {
1780
1916
  [name: string]: unknown;
1781
1917
  };
1782
1918
  content: {
1783
- "application/json": components["schemas"]["ConsentRequiredErrorDto"];
1919
+ 'application/json': components['schemas']['ConsentRequiredErrorDto'];
1784
1920
  };
1785
1921
  };
1786
1922
  };
@@ -1803,7 +1939,7 @@ interface operations {
1803
1939
  [name: string]: unknown;
1804
1940
  };
1805
1941
  content: {
1806
- "application/json": components["schemas"]["TransferResponseDto"];
1942
+ 'application/json': components['schemas']['TransferResponseDto'];
1807
1943
  };
1808
1944
  };
1809
1945
  /** @description Invalid or expired access token */
@@ -1812,7 +1948,7 @@ interface operations {
1812
1948
  [name: string]: unknown;
1813
1949
  };
1814
1950
  content: {
1815
- "application/json": components["schemas"]["ErrorResponseDto"];
1951
+ 'application/json': components['schemas']['ErrorResponseDto'];
1816
1952
  };
1817
1953
  };
1818
1954
  /** @description User consent required or insufficient scope */
@@ -1821,7 +1957,7 @@ interface operations {
1821
1957
  [name: string]: unknown;
1822
1958
  };
1823
1959
  content: {
1824
- "application/json": components["schemas"]["ConsentRequiredErrorDto"];
1960
+ 'application/json': components['schemas']['ConsentRequiredErrorDto'];
1825
1961
  };
1826
1962
  };
1827
1963
  /** @description Transfer not found */
@@ -1830,7 +1966,7 @@ interface operations {
1830
1966
  [name: string]: unknown;
1831
1967
  };
1832
1968
  content: {
1833
- "application/json": components["schemas"]["ErrorResponseDto"];
1969
+ 'application/json': components['schemas']['ErrorResponseDto'];
1834
1970
  };
1835
1971
  };
1836
1972
  };
@@ -1843,7 +1979,7 @@ interface operations {
1843
1979
  /** @description Number of transfers to skip (for pagination) */
1844
1980
  offset?: number;
1845
1981
  /** @description Filter by transfer status */
1846
- status?: "pending_verification" | "completed" | "failed" | "expired";
1982
+ status?: 'pending_verification' | 'completed' | 'failed' | 'expired';
1847
1983
  };
1848
1984
  header?: never;
1849
1985
  path?: never;
@@ -1857,7 +1993,7 @@ interface operations {
1857
1993
  [name: string]: unknown;
1858
1994
  };
1859
1995
  content: {
1860
- "application/json": components["schemas"]["ListTransfersResponseDto"];
1996
+ 'application/json': components['schemas']['ListTransfersResponseDto'];
1861
1997
  };
1862
1998
  };
1863
1999
  /** @description Invalid or expired access token */
@@ -1866,7 +2002,7 @@ interface operations {
1866
2002
  [name: string]: unknown;
1867
2003
  };
1868
2004
  content: {
1869
- "application/json": components["schemas"]["ErrorResponseDto"];
2005
+ 'application/json': components['schemas']['ErrorResponseDto'];
1870
2006
  };
1871
2007
  };
1872
2008
  /** @description User consent required or insufficient scope */
@@ -1875,7 +2011,7 @@ interface operations {
1875
2011
  [name: string]: unknown;
1876
2012
  };
1877
2013
  content: {
1878
- "application/json": components["schemas"]["ConsentRequiredErrorDto"];
2014
+ 'application/json': components['schemas']['ConsentRequiredErrorDto'];
1879
2015
  };
1880
2016
  };
1881
2017
  };
@@ -1892,7 +2028,7 @@ interface operations {
1892
2028
  };
1893
2029
  requestBody: {
1894
2030
  content: {
1895
- "application/json": components["schemas"]["VerifyTransferRequestDto"];
2031
+ 'application/json': components['schemas']['VerifyTransferRequestDto'];
1896
2032
  };
1897
2033
  };
1898
2034
  responses: {
@@ -1902,7 +2038,7 @@ interface operations {
1902
2038
  [name: string]: unknown;
1903
2039
  };
1904
2040
  content: {
1905
- "application/json": components["schemas"]["TransferResponseDto"];
2041
+ 'application/json': components['schemas']['TransferResponseDto'];
1906
2042
  };
1907
2043
  };
1908
2044
  /** @description Invalid OTP or transfer expired */
@@ -1911,7 +2047,7 @@ interface operations {
1911
2047
  [name: string]: unknown;
1912
2048
  };
1913
2049
  content: {
1914
- "application/json": components["schemas"]["ErrorResponseDto"];
2050
+ 'application/json': components['schemas']['ErrorResponseDto'];
1915
2051
  };
1916
2052
  };
1917
2053
  /** @description Invalid or expired access token */
@@ -1920,7 +2056,7 @@ interface operations {
1920
2056
  [name: string]: unknown;
1921
2057
  };
1922
2058
  content: {
1923
- "application/json": components["schemas"]["ErrorResponseDto"];
2059
+ 'application/json': components['schemas']['ErrorResponseDto'];
1924
2060
  };
1925
2061
  };
1926
2062
  /** @description User consent required or insufficient scope */
@@ -1929,7 +2065,7 @@ interface operations {
1929
2065
  [name: string]: unknown;
1930
2066
  };
1931
2067
  content: {
1932
- "application/json": components["schemas"]["ConsentRequiredErrorDto"];
2068
+ 'application/json': components['schemas']['ConsentRequiredErrorDto'];
1933
2069
  };
1934
2070
  };
1935
2071
  /** @description Transfer not found */
@@ -1938,7 +2074,7 @@ interface operations {
1938
2074
  [name: string]: unknown;
1939
2075
  };
1940
2076
  content: {
1941
- "application/json": components["schemas"]["ErrorResponseDto"];
2077
+ 'application/json': components['schemas']['ErrorResponseDto'];
1942
2078
  };
1943
2079
  };
1944
2080
  };
@@ -1958,7 +2094,7 @@ interface operations {
1958
2094
  [name: string]: unknown;
1959
2095
  };
1960
2096
  content: {
1961
- "application/json": components["schemas"]["RevokeConsentResponseDto"];
2097
+ 'application/json': components['schemas']['RevokeConsentResponseDto'];
1962
2098
  };
1963
2099
  };
1964
2100
  /** @description Invalid or expired access token */
@@ -1967,7 +2103,7 @@ interface operations {
1967
2103
  [name: string]: unknown;
1968
2104
  };
1969
2105
  content: {
1970
- "application/json": components["schemas"]["ErrorResponseDto"];
2106
+ 'application/json': components['schemas']['ErrorResponseDto'];
1971
2107
  };
1972
2108
  };
1973
2109
  };
@@ -2302,12 +2438,104 @@ type TransferStatus = 'pending_verification' | 'completed' | 'failed' | 'expired
2302
2438
  *
2303
2439
  * - `sms`: OTP sent via SMS to user's phone
2304
2440
  * - `totp`: User generates OTP from authenticator app
2441
+ * - `email`: OTP sent via email to user's account email
2305
2442
  */
2306
- type OtpMethod = 'sms' | 'totp';
2443
+ type OtpMethod = 'sms' | 'totp' | 'email';
2307
2444
  /**
2308
2445
  * Parameters for listing transfers.
2309
2446
  */
2310
2447
  type ListTransfersParams = NonNullable<operations['listTransfers']['parameters']['query']>;
2448
+ /**
2449
+ * Address block for identity verification.
2450
+ * The block itself is required; all sub-fields are optional — supply as many
2451
+ * as the partner holds for a higher-confidence match.
2452
+ */
2453
+ interface VerifyIdentityAddress {
2454
+ /** Street address line (e.g. "123 Main St") */
2455
+ street?: string;
2456
+ city?: string;
2457
+ /** US state code (e.g. "TX") */
2458
+ state?: string;
2459
+ zip?: string;
2460
+ }
2461
+ /**
2462
+ * Options for `EdgeConnectServer.verifyIdentity()`.
2463
+ *
2464
+ * @example
2465
+ * ```typescript
2466
+ * const options: VerifyIdentityOptions = {
2467
+ * firstName: 'John',
2468
+ * lastName: 'Doe',
2469
+ * address: { street: '123 Main St', city: 'Austin', state: 'TX', zip: '78701' },
2470
+ * }
2471
+ * ```
2472
+ */
2473
+ interface VerifyIdentityOptions {
2474
+ firstName: string;
2475
+ lastName: string;
2476
+ /**
2477
+ * Address details are required per the verification contract.
2478
+ * All sub-fields within the block are individually optional — supply as many
2479
+ * as the partner holds for a higher-confidence match.
2480
+ * Address threshold enforcement is skipped if the EdgeBoost user has no address on file.
2481
+ */
2482
+ address: VerifyIdentityAddress;
2483
+ }
2484
+ /**
2485
+ * Similarity scores returned when identity verification passes.
2486
+ * Partners should log these for their own audit trail.
2487
+ */
2488
+ interface VerifyIdentityScores {
2489
+ /** Levenshtein-based full-name similarity score (0–100). Threshold: 70. */
2490
+ name: number;
2491
+ /** Levenshtein-based combined address similarity score (0–100). Threshold: 65. */
2492
+ address: number;
2493
+ /** Whether the ZIP code is an exact digit match. */
2494
+ zipMatch: boolean;
2495
+ }
2496
+ /**
2497
+ * Response from a successful `verifyIdentity()` call.
2498
+ *
2499
+ * @example
2500
+ * ```typescript
2501
+ * const result: VerifyIdentityResult = await edge.verifyIdentity(accessToken, options)
2502
+ * console.log(`Name score: ${result.scores.name}`) // e.g. 95
2503
+ * ```
2504
+ */
2505
+ interface VerifyIdentityResult {
2506
+ verified: true;
2507
+ scores: VerifyIdentityScores;
2508
+ }
2509
+ /**
2510
+ * Request payload for creating a hosted verification session.
2511
+ */
2512
+ interface CreateVerificationSessionRequest {
2513
+ /** HTTPS origin of your frontend for postMessage origin validation. */
2514
+ origin: string;
2515
+ }
2516
+ /**
2517
+ * Response from creating a hosted verification session.
2518
+ */
2519
+ interface VerificationSession {
2520
+ /** Unique verification session identifier for correlation. */
2521
+ sessionId: string;
2522
+ /** URL to open in an iframe or popup. Single-use, expires in 120 seconds. */
2523
+ verificationUrl: string;
2524
+ /** ISO 8601 timestamp when the handoff token expires. */
2525
+ expiresAt: string;
2526
+ }
2527
+ /**
2528
+ * Verification session status values.
2529
+ */
2530
+ type VerificationSessionStatus = 'pending' | 'active' | 'completed' | 'failed' | 'expired' | 'canceled';
2531
+ /**
2532
+ * Response from polling a verification session's status.
2533
+ */
2534
+ interface VerificationSessionStatusResponse {
2535
+ sessionId: string;
2536
+ status: VerificationSessionStatus;
2537
+ transferStatus: TransferStatus;
2538
+ }
2311
2539
  /**
2312
2540
  * All possible transfer types.
2313
2541
  * Use for validation or building UI select options.
@@ -2321,7 +2549,7 @@ declare const TRANSFER_STATUSES: readonly ["pending_verification", "completed",
2321
2549
  /**
2322
2550
  * All possible OTP methods.
2323
2551
  */
2324
- declare const OTP_METHODS: readonly ["sms", "totp"];
2552
+ declare const OTP_METHODS: readonly ["sms", "totp", "email"];
2325
2553
 
2326
2554
  /**
2327
2555
  * EDGE Connect SDK Types
@@ -2429,142 +2657,29 @@ interface EdgeLinkExit {
2429
2657
  message: string;
2430
2658
  };
2431
2659
  }
2432
-
2433
- type EdgeEnvironment = 'production' | 'staging' | 'sandbox' | 'development';
2434
- interface EdgeEnvironmentConfig {
2435
- /**
2436
- * @deprecated cognitoDomain is no longer used. Token exchange now goes through EdgeBoost API.
2437
- */
2438
- cognitoDomain: string;
2439
- apiBaseUrl: string;
2440
- oauthBaseUrl: string;
2441
- userClientUrl: string;
2442
- displayName: string;
2443
- isProduction: boolean;
2660
+ /** PKCE code verifier and challenge pair */
2661
+ interface PKCEPair {
2662
+ verifier: string;
2663
+ challenge: string;
2664
+ }
2665
+ /** Event emitted during the Link flow */
2666
+ interface EdgeLinkEvent {
2667
+ eventName: EdgeLinkEventName;
2668
+ timestamp: number;
2669
+ metadata?: Record<string, unknown>;
2670
+ }
2671
+ /** All possible Link event names (superset of browser + mobile events) */
2672
+ type EdgeLinkEventName = 'OPEN' | 'CLOSE' | 'HANDOFF' | 'TRANSITION' | 'REDIRECT' | 'ERROR' | 'SUCCESS';
2673
+ /** Base configuration shared by all EdgeLink implementations */
2674
+ interface EdgeLinkConfigBase {
2675
+ clientId: string;
2676
+ environment: EdgeEnvironment;
2677
+ onSuccess: (result: EdgeLinkSuccess) => void;
2678
+ onExit?: (metadata: EdgeLinkExit) => void;
2679
+ onEvent?: (event: EdgeLinkEvent) => void;
2680
+ scopes?: EdgeScope[];
2681
+ linkUrl?: string;
2444
2682
  }
2445
- declare const EDGE_ENVIRONMENTS: Readonly<Record<EdgeEnvironment, EdgeEnvironmentConfig>>;
2446
- declare function getEnvironmentConfig(environment: EdgeEnvironment): EdgeEnvironmentConfig;
2447
- declare function isProductionEnvironment(environment: EdgeEnvironment): boolean;
2448
- declare function getAvailableEnvironments(): readonly EdgeEnvironment[];
2449
-
2450
- /**
2451
- * EDGE Connect OAuth Scopes
2452
- *
2453
- * OAuth scopes define what permissions your application requests from users.
2454
- * Each scope grants access to specific API endpoints.
2455
- *
2456
- * @module @edge-markets/connect/config
2457
- */
2458
- /**
2459
- * Available OAuth scopes for EDGE Connect.
2460
- *
2461
- * Request the minimum scopes your application needs.
2462
- * Users see these permissions during the consent flow.
2463
- *
2464
- * @example
2465
- * ```typescript
2466
- * // Request only what you need
2467
- * link.open({
2468
- * scopes: [EDGE_SCOPES.USER_READ, EDGE_SCOPES.BALANCE_READ],
2469
- * })
2470
- *
2471
- * // Or request all scopes
2472
- * link.open({
2473
- * scopes: ALL_EDGE_SCOPES,
2474
- * })
2475
- * ```
2476
- */
2477
- declare const EDGE_SCOPES: {
2478
- /**
2479
- * Read user profile information (name, email).
2480
- * Required for: `GET /v1/user`
2481
- */
2482
- readonly USER_READ: "user.read";
2483
- /**
2484
- * Read account balance.
2485
- * Required for: `GET /v1/balance`
2486
- */
2487
- readonly BALANCE_READ: "balance.read";
2488
- /**
2489
- * Initiate and verify fund transfers.
2490
- * Required for: `POST /v1/transfer`, `POST /v1/transfer/:id/verify`, `GET /v1/transfers`
2491
- */
2492
- readonly TRANSFER_WRITE: "transfer.write";
2493
- };
2494
- /**
2495
- * Type representing a valid EDGE Connect scope.
2496
- */
2497
- type EdgeScope = (typeof EDGE_SCOPES)[keyof typeof EDGE_SCOPES];
2498
- /**
2499
- * All available scopes as an array.
2500
- * Use when you need full access to all API features.
2501
- *
2502
- * @example
2503
- * ```typescript
2504
- * const link = new EdgeLink({
2505
- * clientId: 'your-client-id',
2506
- * environment: 'staging',
2507
- * scopes: ALL_EDGE_SCOPES, // Request all permissions
2508
- * onSuccess: handleSuccess,
2509
- * })
2510
- * ```
2511
- */
2512
- declare const ALL_EDGE_SCOPES: readonly EdgeScope[];
2513
- /**
2514
- * Human-readable descriptions for each scope.
2515
- * Useful for building custom consent UIs or explaining permissions.
2516
- */
2517
- declare const SCOPE_DESCRIPTIONS: Readonly<Record<EdgeScope, string>>;
2518
- /**
2519
- * Icons for each scope (for UI display).
2520
- * Using common icon library names (e.g., Lucide, Heroicons).
2521
- */
2522
- declare const SCOPE_ICONS: Readonly<Record<EdgeScope, string>>;
2523
- /**
2524
- * Builds the full scope string for a given environment.
2525
- *
2526
- * Different environments may use different scope prefixes in the API Gateway.
2527
- * This function handles the prefix automatically.
2528
- *
2529
- * Note: 'development' environment uses 'staging' scope prefix because it
2530
- * connects to the staging API Gateway for local testing.
2531
- *
2532
- * @param scope - The scope to format
2533
- * @param environment - The target environment
2534
- * @returns The full scope string for API Gateway authorization
2535
- *
2536
- * @example
2537
- * ```typescript
2538
- * formatScopeForEnvironment('user.read', 'staging')
2539
- * // Returns: 'edge-connect-staging/user.read'
2540
- *
2541
- * formatScopeForEnvironment('user.read', 'production')
2542
- * // Returns: 'edge-connect/user.read'
2543
- *
2544
- * formatScopeForEnvironment('user.read', 'development')
2545
- * // Returns: 'edge-connect-staging/user.read' (maps to staging)
2546
- * ```
2547
- */
2548
- declare function formatScopeForEnvironment(scope: EdgeScope, environment: 'production' | 'staging' | 'sandbox' | 'development'): string;
2549
- /**
2550
- * Formats multiple scopes for an environment.
2551
- *
2552
- * @param scopes - Array of scopes to format
2553
- * @param environment - The target environment
2554
- * @returns Array of full scope strings
2555
- */
2556
- declare function formatScopesForEnvironment(scopes: readonly EdgeScope[] | EdgeScope[], environment: 'production' | 'staging' | 'sandbox' | 'development'): string[];
2557
- /**
2558
- * Parses a full scope string to extract the base scope.
2559
- *
2560
- * @param fullScope - The full scope string (e.g., 'edge-connect-staging/user.read')
2561
- * @returns The base scope (e.g., 'user.read') or null if invalid
2562
- */
2563
- declare function parseScope(fullScope: string): EdgeScope | null;
2564
- /**
2565
- * Checks if a scope string is valid.
2566
- */
2567
- declare function isValidScope(scope: string): scope is EdgeScope;
2568
2683
 
2569
2684
  /**
2570
2685
  * EDGE Connect SDK Error Classes
@@ -2779,6 +2894,32 @@ declare class EdgeValidationError extends EdgeError {
2779
2894
  readonly validationErrors: Record<string, string[]>;
2780
2895
  constructor(message: string, validationErrors: Record<string, string[]>);
2781
2896
  }
2897
+ /**
2898
+ * Thrown when identity verification fails because one or more fields do not meet
2899
+ * the similarity threshold when compared against the user's stored EdgeBoost profile.
2900
+ *
2901
+ * The `fieldErrors` map contains only the fields that failed verification.
2902
+ * Each value is a human-readable message safe to display directly to the user.
2903
+ *
2904
+ * @example
2905
+ * ```typescript
2906
+ * try {
2907
+ * await edge.verifyIdentity(accessToken, { firstName: 'John', lastName: 'Doe', address: {} })
2908
+ * } catch (error) {
2909
+ * if (error instanceof EdgeIdentityVerificationError) {
2910
+ * if (error.fieldErrors.name) {
2911
+ * showMessage(error.fieldErrors.name)
2912
+ * // "Name doesn't match what is on file, please contact support"
2913
+ * }
2914
+ * }
2915
+ * }
2916
+ * ```
2917
+ */
2918
+ declare class EdgeIdentityVerificationError extends EdgeError {
2919
+ /** Field-level messages for each failing field. Keys match the request fields (e.g. `name`, `address`). */
2920
+ readonly fieldErrors: Record<string, string>;
2921
+ constructor(fieldErrors: Record<string, string>, message?: string);
2922
+ }
2782
2923
  /**
2783
2924
  * Thrown when a popup is blocked by the browser.
2784
2925
  *
@@ -2857,6 +2998,10 @@ declare function isConsentRequiredError(error: unknown): error is EdgeConsentReq
2857
2998
  * Type guard for API errors.
2858
2999
  */
2859
3000
  declare function isApiError(error: unknown): error is EdgeApiError;
3001
+ /**
3002
+ * Type guard for identity verification errors.
3003
+ */
3004
+ declare function isIdentityVerificationError(error: unknown): error is EdgeIdentityVerificationError;
2860
3005
  /**
2861
3006
  * Type guard for network errors.
2862
3007
  */
@@ -2909,4 +3054,4 @@ declare const SDK_VERSION = "1.0.0";
2909
3054
  */
2910
3055
  declare const SDK_NAME = "@edge-markets/connect";
2911
3056
 
2912
- export { ALL_EDGE_SCOPES, type ApiError, type Balance, type ConsentRequiredError, EDGE_ENVIRONMENTS, EDGE_SCOPES, EdgeApiError, EdgeAuthenticationError, EdgeConsentRequiredError, type EdgeEnvironment, type EdgeEnvironmentConfig, EdgeError, EdgeInsufficientScopeError, type EdgeLinkExit, type EdgeLinkSuccess, EdgeNetworkError, EdgeNotFoundError, EdgePopupBlockedError, EdgePopupClosedError, type EdgeScope, EdgeStateMismatchError, EdgeTokenExchangeError, type EdgeTokens, EdgeValidationError, type InitiateTransferRequest, type ListTransfersParams, OTP_METHODS, type OtpMethod, type RevokeConsentResponse, SCOPE_DESCRIPTIONS, SCOPE_ICONS, SDK_NAME, SDK_VERSION, TRANSFER_STATUSES, TRANSFER_TYPES, type Transfer, type TransferList, type TransferListItem, type TransferStatus, type TransferType, type User, type VerifyTransferRequest, type components, formatScopeForEnvironment, formatScopesForEnvironment, getAvailableEnvironments, getEnvironmentConfig, isApiError, isAuthenticationError, isConsentRequiredError, isEdgeError, isNetworkError, isProductionEnvironment, isValidScope, type operations, parseScope, type paths };
3057
+ export { ALL_EDGE_SCOPES, type ApiError, type Balance, type ConsentRequiredError, type CreateVerificationSessionRequest, EDGE_ENVIRONMENTS, EDGE_SCOPES, EdgeApiError, EdgeAuthenticationError, EdgeConsentRequiredError, type EdgeEnvironment, type EdgeEnvironmentConfig, EdgeError, EdgeIdentityVerificationError, EdgeInsufficientScopeError, type EdgeLinkConfigBase, type EdgeLinkEvent, type EdgeLinkEventName, type EdgeLinkExit, type EdgeLinkSuccess, EdgeNetworkError, EdgeNotFoundError, EdgePopupBlockedError, EdgePopupClosedError, type EdgeScope, EdgeStateMismatchError, EdgeTokenExchangeError, type EdgeTokens, EdgeValidationError, type InitiateTransferRequest, type ListTransfersParams, OTP_METHODS, type OtpMethod, type PKCEPair, type RevokeConsentResponse, SCOPE_DESCRIPTIONS, SCOPE_ICONS, SDK_NAME, SDK_VERSION, TRANSFER_STATUSES, TRANSFER_TYPES, type Transfer, type TransferList, type TransferListItem, type TransferStatus, type TransferType, type User, type VerificationSession, type VerificationSessionStatus, type VerificationSessionStatusResponse, type VerifyIdentityAddress, type VerifyIdentityOptions, type VerifyIdentityResult, type VerifyIdentityScores, type VerifyTransferRequest, type components, formatScopeForEnvironment, formatScopesForEnvironment, getAvailableEnvironments, getEnvironmentConfig, isApiError, isAuthenticationError, isConsentRequiredError, isEdgeError, isIdentityVerificationError, isNetworkError, isProductionEnvironment, isValidScope, type operations, parseScope, type paths };