@fun-xyz/fiat-contract 0.7.0 → 0.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.mjs CHANGED
@@ -12,7 +12,7 @@ import {
12
12
  tableEntry,
13
13
  unofferedEndpoints,
14
14
  unreachableStates
15
- } from "./chunk-OGNYHIOE.mjs";
15
+ } from "./chunk-5QGVY5Z4.mjs";
16
16
 
17
17
  // src/codes.ts
18
18
  var COUNTRY_CURRENCY_LIST = [
@@ -295,7 +295,15 @@ var HTTP_VERBS = ["GET", "POST"];
295
295
  var ENDPOINT_PATTERN = /^(GET|POST) \/fiat\/[^\s]*$/;
296
296
  var $endpoint = z.string().regex(ENDPOINT_PATTERN, 'endpoint must read "<GET|POST> /fiat/\u2026"');
297
297
  var FiatEndpointSchema = $endpoint;
298
- var $provider = z.enum(["TRANSAK", "SWAPPED", "BANXA"]);
298
+ var $provider = z.enum([
299
+ "TRANSAK",
300
+ "SWAPPED",
301
+ "BANXA",
302
+ "MOONPAY",
303
+ "STRIPE",
304
+ "COINBASE",
305
+ "CROSSMINT"
306
+ ]);
299
307
  var FiatProviderSchema = $provider;
300
308
  var $kycProvider = z.enum(["SUMSUB"]);
301
309
  var KYCProviderSchema = $kycProvider;
@@ -362,6 +370,8 @@ var $quote = obj({
362
370
  expiresAt: z.string()
363
371
  });
364
372
  var QuoteSchema = $quote;
373
+ var $quoteLimits = obj({ min: z.string(), max: z.string() });
374
+ var QuoteLimitsSchema = $quoteLimits;
365
375
  var $instrument = obj({ brandLabel: z.string(), last4: z.string() });
366
376
  var InstrumentSchema = $instrument;
367
377
  var $orderRef = obj({
@@ -392,7 +402,14 @@ var $refund = obj({
392
402
  expectedBy: z.string()
393
403
  });
394
404
  var RefundSchema = $refund;
395
- var $surfaceKind = z.enum(["URL_REDIRECT", "URL_EMBED", "PCI_COMPONENT", "PAY_SHEET", "ACH_COMPONENT"]);
405
+ var $surfaceKind = z.enum([
406
+ "URL_REDIRECT",
407
+ "KYC_SDK",
408
+ "PCI_COMPONENT",
409
+ "PAY_SHEET",
410
+ "ACH_COMPONENT",
411
+ "AUTH_COMPONENT"
412
+ ]);
396
413
  var SurfaceKindSchema = $surfaceKind;
397
414
  var $surface = obj({
398
415
  kind: $surfaceKind,
@@ -537,6 +554,8 @@ var AuthChallengeSchema = $authChallenge;
537
554
  var $quoteState = obj({
538
555
  kind: z.literal("QUOTE"),
539
556
  quote: $quote,
557
+ limits: $quoteLimits,
558
+ helper: z.string().optional(),
540
559
  /** Present when the provider's component is the primary CTA, inline on the entry screen. */
541
560
  surface: $surface.optional(),
542
561
  error: $failureReason.optional()
@@ -550,13 +569,15 @@ var $funAuthState = obj({
550
569
  var FunAuthStateSchema = $funAuthState;
551
570
  var $sessionAuthState = obj({
552
571
  kind: z.literal("SESSION_AUTH"),
553
- channel: z.literal("EMAIL_OTP"),
572
+ channel: z.enum(["EMAIL_OTP", "SMS_OTP", "PROVIDER_RENDERED"]),
573
+ surface: $surface.optional(),
554
574
  error: $failureReason.optional()
555
575
  });
556
576
  var SessionAuthStateSchema = $sessionAuthState;
557
577
  var $kycCaptureState = obj({
558
578
  kind: z.literal("KYC"),
559
579
  phase: z.literal("CAPTURE"),
580
+ quote: $quote,
560
581
  surface: $surface,
561
582
  error: $failureReason.optional()
562
583
  });
@@ -564,6 +585,7 @@ var KycCaptureStateSchema = $kycCaptureState;
564
585
  var $kycInputRequiredState = obj({
565
586
  kind: z.literal("KYC"),
566
587
  phase: z.literal("INPUT_REQUIRED"),
588
+ quote: $quote,
567
589
  form: $formDescriptor,
568
590
  error: $failureReason.optional()
569
591
  });
@@ -571,6 +593,7 @@ var KycInputRequiredStateSchema = $kycInputRequiredState;
571
593
  var $kycNoActionRequiredState = obj({
572
594
  kind: z.literal("KYC"),
573
595
  phase: z.literal("NO_ACTION_REQUIRED"),
596
+ quote: $quote,
574
597
  reason: z.enum(["IN_REVIEW", "ON_HOLD", "REJECTED"]),
575
598
  retryAfter: z.string().optional(),
576
599
  failureReason: $failureReason.optional(),
@@ -583,9 +606,16 @@ var $pendingOrderState = obj({
583
606
  error: $failureReason.optional()
584
607
  });
585
608
  var PendingOrderStateSchema = $pendingOrderState;
609
+ var $blockedReason = z.enum([
610
+ "REGION_UNSUPPORTED",
611
+ "ASSET_UNSUPPORTED",
612
+ "ALL_PROVIDERS_DECLINED",
613
+ "AMOUNT_UNSERVABLE"
614
+ ]);
615
+ var BlockedReasonSchema = $blockedReason;
586
616
  var $blockedState = obj({
587
617
  kind: z.literal("BLOCKED"),
588
- reason: z.string(),
618
+ reason: $blockedReason,
589
619
  retryAfter: z.string().nullable().optional(),
590
620
  error: $failureReason.optional()
591
621
  });
@@ -652,6 +682,10 @@ var FIXTURE_DATA = {
652
682
  "screen-01-quote": {
653
683
  "state": {
654
684
  "kind": "QUOTE",
685
+ "limits": {
686
+ "min": "1.00",
687
+ "max": "3000.00"
688
+ },
655
689
  "quote": {
656
690
  "quoteRef": "q_8f2",
657
691
  "fiat": {
@@ -696,6 +730,10 @@ var FIXTURE_DATA = {
696
730
  "screen-01b-quote-with-pay-sheet": {
697
731
  "state": {
698
732
  "kind": "QUOTE",
733
+ "limits": {
734
+ "min": "1.00",
735
+ "max": "3000.00"
736
+ },
699
737
  "quote": {
700
738
  "quoteRef": "q_8f2",
701
739
  "fiat": {
@@ -778,45 +816,43 @@ var FIXTURE_DATA = {
778
816
  "state": {
779
817
  "kind": "KYC",
780
818
  "phase": "INPUT_REQUIRED",
819
+ "quote": {
820
+ "quoteRef": "q_8f2",
821
+ "fiat": {
822
+ "currency": "GBP",
823
+ "amount": "100.00"
824
+ },
825
+ "crypto": {
826
+ "currency": "USDC",
827
+ "network": "polygon",
828
+ "amount": "98.41"
829
+ },
830
+ "rate": "0.9841",
831
+ "totalFee": "1.59",
832
+ "feeBreakdown": [
833
+ {
834
+ "id": "provider_fee",
835
+ "labelFallback": "Processing fee",
836
+ "amount": "1.59"
837
+ }
838
+ ],
839
+ "paymentMethod": "bank_transfer",
840
+ "expiresAt": "\u2026"
841
+ },
781
842
  "form": {
782
- "formId": "personal_details",
843
+ "formId": "kyc_q_8f2_1",
783
844
  "fields": [
784
845
  {
785
- "id": "firstName",
846
+ "id": "tin",
786
847
  "type": "TEXT",
787
- "labelFallback": "First name",
788
- "required": true
789
- },
790
- {
791
- "id": "dob",
792
- "type": "DATE",
793
- "labelFallback": "Date of birth",
848
+ "labelFallback": "Tax ID",
794
849
  "required": true
795
850
  },
796
851
  {
797
- "id": "country",
798
- "type": "COUNTRY",
799
- "labelFallback": "Country",
852
+ "id": "address",
853
+ "type": "TEXT",
854
+ "labelFallback": "Home address",
800
855
  "required": true
801
- },
802
- {
803
- "id": "sourceOfFunds",
804
- "type": "SELECT",
805
- "labelFallback": "Source of funds",
806
- "required": true,
807
- "options": [
808
- {
809
- "id": "salary",
810
- "labelFallback": "Salary"
811
- }
812
- ]
813
- },
814
- {
815
- "id": "idProof",
816
- "type": "HOSTED_LINK",
817
- "labelFallback": "Verify your ID",
818
- "required": true,
819
- "url": "\u2026"
820
856
  }
821
857
  ]
822
858
  }
@@ -828,7 +864,8 @@ var FIXTURE_DATA = {
828
864
  "mode": "SUBMIT",
829
865
  "endpoint": "POST /fiat/kyc/form",
830
866
  "params": {
831
- "formId": "personal_details"
867
+ "quoteRef": "q_8f2",
868
+ "formId": "kyc_q_8f2_1"
832
869
  },
833
870
  "inputs": {
834
871
  "values": {
@@ -913,11 +950,84 @@ var FIXTURE_DATA = {
913
950
  }
914
951
  ]
915
952
  },
953
+ "screen-08-kyc-capture": {
954
+ "state": {
955
+ "kind": "KYC",
956
+ "phase": "CAPTURE",
957
+ "quote": {
958
+ "quoteRef": "q_8f2",
959
+ "fiat": {
960
+ "currency": "GBP",
961
+ "amount": "100.00"
962
+ },
963
+ "crypto": {
964
+ "currency": "USDC",
965
+ "network": "polygon",
966
+ "amount": "98.41"
967
+ },
968
+ "rate": "0.9841",
969
+ "totalFee": "1.59",
970
+ "feeBreakdown": [
971
+ {
972
+ "id": "provider_fee",
973
+ "labelFallback": "Processing fee",
974
+ "amount": "1.59"
975
+ }
976
+ ],
977
+ "paymentMethod": "bank_transfer",
978
+ "expiresAt": "\u2026"
979
+ },
980
+ "surface": {
981
+ "kind": "KYC_SDK",
982
+ "provider": "SUMSUB",
983
+ "params": {
984
+ "accessToken": "eyJ\u2026"
985
+ },
986
+ "expiresAt": "\u2026"
987
+ }
988
+ },
989
+ "provider": "TRANSAK",
990
+ "transitions": [
991
+ {
992
+ "id": "capture",
993
+ "mode": "CLIENT_SURFACE",
994
+ "report": {
995
+ "endpoint": "POST /fiat/kyc/capture",
996
+ "params": {
997
+ "quoteRef": "q_8f2"
998
+ }
999
+ }
1000
+ }
1001
+ ]
1002
+ },
916
1003
  "screen-09-kyc-in-review": {
917
1004
  "state": {
918
1005
  "kind": "KYC",
919
1006
  "phase": "NO_ACTION_REQUIRED",
920
- "reason": "IN_REVIEW"
1007
+ "reason": "IN_REVIEW",
1008
+ "quote": {
1009
+ "quoteRef": "q_8f2",
1010
+ "fiat": {
1011
+ "currency": "GBP",
1012
+ "amount": "100.00"
1013
+ },
1014
+ "crypto": {
1015
+ "currency": "USDC",
1016
+ "network": "polygon",
1017
+ "amount": "98.41"
1018
+ },
1019
+ "rate": "0.9841",
1020
+ "totalFee": "1.59",
1021
+ "feeBreakdown": [
1022
+ {
1023
+ "id": "provider_fee",
1024
+ "labelFallback": "Processing fee",
1025
+ "amount": "1.59"
1026
+ }
1027
+ ],
1028
+ "paymentMethod": "bank_transfer",
1029
+ "expiresAt": "\u2026"
1030
+ }
921
1031
  },
922
1032
  "provider": "TRANSAK",
923
1033
  "transitions": [
@@ -925,10 +1035,7 @@ var FIXTURE_DATA = {
925
1035
  "id": "poll",
926
1036
  "mode": "AWAIT",
927
1037
  "poll": {
928
- "endpoint": "GET /fiat/kyc",
929
- "params": {
930
- "quoteRef": "q_8f2"
931
- },
1038
+ "endpoint": "GET /fiat/quotes/q_8f2",
932
1039
  "intervalMs": 3e3,
933
1040
  "backoffFactor": 1.5,
934
1041
  "maxIntervalMs": 1e4,
@@ -942,28 +1049,70 @@ var FIXTURE_DATA = {
942
1049
  "kind": "KYC",
943
1050
  "phase": "NO_ACTION_REQUIRED",
944
1051
  "reason": "ON_HOLD",
945
- "retryAfter": "2026-08-20T09:00:00Z"
1052
+ "retryAfter": "2026-08-20T09:00:00Z",
1053
+ "quote": {
1054
+ "quoteRef": "q_8f2",
1055
+ "fiat": {
1056
+ "currency": "GBP",
1057
+ "amount": "100.00"
1058
+ },
1059
+ "crypto": {
1060
+ "currency": "USDC",
1061
+ "network": "polygon",
1062
+ "amount": "98.41"
1063
+ },
1064
+ "rate": "0.9841",
1065
+ "totalFee": "1.59",
1066
+ "feeBreakdown": [
1067
+ {
1068
+ "id": "provider_fee",
1069
+ "labelFallback": "Processing fee",
1070
+ "amount": "1.59"
1071
+ }
1072
+ ],
1073
+ "paymentMethod": "bank_transfer",
1074
+ "expiresAt": "\u2026"
1075
+ }
946
1076
  },
947
1077
  "provider": "TRANSAK",
948
1078
  "transitions": []
949
1079
  },
950
- "screen-11-kyc-rejected-escalation": {
1080
+ "screen-11-kyc-rejected": {
951
1081
  "state": {
952
1082
  "kind": "KYC",
953
1083
  "phase": "NO_ACTION_REQUIRED",
954
- "reason": "REJECTED"
1084
+ "reason": "REJECTED",
1085
+ "quote": {
1086
+ "quoteRef": "q_8f2",
1087
+ "fiat": {
1088
+ "currency": "GBP",
1089
+ "amount": "100.00"
1090
+ },
1091
+ "crypto": {
1092
+ "currency": "USDC",
1093
+ "network": "polygon",
1094
+ "amount": "98.41"
1095
+ },
1096
+ "rate": "0.9841",
1097
+ "totalFee": "1.59",
1098
+ "feeBreakdown": [
1099
+ {
1100
+ "id": "provider_fee",
1101
+ "labelFallback": "Processing fee",
1102
+ "amount": "1.59"
1103
+ }
1104
+ ],
1105
+ "paymentMethod": "bank_transfer",
1106
+ "expiresAt": "\u2026"
1107
+ },
1108
+ "failureReason": {
1109
+ "category": "KYC_REJECTED",
1110
+ "retryable": false,
1111
+ "recovery": "CONTACT_SUPPORT"
1112
+ }
955
1113
  },
956
1114
  "provider": "TRANSAK",
957
- "transitions": [
958
- {
959
- "id": "escalate",
960
- "mode": "SUBMIT",
961
- "endpoint": "GET /fiat/kyc",
962
- "params": {
963
- "tier": "escalated"
964
- }
965
- }
966
- ]
1115
+ "transitions": []
967
1116
  },
968
1117
  "screen-12-pending-order": {
969
1118
  "state": {
@@ -1096,6 +1245,10 @@ var FIXTURE_DATA = {
1096
1245
  "worked-example-01-quote": {
1097
1246
  "state": {
1098
1247
  "kind": "QUOTE",
1248
+ "limits": {
1249
+ "min": "1.00",
1250
+ "max": "3000.00"
1251
+ },
1099
1252
  "quote": {
1100
1253
  "quoteRef": "q_8f2",
1101
1254
  "fiat": {
@@ -1241,8 +1394,8 @@ var FIXTURES = [
1241
1394
  {
1242
1395
  id: "screen-03-kyc-input-required",
1243
1396
  file: "screen-03-kyc-input-required.json",
1244
- source: "FE_DOC",
1245
- docRef: "Screen 3 \xB7 Identity form (KYC)",
1397
+ source: "KYC_DOC",
1398
+ docRef: "Fiat KYC \xB7 L1 input round",
1246
1399
  screen: 3,
1247
1400
  stateKey: "KYC/INPUT_REQUIRED",
1248
1401
  notes: ["Carries the FORM_VALUES input spec \u2014 the no-double-carry case of the accepted split."]
@@ -1270,34 +1423,40 @@ var FIXTURES = [
1270
1423
  "TODO(open-decision): report target per card topology is a Transak ask (contract Flow A)."
1271
1424
  ]
1272
1425
  },
1426
+ {
1427
+ id: "screen-08-kyc-capture",
1428
+ file: "screen-08-kyc-capture.json",
1429
+ source: "KYC_DOC",
1430
+ docRef: "Fiat KYC \xB7 embedded Sumsub WebSDK",
1431
+ screen: 8,
1432
+ stateKey: "KYC/CAPTURE",
1433
+ notes: ["The client mounts the Sumsub adapter; no URL or iframe is emitted."]
1434
+ },
1273
1435
  {
1274
1436
  id: "screen-09-kyc-in-review",
1275
1437
  file: "screen-09-kyc-in-review.json",
1276
- source: "FE_DOC",
1277
- docRef: "Screen 9 \xB7 Verifying identity",
1438
+ source: "KYC_DOC",
1439
+ docRef: "Fiat KYC \xB7 pending quote",
1278
1440
  screen: 9,
1279
1441
  stateKey: "KYC/NO_ACTION_REQUIRED:IN_REVIEW"
1280
1442
  },
1281
1443
  {
1282
1444
  id: "screen-10-kyc-on-hold",
1283
1445
  file: "screen-10-kyc-on-hold.json",
1284
- source: "FE_DOC",
1285
- docRef: "Screen 10 \xB7 Verification on hold",
1446
+ source: "KYC_DOC",
1447
+ docRef: "Fiat KYC \xB7 verification on hold",
1286
1448
  screen: 10,
1287
1449
  stateKey: "KYC/NO_ACTION_REQUIRED:ON_HOLD",
1288
1450
  notes: ["transitions: [] and NOT terminal \u2014 the fixture that proves terminality is table data."]
1289
1451
  },
1290
1452
  {
1291
- id: "screen-11-kyc-rejected-escalation",
1292
- file: "screen-11-kyc-rejected-escalation.json",
1293
- source: "FE_DOC",
1294
- docRef: "Screen 11 \xB7 Verification unsuccessful",
1453
+ id: "screen-11-kyc-rejected",
1454
+ file: "screen-11-kyc-rejected.json",
1455
+ source: "KYC_DOC",
1456
+ docRef: "Fiat KYC \xB7 non-retryable rejection",
1295
1457
  screen: 11,
1296
1458
  stateKey: "KYC/NO_ACTION_REQUIRED:REJECTED",
1297
- notes: [
1298
- "TODO(open-decision): the escalation transition is a flagged placeholder \u2014 a GET carrying params is not a real request shape (FE doc Screen 11 + open question 7).",
1299
- "The terminal REJECTED variant (failureReason + transitions []) is described in prose, not published as JSON \u2014 no fixture."
1300
- ]
1459
+ notes: ["Only an explicit non-retryable provider or identity-vendor outcome reaches this state."]
1301
1460
  },
1302
1461
  {
1303
1462
  id: "screen-12-pending-order",
@@ -1342,7 +1501,7 @@ var FIXTURES = [
1342
1501
  docRef: "Screen 16 \xB7 Not available",
1343
1502
  screen: 16,
1344
1503
  stateKey: "BLOCKED",
1345
- notes: ["The only flatly terminal state entry in the table."]
1504
+ notes: ["A flatly terminal availability state; explicit non-retryable KYC rejection is terminal too."]
1346
1505
  },
1347
1506
  {
1348
1507
  id: "worked-example-01-quote",
@@ -1374,10 +1533,6 @@ var FIXTURE_COVERAGE_GAPS = [
1374
1533
  {
1375
1534
  stateKey: "FUN_AUTH",
1376
1535
  reason: "No step response exists in either doc \u2014 shape owned by the auth spike, and FUN_AUTH never renders in fomo. TODO(open-decision): contract \xA7Auth & ref binding, item 5."
1377
- },
1378
- {
1379
- stateKey: "KYC/CAPTURE",
1380
- reason: "Dropped from v1 (FE Screen 8 tombstone, no UK module coverage); no step response was ever published. Kind retained as handshake-gated vocabulary."
1381
1536
  }
1382
1537
  ];
1383
1538
  var fixtureMeta = (id) => {
@@ -1536,6 +1691,7 @@ function assertAllFixtures() {
1536
1691
  }
1537
1692
  export {
1538
1693
  AuthChallengeSchema,
1694
+ BlockedReasonSchema,
1539
1695
  BlockedStateSchema,
1540
1696
  COUNTRY_NAMES,
1541
1697
  COUNTRY_TO_CURRENCY,
@@ -1580,6 +1736,7 @@ export {
1580
1736
  PaymentInstructStateSchema,
1581
1737
  PendingOrderStateSchema,
1582
1738
  PollSpecSchema,
1739
+ QuoteLimitsSchema,
1583
1740
  QuoteSchema,
1584
1741
  QuoteStateSchema,
1585
1742
  RecoverySchema,
package/dist/schemas.d.ts CHANGED
@@ -27,7 +27,7 @@
27
27
  * They are module-private, so none of it reaches the published declarations.
28
28
  */
29
29
  import { z } from 'zod';
30
- import type { CryptoAmount, FailureReason, FeeLine, FiatEndpoint, FieldSpec, FlowState, FormDescriptor, FormField, FormFieldType, Instructions, InstructionField, Instrument, JsonValue, FiatAmount, OrderRef, OrderStatus, OrderSummary, PollSpec, FiatProvider, Quote, Recovery, Refund, ReportSpec, SelectOption, StatusHistoryEntry, FiatStepResponse, Surface, SurfaceKind, SurfaceProvider, KYCProvider, Transition, TransitionInputs, TransitionParams, Tx } from './types';
30
+ import type { BlockedReason, CryptoAmount, FailureReason, FeeLine, FiatEndpoint, FieldSpec, FlowState, FormDescriptor, FormField, FormFieldType, Instructions, InstructionField, Instrument, JsonValue, FiatAmount, OrderRef, OrderStatus, OrderSummary, PollSpec, FiatProvider, Quote, QuoteLimits, Recovery, Refund, ReportSpec, SelectOption, StatusHistoryEntry, FiatStepResponse, Surface, SurfaceKind, SurfaceProvider, KYCProvider, Transition, TransitionInputs, TransitionParams, Tx } from './types';
31
31
  export declare const JsonSchema: z.ZodType<JsonValue>;
32
32
  export declare const HTTP_VERBS: readonly ["GET", "POST"];
33
33
  /** `"POST /fiat/session/verify"`, `"GET /fiat/orders/o_31c"` — the verb rides the string. */
@@ -43,6 +43,7 @@ export declare const FiatAmountSchema: z.ZodType<FiatAmount>;
43
43
  export declare const CryptoAmountSchema: z.ZodType<CryptoAmount>;
44
44
  export declare const FeeLineSchema: z.ZodType<FeeLine>;
45
45
  export declare const QuoteSchema: z.ZodType<Quote>;
46
+ export declare const QuoteLimitsSchema: z.ZodType<QuoteLimits>;
46
47
  export declare const InstrumentSchema: z.ZodType<Instrument>;
47
48
  export declare const OrderRefSchema: z.ZodType<OrderRef>;
48
49
  export declare const OrderSummarySchema: z.ZodType<OrderSummary>;
@@ -84,6 +85,7 @@ export declare const KycCaptureStateSchema: z.ZodType<State<'KYC', 'CAPTURE'>>;
84
85
  export declare const KycInputRequiredStateSchema: z.ZodType<State<'KYC', 'INPUT_REQUIRED'>>;
85
86
  export declare const KycNoActionRequiredStateSchema: z.ZodType<State<'KYC', 'NO_ACTION_REQUIRED'>>;
86
87
  export declare const PendingOrderStateSchema: z.ZodType<State<'PENDING_ORDER'>>;
88
+ export declare const BlockedReasonSchema: z.ZodType<BlockedReason>;
87
89
  export declare const BlockedStateSchema: z.ZodType<State<'BLOCKED'>>;
88
90
  export declare const PaymentCaptureStateSchema: z.ZodType<State<'PAYMENT', 'CAPTURE'>>;
89
91
  export declare const PaymentInstructStateSchema: z.ZodType<State<'PAYMENT', 'INSTRUCT'>>;
package/dist/table.d.ts CHANGED
@@ -42,8 +42,7 @@ export type StateKey = 'QUOTE' | 'FUN_AUTH' | 'SESSION_AUTH' | 'KYC/CAPTURE' | '
42
42
  export declare const TERMINAL_ORDER_STATUSES: readonly ["SETTLED", "EXPIRED", "CANCELLED", "FAILED", "REFUNDED"];
43
43
  export type TerminalOrderStatus = (typeof TERMINAL_ORDER_STATUSES)[number];
44
44
  /**
45
- * Endpoint template as written in the docs `:id` stands for an order id, so
46
- * `"POST /fiat/orders/:id/cancel"` matches the emitted `"POST /fiat/orders/o_31c/cancel"`.
45
+ * Endpoint template as written in the docs. Named `:` segments match one emitted path segment.
47
46
  */
48
47
  export type EndpointTemplate = FiatEndpoint;
49
48
  export interface AllowedTransition {
@@ -91,7 +90,7 @@ export declare const STATE_KEYS: StateKey[];
91
90
  * named by the table (QUOTE's capture-first entry) while the doc's endpoint table still lists no
92
91
  * session-minting call for that rail.
93
92
  */
94
- export declare const DOCUMENTED_ENDPOINTS: readonly ["GET /fiat/payment-methods", "POST /fiat/quote", "POST /fiat/auth", "POST /fiat/payment-session", "POST /fiat/session", "POST /fiat/session/verify", "GET /fiat/kyc", "POST /fiat/kyc/form", "POST /fiat/kyc/document", "POST /fiat/instruments", "POST /fiat/orders", "GET /fiat/orders/:id", "GET /fiat/orders/:id/instructions", "POST /fiat/orders/:id/confirm-payment", "POST /fiat/orders/:id/reference", "POST /fiat/orders/:id/cancel", "POST /fiat/orders/:id/surface-result"];
93
+ export declare const DOCUMENTED_ENDPOINTS: readonly ["GET /fiat/payment-methods", "POST /fiat/quote", "POST /fiat/auth", "POST /fiat/payment-session", "POST /fiat/session", "POST /fiat/session/verify", "GET /fiat/quotes/:quoteRef", "POST /fiat/kyc/form", "POST /fiat/kyc/capture", "POST /fiat/kyc/sdk-token", "POST /fiat/kyc/document", "POST /fiat/instruments", "POST /fiat/orders", "GET /fiat/orders/:id", "GET /fiat/orders/:id/instructions", "POST /fiat/orders/:id/confirm-payment", "POST /fiat/orders/:id/reference", "POST /fiat/orders/:id/cancel", "POST /fiat/orders/:id/surface-result"];
95
94
  /**
96
95
  * Documented endpoints no flow state offers, and why. Declared so an endpoint nothing can reach is
97
96
  * visible instead of silent — the table test asserts the unoffered set equals exactly these.