@fragmentpay/server 0.3.1 → 0.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.
@@ -0,0 +1,1201 @@
1
+ import { ClientOptions, Client } from 'openapi-fetch';
2
+
3
+ /**
4
+ * This file was auto-generated by openapi-typescript.
5
+ * Do not make direct changes to the file.
6
+ */
7
+
8
+ interface paths {
9
+ "/api/public/health": {
10
+ parameters: {
11
+ query?: never;
12
+ header?: never;
13
+ path?: never;
14
+ cookie?: never;
15
+ };
16
+ /** Health check (unauthenticated) */
17
+ get: {
18
+ parameters: {
19
+ query?: never;
20
+ header?: never;
21
+ path?: never;
22
+ cookie?: never;
23
+ };
24
+ requestBody?: never;
25
+ responses: {
26
+ /** @description OK */
27
+ 200: {
28
+ headers: {
29
+ [name: string]: unknown;
30
+ };
31
+ content: {
32
+ "application/json": {
33
+ /** @example ok */
34
+ status?: string;
35
+ /** Format: date-time */
36
+ ts?: string;
37
+ };
38
+ };
39
+ };
40
+ };
41
+ };
42
+ put?: never;
43
+ post?: never;
44
+ delete?: never;
45
+ options?: never;
46
+ head?: never;
47
+ patch?: never;
48
+ trace?: never;
49
+ };
50
+ "/api/public/v1/payment-intents": {
51
+ parameters: {
52
+ query?: never;
53
+ header?: never;
54
+ path?: never;
55
+ cookie?: never;
56
+ };
57
+ /** List payment intents */
58
+ get: operations["listPaymentIntents"];
59
+ put?: never;
60
+ /** Create a payment intent */
61
+ post: operations["createPaymentIntent"];
62
+ delete?: never;
63
+ options?: never;
64
+ head?: never;
65
+ patch?: never;
66
+ trace?: never;
67
+ };
68
+ "/api/public/v1/payment-intents/{id}": {
69
+ parameters: {
70
+ query?: never;
71
+ header?: never;
72
+ path: {
73
+ id: string;
74
+ };
75
+ cookie?: never;
76
+ };
77
+ /** Retrieve a payment intent */
78
+ get: operations["retrievePaymentIntent"];
79
+ put?: never;
80
+ post?: never;
81
+ delete?: never;
82
+ options?: never;
83
+ head?: never;
84
+ patch?: never;
85
+ trace?: never;
86
+ };
87
+ "/api/public/v1/payment-intents/{id}/cancel": {
88
+ parameters: {
89
+ query?: never;
90
+ header?: never;
91
+ path: {
92
+ id: string;
93
+ };
94
+ cookie?: never;
95
+ };
96
+ get?: never;
97
+ put?: never;
98
+ /** Cancel a payment intent */
99
+ post: operations["cancelPaymentIntent"];
100
+ delete?: never;
101
+ options?: never;
102
+ head?: never;
103
+ patch?: never;
104
+ trace?: never;
105
+ };
106
+ "/api/public/v1/payment-intents/{id}/transactions": {
107
+ parameters: {
108
+ query?: never;
109
+ header?: never;
110
+ path: {
111
+ id: string;
112
+ };
113
+ cookie?: never;
114
+ };
115
+ /** List transaction legs contributing to this intent */
116
+ get: operations["listPaymentIntentTransactions"];
117
+ put?: never;
118
+ post?: never;
119
+ delete?: never;
120
+ options?: never;
121
+ head?: never;
122
+ patch?: never;
123
+ trace?: never;
124
+ };
125
+ "/api/public/v1/payment-intents/{id}/routing": {
126
+ parameters: {
127
+ query?: never;
128
+ header?: never;
129
+ path: {
130
+ id: string;
131
+ };
132
+ cookie?: never;
133
+ };
134
+ /** List router candidates evaluated for this intent (chosen + rejected) */
135
+ get: operations["listPaymentIntentRoutingCandidates"];
136
+ put?: never;
137
+ post?: never;
138
+ delete?: never;
139
+ options?: never;
140
+ head?: never;
141
+ patch?: never;
142
+ trace?: never;
143
+ };
144
+ "/api/public/v1/checkout/{id}": {
145
+ parameters: {
146
+ query?: never;
147
+ header?: never;
148
+ path: {
149
+ id: string;
150
+ };
151
+ cookie?: never;
152
+ };
153
+ /** Public read-only checkout view (no auth). Used by hosted checkout + polling clients. */
154
+ get: operations["getCheckoutView"];
155
+ put?: never;
156
+ post?: never;
157
+ delete?: never;
158
+ options?: never;
159
+ head?: never;
160
+ patch?: never;
161
+ trace?: never;
162
+ };
163
+ "/api/public/v1/refunds": {
164
+ parameters: {
165
+ query?: never;
166
+ header?: never;
167
+ path?: never;
168
+ cookie?: never;
169
+ };
170
+ /** List refunds */
171
+ get: operations["listRefunds"];
172
+ put?: never;
173
+ /** Create a refund */
174
+ post: operations["createRefund"];
175
+ delete?: never;
176
+ options?: never;
177
+ head?: never;
178
+ patch?: never;
179
+ trace?: never;
180
+ };
181
+ "/api/public/v1/refunds/{id}": {
182
+ parameters: {
183
+ query?: never;
184
+ header?: never;
185
+ path: {
186
+ id: string;
187
+ };
188
+ cookie?: never;
189
+ };
190
+ /** Retrieve a refund */
191
+ get: operations["retrieveRefund"];
192
+ put?: never;
193
+ post?: never;
194
+ delete?: never;
195
+ options?: never;
196
+ head?: never;
197
+ patch?: never;
198
+ trace?: never;
199
+ };
200
+ "/api/public/refunds/{id}/status": {
201
+ parameters: {
202
+ query?: never;
203
+ header?: never;
204
+ path: {
205
+ id: string;
206
+ };
207
+ cookie?: never;
208
+ };
209
+ /**
210
+ * Payer-facing refund status (unauthenticated, safe view)
211
+ * @description Public, unauthenticated status endpoint safe to expose in customer emails
212
+ * and receipts. Destination address is redacted to the last 6 characters;
213
+ * no merchant PII is returned.
214
+ */
215
+ get: operations["refundStatus"];
216
+ put?: never;
217
+ post?: never;
218
+ delete?: never;
219
+ options?: never;
220
+ head?: never;
221
+ patch?: never;
222
+ trace?: never;
223
+ };
224
+ "/api/public/v1/payouts": {
225
+ parameters: {
226
+ query?: never;
227
+ header?: never;
228
+ path?: never;
229
+ cookie?: never;
230
+ };
231
+ /** List payouts */
232
+ get: operations["listPayouts"];
233
+ put?: never;
234
+ post?: never;
235
+ delete?: never;
236
+ options?: never;
237
+ head?: never;
238
+ patch?: never;
239
+ trace?: never;
240
+ };
241
+ "/api/public/v1/payouts/{id}": {
242
+ parameters: {
243
+ query?: never;
244
+ header?: never;
245
+ path: {
246
+ id: string;
247
+ };
248
+ cookie?: never;
249
+ };
250
+ /** Retrieve a payout */
251
+ get: operations["retrievePayout"];
252
+ put?: never;
253
+ post?: never;
254
+ delete?: never;
255
+ options?: never;
256
+ head?: never;
257
+ patch?: never;
258
+ trace?: never;
259
+ };
260
+ "/api/public/v1/payouts/{id}/replay": {
261
+ parameters: {
262
+ query?: never;
263
+ header?: never;
264
+ path: {
265
+ id: string;
266
+ };
267
+ cookie?: never;
268
+ };
269
+ get?: never;
270
+ put?: never;
271
+ /** Requeue a failed payout for another dispatch attempt */
272
+ post: operations["replayPayout"];
273
+ delete?: never;
274
+ options?: never;
275
+ head?: never;
276
+ patch?: never;
277
+ trace?: never;
278
+ };
279
+ "/api/public/v1/webhook-endpoints": {
280
+ parameters: {
281
+ query?: never;
282
+ header?: never;
283
+ path?: never;
284
+ cookie?: never;
285
+ };
286
+ /** List webhook endpoints */
287
+ get: operations["listWebhookEndpoints"];
288
+ put?: never;
289
+ /** Create a webhook endpoint */
290
+ post: operations["createWebhookEndpoint"];
291
+ delete?: never;
292
+ options?: never;
293
+ head?: never;
294
+ patch?: never;
295
+ trace?: never;
296
+ };
297
+ "/api/public/v1/webhook-endpoints/{id}": {
298
+ parameters: {
299
+ query?: never;
300
+ header?: never;
301
+ path: {
302
+ id: string;
303
+ };
304
+ cookie?: never;
305
+ };
306
+ /** Retrieve a webhook endpoint */
307
+ get: operations["retrieveWebhookEndpoint"];
308
+ put?: never;
309
+ post?: never;
310
+ /** Delete a webhook endpoint */
311
+ delete: operations["deleteWebhookEndpoint"];
312
+ options?: never;
313
+ head?: never;
314
+ /** Update a webhook endpoint */
315
+ patch: operations["updateWebhookEndpoint"];
316
+ trace?: never;
317
+ };
318
+ "/api/public/v1/webhook-endpoints/{id}/rotate-secret": {
319
+ parameters: {
320
+ query?: never;
321
+ header?: never;
322
+ path: {
323
+ id: string;
324
+ };
325
+ cookie?: never;
326
+ };
327
+ get?: never;
328
+ put?: never;
329
+ /** Rotate the signing secret. Previous secret remains valid for 24h. */
330
+ post: operations["rotateWebhookEndpointSecret"];
331
+ delete?: never;
332
+ options?: never;
333
+ head?: never;
334
+ patch?: never;
335
+ trace?: never;
336
+ };
337
+ "/api/public/v1/tokens": {
338
+ parameters: {
339
+ query?: never;
340
+ header?: never;
341
+ path?: never;
342
+ cookie?: never;
343
+ };
344
+ /** List supported tokens (unauthenticated) */
345
+ get: operations["listTokens"];
346
+ put?: never;
347
+ post?: never;
348
+ delete?: never;
349
+ options?: never;
350
+ head?: never;
351
+ patch?: never;
352
+ trace?: never;
353
+ };
354
+ }
355
+ interface components {
356
+ schemas: {
357
+ Error: {
358
+ error?: string;
359
+ code?: string;
360
+ details?: {
361
+ [key: string]: unknown;
362
+ };
363
+ };
364
+ PaymentIntent: {
365
+ /** Format: uuid */
366
+ id?: string;
367
+ amount?: string;
368
+ currency?: string;
369
+ /** @enum {string} */
370
+ mode?: "test" | "live";
371
+ /** @enum {string} */
372
+ status?: "created" | "requires_payment" | "quoted" | "awaiting_signature" | "executing" | "partially_filled" | "settled" | "failed" | "expired" | "cancelled" | "refunded";
373
+ /** Format: uri */
374
+ checkout_url?: string;
375
+ settlement_chain?: string;
376
+ settlement_token?: string;
377
+ settlement_address?: string;
378
+ customer_email?: string | null;
379
+ /** Format: date-time */
380
+ expires_at?: string;
381
+ /** Format: date-time */
382
+ created_at?: string;
383
+ metadata?: {
384
+ [key: string]: unknown;
385
+ };
386
+ };
387
+ RouteCandidate: {
388
+ id?: string;
389
+ /** @description lifi-default | lifi-cctp | jupiter-direct | ... */
390
+ provider?: string;
391
+ chosen?: boolean;
392
+ ai_pick?: boolean;
393
+ score?: number;
394
+ from_chain?: string;
395
+ to_chain?: string;
396
+ from_token?: string;
397
+ to_token?: string;
398
+ to_amount_usd?: number;
399
+ fee_usd?: number;
400
+ gas_usd?: number;
401
+ duration_sec?: number;
402
+ reason?: string | null;
403
+ error?: string | null;
404
+ /** Format: date-time */
405
+ created_at?: string;
406
+ };
407
+ Refund: {
408
+ /** Format: uuid */
409
+ id?: string;
410
+ /** Format: uuid */
411
+ payment_intent_id?: string;
412
+ amount_usd?: number;
413
+ chain?: string;
414
+ token?: string;
415
+ destination?: string;
416
+ reason?: string;
417
+ /** @enum {string} */
418
+ status?: "pending" | "paid" | "failed" | "cancelled";
419
+ tx_hash?: string | null;
420
+ /** Format: date-time */
421
+ created_at?: string;
422
+ paid_at?: string | null;
423
+ };
424
+ Payout: {
425
+ /** Format: uuid */
426
+ id?: string;
427
+ payment_intent_id?: string | null;
428
+ rail?: string;
429
+ destination?: string;
430
+ chain?: string;
431
+ token?: string;
432
+ amount?: string;
433
+ currency?: string;
434
+ /** @enum {string} */
435
+ status?: "queued" | "pending" | "processing" | "pending_provider" | "retry_scheduled" | "paid" | "failed" | "paused";
436
+ tx_hash?: string | null;
437
+ failure_reason?: string | null;
438
+ attempts?: number;
439
+ next_attempt_at?: string | null;
440
+ paid_at?: string | null;
441
+ /** Format: date-time */
442
+ created_at?: string;
443
+ };
444
+ WebhookEndpoint: {
445
+ /** Format: uuid */
446
+ id?: string;
447
+ /** Format: uri */
448
+ url?: string;
449
+ events?: string[];
450
+ enabled?: boolean;
451
+ /** Format: date-time */
452
+ created_at?: string;
453
+ /** @description Signing secret. Returned only in create + rotate-secret responses. Store immediately. */
454
+ secret?: string;
455
+ };
456
+ Token: {
457
+ chain?: string;
458
+ address?: string;
459
+ symbol?: string;
460
+ name?: string;
461
+ decimals?: number;
462
+ verified?: boolean;
463
+ };
464
+ CheckoutView: {
465
+ /** Format: uuid */
466
+ id?: string;
467
+ amount?: string;
468
+ currency?: string;
469
+ status?: string;
470
+ settlement_chain?: string;
471
+ settlement_token?: string;
472
+ /** Format: date-time */
473
+ expires_at?: string;
474
+ legs?: {
475
+ chain?: string;
476
+ token?: string;
477
+ amount_usd?: number;
478
+ status?: string;
479
+ }[];
480
+ };
481
+ };
482
+ responses: never;
483
+ parameters: {
484
+ /** @description Safe-retry key. Replays within 24h return the original response; same key + different body returns 409. */
485
+ IdempotencyKey: string;
486
+ };
487
+ requestBodies: never;
488
+ headers: never;
489
+ pathItems: never;
490
+ }
491
+ interface operations {
492
+ listPaymentIntents: {
493
+ parameters: {
494
+ query?: {
495
+ limit?: number;
496
+ status?: string;
497
+ };
498
+ header?: never;
499
+ path?: never;
500
+ cookie?: never;
501
+ };
502
+ requestBody?: never;
503
+ responses: {
504
+ /** @description OK */
505
+ 200: {
506
+ headers: {
507
+ [name: string]: unknown;
508
+ };
509
+ content: {
510
+ "application/json": {
511
+ data?: components["schemas"]["PaymentIntent"][];
512
+ };
513
+ };
514
+ };
515
+ };
516
+ };
517
+ createPaymentIntent: {
518
+ parameters: {
519
+ query?: never;
520
+ header?: {
521
+ /** @description Safe-retry key. Replays within 24h return the original response; same key + different body returns 409. */
522
+ "Idempotency-Key"?: components["parameters"]["IdempotencyKey"];
523
+ };
524
+ path?: never;
525
+ cookie?: never;
526
+ };
527
+ requestBody: {
528
+ content: {
529
+ "application/json": {
530
+ amount: number;
531
+ /** @default USD */
532
+ currency?: string;
533
+ settlement_chain?: string;
534
+ settlement_token?: string;
535
+ settlement_address?: string;
536
+ /** Format: email */
537
+ customer_email?: string;
538
+ expires_in_seconds?: number;
539
+ metadata?: {
540
+ [key: string]: unknown;
541
+ };
542
+ };
543
+ };
544
+ };
545
+ responses: {
546
+ /** @description Created */
547
+ 201: {
548
+ headers: {
549
+ [name: string]: unknown;
550
+ };
551
+ content: {
552
+ "application/json": components["schemas"]["PaymentIntent"];
553
+ };
554
+ };
555
+ /** @description Invalid input */
556
+ 400: {
557
+ headers: {
558
+ [name: string]: unknown;
559
+ };
560
+ content: {
561
+ "application/json": components["schemas"]["Error"];
562
+ };
563
+ };
564
+ /** @description Unauthorized */
565
+ 401: {
566
+ headers: {
567
+ [name: string]: unknown;
568
+ };
569
+ content?: never;
570
+ };
571
+ /** @description Idempotency key mismatch */
572
+ 409: {
573
+ headers: {
574
+ [name: string]: unknown;
575
+ };
576
+ content: {
577
+ "application/json": components["schemas"]["Error"];
578
+ };
579
+ };
580
+ /** @description Rate limited */
581
+ 429: {
582
+ headers: {
583
+ [name: string]: unknown;
584
+ };
585
+ content?: never;
586
+ };
587
+ };
588
+ };
589
+ retrievePaymentIntent: {
590
+ parameters: {
591
+ query?: never;
592
+ header?: never;
593
+ path: {
594
+ id: string;
595
+ };
596
+ cookie?: never;
597
+ };
598
+ requestBody?: never;
599
+ responses: {
600
+ /** @description OK */
601
+ 200: {
602
+ headers: {
603
+ [name: string]: unknown;
604
+ };
605
+ content: {
606
+ "application/json": components["schemas"]["PaymentIntent"];
607
+ };
608
+ };
609
+ /** @description Not found */
610
+ 404: {
611
+ headers: {
612
+ [name: string]: unknown;
613
+ };
614
+ content?: never;
615
+ };
616
+ };
617
+ };
618
+ cancelPaymentIntent: {
619
+ parameters: {
620
+ query?: never;
621
+ header?: never;
622
+ path: {
623
+ id: string;
624
+ };
625
+ cookie?: never;
626
+ };
627
+ requestBody?: never;
628
+ responses: {
629
+ /** @description Cancelled */
630
+ 200: {
631
+ headers: {
632
+ [name: string]: unknown;
633
+ };
634
+ content: {
635
+ "application/json": components["schemas"]["PaymentIntent"];
636
+ };
637
+ };
638
+ /** @description Cannot cancel in current status */
639
+ 409: {
640
+ headers: {
641
+ [name: string]: unknown;
642
+ };
643
+ content?: never;
644
+ };
645
+ };
646
+ };
647
+ listPaymentIntentTransactions: {
648
+ parameters: {
649
+ query?: never;
650
+ header?: never;
651
+ path: {
652
+ id: string;
653
+ };
654
+ cookie?: never;
655
+ };
656
+ requestBody?: never;
657
+ responses: {
658
+ /** @description OK */
659
+ 200: {
660
+ headers: {
661
+ [name: string]: unknown;
662
+ };
663
+ content: {
664
+ "application/json": {
665
+ data?: {
666
+ [key: string]: unknown;
667
+ }[];
668
+ };
669
+ };
670
+ };
671
+ };
672
+ };
673
+ listPaymentIntentRoutingCandidates: {
674
+ parameters: {
675
+ query?: never;
676
+ header?: never;
677
+ path: {
678
+ id: string;
679
+ };
680
+ cookie?: never;
681
+ };
682
+ requestBody?: never;
683
+ responses: {
684
+ /** @description OK */
685
+ 200: {
686
+ headers: {
687
+ [name: string]: unknown;
688
+ };
689
+ content: {
690
+ "application/json": {
691
+ data?: components["schemas"]["RouteCandidate"][];
692
+ };
693
+ };
694
+ };
695
+ /** @description Not found */
696
+ 404: {
697
+ headers: {
698
+ [name: string]: unknown;
699
+ };
700
+ content?: never;
701
+ };
702
+ };
703
+ };
704
+ getCheckoutView: {
705
+ parameters: {
706
+ query?: never;
707
+ header?: never;
708
+ path: {
709
+ id: string;
710
+ };
711
+ cookie?: never;
712
+ };
713
+ requestBody?: never;
714
+ responses: {
715
+ /** @description OK */
716
+ 200: {
717
+ headers: {
718
+ [name: string]: unknown;
719
+ };
720
+ content: {
721
+ "application/json": components["schemas"]["CheckoutView"];
722
+ };
723
+ };
724
+ /** @description Not found */
725
+ 404: {
726
+ headers: {
727
+ [name: string]: unknown;
728
+ };
729
+ content?: never;
730
+ };
731
+ };
732
+ };
733
+ listRefunds: {
734
+ parameters: {
735
+ query?: {
736
+ payment_intent_id?: string;
737
+ limit?: number;
738
+ };
739
+ header?: never;
740
+ path?: never;
741
+ cookie?: never;
742
+ };
743
+ requestBody?: never;
744
+ responses: {
745
+ /** @description OK */
746
+ 200: {
747
+ headers: {
748
+ [name: string]: unknown;
749
+ };
750
+ content: {
751
+ "application/json": {
752
+ data?: components["schemas"]["Refund"][];
753
+ };
754
+ };
755
+ };
756
+ };
757
+ };
758
+ createRefund: {
759
+ parameters: {
760
+ query?: never;
761
+ header?: {
762
+ /** @description Safe-retry key. Replays within 24h return the original response; same key + different body returns 409. */
763
+ "Idempotency-Key"?: components["parameters"]["IdempotencyKey"];
764
+ };
765
+ path?: never;
766
+ cookie?: never;
767
+ };
768
+ requestBody: {
769
+ content: {
770
+ "application/json": {
771
+ /**
772
+ * Format: uuid
773
+ * @description Payment intent to refund. Must be settled or partially funded.
774
+ */
775
+ intent_id: string;
776
+ /** @description Refund amount in USD. Capped by the intent's refundable balance. */
777
+ amount_usd: number;
778
+ /** @description Optional payer address to refund to. If omitted, the refund waits in `pending` with `failure_reason: missing_destination` until the merchant supplies one from the dashboard. */
779
+ destination?: string;
780
+ /** @example customer_request */
781
+ reason?: string;
782
+ };
783
+ };
784
+ };
785
+ responses: {
786
+ /** @description Created */
787
+ 201: {
788
+ headers: {
789
+ [name: string]: unknown;
790
+ };
791
+ content: {
792
+ "application/json": components["schemas"]["Refund"];
793
+ };
794
+ };
795
+ /** @description Intent not settled */
796
+ 409: {
797
+ headers: {
798
+ [name: string]: unknown;
799
+ };
800
+ content?: never;
801
+ };
802
+ /** @description Refund exceeds refundable balance */
803
+ 422: {
804
+ headers: {
805
+ [name: string]: unknown;
806
+ };
807
+ content?: never;
808
+ };
809
+ };
810
+ };
811
+ retrieveRefund: {
812
+ parameters: {
813
+ query?: never;
814
+ header?: never;
815
+ path: {
816
+ id: string;
817
+ };
818
+ cookie?: never;
819
+ };
820
+ requestBody?: never;
821
+ responses: {
822
+ /** @description OK */
823
+ 200: {
824
+ headers: {
825
+ [name: string]: unknown;
826
+ };
827
+ content: {
828
+ "application/json": components["schemas"]["Refund"];
829
+ };
830
+ };
831
+ /** @description Not found */
832
+ 404: {
833
+ headers: {
834
+ [name: string]: unknown;
835
+ };
836
+ content?: never;
837
+ };
838
+ };
839
+ };
840
+ refundStatus: {
841
+ parameters: {
842
+ query?: never;
843
+ header?: never;
844
+ path: {
845
+ id: string;
846
+ };
847
+ cookie?: never;
848
+ };
849
+ requestBody?: never;
850
+ responses: {
851
+ /** @description OK */
852
+ 200: {
853
+ headers: {
854
+ [name: string]: unknown;
855
+ };
856
+ content: {
857
+ "application/json": {
858
+ /** Format: uuid */
859
+ id?: string;
860
+ /** Format: uuid */
861
+ payment_intent_id?: string;
862
+ amount_usd?: number;
863
+ chain?: string | null;
864
+ token?: string | null;
865
+ /** @description e.g. '…a1b2c3' */
866
+ destination_tail?: string;
867
+ reason?: string;
868
+ /** @enum {string} */
869
+ status?: "pending" | "processing" | "retry_scheduled" | "succeeded" | "failed" | "cancelled";
870
+ tx_hash?: string | null;
871
+ failure_reason?: string | null;
872
+ attempts?: number;
873
+ /** Format: date-time */
874
+ created_at?: string;
875
+ /** Format: date-time */
876
+ updated_at?: string;
877
+ /** Format: date-time */
878
+ paid_at?: string | null;
879
+ terminal?: boolean;
880
+ };
881
+ };
882
+ };
883
+ /** @description Not found */
884
+ 404: {
885
+ headers: {
886
+ [name: string]: unknown;
887
+ };
888
+ content?: never;
889
+ };
890
+ };
891
+ };
892
+ listPayouts: {
893
+ parameters: {
894
+ query?: {
895
+ status?: string;
896
+ payment_intent_id?: string;
897
+ limit?: number;
898
+ };
899
+ header?: never;
900
+ path?: never;
901
+ cookie?: never;
902
+ };
903
+ requestBody?: never;
904
+ responses: {
905
+ /** @description OK */
906
+ 200: {
907
+ headers: {
908
+ [name: string]: unknown;
909
+ };
910
+ content: {
911
+ "application/json": {
912
+ data?: components["schemas"]["Payout"][];
913
+ };
914
+ };
915
+ };
916
+ };
917
+ };
918
+ retrievePayout: {
919
+ parameters: {
920
+ query?: never;
921
+ header?: never;
922
+ path: {
923
+ id: string;
924
+ };
925
+ cookie?: never;
926
+ };
927
+ requestBody?: never;
928
+ responses: {
929
+ /** @description OK */
930
+ 200: {
931
+ headers: {
932
+ [name: string]: unknown;
933
+ };
934
+ content: {
935
+ "application/json": components["schemas"]["Payout"];
936
+ };
937
+ };
938
+ /** @description Not found */
939
+ 404: {
940
+ headers: {
941
+ [name: string]: unknown;
942
+ };
943
+ content?: never;
944
+ };
945
+ };
946
+ };
947
+ replayPayout: {
948
+ parameters: {
949
+ query?: never;
950
+ header?: never;
951
+ path: {
952
+ id: string;
953
+ };
954
+ cookie?: never;
955
+ };
956
+ requestBody?: never;
957
+ responses: {
958
+ /** @description Requeued */
959
+ 200: {
960
+ headers: {
961
+ [name: string]: unknown;
962
+ };
963
+ content: {
964
+ "application/json": components["schemas"]["Payout"];
965
+ };
966
+ };
967
+ /** @description Payout is not in a replayable state */
968
+ 409: {
969
+ headers: {
970
+ [name: string]: unknown;
971
+ };
972
+ content?: never;
973
+ };
974
+ };
975
+ };
976
+ listWebhookEndpoints: {
977
+ parameters: {
978
+ query?: never;
979
+ header?: never;
980
+ path?: never;
981
+ cookie?: never;
982
+ };
983
+ requestBody?: never;
984
+ responses: {
985
+ /** @description OK */
986
+ 200: {
987
+ headers: {
988
+ [name: string]: unknown;
989
+ };
990
+ content: {
991
+ "application/json": {
992
+ data?: components["schemas"]["WebhookEndpoint"][];
993
+ };
994
+ };
995
+ };
996
+ };
997
+ };
998
+ createWebhookEndpoint: {
999
+ parameters: {
1000
+ query?: never;
1001
+ header?: never;
1002
+ path?: never;
1003
+ cookie?: never;
1004
+ };
1005
+ requestBody: {
1006
+ content: {
1007
+ "application/json": {
1008
+ /** Format: uri */
1009
+ url: string;
1010
+ events: string[];
1011
+ /** @default true */
1012
+ enabled?: boolean;
1013
+ };
1014
+ };
1015
+ };
1016
+ responses: {
1017
+ /** @description Created — response includes plaintext `secret`; store immediately. */
1018
+ 201: {
1019
+ headers: {
1020
+ [name: string]: unknown;
1021
+ };
1022
+ content: {
1023
+ "application/json": components["schemas"]["WebhookEndpoint"];
1024
+ };
1025
+ };
1026
+ };
1027
+ };
1028
+ retrieveWebhookEndpoint: {
1029
+ parameters: {
1030
+ query?: never;
1031
+ header?: never;
1032
+ path: {
1033
+ id: string;
1034
+ };
1035
+ cookie?: never;
1036
+ };
1037
+ requestBody?: never;
1038
+ responses: {
1039
+ /** @description OK */
1040
+ 200: {
1041
+ headers: {
1042
+ [name: string]: unknown;
1043
+ };
1044
+ content: {
1045
+ "application/json": components["schemas"]["WebhookEndpoint"];
1046
+ };
1047
+ };
1048
+ /** @description Not found */
1049
+ 404: {
1050
+ headers: {
1051
+ [name: string]: unknown;
1052
+ };
1053
+ content?: never;
1054
+ };
1055
+ };
1056
+ };
1057
+ deleteWebhookEndpoint: {
1058
+ parameters: {
1059
+ query?: never;
1060
+ header?: never;
1061
+ path: {
1062
+ id: string;
1063
+ };
1064
+ cookie?: never;
1065
+ };
1066
+ requestBody?: never;
1067
+ responses: {
1068
+ /** @description Deleted */
1069
+ 200: {
1070
+ headers: {
1071
+ [name: string]: unknown;
1072
+ };
1073
+ content?: never;
1074
+ };
1075
+ /** @description Deleted */
1076
+ 204: {
1077
+ headers: {
1078
+ [name: string]: unknown;
1079
+ };
1080
+ content?: never;
1081
+ };
1082
+ };
1083
+ };
1084
+ updateWebhookEndpoint: {
1085
+ parameters: {
1086
+ query?: never;
1087
+ header?: never;
1088
+ path: {
1089
+ id: string;
1090
+ };
1091
+ cookie?: never;
1092
+ };
1093
+ requestBody?: {
1094
+ content: {
1095
+ "application/json": {
1096
+ /** Format: uri */
1097
+ url?: string;
1098
+ events?: string[];
1099
+ enabled?: boolean;
1100
+ };
1101
+ };
1102
+ };
1103
+ responses: {
1104
+ /** @description OK */
1105
+ 200: {
1106
+ headers: {
1107
+ [name: string]: unknown;
1108
+ };
1109
+ content: {
1110
+ "application/json": components["schemas"]["WebhookEndpoint"];
1111
+ };
1112
+ };
1113
+ };
1114
+ };
1115
+ rotateWebhookEndpointSecret: {
1116
+ parameters: {
1117
+ query?: never;
1118
+ header?: never;
1119
+ path: {
1120
+ id: string;
1121
+ };
1122
+ cookie?: never;
1123
+ };
1124
+ requestBody?: never;
1125
+ responses: {
1126
+ /** @description OK — new plaintext `secret` returned once. */
1127
+ 200: {
1128
+ headers: {
1129
+ [name: string]: unknown;
1130
+ };
1131
+ content: {
1132
+ "application/json": components["schemas"]["WebhookEndpoint"];
1133
+ };
1134
+ };
1135
+ };
1136
+ };
1137
+ listTokens: {
1138
+ parameters: {
1139
+ query?: {
1140
+ chain?: string;
1141
+ };
1142
+ header?: never;
1143
+ path?: never;
1144
+ cookie?: never;
1145
+ };
1146
+ requestBody?: never;
1147
+ responses: {
1148
+ /** @description OK */
1149
+ 200: {
1150
+ headers: {
1151
+ [name: string]: unknown;
1152
+ };
1153
+ content: {
1154
+ "application/json": {
1155
+ data?: components["schemas"]["Token"][];
1156
+ };
1157
+ };
1158
+ };
1159
+ };
1160
+ };
1161
+ }
1162
+
1163
+ /**
1164
+ * Typed low-level client generated from public/openapi.yaml.
1165
+ *
1166
+ * This is the raw REST surface with full request/response typing derived from
1167
+ * the OpenAPI spec — every path, param, body, and response shape is checked
1168
+ * at compile time. Use it when you need direct control over a route the
1169
+ * high-level `FragmentPay` helper does not model, or when you want typed
1170
+ * autocomplete on every endpoint.
1171
+ *
1172
+ * import { createFragClient } from "@fragmentpay/server/openapi";
1173
+ *
1174
+ * const frag = createFragClient({ apiKey: process.env.FRAG_SECRET_KEY! });
1175
+ * const { data, error, response } = await frag.POST("/api/public/v1/payment-intents", {
1176
+ * body: {
1177
+ * amount: 25,
1178
+ * currency: "USD",
1179
+ * settlement: { chain: "solana", token: "USDC", address: WALLET },
1180
+ * },
1181
+ * headers: { "Idempotency-Key": "ord_123" },
1182
+ * });
1183
+ * if (error) throw new Error(error.error ?? "frag_error");
1184
+ * console.log(data.id, data.checkout_url);
1185
+ *
1186
+ * For a higher-level ergonomic API (validation, retries, typed helpers per
1187
+ * resource), use `FragmentPay` from the package root.
1188
+ */
1189
+
1190
+ type FragClient = Client<paths>;
1191
+ interface CreateFragClientOptions extends Omit<ClientOptions, "baseUrl" | "headers"> {
1192
+ /** `sk_test_...` or `sk_live_...` secret key. */
1193
+ apiKey: string;
1194
+ /** Origin without trailing slash. Defaults to https://frag.cash. */
1195
+ baseUrl?: string;
1196
+ /** Extra headers merged into every request. */
1197
+ headers?: Record<string, string>;
1198
+ }
1199
+ declare function createFragClient(opts: CreateFragClientOptions): FragClient;
1200
+
1201
+ export { type CreateFragClientOptions, type FragClient, createFragClient, type paths };