@edge-markets/connect 1.0.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.
@@ -0,0 +1,2971 @@
1
+ /**
2
+ * This file was auto-generated by openapi-typescript.
3
+ * Do not make direct changes to the file.
4
+ */
5
+ interface paths {
6
+ "/auth/register": {
7
+ parameters: {
8
+ query?: never;
9
+ header?: never;
10
+ path?: never;
11
+ cookie?: never;
12
+ };
13
+ get?: never;
14
+ put?: never;
15
+ post: operations["RegistrationController_register"];
16
+ delete?: never;
17
+ options?: never;
18
+ head?: never;
19
+ patch?: never;
20
+ trace?: never;
21
+ };
22
+ "/auth/verify-email-otp": {
23
+ parameters: {
24
+ query?: never;
25
+ header?: never;
26
+ path?: never;
27
+ cookie?: never;
28
+ };
29
+ get?: never;
30
+ put?: never;
31
+ post: operations["RegistrationController_verifyEmailOTP"];
32
+ delete?: never;
33
+ options?: never;
34
+ head?: never;
35
+ patch?: never;
36
+ trace?: never;
37
+ };
38
+ "/auth/accept-terms": {
39
+ parameters: {
40
+ query?: never;
41
+ header?: never;
42
+ path?: never;
43
+ cookie?: never;
44
+ };
45
+ get?: never;
46
+ put?: never;
47
+ post: operations["RegistrationController_acceptTerms"];
48
+ delete?: never;
49
+ options?: never;
50
+ head?: never;
51
+ patch?: never;
52
+ trace?: never;
53
+ };
54
+ "/auth/complete-profile": {
55
+ parameters: {
56
+ query?: never;
57
+ header?: never;
58
+ path?: never;
59
+ cookie?: never;
60
+ };
61
+ get?: never;
62
+ put?: never;
63
+ post: operations["RegistrationController_completeProfile"];
64
+ delete?: never;
65
+ options?: never;
66
+ head?: never;
67
+ patch?: never;
68
+ trace?: never;
69
+ };
70
+ "/auth/update-ssn": {
71
+ parameters: {
72
+ query?: never;
73
+ header?: never;
74
+ path?: never;
75
+ cookie?: never;
76
+ };
77
+ get?: never;
78
+ put?: never;
79
+ post: operations["RegistrationController_updateSSN"];
80
+ delete?: never;
81
+ options?: never;
82
+ head?: never;
83
+ patch?: never;
84
+ trace?: never;
85
+ };
86
+ "/auth/setup-mfa": {
87
+ parameters: {
88
+ query?: never;
89
+ header?: never;
90
+ path?: never;
91
+ cookie?: never;
92
+ };
93
+ get?: never;
94
+ put?: never;
95
+ post: operations["MFASetupController_setupMFA"];
96
+ delete?: never;
97
+ options?: never;
98
+ head?: never;
99
+ patch?: never;
100
+ trace?: never;
101
+ };
102
+ "/auth/resend-sms-setup": {
103
+ parameters: {
104
+ query?: never;
105
+ header?: never;
106
+ path?: never;
107
+ cookie?: never;
108
+ };
109
+ get?: never;
110
+ put?: never;
111
+ post: operations["MFASetupController_resendSMSSetup"];
112
+ delete?: never;
113
+ options?: never;
114
+ head?: never;
115
+ patch?: never;
116
+ trace?: never;
117
+ };
118
+ "/auth/verify-authenticator-setup": {
119
+ parameters: {
120
+ query?: never;
121
+ header?: never;
122
+ path?: never;
123
+ cookie?: never;
124
+ };
125
+ get?: never;
126
+ put?: never;
127
+ post: operations["MFASetupController_verifyAuthenticatorSetup"];
128
+ delete?: never;
129
+ options?: never;
130
+ head?: never;
131
+ patch?: never;
132
+ trace?: never;
133
+ };
134
+ "/auth/verify-sms-setup": {
135
+ parameters: {
136
+ query?: never;
137
+ header?: never;
138
+ path?: never;
139
+ cookie?: never;
140
+ };
141
+ get?: never;
142
+ put?: never;
143
+ post: operations["MFASetupController_verifySMSSetup"];
144
+ delete?: never;
145
+ options?: never;
146
+ head?: never;
147
+ patch?: never;
148
+ trace?: never;
149
+ };
150
+ "/auth/login": {
151
+ parameters: {
152
+ query?: never;
153
+ header?: never;
154
+ path?: never;
155
+ cookie?: never;
156
+ };
157
+ get?: never;
158
+ put?: never;
159
+ post: operations["LoginController_login"];
160
+ delete?: never;
161
+ options?: never;
162
+ head?: never;
163
+ patch?: never;
164
+ trace?: never;
165
+ };
166
+ "/auth/verify-login-otp": {
167
+ parameters: {
168
+ query?: never;
169
+ header?: never;
170
+ path?: never;
171
+ cookie?: never;
172
+ };
173
+ get?: never;
174
+ put?: never;
175
+ post: operations["LoginController_verifyLoginOTP"];
176
+ delete?: never;
177
+ options?: never;
178
+ head?: never;
179
+ patch?: never;
180
+ trace?: never;
181
+ };
182
+ "/auth/verify-mfa": {
183
+ parameters: {
184
+ query?: never;
185
+ header?: never;
186
+ path?: never;
187
+ cookie?: never;
188
+ };
189
+ get?: never;
190
+ put?: never;
191
+ post: operations["LoginController_verifyMFA"];
192
+ delete?: never;
193
+ options?: never;
194
+ head?: never;
195
+ patch?: never;
196
+ trace?: never;
197
+ };
198
+ "/auth/resend-email-otp": {
199
+ parameters: {
200
+ query?: never;
201
+ header?: never;
202
+ path?: never;
203
+ cookie?: never;
204
+ };
205
+ get?: never;
206
+ put?: never;
207
+ post: operations["LoginController_resendEmailOTP"];
208
+ delete?: never;
209
+ options?: never;
210
+ head?: never;
211
+ patch?: never;
212
+ trace?: never;
213
+ };
214
+ "/auth/resend-sms-mfa": {
215
+ parameters: {
216
+ query?: never;
217
+ header?: never;
218
+ path?: never;
219
+ cookie?: never;
220
+ };
221
+ get?: never;
222
+ put?: never;
223
+ post: operations["LoginController_resendSMSMFA"];
224
+ delete?: never;
225
+ options?: never;
226
+ head?: never;
227
+ patch?: never;
228
+ trace?: never;
229
+ };
230
+ "/auth/refresh-token": {
231
+ parameters: {
232
+ query?: never;
233
+ header?: never;
234
+ path?: never;
235
+ cookie?: never;
236
+ };
237
+ get?: never;
238
+ put?: never;
239
+ post: operations["LoginController_refreshToken"];
240
+ delete?: never;
241
+ options?: never;
242
+ head?: never;
243
+ patch?: never;
244
+ trace?: never;
245
+ };
246
+ "/auth/debug/ip": {
247
+ parameters: {
248
+ query?: never;
249
+ header?: never;
250
+ path?: never;
251
+ cookie?: never;
252
+ };
253
+ get?: never;
254
+ put?: never;
255
+ post: operations["LoginController_debugIp"];
256
+ delete?: never;
257
+ options?: never;
258
+ head?: never;
259
+ patch?: never;
260
+ trace?: never;
261
+ };
262
+ "/auth/profile": {
263
+ parameters: {
264
+ query?: never;
265
+ header?: never;
266
+ path?: never;
267
+ cookie?: never;
268
+ };
269
+ get: operations["ProfileController_getProfile"];
270
+ put: operations["ProfileController_updateProfile"];
271
+ post?: never;
272
+ delete?: never;
273
+ options?: never;
274
+ head?: never;
275
+ patch?: never;
276
+ trace?: never;
277
+ };
278
+ "/auth/fill-account-vip": {
279
+ parameters: {
280
+ query?: never;
281
+ header?: never;
282
+ path?: never;
283
+ cookie?: never;
284
+ };
285
+ get?: never;
286
+ put: operations["ProfileController_fillAccountVIP"];
287
+ post?: never;
288
+ delete?: never;
289
+ options?: never;
290
+ head?: never;
291
+ patch?: never;
292
+ trace?: never;
293
+ };
294
+ "/auth/logout": {
295
+ parameters: {
296
+ query?: never;
297
+ header?: never;
298
+ path?: never;
299
+ cookie?: never;
300
+ };
301
+ get?: never;
302
+ put?: never;
303
+ post: operations["LogoutController_logout"];
304
+ delete?: never;
305
+ options?: never;
306
+ head?: never;
307
+ patch?: never;
308
+ trace?: never;
309
+ };
310
+ "/vgs/ping": {
311
+ parameters: {
312
+ query?: never;
313
+ header?: never;
314
+ path?: never;
315
+ cookie?: never;
316
+ };
317
+ get?: never;
318
+ put?: never;
319
+ post: operations["VGSController_pingGalileo"];
320
+ delete?: never;
321
+ options?: never;
322
+ head?: never;
323
+ patch?: never;
324
+ trace?: never;
325
+ };
326
+ "/vgs/card/{cardId}": {
327
+ parameters: {
328
+ query?: never;
329
+ header?: never;
330
+ path?: never;
331
+ cookie?: never;
332
+ };
333
+ get: operations["VGSController_getCardDetails"];
334
+ put?: never;
335
+ post?: never;
336
+ delete?: never;
337
+ options?: never;
338
+ head?: never;
339
+ patch?: never;
340
+ trace?: never;
341
+ };
342
+ "/vgs/card/{cardId}/pin-change-key": {
343
+ parameters: {
344
+ query?: never;
345
+ header?: never;
346
+ path?: never;
347
+ cookie?: never;
348
+ };
349
+ get?: never;
350
+ put?: never;
351
+ post: operations["VGSController_getPinChangeKey"];
352
+ delete?: never;
353
+ options?: never;
354
+ head?: never;
355
+ patch?: never;
356
+ trace?: never;
357
+ };
358
+ "/vgs/card/{cardId}/commit-pin-change": {
359
+ parameters: {
360
+ query?: never;
361
+ header?: never;
362
+ path?: never;
363
+ cookie?: never;
364
+ };
365
+ get?: never;
366
+ put?: never;
367
+ post: operations["VGSController_commitPinChange"];
368
+ delete?: never;
369
+ options?: never;
370
+ head?: never;
371
+ patch?: never;
372
+ trace?: never;
373
+ };
374
+ "/admin/migration/status": {
375
+ parameters: {
376
+ query?: never;
377
+ header?: never;
378
+ path?: never;
379
+ cookie?: never;
380
+ };
381
+ get: operations["MigrationController_getStatus"];
382
+ put?: never;
383
+ post?: never;
384
+ delete?: never;
385
+ options?: never;
386
+ head?: never;
387
+ patch?: never;
388
+ trace?: never;
389
+ };
390
+ "/admin/migration/mark-users": {
391
+ parameters: {
392
+ query?: never;
393
+ header?: never;
394
+ path?: never;
395
+ cookie?: never;
396
+ };
397
+ get?: never;
398
+ put?: never;
399
+ post: operations["MigrationController_markUsers"];
400
+ delete?: never;
401
+ options?: never;
402
+ head?: never;
403
+ patch?: never;
404
+ trace?: never;
405
+ };
406
+ "/admin/migration/validate": {
407
+ parameters: {
408
+ query?: never;
409
+ header?: never;
410
+ path?: never;
411
+ cookie?: never;
412
+ };
413
+ get?: never;
414
+ put?: never;
415
+ post: operations["MigrationController_validateUsers"];
416
+ delete?: never;
417
+ options?: never;
418
+ head?: never;
419
+ patch?: never;
420
+ trace?: never;
421
+ };
422
+ "/admin/migration/preview": {
423
+ parameters: {
424
+ query?: never;
425
+ header?: never;
426
+ path?: never;
427
+ cookie?: never;
428
+ };
429
+ get?: never;
430
+ put?: never;
431
+ post: operations["MigrationController_preview"];
432
+ delete?: never;
433
+ options?: never;
434
+ head?: never;
435
+ patch?: never;
436
+ trace?: never;
437
+ };
438
+ "/admin/migration/trigger": {
439
+ parameters: {
440
+ query?: never;
441
+ header?: never;
442
+ path?: never;
443
+ cookie?: never;
444
+ };
445
+ get?: never;
446
+ put?: never;
447
+ post: operations["MigrationController_triggerMigration"];
448
+ delete?: never;
449
+ options?: never;
450
+ head?: never;
451
+ patch?: never;
452
+ trace?: never;
453
+ };
454
+ "/admin/migration/pending": {
455
+ parameters: {
456
+ query?: never;
457
+ header?: never;
458
+ path?: never;
459
+ cookie?: never;
460
+ };
461
+ get: operations["MigrationController_getPending"];
462
+ put?: never;
463
+ post?: never;
464
+ delete?: never;
465
+ options?: never;
466
+ head?: never;
467
+ patch?: never;
468
+ trace?: never;
469
+ };
470
+ "/admin/migration/rollback/{userId}": {
471
+ parameters: {
472
+ query?: never;
473
+ header?: never;
474
+ path?: never;
475
+ cookie?: never;
476
+ };
477
+ get?: never;
478
+ put?: never;
479
+ post: operations["MigrationController_rollbackUser"];
480
+ delete?: never;
481
+ options?: never;
482
+ head?: never;
483
+ patch?: never;
484
+ trace?: never;
485
+ };
486
+ "/hubspot/identification-token": {
487
+ parameters: {
488
+ query?: never;
489
+ header?: never;
490
+ path?: never;
491
+ cookie?: never;
492
+ };
493
+ get: operations["HubspotController_getIdentificationToken"];
494
+ put?: never;
495
+ post?: never;
496
+ delete?: never;
497
+ options?: never;
498
+ head?: never;
499
+ patch?: never;
500
+ trace?: never;
501
+ };
502
+ "/v1/user": {
503
+ parameters: {
504
+ query?: never;
505
+ header?: never;
506
+ path?: never;
507
+ cookie?: never;
508
+ };
509
+ /**
510
+ * Get user profile
511
+ * @description Returns the authenticated user's profile information including name and email.
512
+ */
513
+ get: operations["getUser"];
514
+ put?: never;
515
+ post?: never;
516
+ delete?: never;
517
+ options?: never;
518
+ head?: never;
519
+ patch?: never;
520
+ trace?: never;
521
+ };
522
+ "/v1/balance": {
523
+ parameters: {
524
+ query?: never;
525
+ header?: never;
526
+ path?: never;
527
+ cookie?: never;
528
+ };
529
+ /**
530
+ * Get user balance
531
+ * @description Returns the authenticated user's current EdgeBoost balance.
532
+ */
533
+ get: operations["getBalance"];
534
+ put?: never;
535
+ post?: never;
536
+ delete?: never;
537
+ options?: never;
538
+ head?: never;
539
+ patch?: never;
540
+ trace?: never;
541
+ };
542
+ "/v1/transfer": {
543
+ parameters: {
544
+ query?: never;
545
+ header?: never;
546
+ path?: never;
547
+ cookie?: never;
548
+ };
549
+ get?: never;
550
+ put?: never;
551
+ /**
552
+ * Initiate a transfer
553
+ * @description Initiates a fund transfer that requires OTP verification.
554
+ *
555
+ * **Transfer Types:**
556
+ * - `debit`: Pull funds FROM user's EdgeBoost TO partner (user deposits to partner platform)
557
+ * - `credit`: Push funds FROM partner TO user's EdgeBoost (user withdraws from partner platform)
558
+ *
559
+ * **Idempotency:**
560
+ * Use the `idempotencyKey` to safely retry requests. If a transfer with the same key exists, its current status will be returned.
561
+ *
562
+ * **OTP Verification:**
563
+ * After initiating, the transfer will be in `pending_verification` status. Call `POST /transfer/{transferId}/verify` with the OTP to complete.
564
+ */
565
+ post: operations["initiateTransfer"];
566
+ delete?: never;
567
+ options?: never;
568
+ head?: never;
569
+ patch?: never;
570
+ trace?: never;
571
+ };
572
+ "/v1/transfer/{transferId}": {
573
+ parameters: {
574
+ query?: never;
575
+ header?: never;
576
+ path?: never;
577
+ cookie?: never;
578
+ };
579
+ /**
580
+ * Get transfer status
581
+ * @description Returns the current status of a transfer. Use this for polling after initiating a transfer.
582
+ */
583
+ get: operations["getTransferStatus"];
584
+ put?: never;
585
+ post?: never;
586
+ delete?: never;
587
+ options?: never;
588
+ head?: never;
589
+ patch?: never;
590
+ trace?: never;
591
+ };
592
+ "/v1/transfers": {
593
+ parameters: {
594
+ query?: never;
595
+ header?: never;
596
+ path?: never;
597
+ cookie?: never;
598
+ };
599
+ /**
600
+ * List transfers
601
+ * @description Returns a paginated list of transfers for the authenticated user. Useful for reconciliation.
602
+ */
603
+ get: operations["listTransfers"];
604
+ put?: never;
605
+ post?: never;
606
+ delete?: never;
607
+ options?: never;
608
+ head?: never;
609
+ patch?: never;
610
+ trace?: never;
611
+ };
612
+ "/v1/transfer/{transferId}/verify": {
613
+ parameters: {
614
+ query?: never;
615
+ header?: never;
616
+ path?: never;
617
+ cookie?: never;
618
+ };
619
+ get?: never;
620
+ put?: never;
621
+ /**
622
+ * Verify transfer with OTP
623
+ * @description Completes a pending transfer by verifying the one-time password.
624
+ *
625
+ * **OTP Methods:**
626
+ * - `sms`: User receives OTP via SMS
627
+ * - `totp`: User generates OTP from authenticator app
628
+ *
629
+ * The OTP method is indicated in the `otpMethod` field of the transfer response.
630
+ */
631
+ post: operations["verifyTransfer"];
632
+ delete?: never;
633
+ options?: never;
634
+ head?: never;
635
+ patch?: never;
636
+ trace?: never;
637
+ };
638
+ "/v1/consent": {
639
+ parameters: {
640
+ query?: never;
641
+ header?: never;
642
+ path?: never;
643
+ cookie?: never;
644
+ };
645
+ get?: never;
646
+ put?: never;
647
+ post?: never;
648
+ /**
649
+ * Revoke user consent
650
+ * @description Revokes the user's consent for this partner application.
651
+ *
652
+ * After revocation:
653
+ * - All API calls will return `403 consent_required`
654
+ * - The user must re-authenticate and grant consent to restore access
655
+ * - Partners should implement this as a "disconnect" or "unlink" feature
656
+ */
657
+ delete: operations["revokeConsent"];
658
+ options?: never;
659
+ head?: never;
660
+ patch?: never;
661
+ trace?: never;
662
+ };
663
+ "/oauth/consent": {
664
+ parameters: {
665
+ query?: never;
666
+ header?: never;
667
+ path?: never;
668
+ cookie?: never;
669
+ };
670
+ get: operations["ConsentController_showConsentPage"];
671
+ put?: never;
672
+ post: operations["ConsentController_handleConsentDecision"];
673
+ delete?: never;
674
+ options?: never;
675
+ head?: never;
676
+ patch?: never;
677
+ trace?: never;
678
+ };
679
+ "/api/v3/user/connected-apps": {
680
+ parameters: {
681
+ query?: never;
682
+ header?: never;
683
+ path?: never;
684
+ cookie?: never;
685
+ };
686
+ get: operations["ConnectedAppsController_getConnectedApps"];
687
+ put?: never;
688
+ post?: never;
689
+ delete?: never;
690
+ options?: never;
691
+ head?: never;
692
+ patch?: never;
693
+ trace?: never;
694
+ };
695
+ "/api/v3/user/connected-apps/{clientId}": {
696
+ parameters: {
697
+ query?: never;
698
+ header?: never;
699
+ path?: never;
700
+ cookie?: never;
701
+ };
702
+ get?: never;
703
+ put?: never;
704
+ post?: never;
705
+ delete: operations["ConnectedAppsController_revokeApp"];
706
+ options?: never;
707
+ head?: never;
708
+ patch?: never;
709
+ trace?: never;
710
+ };
711
+ "/health": {
712
+ parameters: {
713
+ query?: never;
714
+ header?: never;
715
+ path?: never;
716
+ cookie?: never;
717
+ };
718
+ get: operations["AppController_getHealth"];
719
+ put?: never;
720
+ post?: never;
721
+ delete?: never;
722
+ options?: never;
723
+ head?: never;
724
+ patch?: never;
725
+ trace?: never;
726
+ };
727
+ "/test": {
728
+ parameters: {
729
+ query?: never;
730
+ header?: never;
731
+ path?: never;
732
+ cookie?: never;
733
+ };
734
+ get: operations["TestController_getAll"];
735
+ put?: never;
736
+ post: operations["TestController_create"];
737
+ delete?: never;
738
+ options?: never;
739
+ head?: never;
740
+ patch?: never;
741
+ trace?: never;
742
+ };
743
+ "/test/{id}": {
744
+ parameters: {
745
+ query?: never;
746
+ header?: never;
747
+ path?: never;
748
+ cookie?: never;
749
+ };
750
+ get: operations["TestController_getById"];
751
+ put: operations["TestController_update"];
752
+ post?: never;
753
+ delete: operations["TestController_delete"];
754
+ options?: never;
755
+ head?: never;
756
+ patch?: never;
757
+ trace?: never;
758
+ };
759
+ "/test/legacy/data": {
760
+ parameters: {
761
+ query?: never;
762
+ header?: never;
763
+ path?: never;
764
+ cookie?: never;
765
+ };
766
+ get: operations["TestController_getLegacyData"];
767
+ put?: never;
768
+ post?: never;
769
+ delete?: never;
770
+ options?: never;
771
+ head?: never;
772
+ patch?: never;
773
+ trace?: never;
774
+ };
775
+ "/config-test": {
776
+ parameters: {
777
+ query?: never;
778
+ header?: never;
779
+ path?: never;
780
+ cookie?: never;
781
+ };
782
+ get: operations["ConfigTestController_getConfigInfo"];
783
+ put?: never;
784
+ post?: never;
785
+ delete?: never;
786
+ options?: never;
787
+ head?: never;
788
+ patch?: never;
789
+ trace?: never;
790
+ };
791
+ "/config-test/raw": {
792
+ parameters: {
793
+ query?: never;
794
+ header?: never;
795
+ path?: never;
796
+ cookie?: never;
797
+ };
798
+ get: operations["ConfigTestController_getRawConfigValues"];
799
+ put?: never;
800
+ post?: never;
801
+ delete?: never;
802
+ options?: never;
803
+ head?: never;
804
+ patch?: never;
805
+ trace?: never;
806
+ };
807
+ }
808
+ interface components {
809
+ schemas: {
810
+ RegisterDto: Record<string, never>;
811
+ VerifyEmailOTPDto: Record<string, never>;
812
+ AcceptTermsDto: Record<string, never>;
813
+ CompleteProfileDto: Record<string, never>;
814
+ UpdateSSNDto: Record<string, never>;
815
+ SetupMfaDto: Record<string, never>;
816
+ VerifyMfaSetupDto: Record<string, never>;
817
+ InitiateLoginDto: Record<string, never>;
818
+ VerifyLoginOTPDto: Record<string, never>;
819
+ VerifyMfaDto: Record<string, never>;
820
+ ResendEmailOTPDto: Record<string, never>;
821
+ ResendSMSMFADto: Record<string, never>;
822
+ RefreshTokenDto: Record<string, never>;
823
+ UpdateProfileDto: Record<string, never>;
824
+ FillAccountVIPDto: Record<string, never>;
825
+ LogoutDto: Record<string, never>;
826
+ CommitPinChangeBodyDto: Record<string, never>;
827
+ MarkUsersDto: Record<string, never>;
828
+ BatchValidationDto: Record<string, never>;
829
+ PreviewMigrationDto: Record<string, never>;
830
+ TriggerMigrationDto: Record<string, never>;
831
+ ErrorResponseDto: {
832
+ /**
833
+ * @description HTTP status code
834
+ * @example 400
835
+ */
836
+ statusCode: number;
837
+ /**
838
+ * @description Error message
839
+ * @example Invalid transfer amount. Must be a positive number.
840
+ */
841
+ message: string;
842
+ /**
843
+ * @description Error type/code for programmatic handling
844
+ * @example BAD_REQUEST
845
+ */
846
+ error?: string;
847
+ };
848
+ ConsentRequiredErrorDto: {
849
+ /**
850
+ * @description HTTP status code
851
+ * @example 403
852
+ */
853
+ statusCode: number;
854
+ /**
855
+ * @description Error message
856
+ * @example User consent required
857
+ */
858
+ message: string;
859
+ /**
860
+ * @description Error code for programmatic handling
861
+ * @example consent_required
862
+ */
863
+ error: string;
864
+ /**
865
+ * @description URL to redirect user for consent
866
+ * @example https://auth.edgeboost.com/oauth2/authorize?client_id=...
867
+ */
868
+ consentUrl: string;
869
+ };
870
+ ConnectUserResponseDto: {
871
+ /**
872
+ * @description Unique user identifier
873
+ * @example 507f1f77bcf86cd799439011
874
+ */
875
+ id: string;
876
+ /**
877
+ * @description User email address
878
+ * @example user@example.com
879
+ */
880
+ email: string;
881
+ /**
882
+ * @description User first name
883
+ * @example John
884
+ */
885
+ firstName: string;
886
+ /**
887
+ * @description User last name
888
+ * @example Doe
889
+ */
890
+ lastName: string;
891
+ /**
892
+ * Format: date-time
893
+ * @description Account creation timestamp
894
+ * @example 2024-01-15T10:30:00.000Z
895
+ */
896
+ createdAt: string;
897
+ };
898
+ ConnectBalanceResponseDto: {
899
+ /**
900
+ * @description User identifier
901
+ * @example 507f1f77bcf86cd799439011
902
+ */
903
+ userId: string;
904
+ /**
905
+ * @description Available balance in USD
906
+ * @example 1250.5
907
+ */
908
+ availableBalance: number;
909
+ /**
910
+ * @description Currency code (always USD)
911
+ * @example USD
912
+ */
913
+ currency: string;
914
+ /**
915
+ * @description Timestamp when balance was fetched
916
+ * @example 2024-01-15T10:30:00.000Z
917
+ */
918
+ asOf: string;
919
+ };
920
+ InitiateTransferRequestDto: {
921
+ /**
922
+ * @description Type of transfer
923
+ * @example debit
924
+ * @enum {string}
925
+ */
926
+ type: "debit" | "credit";
927
+ /**
928
+ * @description Amount to transfer in USD (as string to preserve precision)
929
+ * @example 100.00
930
+ */
931
+ amount: string;
932
+ /**
933
+ * @description Unique idempotency key to prevent duplicate transfers
934
+ * @example txn_abc123_20240115
935
+ */
936
+ idempotencyKey: string;
937
+ };
938
+ TransferResponseDto: {
939
+ /**
940
+ * @description Unique transfer identifier
941
+ * @example a1b2c3d4-e5f6-7890-abcd-ef1234567890
942
+ */
943
+ transferId: string;
944
+ /**
945
+ * @description Current transfer status
946
+ * @example pending_verification
947
+ * @enum {string}
948
+ */
949
+ status: "pending_verification" | "completed" | "failed" | "expired";
950
+ /**
951
+ * @description OTP method to use for verification (only present when status is pending_verification)
952
+ * @example sms
953
+ * @enum {string}
954
+ */
955
+ otpMethod?: "sms" | "totp";
956
+ };
957
+ TransferListItemDto: {
958
+ /**
959
+ * @description Unique transfer identifier
960
+ * @example a1b2c3d4-e5f6-7890-abcd-ef1234567890
961
+ */
962
+ transferId: string;
963
+ /**
964
+ * @description Type of transfer
965
+ * @example debit
966
+ * @enum {string}
967
+ */
968
+ type: "debit" | "credit";
969
+ /**
970
+ * @description Transfer amount in USD
971
+ * @example 100
972
+ */
973
+ amount: number;
974
+ /**
975
+ * @description Current transfer status
976
+ * @example completed
977
+ * @enum {string}
978
+ */
979
+ status: "pending_verification" | "completed" | "failed" | "expired";
980
+ /**
981
+ * Format: date-time
982
+ * @description Transfer creation timestamp
983
+ * @example 2024-01-15T10:30:00.000Z
984
+ */
985
+ createdAt: string;
986
+ /**
987
+ * Format: date-time
988
+ * @description Transfer completion timestamp (if completed)
989
+ * @example 2024-01-15T10:35:00.000Z
990
+ */
991
+ completedAt?: string;
992
+ };
993
+ ListTransfersResponseDto: {
994
+ /** @description Array of transfers */
995
+ transfers: components["schemas"]["TransferListItemDto"][];
996
+ /**
997
+ * @description Total number of transfers matching the query
998
+ * @example 42
999
+ */
1000
+ total: number;
1001
+ };
1002
+ VerifyTransferRequestDto: {
1003
+ /**
1004
+ * @description One-time password for verification
1005
+ * @example 123456
1006
+ */
1007
+ otp: string;
1008
+ };
1009
+ RevokeConsentResponseDto: {
1010
+ /**
1011
+ * @description Whether consent was successfully revoked
1012
+ * @example true
1013
+ */
1014
+ revoked: boolean;
1015
+ };
1016
+ };
1017
+ responses: never;
1018
+ parameters: never;
1019
+ requestBodies: never;
1020
+ headers: never;
1021
+ pathItems: never;
1022
+ }
1023
+ interface operations {
1024
+ RegistrationController_register: {
1025
+ parameters: {
1026
+ query?: never;
1027
+ header?: never;
1028
+ path?: never;
1029
+ cookie?: never;
1030
+ };
1031
+ requestBody: {
1032
+ content: {
1033
+ "application/json": components["schemas"]["RegisterDto"];
1034
+ };
1035
+ };
1036
+ responses: {
1037
+ 200: {
1038
+ headers: {
1039
+ [name: string]: unknown;
1040
+ };
1041
+ content?: never;
1042
+ };
1043
+ };
1044
+ };
1045
+ RegistrationController_verifyEmailOTP: {
1046
+ parameters: {
1047
+ query?: never;
1048
+ header?: never;
1049
+ path?: never;
1050
+ cookie?: never;
1051
+ };
1052
+ requestBody: {
1053
+ content: {
1054
+ "application/json": components["schemas"]["VerifyEmailOTPDto"];
1055
+ };
1056
+ };
1057
+ responses: {
1058
+ 200: {
1059
+ headers: {
1060
+ [name: string]: unknown;
1061
+ };
1062
+ content?: never;
1063
+ };
1064
+ };
1065
+ };
1066
+ RegistrationController_acceptTerms: {
1067
+ parameters: {
1068
+ query?: never;
1069
+ header?: never;
1070
+ path?: never;
1071
+ cookie?: never;
1072
+ };
1073
+ requestBody: {
1074
+ content: {
1075
+ "application/json": components["schemas"]["AcceptTermsDto"];
1076
+ };
1077
+ };
1078
+ responses: {
1079
+ 200: {
1080
+ headers: {
1081
+ [name: string]: unknown;
1082
+ };
1083
+ content?: never;
1084
+ };
1085
+ };
1086
+ };
1087
+ RegistrationController_completeProfile: {
1088
+ parameters: {
1089
+ query?: never;
1090
+ header?: never;
1091
+ path?: never;
1092
+ cookie?: never;
1093
+ };
1094
+ requestBody: {
1095
+ content: {
1096
+ "application/json": components["schemas"]["CompleteProfileDto"];
1097
+ };
1098
+ };
1099
+ responses: {
1100
+ 200: {
1101
+ headers: {
1102
+ [name: string]: unknown;
1103
+ };
1104
+ content?: never;
1105
+ };
1106
+ };
1107
+ };
1108
+ RegistrationController_updateSSN: {
1109
+ parameters: {
1110
+ query?: never;
1111
+ header?: never;
1112
+ path?: never;
1113
+ cookie?: never;
1114
+ };
1115
+ requestBody: {
1116
+ content: {
1117
+ "application/json": components["schemas"]["UpdateSSNDto"];
1118
+ };
1119
+ };
1120
+ responses: {
1121
+ 200: {
1122
+ headers: {
1123
+ [name: string]: unknown;
1124
+ };
1125
+ content?: never;
1126
+ };
1127
+ };
1128
+ };
1129
+ MFASetupController_setupMFA: {
1130
+ parameters: {
1131
+ query?: never;
1132
+ header?: never;
1133
+ path?: never;
1134
+ cookie?: never;
1135
+ };
1136
+ requestBody: {
1137
+ content: {
1138
+ "application/json": components["schemas"]["SetupMfaDto"];
1139
+ };
1140
+ };
1141
+ responses: {
1142
+ 200: {
1143
+ headers: {
1144
+ [name: string]: unknown;
1145
+ };
1146
+ content?: never;
1147
+ };
1148
+ };
1149
+ };
1150
+ MFASetupController_resendSMSSetup: {
1151
+ parameters: {
1152
+ query?: never;
1153
+ header?: never;
1154
+ path?: never;
1155
+ cookie?: never;
1156
+ };
1157
+ requestBody?: never;
1158
+ responses: {
1159
+ 200: {
1160
+ headers: {
1161
+ [name: string]: unknown;
1162
+ };
1163
+ content?: never;
1164
+ };
1165
+ };
1166
+ };
1167
+ MFASetupController_verifyAuthenticatorSetup: {
1168
+ parameters: {
1169
+ query?: never;
1170
+ header?: never;
1171
+ path?: never;
1172
+ cookie?: never;
1173
+ };
1174
+ requestBody: {
1175
+ content: {
1176
+ "application/json": components["schemas"]["VerifyMfaSetupDto"];
1177
+ };
1178
+ };
1179
+ responses: {
1180
+ 200: {
1181
+ headers: {
1182
+ [name: string]: unknown;
1183
+ };
1184
+ content?: never;
1185
+ };
1186
+ };
1187
+ };
1188
+ MFASetupController_verifySMSSetup: {
1189
+ parameters: {
1190
+ query?: never;
1191
+ header?: never;
1192
+ path?: never;
1193
+ cookie?: never;
1194
+ };
1195
+ requestBody: {
1196
+ content: {
1197
+ "application/json": components["schemas"]["VerifyMfaSetupDto"];
1198
+ };
1199
+ };
1200
+ responses: {
1201
+ 200: {
1202
+ headers: {
1203
+ [name: string]: unknown;
1204
+ };
1205
+ content?: never;
1206
+ };
1207
+ };
1208
+ };
1209
+ LoginController_login: {
1210
+ parameters: {
1211
+ query?: never;
1212
+ header?: never;
1213
+ path?: never;
1214
+ cookie?: never;
1215
+ };
1216
+ requestBody: {
1217
+ content: {
1218
+ "application/json": components["schemas"]["InitiateLoginDto"];
1219
+ };
1220
+ };
1221
+ responses: {
1222
+ 200: {
1223
+ headers: {
1224
+ [name: string]: unknown;
1225
+ };
1226
+ content?: never;
1227
+ };
1228
+ };
1229
+ };
1230
+ LoginController_verifyLoginOTP: {
1231
+ parameters: {
1232
+ query?: never;
1233
+ header?: never;
1234
+ path?: never;
1235
+ cookie?: never;
1236
+ };
1237
+ requestBody: {
1238
+ content: {
1239
+ "application/json": components["schemas"]["VerifyLoginOTPDto"];
1240
+ };
1241
+ };
1242
+ responses: {
1243
+ 200: {
1244
+ headers: {
1245
+ [name: string]: unknown;
1246
+ };
1247
+ content?: never;
1248
+ };
1249
+ };
1250
+ };
1251
+ LoginController_verifyMFA: {
1252
+ parameters: {
1253
+ query?: never;
1254
+ header?: never;
1255
+ path?: never;
1256
+ cookie?: never;
1257
+ };
1258
+ requestBody: {
1259
+ content: {
1260
+ "application/json": components["schemas"]["VerifyMfaDto"];
1261
+ };
1262
+ };
1263
+ responses: {
1264
+ 200: {
1265
+ headers: {
1266
+ [name: string]: unknown;
1267
+ };
1268
+ content?: never;
1269
+ };
1270
+ };
1271
+ };
1272
+ LoginController_resendEmailOTP: {
1273
+ parameters: {
1274
+ query?: never;
1275
+ header?: never;
1276
+ path?: never;
1277
+ cookie?: never;
1278
+ };
1279
+ requestBody: {
1280
+ content: {
1281
+ "application/json": components["schemas"]["ResendEmailOTPDto"];
1282
+ };
1283
+ };
1284
+ responses: {
1285
+ 200: {
1286
+ headers: {
1287
+ [name: string]: unknown;
1288
+ };
1289
+ content?: never;
1290
+ };
1291
+ };
1292
+ };
1293
+ LoginController_resendSMSMFA: {
1294
+ parameters: {
1295
+ query?: never;
1296
+ header?: never;
1297
+ path?: never;
1298
+ cookie?: never;
1299
+ };
1300
+ requestBody: {
1301
+ content: {
1302
+ "application/json": components["schemas"]["ResendSMSMFADto"];
1303
+ };
1304
+ };
1305
+ responses: {
1306
+ 200: {
1307
+ headers: {
1308
+ [name: string]: unknown;
1309
+ };
1310
+ content?: never;
1311
+ };
1312
+ };
1313
+ };
1314
+ LoginController_refreshToken: {
1315
+ parameters: {
1316
+ query?: never;
1317
+ header?: never;
1318
+ path?: never;
1319
+ cookie?: never;
1320
+ };
1321
+ requestBody: {
1322
+ content: {
1323
+ "application/json": components["schemas"]["RefreshTokenDto"];
1324
+ };
1325
+ };
1326
+ responses: {
1327
+ 200: {
1328
+ headers: {
1329
+ [name: string]: unknown;
1330
+ };
1331
+ content?: never;
1332
+ };
1333
+ };
1334
+ };
1335
+ LoginController_debugIp: {
1336
+ parameters: {
1337
+ query?: never;
1338
+ header?: never;
1339
+ path?: never;
1340
+ cookie?: never;
1341
+ };
1342
+ requestBody?: never;
1343
+ responses: {
1344
+ 200: {
1345
+ headers: {
1346
+ [name: string]: unknown;
1347
+ };
1348
+ content?: never;
1349
+ };
1350
+ };
1351
+ };
1352
+ ProfileController_getProfile: {
1353
+ parameters: {
1354
+ query?: never;
1355
+ header?: never;
1356
+ path?: never;
1357
+ cookie?: never;
1358
+ };
1359
+ requestBody?: never;
1360
+ responses: {
1361
+ 200: {
1362
+ headers: {
1363
+ [name: string]: unknown;
1364
+ };
1365
+ content?: never;
1366
+ };
1367
+ };
1368
+ };
1369
+ ProfileController_updateProfile: {
1370
+ parameters: {
1371
+ query?: never;
1372
+ header?: never;
1373
+ path?: never;
1374
+ cookie?: never;
1375
+ };
1376
+ requestBody: {
1377
+ content: {
1378
+ "application/json": components["schemas"]["UpdateProfileDto"];
1379
+ };
1380
+ };
1381
+ responses: {
1382
+ 200: {
1383
+ headers: {
1384
+ [name: string]: unknown;
1385
+ };
1386
+ content?: never;
1387
+ };
1388
+ };
1389
+ };
1390
+ ProfileController_fillAccountVIP: {
1391
+ parameters: {
1392
+ query?: never;
1393
+ header?: never;
1394
+ path?: never;
1395
+ cookie?: never;
1396
+ };
1397
+ requestBody: {
1398
+ content: {
1399
+ "application/json": components["schemas"]["FillAccountVIPDto"];
1400
+ };
1401
+ };
1402
+ responses: {
1403
+ 200: {
1404
+ headers: {
1405
+ [name: string]: unknown;
1406
+ };
1407
+ content?: never;
1408
+ };
1409
+ };
1410
+ };
1411
+ LogoutController_logout: {
1412
+ parameters: {
1413
+ query?: never;
1414
+ header?: never;
1415
+ path?: never;
1416
+ cookie?: never;
1417
+ };
1418
+ requestBody: {
1419
+ content: {
1420
+ "application/json": components["schemas"]["LogoutDto"];
1421
+ };
1422
+ };
1423
+ responses: {
1424
+ 200: {
1425
+ headers: {
1426
+ [name: string]: unknown;
1427
+ };
1428
+ content?: never;
1429
+ };
1430
+ };
1431
+ };
1432
+ VGSController_pingGalileo: {
1433
+ parameters: {
1434
+ query?: never;
1435
+ header?: never;
1436
+ path?: never;
1437
+ cookie?: never;
1438
+ };
1439
+ requestBody?: never;
1440
+ responses: {
1441
+ 200: {
1442
+ headers: {
1443
+ [name: string]: unknown;
1444
+ };
1445
+ content?: never;
1446
+ };
1447
+ };
1448
+ };
1449
+ VGSController_getCardDetails: {
1450
+ parameters: {
1451
+ query?: never;
1452
+ header?: never;
1453
+ path?: never;
1454
+ cookie?: never;
1455
+ };
1456
+ requestBody?: never;
1457
+ responses: {
1458
+ 200: {
1459
+ headers: {
1460
+ [name: string]: unknown;
1461
+ };
1462
+ content?: never;
1463
+ };
1464
+ };
1465
+ };
1466
+ VGSController_getPinChangeKey: {
1467
+ parameters: {
1468
+ query?: never;
1469
+ header?: never;
1470
+ path?: never;
1471
+ cookie?: never;
1472
+ };
1473
+ requestBody?: never;
1474
+ responses: {
1475
+ 200: {
1476
+ headers: {
1477
+ [name: string]: unknown;
1478
+ };
1479
+ content?: never;
1480
+ };
1481
+ };
1482
+ };
1483
+ VGSController_commitPinChange: {
1484
+ parameters: {
1485
+ query?: never;
1486
+ header?: never;
1487
+ path?: never;
1488
+ cookie?: never;
1489
+ };
1490
+ requestBody: {
1491
+ content: {
1492
+ "application/json": components["schemas"]["CommitPinChangeBodyDto"];
1493
+ };
1494
+ };
1495
+ responses: {
1496
+ 200: {
1497
+ headers: {
1498
+ [name: string]: unknown;
1499
+ };
1500
+ content?: never;
1501
+ };
1502
+ };
1503
+ };
1504
+ MigrationController_getStatus: {
1505
+ parameters: {
1506
+ query?: never;
1507
+ header?: never;
1508
+ path?: never;
1509
+ cookie?: never;
1510
+ };
1511
+ requestBody?: never;
1512
+ responses: {
1513
+ 200: {
1514
+ headers: {
1515
+ [name: string]: unknown;
1516
+ };
1517
+ content?: never;
1518
+ };
1519
+ };
1520
+ };
1521
+ MigrationController_markUsers: {
1522
+ parameters: {
1523
+ query?: never;
1524
+ header?: never;
1525
+ path?: never;
1526
+ cookie?: never;
1527
+ };
1528
+ requestBody: {
1529
+ content: {
1530
+ "application/json": components["schemas"]["MarkUsersDto"];
1531
+ };
1532
+ };
1533
+ responses: {
1534
+ 201: {
1535
+ headers: {
1536
+ [name: string]: unknown;
1537
+ };
1538
+ content?: never;
1539
+ };
1540
+ };
1541
+ };
1542
+ MigrationController_validateUsers: {
1543
+ parameters: {
1544
+ query?: never;
1545
+ header?: never;
1546
+ path?: never;
1547
+ cookie?: never;
1548
+ };
1549
+ requestBody: {
1550
+ content: {
1551
+ "application/json": components["schemas"]["BatchValidationDto"];
1552
+ };
1553
+ };
1554
+ responses: {
1555
+ 201: {
1556
+ headers: {
1557
+ [name: string]: unknown;
1558
+ };
1559
+ content?: never;
1560
+ };
1561
+ };
1562
+ };
1563
+ MigrationController_preview: {
1564
+ parameters: {
1565
+ query?: never;
1566
+ header?: never;
1567
+ path?: never;
1568
+ cookie?: never;
1569
+ };
1570
+ requestBody: {
1571
+ content: {
1572
+ "application/json": components["schemas"]["PreviewMigrationDto"];
1573
+ };
1574
+ };
1575
+ responses: {
1576
+ 201: {
1577
+ headers: {
1578
+ [name: string]: unknown;
1579
+ };
1580
+ content?: never;
1581
+ };
1582
+ };
1583
+ };
1584
+ MigrationController_triggerMigration: {
1585
+ parameters: {
1586
+ query?: never;
1587
+ header?: never;
1588
+ path?: never;
1589
+ cookie?: never;
1590
+ };
1591
+ requestBody: {
1592
+ content: {
1593
+ "application/json": components["schemas"]["TriggerMigrationDto"];
1594
+ };
1595
+ };
1596
+ responses: {
1597
+ 201: {
1598
+ headers: {
1599
+ [name: string]: unknown;
1600
+ };
1601
+ content?: never;
1602
+ };
1603
+ };
1604
+ };
1605
+ MigrationController_getPending: {
1606
+ parameters: {
1607
+ query: {
1608
+ limit: number;
1609
+ offset: number;
1610
+ };
1611
+ header?: never;
1612
+ path?: never;
1613
+ cookie?: never;
1614
+ };
1615
+ requestBody?: never;
1616
+ responses: {
1617
+ 200: {
1618
+ headers: {
1619
+ [name: string]: unknown;
1620
+ };
1621
+ content?: never;
1622
+ };
1623
+ };
1624
+ };
1625
+ MigrationController_rollbackUser: {
1626
+ parameters: {
1627
+ query?: never;
1628
+ header?: never;
1629
+ path: {
1630
+ userId: string;
1631
+ };
1632
+ cookie?: never;
1633
+ };
1634
+ requestBody?: never;
1635
+ responses: {
1636
+ 201: {
1637
+ headers: {
1638
+ [name: string]: unknown;
1639
+ };
1640
+ content?: never;
1641
+ };
1642
+ };
1643
+ };
1644
+ HubspotController_getIdentificationToken: {
1645
+ parameters: {
1646
+ query?: never;
1647
+ header?: never;
1648
+ path?: never;
1649
+ cookie?: never;
1650
+ };
1651
+ requestBody?: never;
1652
+ responses: {
1653
+ 200: {
1654
+ headers: {
1655
+ [name: string]: unknown;
1656
+ };
1657
+ content?: never;
1658
+ };
1659
+ };
1660
+ };
1661
+ getUser: {
1662
+ parameters: {
1663
+ query?: never;
1664
+ header?: never;
1665
+ path?: never;
1666
+ cookie?: never;
1667
+ };
1668
+ requestBody?: never;
1669
+ responses: {
1670
+ /** @description User profile retrieved successfully */
1671
+ 200: {
1672
+ headers: {
1673
+ [name: string]: unknown;
1674
+ };
1675
+ content: {
1676
+ "application/json": components["schemas"]["ConnectUserResponseDto"];
1677
+ };
1678
+ };
1679
+ /** @description Invalid or expired access token */
1680
+ 401: {
1681
+ headers: {
1682
+ [name: string]: unknown;
1683
+ };
1684
+ content: {
1685
+ "application/json": components["schemas"]["ErrorResponseDto"];
1686
+ };
1687
+ };
1688
+ /** @description User consent required or insufficient scope */
1689
+ 403: {
1690
+ headers: {
1691
+ [name: string]: unknown;
1692
+ };
1693
+ content: {
1694
+ "application/json": components["schemas"]["ConsentRequiredErrorDto"];
1695
+ };
1696
+ };
1697
+ };
1698
+ };
1699
+ getBalance: {
1700
+ parameters: {
1701
+ query?: never;
1702
+ header?: never;
1703
+ path?: never;
1704
+ cookie?: never;
1705
+ };
1706
+ requestBody?: never;
1707
+ responses: {
1708
+ /** @description Balance retrieved successfully */
1709
+ 200: {
1710
+ headers: {
1711
+ [name: string]: unknown;
1712
+ };
1713
+ content: {
1714
+ "application/json": components["schemas"]["ConnectBalanceResponseDto"];
1715
+ };
1716
+ };
1717
+ /** @description Invalid or expired access token */
1718
+ 401: {
1719
+ headers: {
1720
+ [name: string]: unknown;
1721
+ };
1722
+ content: {
1723
+ "application/json": components["schemas"]["ErrorResponseDto"];
1724
+ };
1725
+ };
1726
+ /** @description User consent required or insufficient scope */
1727
+ 403: {
1728
+ headers: {
1729
+ [name: string]: unknown;
1730
+ };
1731
+ content: {
1732
+ "application/json": components["schemas"]["ConsentRequiredErrorDto"];
1733
+ };
1734
+ };
1735
+ };
1736
+ };
1737
+ initiateTransfer: {
1738
+ parameters: {
1739
+ query?: never;
1740
+ header?: never;
1741
+ path?: never;
1742
+ cookie?: never;
1743
+ };
1744
+ requestBody: {
1745
+ content: {
1746
+ "application/json": components["schemas"]["InitiateTransferRequestDto"];
1747
+ };
1748
+ };
1749
+ responses: {
1750
+ /** @description Transfer initiated, pending OTP verification */
1751
+ 201: {
1752
+ headers: {
1753
+ [name: string]: unknown;
1754
+ };
1755
+ content: {
1756
+ "application/json": components["schemas"]["TransferResponseDto"];
1757
+ };
1758
+ };
1759
+ /** @description Invalid request (amount, balance, etc.) */
1760
+ 400: {
1761
+ headers: {
1762
+ [name: string]: unknown;
1763
+ };
1764
+ content: {
1765
+ "application/json": components["schemas"]["ErrorResponseDto"];
1766
+ };
1767
+ };
1768
+ /** @description Invalid or expired access token */
1769
+ 401: {
1770
+ headers: {
1771
+ [name: string]: unknown;
1772
+ };
1773
+ content: {
1774
+ "application/json": components["schemas"]["ErrorResponseDto"];
1775
+ };
1776
+ };
1777
+ /** @description User consent required or insufficient scope */
1778
+ 403: {
1779
+ headers: {
1780
+ [name: string]: unknown;
1781
+ };
1782
+ content: {
1783
+ "application/json": components["schemas"]["ConsentRequiredErrorDto"];
1784
+ };
1785
+ };
1786
+ };
1787
+ };
1788
+ getTransferStatus: {
1789
+ parameters: {
1790
+ query?: never;
1791
+ header?: never;
1792
+ path: {
1793
+ /** @description The unique transfer identifier returned from initiate */
1794
+ transferId: string;
1795
+ };
1796
+ cookie?: never;
1797
+ };
1798
+ requestBody?: never;
1799
+ responses: {
1800
+ /** @description Transfer status retrieved successfully */
1801
+ 200: {
1802
+ headers: {
1803
+ [name: string]: unknown;
1804
+ };
1805
+ content: {
1806
+ "application/json": components["schemas"]["TransferResponseDto"];
1807
+ };
1808
+ };
1809
+ /** @description Invalid or expired access token */
1810
+ 401: {
1811
+ headers: {
1812
+ [name: string]: unknown;
1813
+ };
1814
+ content: {
1815
+ "application/json": components["schemas"]["ErrorResponseDto"];
1816
+ };
1817
+ };
1818
+ /** @description User consent required or insufficient scope */
1819
+ 403: {
1820
+ headers: {
1821
+ [name: string]: unknown;
1822
+ };
1823
+ content: {
1824
+ "application/json": components["schemas"]["ConsentRequiredErrorDto"];
1825
+ };
1826
+ };
1827
+ /** @description Transfer not found */
1828
+ 404: {
1829
+ headers: {
1830
+ [name: string]: unknown;
1831
+ };
1832
+ content: {
1833
+ "application/json": components["schemas"]["ErrorResponseDto"];
1834
+ };
1835
+ };
1836
+ };
1837
+ };
1838
+ listTransfers: {
1839
+ parameters: {
1840
+ query?: {
1841
+ /** @description Maximum number of transfers to return */
1842
+ limit?: number;
1843
+ /** @description Number of transfers to skip (for pagination) */
1844
+ offset?: number;
1845
+ /** @description Filter by transfer status */
1846
+ status?: "pending_verification" | "completed" | "failed" | "expired";
1847
+ };
1848
+ header?: never;
1849
+ path?: never;
1850
+ cookie?: never;
1851
+ };
1852
+ requestBody?: never;
1853
+ responses: {
1854
+ /** @description Transfers retrieved successfully */
1855
+ 200: {
1856
+ headers: {
1857
+ [name: string]: unknown;
1858
+ };
1859
+ content: {
1860
+ "application/json": components["schemas"]["ListTransfersResponseDto"];
1861
+ };
1862
+ };
1863
+ /** @description Invalid or expired access token */
1864
+ 401: {
1865
+ headers: {
1866
+ [name: string]: unknown;
1867
+ };
1868
+ content: {
1869
+ "application/json": components["schemas"]["ErrorResponseDto"];
1870
+ };
1871
+ };
1872
+ /** @description User consent required or insufficient scope */
1873
+ 403: {
1874
+ headers: {
1875
+ [name: string]: unknown;
1876
+ };
1877
+ content: {
1878
+ "application/json": components["schemas"]["ConsentRequiredErrorDto"];
1879
+ };
1880
+ };
1881
+ };
1882
+ };
1883
+ verifyTransfer: {
1884
+ parameters: {
1885
+ query?: never;
1886
+ header?: never;
1887
+ path: {
1888
+ /** @description The unique transfer identifier */
1889
+ transferId: string;
1890
+ };
1891
+ cookie?: never;
1892
+ };
1893
+ requestBody: {
1894
+ content: {
1895
+ "application/json": components["schemas"]["VerifyTransferRequestDto"];
1896
+ };
1897
+ };
1898
+ responses: {
1899
+ /** @description Transfer verified and completed (or failed) */
1900
+ 200: {
1901
+ headers: {
1902
+ [name: string]: unknown;
1903
+ };
1904
+ content: {
1905
+ "application/json": components["schemas"]["TransferResponseDto"];
1906
+ };
1907
+ };
1908
+ /** @description Invalid OTP or transfer expired */
1909
+ 400: {
1910
+ headers: {
1911
+ [name: string]: unknown;
1912
+ };
1913
+ content: {
1914
+ "application/json": components["schemas"]["ErrorResponseDto"];
1915
+ };
1916
+ };
1917
+ /** @description Invalid or expired access token */
1918
+ 401: {
1919
+ headers: {
1920
+ [name: string]: unknown;
1921
+ };
1922
+ content: {
1923
+ "application/json": components["schemas"]["ErrorResponseDto"];
1924
+ };
1925
+ };
1926
+ /** @description User consent required or insufficient scope */
1927
+ 403: {
1928
+ headers: {
1929
+ [name: string]: unknown;
1930
+ };
1931
+ content: {
1932
+ "application/json": components["schemas"]["ConsentRequiredErrorDto"];
1933
+ };
1934
+ };
1935
+ /** @description Transfer not found */
1936
+ 404: {
1937
+ headers: {
1938
+ [name: string]: unknown;
1939
+ };
1940
+ content: {
1941
+ "application/json": components["schemas"]["ErrorResponseDto"];
1942
+ };
1943
+ };
1944
+ };
1945
+ };
1946
+ revokeConsent: {
1947
+ parameters: {
1948
+ query?: never;
1949
+ header?: never;
1950
+ path?: never;
1951
+ cookie?: never;
1952
+ };
1953
+ requestBody?: never;
1954
+ responses: {
1955
+ /** @description Consent revoked successfully */
1956
+ 200: {
1957
+ headers: {
1958
+ [name: string]: unknown;
1959
+ };
1960
+ content: {
1961
+ "application/json": components["schemas"]["RevokeConsentResponseDto"];
1962
+ };
1963
+ };
1964
+ /** @description Invalid or expired access token */
1965
+ 401: {
1966
+ headers: {
1967
+ [name: string]: unknown;
1968
+ };
1969
+ content: {
1970
+ "application/json": components["schemas"]["ErrorResponseDto"];
1971
+ };
1972
+ };
1973
+ };
1974
+ };
1975
+ ConsentController_showConsentPage: {
1976
+ parameters: {
1977
+ query?: never;
1978
+ header?: never;
1979
+ path?: never;
1980
+ cookie?: never;
1981
+ };
1982
+ requestBody?: never;
1983
+ responses: {
1984
+ 200: {
1985
+ headers: {
1986
+ [name: string]: unknown;
1987
+ };
1988
+ content?: never;
1989
+ };
1990
+ };
1991
+ };
1992
+ ConsentController_handleConsentDecision: {
1993
+ parameters: {
1994
+ query?: never;
1995
+ header?: never;
1996
+ path?: never;
1997
+ cookie?: never;
1998
+ };
1999
+ requestBody?: never;
2000
+ responses: {
2001
+ 201: {
2002
+ headers: {
2003
+ [name: string]: unknown;
2004
+ };
2005
+ content?: never;
2006
+ };
2007
+ };
2008
+ };
2009
+ ConnectedAppsController_getConnectedApps: {
2010
+ parameters: {
2011
+ query?: never;
2012
+ header?: never;
2013
+ path?: never;
2014
+ cookie?: never;
2015
+ };
2016
+ requestBody?: never;
2017
+ responses: {
2018
+ 200: {
2019
+ headers: {
2020
+ [name: string]: unknown;
2021
+ };
2022
+ content?: never;
2023
+ };
2024
+ };
2025
+ };
2026
+ ConnectedAppsController_revokeApp: {
2027
+ parameters: {
2028
+ query?: never;
2029
+ header?: never;
2030
+ path: {
2031
+ clientId: string;
2032
+ };
2033
+ cookie?: never;
2034
+ };
2035
+ requestBody?: never;
2036
+ responses: {
2037
+ 200: {
2038
+ headers: {
2039
+ [name: string]: unknown;
2040
+ };
2041
+ content?: never;
2042
+ };
2043
+ };
2044
+ };
2045
+ AppController_getHealth: {
2046
+ parameters: {
2047
+ query?: never;
2048
+ header?: never;
2049
+ path?: never;
2050
+ cookie?: never;
2051
+ };
2052
+ requestBody?: never;
2053
+ responses: {
2054
+ 200: {
2055
+ headers: {
2056
+ [name: string]: unknown;
2057
+ };
2058
+ content?: never;
2059
+ };
2060
+ };
2061
+ };
2062
+ TestController_getAll: {
2063
+ parameters: {
2064
+ query?: never;
2065
+ header?: never;
2066
+ path?: never;
2067
+ cookie?: never;
2068
+ };
2069
+ requestBody?: never;
2070
+ responses: {
2071
+ 200: {
2072
+ headers: {
2073
+ [name: string]: unknown;
2074
+ };
2075
+ content?: never;
2076
+ };
2077
+ };
2078
+ };
2079
+ TestController_create: {
2080
+ parameters: {
2081
+ query?: never;
2082
+ header?: never;
2083
+ path?: never;
2084
+ cookie?: never;
2085
+ };
2086
+ requestBody?: never;
2087
+ responses: {
2088
+ 201: {
2089
+ headers: {
2090
+ [name: string]: unknown;
2091
+ };
2092
+ content?: never;
2093
+ };
2094
+ };
2095
+ };
2096
+ TestController_getById: {
2097
+ parameters: {
2098
+ query?: never;
2099
+ header?: never;
2100
+ path: {
2101
+ id: string;
2102
+ };
2103
+ cookie?: never;
2104
+ };
2105
+ requestBody?: never;
2106
+ responses: {
2107
+ 200: {
2108
+ headers: {
2109
+ [name: string]: unknown;
2110
+ };
2111
+ content?: never;
2112
+ };
2113
+ };
2114
+ };
2115
+ TestController_update: {
2116
+ parameters: {
2117
+ query?: never;
2118
+ header?: never;
2119
+ path: {
2120
+ id: string;
2121
+ };
2122
+ cookie?: never;
2123
+ };
2124
+ requestBody?: never;
2125
+ responses: {
2126
+ 200: {
2127
+ headers: {
2128
+ [name: string]: unknown;
2129
+ };
2130
+ content?: never;
2131
+ };
2132
+ };
2133
+ };
2134
+ TestController_delete: {
2135
+ parameters: {
2136
+ query?: never;
2137
+ header?: never;
2138
+ path: {
2139
+ id: string;
2140
+ };
2141
+ cookie?: never;
2142
+ };
2143
+ requestBody?: never;
2144
+ responses: {
2145
+ 200: {
2146
+ headers: {
2147
+ [name: string]: unknown;
2148
+ };
2149
+ content?: never;
2150
+ };
2151
+ };
2152
+ };
2153
+ TestController_getLegacyData: {
2154
+ parameters: {
2155
+ query?: never;
2156
+ header?: never;
2157
+ path?: never;
2158
+ cookie?: never;
2159
+ };
2160
+ requestBody?: never;
2161
+ responses: {
2162
+ 200: {
2163
+ headers: {
2164
+ [name: string]: unknown;
2165
+ };
2166
+ content?: never;
2167
+ };
2168
+ };
2169
+ };
2170
+ ConfigTestController_getConfigInfo: {
2171
+ parameters: {
2172
+ query?: never;
2173
+ header?: never;
2174
+ path?: never;
2175
+ cookie?: never;
2176
+ };
2177
+ requestBody?: never;
2178
+ responses: {
2179
+ 200: {
2180
+ headers: {
2181
+ [name: string]: unknown;
2182
+ };
2183
+ content?: never;
2184
+ };
2185
+ };
2186
+ };
2187
+ ConfigTestController_getRawConfigValues: {
2188
+ parameters: {
2189
+ query?: never;
2190
+ header?: never;
2191
+ path?: never;
2192
+ cookie?: never;
2193
+ };
2194
+ requestBody?: never;
2195
+ responses: {
2196
+ 200: {
2197
+ headers: {
2198
+ [name: string]: unknown;
2199
+ };
2200
+ content?: never;
2201
+ };
2202
+ };
2203
+ };
2204
+ }
2205
+
2206
+ /**
2207
+ * EDGE Connect API Types
2208
+ *
2209
+ * Friendly type aliases for the generated OpenAPI types.
2210
+ * These provide cleaner names and better documentation for SDK consumers.
2211
+ *
2212
+ * @module @edge-markets/connect/types
2213
+ */
2214
+
2215
+ /**
2216
+ * User profile information from EDGE Connect.
2217
+ *
2218
+ * @example
2219
+ * ```typescript
2220
+ * const user: User = await edge.getUser(accessToken)
2221
+ * console.log(`Welcome, ${user.firstName}!`)
2222
+ * ```
2223
+ */
2224
+ type User = components['schemas']['ConnectUserResponseDto'];
2225
+ /**
2226
+ * User's EdgeBoost account balance.
2227
+ *
2228
+ * @example
2229
+ * ```typescript
2230
+ * const balance: Balance = await edge.getBalance(accessToken)
2231
+ * console.log(`Available: $${balance.availableBalance.toFixed(2)} ${balance.currency}`)
2232
+ * ```
2233
+ */
2234
+ type Balance = components['schemas']['ConnectBalanceResponseDto'];
2235
+ /**
2236
+ * Request payload for initiating a transfer.
2237
+ *
2238
+ * @example
2239
+ * ```typescript
2240
+ * const request: InitiateTransferRequest = {
2241
+ * type: 'debit',
2242
+ * amount: '100.00',
2243
+ * idempotencyKey: `txn_${Date.now()}_${Math.random().toString(36).slice(2)}`,
2244
+ * }
2245
+ * ```
2246
+ */
2247
+ type InitiateTransferRequest = components['schemas']['InitiateTransferRequestDto'];
2248
+ /**
2249
+ * Transfer response with status and OTP method.
2250
+ *
2251
+ * @example
2252
+ * ```typescript
2253
+ * const transfer: Transfer = await edge.initiateTransfer(accessToken, request)
2254
+ * if (transfer.status === 'pending_verification') {
2255
+ * console.log(`Enter OTP sent via ${transfer.otpMethod}`)
2256
+ * }
2257
+ * ```
2258
+ */
2259
+ type Transfer = components['schemas']['TransferResponseDto'];
2260
+ /**
2261
+ * Transfer item in a list (includes additional fields like amount and timestamps).
2262
+ */
2263
+ type TransferListItem = components['schemas']['TransferListItemDto'];
2264
+ /**
2265
+ * Paginated list of transfers.
2266
+ */
2267
+ type TransferList = components['schemas']['ListTransfersResponseDto'];
2268
+ /**
2269
+ * Request payload for verifying a transfer with OTP.
2270
+ */
2271
+ type VerifyTransferRequest = components['schemas']['VerifyTransferRequestDto'];
2272
+ /**
2273
+ * Response from revoking user consent.
2274
+ */
2275
+ type RevokeConsentResponse = components['schemas']['RevokeConsentResponseDto'];
2276
+ /**
2277
+ * Standard API error response.
2278
+ */
2279
+ type ApiError = components['schemas']['ErrorResponseDto'];
2280
+ /**
2281
+ * Error response when user consent is required.
2282
+ */
2283
+ type ConsentRequiredError = components['schemas']['ConsentRequiredErrorDto'];
2284
+ /**
2285
+ * Transfer type indicating direction of funds.
2286
+ *
2287
+ * - `debit`: Pull funds FROM user's EdgeBoost TO partner (user deposits to partner)
2288
+ * - `credit`: Push funds FROM partner TO user's EdgeBoost (user withdraws from partner)
2289
+ */
2290
+ type TransferType = 'debit' | 'credit';
2291
+ /**
2292
+ * Current status of a transfer.
2293
+ *
2294
+ * - `pending_verification`: Awaiting OTP verification
2295
+ * - `completed`: Transfer completed successfully
2296
+ * - `failed`: Transfer failed (insufficient funds, invalid OTP, etc.)
2297
+ * - `expired`: OTP verification window expired
2298
+ */
2299
+ type TransferStatus = 'pending_verification' | 'completed' | 'failed' | 'expired';
2300
+ /**
2301
+ * OTP delivery method for transfer verification.
2302
+ *
2303
+ * - `sms`: OTP sent via SMS to user's phone
2304
+ * - `totp`: User generates OTP from authenticator app
2305
+ */
2306
+ type OtpMethod = 'sms' | 'totp';
2307
+ /**
2308
+ * Parameters for listing transfers.
2309
+ */
2310
+ type ListTransfersParams = NonNullable<operations['listTransfers']['parameters']['query']>;
2311
+ /**
2312
+ * All possible transfer types.
2313
+ * Use for validation or building UI select options.
2314
+ */
2315
+ declare const TRANSFER_TYPES: readonly ["debit", "credit"];
2316
+ /**
2317
+ * All possible transfer statuses.
2318
+ * Use for filtering or status display.
2319
+ */
2320
+ declare const TRANSFER_STATUSES: readonly ["pending_verification", "completed", "failed", "expired"];
2321
+ /**
2322
+ * All possible OTP methods.
2323
+ */
2324
+ declare const OTP_METHODS: readonly ["sms", "totp"];
2325
+
2326
+ /**
2327
+ * EDGE Connect SDK Types
2328
+ *
2329
+ * This module exports all types needed for EDGE Connect integration.
2330
+ *
2331
+ * @module @edge-markets/connect/types
2332
+ */
2333
+
2334
+ /**
2335
+ * OAuth tokens returned from token exchange.
2336
+ *
2337
+ * Store these securely - the access token is used for API calls,
2338
+ * the refresh token is used to get new access tokens.
2339
+ *
2340
+ * @example
2341
+ * ```typescript
2342
+ * // After EdgeLink success, exchange the code for tokens
2343
+ * const tokens: EdgeTokens = await edge.exchangeCode(code, codeVerifier)
2344
+ *
2345
+ * // Check if token needs refresh
2346
+ * if (Date.now() > tokens.expiresAt - 60000) {
2347
+ * const newTokens = await edge.refreshTokens(tokens.refreshToken)
2348
+ * }
2349
+ * ```
2350
+ */
2351
+ interface EdgeTokens {
2352
+ /** JWT access token for API calls. Include in Authorization header. */
2353
+ accessToken: string;
2354
+ /** Refresh token for getting new access tokens when the current one expires. */
2355
+ refreshToken: string;
2356
+ /** ID token containing user claims (optional, depends on scopes). */
2357
+ idToken?: string;
2358
+ /** Access token lifetime in seconds (typically 3600 = 1 hour). */
2359
+ expiresIn: number;
2360
+ /** Unix timestamp (milliseconds) when the access token expires. */
2361
+ expiresAt: number;
2362
+ /** Space-separated list of granted scopes. */
2363
+ scope: string;
2364
+ }
2365
+ /**
2366
+ * Result from successful EdgeLink authentication flow.
2367
+ *
2368
+ * Send these values to your backend for token exchange.
2369
+ * Never expose your client secret in frontend code.
2370
+ *
2371
+ * @example
2372
+ * ```typescript
2373
+ * const link = new EdgeLink({
2374
+ * clientId: 'your-client-id',
2375
+ * environment: 'staging',
2376
+ * onSuccess: (result: EdgeLinkSuccess) => {
2377
+ * // Send to your backend
2378
+ * fetch('/api/edge/exchange', {
2379
+ * method: 'POST',
2380
+ * headers: { 'Content-Type': 'application/json' },
2381
+ * body: JSON.stringify({
2382
+ * code: result.code,
2383
+ * codeVerifier: result.codeVerifier,
2384
+ * }),
2385
+ * })
2386
+ * },
2387
+ * })
2388
+ * ```
2389
+ */
2390
+ interface EdgeLinkSuccess {
2391
+ /** Authorization code from OAuth flow. Valid for ~10 minutes. */
2392
+ code: string;
2393
+ /** PKCE code verifier - must be sent with code for token exchange. */
2394
+ codeVerifier: string;
2395
+ /** State parameter for CSRF validation. Should match what you sent. */
2396
+ state: string;
2397
+ }
2398
+ /**
2399
+ * Metadata when EdgeLink popup exits (success or otherwise).
2400
+ *
2401
+ * @example
2402
+ * ```typescript
2403
+ * const link = new EdgeLink({
2404
+ * // ...
2405
+ * onExit: (metadata: EdgeLinkExit) => {
2406
+ * switch (metadata.reason) {
2407
+ * case 'user_closed':
2408
+ * console.log('User closed the popup')
2409
+ * break
2410
+ * case 'popup_blocked':
2411
+ * alert('Please allow popups and try again')
2412
+ * break
2413
+ * case 'error':
2414
+ * console.error(`Error: ${metadata.error?.message}`)
2415
+ * break
2416
+ * }
2417
+ * },
2418
+ * })
2419
+ * ```
2420
+ */
2421
+ interface EdgeLinkExit {
2422
+ /** Why the Link exited. */
2423
+ reason: 'user_closed' | 'error' | 'popup_blocked';
2424
+ /** Error details if reason is 'error'. */
2425
+ error?: {
2426
+ /** Machine-readable error code. */
2427
+ code: string;
2428
+ /** Human-readable error message. */
2429
+ message: string;
2430
+ };
2431
+ }
2432
+
2433
+ /**
2434
+ * EDGE Connect Environment Configuration
2435
+ *
2436
+ * Defines the URLs and settings for each deployment environment.
2437
+ * Partners select an environment when initializing the SDK.
2438
+ *
2439
+ * @module @edge-markets/connect/config
2440
+ */
2441
+ /**
2442
+ * Available EDGE Connect environments.
2443
+ *
2444
+ * - `production`: Live environment with real money
2445
+ * - `staging`: Test environment with test accounts (use during development)
2446
+ * - `sandbox`: Isolated environment with mock data (coming soon)
2447
+ *
2448
+ * @example
2449
+ * ```typescript
2450
+ * const edge = new EdgeConnectServer({
2451
+ * clientId: process.env.EDGE_CLIENT_ID,
2452
+ * clientSecret: process.env.EDGE_CLIENT_SECRET,
2453
+ * environment: 'staging', // <-- autocomplete shows all options
2454
+ * })
2455
+ * ```
2456
+ */
2457
+ type EdgeEnvironment = 'production' | 'staging' | 'sandbox';
2458
+ /**
2459
+ * Configuration for a specific environment.
2460
+ */
2461
+ interface EdgeEnvironmentConfig {
2462
+ /** Legacy: Cognito domain for OAuth token endpoints. */
2463
+ authDomain: string;
2464
+ /** Base URL for the Connect API endpoints (without trailing slash). */
2465
+ apiBaseUrl: string;
2466
+ /** Base URL for OAuth token operations (without trailing slash). */
2467
+ oauthBaseUrl: string;
2468
+ /** URL for the EdgeBoost user client (for Link popup). */
2469
+ userClientUrl: string;
2470
+ /** Human-readable name for debugging/logging. */
2471
+ displayName: string;
2472
+ /** Whether this environment uses real money. */
2473
+ isProduction: boolean;
2474
+ }
2475
+ /**
2476
+ * Environment configurations.
2477
+ *
2478
+ * These URLs are updated when infrastructure changes.
2479
+ * Partners shouldn't need to modify these directly.
2480
+ */
2481
+ declare const EDGE_ENVIRONMENTS: Readonly<Record<EdgeEnvironment, EdgeEnvironmentConfig>>;
2482
+ /**
2483
+ * Gets the configuration for a specific environment.
2484
+ *
2485
+ * @param environment - The environment to get config for
2486
+ * @returns The environment configuration
2487
+ *
2488
+ * @example
2489
+ * ```typescript
2490
+ * const config = getEnvironmentConfig('staging')
2491
+ * console.log(`Using ${config.displayName} at ${config.apiBaseUrl}`)
2492
+ * ```
2493
+ */
2494
+ declare function getEnvironmentConfig(environment: EdgeEnvironment): EdgeEnvironmentConfig;
2495
+ /**
2496
+ * Checks if an environment is the production environment.
2497
+ *
2498
+ * @param environment - The environment to check
2499
+ * @returns true if this is the production environment
2500
+ *
2501
+ * @example
2502
+ * ```typescript
2503
+ * if (isProductionEnvironment('staging')) {
2504
+ * // false - staging is not production
2505
+ * }
2506
+ * ```
2507
+ */
2508
+ declare function isProductionEnvironment(environment: EdgeEnvironment): boolean;
2509
+ /**
2510
+ * Gets all available environment names.
2511
+ * Useful for building environment selectors in admin UIs.
2512
+ */
2513
+ declare function getAvailableEnvironments(): readonly EdgeEnvironment[];
2514
+
2515
+ /**
2516
+ * EDGE Connect OAuth Scopes
2517
+ *
2518
+ * OAuth scopes define what permissions your application requests from users.
2519
+ * Each scope grants access to specific API endpoints.
2520
+ *
2521
+ * @module @edge-markets/connect/config
2522
+ */
2523
+ /**
2524
+ * Available OAuth scopes for EDGE Connect.
2525
+ *
2526
+ * Request the minimum scopes your application needs.
2527
+ * Users see these permissions during the consent flow.
2528
+ *
2529
+ * @example
2530
+ * ```typescript
2531
+ * // Request only what you need
2532
+ * link.open({
2533
+ * scopes: [EDGE_SCOPES.USER_READ, EDGE_SCOPES.BALANCE_READ],
2534
+ * })
2535
+ *
2536
+ * // Or request all scopes
2537
+ * link.open({
2538
+ * scopes: ALL_EDGE_SCOPES,
2539
+ * })
2540
+ * ```
2541
+ */
2542
+ declare const EDGE_SCOPES: {
2543
+ /**
2544
+ * Read user profile information (name, email).
2545
+ * Required for: `GET /v1/user`
2546
+ */
2547
+ readonly USER_READ: "user.read";
2548
+ /**
2549
+ * Read account balance.
2550
+ * Required for: `GET /v1/balance`
2551
+ */
2552
+ readonly BALANCE_READ: "balance.read";
2553
+ /**
2554
+ * Initiate and verify fund transfers.
2555
+ * Required for: `POST /v1/transfer`, `POST /v1/transfer/:id/verify`, `GET /v1/transfers`
2556
+ */
2557
+ readonly TRANSFER_WRITE: "transfer.write";
2558
+ };
2559
+ /**
2560
+ * Type representing a valid EDGE Connect scope.
2561
+ */
2562
+ type EdgeScope = (typeof EDGE_SCOPES)[keyof typeof EDGE_SCOPES];
2563
+ /**
2564
+ * All available scopes as an array.
2565
+ * Use when you need full access to all API features.
2566
+ *
2567
+ * @example
2568
+ * ```typescript
2569
+ * const link = new EdgeLink({
2570
+ * clientId: 'your-client-id',
2571
+ * environment: 'staging',
2572
+ * scopes: ALL_EDGE_SCOPES, // Request all permissions
2573
+ * onSuccess: handleSuccess,
2574
+ * })
2575
+ * ```
2576
+ */
2577
+ declare const ALL_EDGE_SCOPES: readonly EdgeScope[];
2578
+ /**
2579
+ * Human-readable descriptions for each scope.
2580
+ * Useful for building custom consent UIs or explaining permissions.
2581
+ */
2582
+ declare const SCOPE_DESCRIPTIONS: Readonly<Record<EdgeScope, string>>;
2583
+ /**
2584
+ * Icons for each scope (for UI display).
2585
+ * Using common icon library names (e.g., Lucide, Heroicons).
2586
+ */
2587
+ declare const SCOPE_ICONS: Readonly<Record<EdgeScope, string>>;
2588
+ /**
2589
+ * Builds the full scope string for a given environment.
2590
+ *
2591
+ * Different environments may use different scope prefixes in Cognito.
2592
+ * This function handles the prefix automatically.
2593
+ *
2594
+ * @param scope - The scope to format
2595
+ * @param environment - The target environment
2596
+ * @returns The full scope string for Cognito
2597
+ *
2598
+ * @example
2599
+ * ```typescript
2600
+ * formatScopeForEnvironment('user.read', 'staging')
2601
+ * // Returns: 'edge-connect-staging/user.read'
2602
+ *
2603
+ * formatScopeForEnvironment('user.read', 'production')
2604
+ * // Returns: 'edge-connect/user.read'
2605
+ * ```
2606
+ */
2607
+ declare function formatScopeForEnvironment(scope: EdgeScope, environment: 'production' | 'staging' | 'sandbox'): string;
2608
+ /**
2609
+ * Formats multiple scopes for an environment.
2610
+ *
2611
+ * @param scopes - Array of scopes to format
2612
+ * @param environment - The target environment
2613
+ * @returns Array of full scope strings
2614
+ */
2615
+ declare function formatScopesForEnvironment(scopes: readonly EdgeScope[] | EdgeScope[], environment: 'production' | 'staging' | 'sandbox'): string[];
2616
+ /**
2617
+ * Parses a full scope string to extract the base scope.
2618
+ *
2619
+ * @param fullScope - The full scope string (e.g., 'edge-connect-staging/user.read')
2620
+ * @returns The base scope (e.g., 'user.read') or null if invalid
2621
+ */
2622
+ declare function parseScope(fullScope: string): EdgeScope | null;
2623
+ /**
2624
+ * Checks if a scope string is valid.
2625
+ */
2626
+ declare function isValidScope(scope: string): scope is EdgeScope;
2627
+
2628
+ /**
2629
+ * EDGE Connect SDK Error Classes
2630
+ *
2631
+ * Typed error classes for handling specific error scenarios.
2632
+ * Each error class provides structured information for programmatic handling.
2633
+ *
2634
+ * @module @edge-markets/connect/errors
2635
+ */
2636
+ /**
2637
+ * Base error class for all EDGE Connect errors.
2638
+ *
2639
+ * All SDK errors extend this class, making it easy to catch any SDK error:
2640
+ *
2641
+ * @example
2642
+ * ```typescript
2643
+ * try {
2644
+ * const balance = await edge.getBalance(accessToken)
2645
+ * } catch (error) {
2646
+ * if (error instanceof EdgeError) {
2647
+ * console.error(`EDGE Error [${error.code}]: ${error.message}`)
2648
+ * // Handle SDK errors
2649
+ * } else {
2650
+ * // Handle unexpected errors
2651
+ * throw error
2652
+ * }
2653
+ * }
2654
+ * ```
2655
+ */
2656
+ declare class EdgeError extends Error {
2657
+ /**
2658
+ * Machine-readable error code.
2659
+ * Use this for programmatic error handling.
2660
+ */
2661
+ readonly code: string;
2662
+ /**
2663
+ * HTTP status code (if applicable).
2664
+ * Useful for logging and debugging.
2665
+ */
2666
+ readonly statusCode?: number;
2667
+ /**
2668
+ * Additional error details.
2669
+ * May contain API response data or other context.
2670
+ */
2671
+ readonly details?: Record<string, unknown>;
2672
+ constructor(code: string, message: string, statusCode?: number, details?: Record<string, unknown>);
2673
+ /**
2674
+ * Creates a user-friendly error message for display.
2675
+ */
2676
+ toUserMessage(): string;
2677
+ /**
2678
+ * Converts error to a plain object for logging/serialization.
2679
+ */
2680
+ toJSON(): Record<string, unknown>;
2681
+ }
2682
+ /**
2683
+ * Thrown when authentication fails or access token is invalid/expired.
2684
+ *
2685
+ * **What to do:**
2686
+ * - If you have a refresh token, try refreshing the access token
2687
+ * - If refresh fails, redirect user to re-authenticate via EdgeLink
2688
+ *
2689
+ * @example
2690
+ * ```typescript
2691
+ * try {
2692
+ * const balance = await edge.getBalance(accessToken)
2693
+ * } catch (error) {
2694
+ * if (error instanceof EdgeAuthenticationError) {
2695
+ * // Try refreshing the token
2696
+ * const newTokens = await edge.refreshTokens(refreshToken)
2697
+ * // Retry with new access token
2698
+ * }
2699
+ * }
2700
+ * ```
2701
+ */
2702
+ declare class EdgeAuthenticationError extends EdgeError {
2703
+ constructor(message?: string, details?: Record<string, unknown>);
2704
+ }
2705
+ /**
2706
+ * Thrown when token exchange fails.
2707
+ *
2708
+ * **Common causes:**
2709
+ * - Authorization code expired (codes are valid ~10 minutes)
2710
+ * - Code already used (codes are single-use)
2711
+ * - Invalid code verifier
2712
+ * - Invalid client credentials
2713
+ *
2714
+ * @example
2715
+ * ```typescript
2716
+ * try {
2717
+ * const tokens = await edge.exchangeCode(code, codeVerifier)
2718
+ * } catch (error) {
2719
+ * if (error instanceof EdgeTokenExchangeError) {
2720
+ * if (error.details?.cognitoError === 'invalid_grant') {
2721
+ * // Code expired or already used - restart flow
2722
+ * redirectToEdgeLink()
2723
+ * }
2724
+ * }
2725
+ * }
2726
+ * ```
2727
+ */
2728
+ declare class EdgeTokenExchangeError extends EdgeError {
2729
+ constructor(message?: string, details?: Record<string, unknown>);
2730
+ }
2731
+ /**
2732
+ * Thrown when user has not granted consent to the application.
2733
+ *
2734
+ * **What to do:**
2735
+ * - Redirect user to EdgeLink to grant consent
2736
+ * - Check if the user revoked consent in their EdgeBoost settings
2737
+ *
2738
+ * @example
2739
+ * ```typescript
2740
+ * try {
2741
+ * const balance = await edge.getBalance(accessToken)
2742
+ * } catch (error) {
2743
+ * if (error instanceof EdgeConsentRequiredError) {
2744
+ * // User needs to grant consent
2745
+ * showMessage('Please connect your EdgeBoost account')
2746
+ * openEdgeLink()
2747
+ * }
2748
+ * }
2749
+ * ```
2750
+ */
2751
+ declare class EdgeConsentRequiredError extends EdgeError {
2752
+ /** The client ID that needs consent. */
2753
+ readonly clientId: string;
2754
+ /** URL to redirect user for consent (if provided by API). */
2755
+ readonly consentUrl?: string;
2756
+ constructor(clientId: string, consentUrl?: string, message?: string);
2757
+ }
2758
+ /**
2759
+ * Thrown when consent exists but doesn't include all required scopes.
2760
+ *
2761
+ * **What to do:**
2762
+ * - Redirect user to EdgeLink to grant additional permissions
2763
+ * - Or request fewer scopes if the missing ones aren't essential
2764
+ *
2765
+ * @example
2766
+ * ```typescript
2767
+ * try {
2768
+ * await edge.initiateTransfer(accessToken, transferRequest)
2769
+ * } catch (error) {
2770
+ * if (error instanceof EdgeInsufficientScopeError) {
2771
+ * console.log(`Missing scopes: ${error.missingScopes.join(', ')}`)
2772
+ * // Re-authenticate with required scopes
2773
+ * }
2774
+ * }
2775
+ * ```
2776
+ */
2777
+ declare class EdgeInsufficientScopeError extends EdgeError {
2778
+ /** Scopes that are missing from the current consent. */
2779
+ readonly missingScopes: string[];
2780
+ constructor(missingScopes: string[], message?: string);
2781
+ }
2782
+ /**
2783
+ * Thrown when an API request fails with a known error.
2784
+ *
2785
+ * @example
2786
+ * ```typescript
2787
+ * try {
2788
+ * await edge.initiateTransfer(accessToken, { type: 'debit', amount: '10000.00', idempotencyKey: 'x' })
2789
+ * } catch (error) {
2790
+ * if (error instanceof EdgeApiError) {
2791
+ * if (error.code === 'insufficient_funds') {
2792
+ * showMessage('Insufficient balance for this transfer')
2793
+ * }
2794
+ * }
2795
+ * }
2796
+ * ```
2797
+ */
2798
+ declare class EdgeApiError extends EdgeError {
2799
+ constructor(code: string, message: string, statusCode: number, details?: Record<string, unknown>);
2800
+ }
2801
+ /**
2802
+ * Thrown when a requested resource is not found.
2803
+ *
2804
+ * @example
2805
+ * ```typescript
2806
+ * try {
2807
+ * const transfer = await edge.getTransferStatus(accessToken, 'invalid-id')
2808
+ * } catch (error) {
2809
+ * if (error instanceof EdgeNotFoundError) {
2810
+ * showMessage('Transfer not found')
2811
+ * }
2812
+ * }
2813
+ * ```
2814
+ */
2815
+ declare class EdgeNotFoundError extends EdgeError {
2816
+ /** The type of resource that wasn't found. */
2817
+ readonly resourceType: string;
2818
+ /** The ID that was looked up. */
2819
+ readonly resourceId: string;
2820
+ constructor(resourceType: string, resourceId: string);
2821
+ }
2822
+ /**
2823
+ * Thrown when request validation fails.
2824
+ *
2825
+ * @example
2826
+ * ```typescript
2827
+ * try {
2828
+ * await edge.initiateTransfer(accessToken, { type: 'debit', amount: '-100', idempotencyKey: 'x' })
2829
+ * } catch (error) {
2830
+ * if (error instanceof EdgeValidationError) {
2831
+ * console.log('Validation errors:', error.validationErrors)
2832
+ * }
2833
+ * }
2834
+ * ```
2835
+ */
2836
+ declare class EdgeValidationError extends EdgeError {
2837
+ /** Field-level validation errors. */
2838
+ readonly validationErrors: Record<string, string[]>;
2839
+ constructor(message: string, validationErrors: Record<string, string[]>);
2840
+ }
2841
+ /**
2842
+ * Thrown when a popup is blocked by the browser.
2843
+ *
2844
+ * **What to do:**
2845
+ * - Show a user-friendly message asking them to allow popups
2846
+ * - Ensure EdgeLink.open() is called from a user gesture (click handler)
2847
+ *
2848
+ * @example
2849
+ * ```typescript
2850
+ * try {
2851
+ * link.open()
2852
+ * } catch (error) {
2853
+ * if (error instanceof EdgePopupBlockedError) {
2854
+ * showMessage('Please allow popups for this site and try again')
2855
+ * }
2856
+ * }
2857
+ * ```
2858
+ */
2859
+ declare class EdgePopupBlockedError extends EdgeError {
2860
+ constructor();
2861
+ toUserMessage(): string;
2862
+ }
2863
+ /**
2864
+ * Thrown when the popup closes unexpectedly (user closed it).
2865
+ */
2866
+ declare class EdgePopupClosedError extends EdgeError {
2867
+ constructor();
2868
+ }
2869
+ /**
2870
+ * Thrown when state parameter doesn't match (CSRF protection).
2871
+ */
2872
+ declare class EdgeStateMismatchError extends EdgeError {
2873
+ constructor();
2874
+ }
2875
+ /**
2876
+ * Thrown when a network request fails.
2877
+ *
2878
+ * @example
2879
+ * ```typescript
2880
+ * try {
2881
+ * const balance = await edge.getBalance(accessToken)
2882
+ * } catch (error) {
2883
+ * if (error instanceof EdgeNetworkError) {
2884
+ * showMessage('Network error. Please check your connection and try again.')
2885
+ * }
2886
+ * }
2887
+ * ```
2888
+ */
2889
+ declare class EdgeNetworkError extends EdgeError {
2890
+ /** The original error that caused the network failure. */
2891
+ readonly cause?: Error;
2892
+ constructor(message?: string, cause?: Error);
2893
+ }
2894
+ /**
2895
+ * Type guard to check if an error is any EDGE Connect error.
2896
+ *
2897
+ * @example
2898
+ * ```typescript
2899
+ * catch (error) {
2900
+ * if (isEdgeError(error)) {
2901
+ * console.log(`EDGE Error: ${error.code}`)
2902
+ * }
2903
+ * }
2904
+ * ```
2905
+ */
2906
+ declare function isEdgeError(error: unknown): error is EdgeError;
2907
+ /**
2908
+ * Type guard for authentication errors.
2909
+ */
2910
+ declare function isAuthenticationError(error: unknown): error is EdgeAuthenticationError;
2911
+ /**
2912
+ * Type guard for consent required errors.
2913
+ */
2914
+ declare function isConsentRequiredError(error: unknown): error is EdgeConsentRequiredError;
2915
+ /**
2916
+ * Type guard for API errors.
2917
+ */
2918
+ declare function isApiError(error: unknown): error is EdgeApiError;
2919
+ /**
2920
+ * Type guard for network errors.
2921
+ */
2922
+ declare function isNetworkError(error: unknown): error is EdgeNetworkError;
2923
+
2924
+ /**
2925
+ * @edge-markets/connect
2926
+ *
2927
+ * Core types, configuration, and utilities for EDGE Connect SDK.
2928
+ *
2929
+ * This package provides the foundation for building EDGE Connect integrations:
2930
+ * - Type definitions generated from the OpenAPI spec
2931
+ * - Environment configuration (production, staging, sandbox)
2932
+ * - OAuth scope constants
2933
+ * - Typed error classes
2934
+ *
2935
+ * For browser integration, use `@edge-markets/connect-link`.
2936
+ * For server-side integration, use `@edge-markets/connect-node`.
2937
+ *
2938
+ * @packageDocumentation
2939
+ * @module @edge-markets/connect
2940
+ *
2941
+ * @example
2942
+ * ```typescript
2943
+ * import {
2944
+ * // Types
2945
+ * type User,
2946
+ * type Balance,
2947
+ * type Transfer,
2948
+ * type EdgeTokens,
2949
+ *
2950
+ * // Configuration
2951
+ * EDGE_SCOPES,
2952
+ * getEnvironmentConfig,
2953
+ *
2954
+ * // Errors
2955
+ * EdgeError,
2956
+ * isConsentRequiredError,
2957
+ * } from '@edge-markets/connect'
2958
+ * ```
2959
+ */
2960
+
2961
+ /**
2962
+ * SDK version.
2963
+ * Useful for debugging and logging.
2964
+ */
2965
+ declare const SDK_VERSION = "1.0.0";
2966
+ /**
2967
+ * SDK name.
2968
+ */
2969
+ declare const SDK_NAME = "@edge-markets/connect";
2970
+
2971
+ 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 };