vesant-sdk 1.6.6 → 1.7.0-dev.254dc8c

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (86) hide show
  1. package/README.md +14 -4
  2. package/dist/{client-ePzhQKp9.d.mts → client-BolQlL5e.d.mts} +1 -1
  3. package/dist/{client-ePzhQKp9.d.ts → client-BolQlL5e.d.ts} +1 -1
  4. package/dist/client-C3DCmGe9.d.ts +436 -0
  5. package/dist/{client-C_A7QLcB.d.ts → client-DMIRx7Tu.d.mts} +5 -3
  6. package/dist/{client-BlCxjbY2.d.mts → client-DoMSYMMR.d.ts} +5 -3
  7. package/dist/client-ZNdnpWe7.d.mts +436 -0
  8. package/dist/compliance/index.d.mts +25 -429
  9. package/dist/compliance/index.d.ts +25 -429
  10. package/dist/compliance/index.js +187 -103
  11. package/dist/compliance/index.js.map +1 -1
  12. package/dist/compliance/index.mjs +187 -104
  13. package/dist/compliance/index.mjs.map +1 -1
  14. package/dist/decisions/index.d.mts +2 -2
  15. package/dist/decisions/index.d.ts +2 -2
  16. package/dist/decisions/index.js +1 -1
  17. package/dist/decisions/index.js.map +1 -1
  18. package/dist/decisions/index.mjs +1 -1
  19. package/dist/decisions/index.mjs.map +1 -1
  20. package/dist/geolocation/index.d.mts +4 -4
  21. package/dist/geolocation/index.d.ts +4 -4
  22. package/dist/geolocation/index.js +7 -24
  23. package/dist/geolocation/index.js.map +1 -1
  24. package/dist/geolocation/index.mjs +7 -24
  25. package/dist/geolocation/index.mjs.map +1 -1
  26. package/dist/index.d.mts +12 -70
  27. package/dist/index.d.ts +12 -70
  28. package/dist/index.js +302 -296
  29. package/dist/index.js.map +1 -1
  30. package/dist/index.mjs +301 -295
  31. package/dist/index.mjs.map +1 -1
  32. package/dist/kyc/core.d.mts +4 -4
  33. package/dist/kyc/core.d.ts +4 -4
  34. package/dist/kyc/core.js +86 -27
  35. package/dist/kyc/core.js.map +1 -1
  36. package/dist/kyc/core.mjs +86 -28
  37. package/dist/kyc/core.mjs.map +1 -1
  38. package/dist/kyc/index.d.mts +280 -50
  39. package/dist/kyc/index.d.ts +280 -50
  40. package/dist/kyc/index.js +86 -27
  41. package/dist/kyc/index.js.map +1 -1
  42. package/dist/kyc/index.mjs +86 -28
  43. package/dist/kyc/index.mjs.map +1 -1
  44. package/dist/react.d.mts +46 -9
  45. package/dist/react.d.ts +46 -9
  46. package/dist/react.js +891 -276
  47. package/dist/react.js.map +1 -1
  48. package/dist/react.mjs +890 -275
  49. package/dist/react.mjs.map +1 -1
  50. package/dist/risk-profile/index.d.mts +4 -4
  51. package/dist/risk-profile/index.d.ts +4 -4
  52. package/dist/risk-profile/index.js +1 -1
  53. package/dist/risk-profile/index.js.map +1 -1
  54. package/dist/risk-profile/index.mjs +1 -1
  55. package/dist/risk-profile/index.mjs.map +1 -1
  56. package/dist/scores/index.d.mts +2 -2
  57. package/dist/scores/index.d.ts +2 -2
  58. package/dist/scores/index.js +1 -1
  59. package/dist/scores/index.js.map +1 -1
  60. package/dist/scores/index.mjs +1 -1
  61. package/dist/scores/index.mjs.map +1 -1
  62. package/dist/tax/index.d.mts +6 -41
  63. package/dist/tax/index.d.ts +6 -41
  64. package/dist/tax/index.js +1 -36
  65. package/dist/tax/index.js.map +1 -1
  66. package/dist/tax/index.mjs +1 -36
  67. package/dist/tax/index.mjs.map +1 -1
  68. package/dist/{types-1RzYeSal.d.mts → types-BOFaMQxI.d.mts} +2 -2
  69. package/dist/{types-B4Ezqo7V.d.mts → types-CBQRNL-l.d.mts} +14 -1
  70. package/dist/{types-B4Ezqo7V.d.ts → types-CBQRNL-l.d.ts} +14 -1
  71. package/dist/{types-X5Md_dD_.d.ts → types-UGyDl1fd.d.ts} +2 -2
  72. package/dist/webhooks/index.d.mts +189 -2
  73. package/dist/webhooks/index.d.ts +189 -2
  74. package/dist/webhooks/index.js +49 -7
  75. package/dist/webhooks/index.js.map +1 -1
  76. package/dist/webhooks/index.mjs +49 -7
  77. package/dist/webhooks/index.mjs.map +1 -1
  78. package/package.json +16 -13
  79. package/dist/fraud/index.d.mts +0 -80
  80. package/dist/fraud/index.d.ts +0 -80
  81. package/dist/fraud/index.js +0 -606
  82. package/dist/fraud/index.js.map +0 -1
  83. package/dist/fraud/index.mjs +0 -604
  84. package/dist/fraud/index.mjs.map +0 -1
  85. package/dist/index-B04H4xfJ.d.mts +0 -320
  86. package/dist/index-CItMPmLL.d.ts +0 -320
@@ -214,7 +214,7 @@ function createConsoleLogger() {
214
214
  }
215
215
 
216
216
  // src/core/version.ts
217
- var SDK_VERSION = "1.6.6";
217
+ var SDK_VERSION = "1.7.0";
218
218
 
219
219
  // src/shared/browser-utils.ts
220
220
  function generateUUID() {
@@ -601,23 +601,19 @@ var KycClient = class extends BaseClient {
601
601
  *
602
602
  * Generates a link that the user can visit to submit their KYC documents.
603
603
  *
604
- * @param request - Request containing the user ID, redirect URL, callback URL, and trigger event
605
- * @returns Response containing kyc_required, can_skip, and optionally the redirect link and KYC ID
604
+ * @param request - Request containing the user ID, optional redirect URL, and optional callback URL (receives POST requests)
605
+ * @returns Response containing the redirect link and KYC ID
606
606
  *
607
607
  * @example
608
608
  * ```typescript
609
609
  * const result = await client.requestKycSubmitLink({
610
610
  * user_id: "user_123",
611
- * redirect_url: "https://merchant.com/kyc-complete",
612
- * callback_url: "https://merchant.com/api/kyc-webhook",
613
- * trigger_event: "onboarding"
611
+ * redirect_url: "https://merchant.com/kyc-complete", // optional
612
+ * callback_url: "https://merchant.com/api/kyc-webhook" // optional - receives POST requests on status change
614
613
  * });
615
614
  *
616
- * if (result.kyc_required && result.link) {
617
- * console.log(`Redirect user to: ${result.link}`);
618
- * } else if (result.can_skip) {
619
- * console.log("KYC not required, user can proceed");
620
- * }
615
+ * console.log(`Redirect user to: ${result.link}`);
616
+ * console.log(`KYC ID: ${result.kyc_id}`);
621
617
  * ```
622
618
  */
623
619
  async requestKycSubmitLink(request) {
@@ -628,40 +624,88 @@ var KycClient = class extends BaseClient {
628
624
  });
629
625
  }
630
626
  /**
631
- * Create a reuse KYC session for validate a user with existing KYC verification
627
+ * Create a Event-Based Face Verification session.
628
+ *
629
+ * Inspect the response before showing UI:
630
+ * - `is_required === false` → skip face capture; `reason` explains why.
631
+ * - `device_type === 'desktop'` → render `qr_payload` as a QR; the
632
+ * mobile device picks up the session via the connect endpoint.
633
+ * - `device_type === 'mobile'` → open the face capture modal directly.
632
634
  *
633
- * @param request - Request containing the reference, customer_id, optional redirect URL, and callback URL (receives POST requests)
635
+ * @param request - Reference, customer_id, event, amount (for threshold events), optional URLs.
634
636
  */
635
- async createReuseKycSession(request) {
636
- return this.requestWithRetry("/api/v1/kyc/face/session", {
637
+ async createEventBasedFaceVerificationSession(request) {
638
+ return this.request("/api/v1/kyc/face/session", {
637
639
  method: "POST",
638
640
  body: JSON.stringify(request),
639
641
  headers: this.getUserHeaders()
640
642
  });
641
643
  }
642
644
  /**
643
- * Submit a reuse KYC session for validate a user with existing KYC verification
645
+ * Submit a real-time face capture for an active Event-Based Face Verification session.
646
+ *
647
+ * **Mobile-only.** The server rejects desktop User-Agents with HTTP
648
+ * 400 (`face capture must be completed on a mobile device`). Use the
649
+ * QR handoff from `createEventBasedFaceVerificationSession` for desktop callers.
644
650
  *
645
- * @param request - Request containing the reference, token and proof (receives POST requests)
651
+ * The `data` field on the response carries `retries_remaining`,
652
+ * `retry_limit_exceeded`, and the reaction flags (`enforce_logout`,
653
+ * `freeze_account`, etc.) so the tenant app can act on a final failure.
654
+ *
655
+ * @param request - Token from `createEventBasedFaceVerificationSession`, plus the base64 selfie.
646
656
  */
647
- async submitReuseKycSession(request) {
648
- return this.requestWithRetry("/api/v1/kyc/face/submit", {
657
+ async submitEventBasedFaceVerificationSession(request) {
658
+ return this.request("/api/v1/kyc/face/submit", {
649
659
  method: "POST",
650
660
  body: JSON.stringify(request),
651
661
  headers: this.getUserHeaders()
652
662
  });
653
663
  }
654
664
  /**
655
- * Check reuse KYC session status for a reference
656
- * @param reference - The unique reference used for the reuse KYC session (e.g., customer ID or transaction ID)
657
- * @returns Response with kyc_status and message (reason)
658
- * **/
659
- async getReuseKycSessionStatus(reference) {
660
- return this.requestWithRetry(`/api/v1/kyc/face/verify/${encodeURIComponent(reference)}`, {
665
+ * Look up the current state of a Event-Based Face Verification session by its
666
+ * session token. Useful for desktop pollers waiting on the mobile handoff.
667
+ *
668
+ * The lookup is scoped by the unguessable, server-issued session token (not
669
+ * the enumerable forward reference): the endpoint is public/unauthenticated,
670
+ * and scoping by the token is what prevents cross-tenant status reads.
671
+ *
672
+ * @param token - The session token returned by `createEventBasedFaceVerificationSession`.
673
+ */
674
+ async getEventBasedFaceVerificationSessionStatus(token) {
675
+ return this.requestWithRetry(`/api/v1/kyc/face/verify/${encodeURIComponent(token)}`, {
661
676
  method: "GET",
662
677
  headers: this.getUserHeaders()
663
678
  });
664
679
  }
680
+ /**
681
+ * Fetch the Redis-backed handoff session for a token. Same backing
682
+ * store as normal KYC (`kyc:session:<token>`, 15-minute TTL). Desktop
683
+ * callers poll `mobile_connected` to detect when a mobile device has
684
+ * scanned the QR and attached.
685
+ *
686
+ * @param token - The session token returned by `createEventBasedFaceVerificationSession`.
687
+ */
688
+ async getHandoffSession(token) {
689
+ return this.request(
690
+ `/api/v1/kyc/session${this.buildQueryString({ token })}`,
691
+ { headers: this.getUserHeaders() }
692
+ );
693
+ }
694
+ /**
695
+ * Attach a mobile device to a desktop-initiated session. The mobile
696
+ * client calls this after scanning the QR code. The desktop poller
697
+ * sees `mobile_connected: true` on the next `getHandoffSession`.
698
+ *
699
+ * @param token - The session token transferred via the QR payload.
700
+ * @param isDisconnect - Pass true to release the session (default false).
701
+ */
702
+ async connectMobileSession(token, isDisconnect = false) {
703
+ return this.request("/api/v1/kyc/session/connect", {
704
+ method: "PUT",
705
+ body: JSON.stringify({ token, is_disconnect: isDisconnect }),
706
+ headers: this.getUserHeaders()
707
+ });
708
+ }
665
709
  /**
666
710
  * Check KYC status for a user
667
711
  *
@@ -1020,8 +1064,9 @@ var KycClient = class extends BaseClient {
1020
1064
  */
1021
1065
  async riskProfileRequest(path, options = {}) {
1022
1066
  if (!this.riskProfileBaseURL) {
1023
- throw new Error(
1024
- "Risk Profile Service URL not configured. Please provide riskProfileBaseURL in KycClientConfig."
1067
+ throw new ValidationError(
1068
+ "Risk Profile Service URL not configured. Please provide riskProfileBaseURL in KycClientConfig.",
1069
+ ["riskProfileBaseURL"]
1025
1070
  );
1026
1071
  }
1027
1072
  return this.request(path, {
@@ -1133,6 +1178,19 @@ var KycClient = class extends BaseClient {
1133
1178
  // ============================================================================
1134
1179
  };
1135
1180
 
1136
- export { KycClient };
1181
+ // src/kyc/types.ts
1182
+ var KYC_DECLINED_DESCRIPTIONS = {
1183
+ KYC_DOCUMENT_EXPIRED: "The submitted document has expired",
1184
+ KYC_DOCUMENT_INVALID: "The submitted document could not be verified",
1185
+ KYC_FACE_MISMATCH: "Face verification did not match the identity document",
1186
+ KYC_AGE_REQUIREMENT: "Age requirement not met",
1187
+ KYC_DUPLICATE_IDENTITY: "This identity has already been verified under another account",
1188
+ KYC_ADDRESS_MISMATCH: "Address verification failed",
1189
+ KYC_NAME_MISMATCH: "Name on document does not match the registered name",
1190
+ KYC_PROVIDER_REJECTED: "Identity verification was rejected by the verification provider",
1191
+ KYC_DECLINED: "Identity verification was declined"
1192
+ };
1193
+
1194
+ export { KYC_DECLINED_DESCRIPTIONS, KycClient };
1137
1195
  //# sourceMappingURL=index.mjs.map
1138
1196
  //# sourceMappingURL=index.mjs.map