vesant-sdk 1.7.0-dev.c2e85f3 → 1.7.0-dev.d4f9718

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 (63) hide show
  1. package/dist/{client-BolQlL5e.d.mts → client-6sSaxufk.d.mts} +7 -0
  2. package/dist/{client-BolQlL5e.d.ts → client-6sSaxufk.d.ts} +7 -0
  3. package/dist/{client-DF7hlMEz.d.ts → client-B32yBt1b.d.ts} +1 -1
  4. package/dist/{client-DrjgZoH_.d.mts → client-BqPVh5jH.d.mts} +1 -1
  5. package/dist/{client-B0qhE2kr.d.mts → client-CHPEgasE.d.mts} +2 -2
  6. package/dist/{client-DtH2RLuy.d.ts → client-pKE_gii_.d.ts} +2 -2
  7. package/dist/compliance/index.d.mts +3 -3
  8. package/dist/compliance/index.d.ts +3 -3
  9. package/dist/compliance/index.js +19 -3
  10. package/dist/compliance/index.js.map +1 -1
  11. package/dist/compliance/index.mjs +19 -3
  12. package/dist/compliance/index.mjs.map +1 -1
  13. package/dist/decisions/index.d.mts +1 -1
  14. package/dist/decisions/index.d.ts +1 -1
  15. package/dist/decisions/index.js +19 -3
  16. package/dist/decisions/index.js.map +1 -1
  17. package/dist/decisions/index.mjs +19 -3
  18. package/dist/decisions/index.mjs.map +1 -1
  19. package/dist/geolocation/index.d.mts +3 -3
  20. package/dist/geolocation/index.d.ts +3 -3
  21. package/dist/geolocation/index.js +19 -3
  22. package/dist/geolocation/index.js.map +1 -1
  23. package/dist/geolocation/index.mjs +19 -3
  24. package/dist/geolocation/index.mjs.map +1 -1
  25. package/dist/index.d.mts +5 -5
  26. package/dist/index.d.ts +5 -5
  27. package/dist/index.js +46 -13
  28. package/dist/index.js.map +1 -1
  29. package/dist/index.mjs +46 -13
  30. package/dist/index.mjs.map +1 -1
  31. package/dist/kyc/core.d.mts +2 -2
  32. package/dist/kyc/core.d.ts +2 -2
  33. package/dist/kyc/core.js +41 -11
  34. package/dist/kyc/core.js.map +1 -1
  35. package/dist/kyc/core.mjs +41 -11
  36. package/dist/kyc/core.mjs.map +1 -1
  37. package/dist/kyc/index.d.mts +56 -8
  38. package/dist/kyc/index.d.ts +56 -8
  39. package/dist/kyc/index.js +41 -11
  40. package/dist/kyc/index.js.map +1 -1
  41. package/dist/kyc/index.mjs +41 -11
  42. package/dist/kyc/index.mjs.map +1 -1
  43. package/dist/react.d.mts +3 -3
  44. package/dist/react.d.ts +3 -3
  45. package/dist/risk-profile/index.d.mts +1 -1
  46. package/dist/risk-profile/index.d.ts +1 -1
  47. package/dist/risk-profile/index.js +19 -3
  48. package/dist/risk-profile/index.js.map +1 -1
  49. package/dist/risk-profile/index.mjs +19 -3
  50. package/dist/risk-profile/index.mjs.map +1 -1
  51. package/dist/scores/index.d.mts +1 -1
  52. package/dist/scores/index.d.ts +1 -1
  53. package/dist/scores/index.js +19 -3
  54. package/dist/scores/index.js.map +1 -1
  55. package/dist/scores/index.mjs +19 -3
  56. package/dist/scores/index.mjs.map +1 -1
  57. package/dist/tax/index.d.mts +2 -2
  58. package/dist/tax/index.d.ts +2 -2
  59. package/dist/tax/index.js +24 -5
  60. package/dist/tax/index.js.map +1 -1
  61. package/dist/tax/index.mjs +24 -5
  62. package/dist/tax/index.mjs.map +1 -1
  63. package/package.json +1 -1
@@ -1,6 +1,6 @@
1
1
  import { P as ProfileFilters, b as ProfileListResponse, C as CustomerProfile, a as CreateProfileRequest } from '../types-BOFaMQxI.mjs';
2
2
  import { c as Reason, R as RiskLevel, P as PaginationParams } from '../types-CBQRNL-l.mjs';
3
- import { B as BaseClient } from '../client-BolQlL5e.mjs';
3
+ import { B as BaseClient, R as RequestOptions } from '../client-6sSaxufk.mjs';
4
4
 
5
5
  /**
6
6
  * TypeScript type definitions for Vesant KYC Service API
@@ -327,6 +327,40 @@ interface RequestKycSubmitLinkRequest {
327
327
  * Omitted or unknown values default to KYC required with no skip.
328
328
  */
329
329
  trigger_event?: string;
330
+ /**
331
+ * Registered customer identity data (optional). Seeds the customer's risk
332
+ * profile so document verification can cross-check the submitted document
333
+ * against trusted reference data (name/DOB match, address verification).
334
+ * Fields never overwrite data already on the profile.
335
+ */
336
+ customer_data?: KycCustomerData;
337
+ }
338
+ /**
339
+ * Customer identity data supplied by your platform on a submit-link request.
340
+ * Mirrors the geolocation `customer_data` contract. Every field is optional
341
+ * and never overwrites data already on the customer's risk profile.
342
+ */
343
+ interface KycCustomerData {
344
+ /**
345
+ * Customer's registered full name. Used to match the OCR-extracted name
346
+ * on the submitted document.
347
+ */
348
+ full_name?: string;
349
+ /**
350
+ * Customer's registered date of birth. ISO 8601 date ("1999-06-02") or an
351
+ * RFC 3339 timestamp ("1986-09-06T18:30:00.000+00:00", as produced by
352
+ * `Date.prototype.toISOString()`) — for timestamps the date portion is
353
+ * used. Used for DOB matching against the submitted document.
354
+ */
355
+ date_of_birth?: string;
356
+ /** Customer's email address */
357
+ email?: string;
358
+ /** Customer's phone number */
359
+ phone?: string;
360
+ /** Customer's residential address. Used for address verification. */
361
+ address?: string;
362
+ /** Customer's country of residence */
363
+ country?: string;
330
364
  }
331
365
  /**
332
366
  * Trigger events that can request Event-Based Face Verification.
@@ -686,7 +720,7 @@ interface UseKycPreferencesResult extends BaseHookState {
686
720
  */
687
721
  declare class KycClient extends BaseClient {
688
722
  private userId?;
689
- private riskProfileBaseURL?;
723
+ private readonly riskProfileBaseURL?;
690
724
  constructor(config: KycClientConfig);
691
725
  /**
692
726
  * Set the user ID for operations requiring user context
@@ -705,7 +739,13 @@ declare class KycClient extends BaseClient {
705
739
  *
706
740
  * Generates a link that the user can visit to submit their KYC documents.
707
741
  *
708
- * @param request - Request containing the user ID, optional redirect URL, and optional callback URL (receives POST requests)
742
+ * Optionally pass the customer's registered identity data as
743
+ * `customer_data` (same shape as the geolocation `customer_data` block).
744
+ * It seeds the customer's risk profile so document verification can
745
+ * cross-check the submitted document against trusted reference data;
746
+ * fields never overwrite data already on the profile.
747
+ *
748
+ * @param request - Request containing the user ID, optional redirect URL, optional callback URL (receives POST requests), and optional customer identity data
709
749
  * @returns Response containing the redirect link and KYC ID
710
750
  *
711
751
  * @example
@@ -713,14 +753,22 @@ declare class KycClient extends BaseClient {
713
753
  * const result = await client.requestKycSubmitLink({
714
754
  * user_id: "user_123",
715
755
  * redirect_url: "https://merchant.com/kyc-complete", // optional
716
- * callback_url: "https://merchant.com/api/kyc-webhook" // optional - receives POST requests on status change
756
+ * callback_url: "https://merchant.com/api/kyc-webhook", // optional - receives POST requests on status change
757
+ * customer_data: { // optional - seeds the risk profile for document cross-checks
758
+ * full_name: "John Doe",
759
+ * date_of_birth: "1999-06-02", // ISO 8601
760
+ * email: "john@example.com",
761
+ * phone: "+94771234567",
762
+ * address: "12 Main St, Colombo", // used for address verification
763
+ * country: "LK"
764
+ * }
717
765
  * });
718
766
  *
719
767
  * console.log(`Redirect user to: ${result.link}`);
720
768
  * console.log(`KYC ID: ${result.kyc_id}`);
721
769
  * ```
722
770
  */
723
- requestKycSubmitLink(request: RequestKycSubmitLinkRequest): Promise<RequestKycSubmitLinkResponse>;
771
+ requestKycSubmitLink(request: RequestKycSubmitLinkRequest, requestOptions?: RequestOptions): Promise<RequestKycSubmitLinkResponse>;
724
772
  /**
725
773
  * Create a Event-Based Face Verification session.
726
774
  *
@@ -746,7 +794,7 @@ declare class KycClient extends BaseClient {
746
794
  *
747
795
  * @param request - Token from `createEventBasedFaceVerificationSession`, plus the base64 selfie.
748
796
  */
749
- submitEventBasedFaceVerificationSession(request: SubmitEventBasedFaceVerificationSessionRequest): Promise<EventBasedFaceVerificationCallback>;
797
+ submitEventBasedFaceVerificationSession(request: SubmitEventBasedFaceVerificationSessionRequest, requestOptions?: RequestOptions): Promise<EventBasedFaceVerificationCallback>;
750
798
  /**
751
799
  * Look up the current state of a Event-Based Face Verification session by its
752
800
  * session token. Useful for desktop pollers waiting on the mobile handoff.
@@ -835,7 +883,7 @@ declare class KycClient extends BaseClient {
835
883
  * console.log(`Verification submitted: ${result.reference}`);
836
884
  * ```
837
885
  */
838
- submitVerification(request: DocumentVerificationRequest): Promise<DocumentVerificationResponse>;
886
+ submitVerification(request: DocumentVerificationRequest, requestOptions?: RequestOptions): Promise<DocumentVerificationResponse>;
839
887
  /**
840
888
  * Get a KYC request by ID
841
889
  *
@@ -1098,4 +1146,4 @@ declare class KycClient extends BaseClient {
1098
1146
  createCustomerProfile(profile: CreateProfileRequest): Promise<CustomerProfile>;
1099
1147
  }
1100
1148
 
1101
- export { type CheckKycStatusRequest, type CheckKycStatusResponse, CreateProfileRequest as CreateCustomerProfileRequest, type CreateEventBasedFaceVerificationSessionRequest, type CreateEventBasedFaceVerificationSessionResponse, CustomerProfile, ProfileFilters as CustomerProfileFilters, ProfileListResponse as CustomerProfileListResponse, type DocumentType, type DocumentVerificationRequest, type DocumentVerificationResponse, type EventBasedFaceVerificationCallback, type EventBasedFaceVerificationDeviceType, type EventBasedFaceVerificationEvent, type EventBasedFaceVerificationFrequencyTrigger, type EventBasedFaceVerificationReactionResult, type EventBasedFaceVerificationReactions, type EventBasedFaceVerificationThresholdTrigger, type EventBasedFaceVerificationTriggers, type FaceProof, KYC_DECLINED_DESCRIPTIONS, type KycAlert, type KycAlertFilters, type KycAlertListResponse, type KycAlertStatus, type KycAlertType, KycClient, type KycClientConfig, type KycCustomerProfile, type KycDeclinedCode, type KycHandoffSession, type KycOverview, type KycPagination, type KycPreferences, type KycRequest, type KycRequestFilters, type KycRequestListResponse, type KycStatus, type Name, PaginationParams, type Proof, type ProofDownloadURL, type ProofType, type RequestAdditionalDocumentsRequest, type RequestKycSubmitLinkRequest, type RequestKycSubmitLinkResponse, RiskLevel, type SubmitEventBasedFaceVerificationSessionRequest, type SubmittedDocument, type SupportedDocumentType, type UpdateKycAlertRequest, type UpdateKycPreferencesRequest, type UpdateKycStatusRequest, type UseKycAlertsOptions, type UseKycAlertsResult, type UseKycOverviewOptions, type UseKycOverviewResult, type UseKycPreferencesResult, type UseKycRequestsOptions, type UseKycRequestsResult, type UseKycSubmissionOptions, type UseKycSubmissionResult };
1149
+ export { type CheckKycStatusRequest, type CheckKycStatusResponse, CreateProfileRequest as CreateCustomerProfileRequest, type CreateEventBasedFaceVerificationSessionRequest, type CreateEventBasedFaceVerificationSessionResponse, CustomerProfile, ProfileFilters as CustomerProfileFilters, ProfileListResponse as CustomerProfileListResponse, type DocumentType, type DocumentVerificationRequest, type DocumentVerificationResponse, type EventBasedFaceVerificationCallback, type EventBasedFaceVerificationDeviceType, type EventBasedFaceVerificationEvent, type EventBasedFaceVerificationFrequencyTrigger, type EventBasedFaceVerificationReactionResult, type EventBasedFaceVerificationReactions, type EventBasedFaceVerificationThresholdTrigger, type EventBasedFaceVerificationTriggers, type FaceProof, KYC_DECLINED_DESCRIPTIONS, type KycAlert, type KycAlertFilters, type KycAlertListResponse, type KycAlertStatus, type KycAlertType, KycClient, type KycClientConfig, type KycCustomerData, type KycCustomerProfile, type KycDeclinedCode, type KycHandoffSession, type KycOverview, type KycPagination, type KycPreferences, type KycRequest, type KycRequestFilters, type KycRequestListResponse, type KycStatus, type Name, PaginationParams, type Proof, type ProofDownloadURL, type ProofType, type RequestAdditionalDocumentsRequest, type RequestKycSubmitLinkRequest, type RequestKycSubmitLinkResponse, RiskLevel, type SubmitEventBasedFaceVerificationSessionRequest, type SubmittedDocument, type SupportedDocumentType, type UpdateKycAlertRequest, type UpdateKycPreferencesRequest, type UpdateKycStatusRequest, type UseKycAlertsOptions, type UseKycAlertsResult, type UseKycOverviewOptions, type UseKycOverviewResult, type UseKycPreferencesResult, type UseKycRequestsOptions, type UseKycRequestsResult, type UseKycSubmissionOptions, type UseKycSubmissionResult };
@@ -1,6 +1,6 @@
1
1
  import { P as ProfileFilters, b as ProfileListResponse, C as CustomerProfile, a as CreateProfileRequest } from '../types-UGyDl1fd.js';
2
2
  import { c as Reason, R as RiskLevel, P as PaginationParams } from '../types-CBQRNL-l.js';
3
- import { B as BaseClient } from '../client-BolQlL5e.js';
3
+ import { B as BaseClient, R as RequestOptions } from '../client-6sSaxufk.js';
4
4
 
5
5
  /**
6
6
  * TypeScript type definitions for Vesant KYC Service API
@@ -327,6 +327,40 @@ interface RequestKycSubmitLinkRequest {
327
327
  * Omitted or unknown values default to KYC required with no skip.
328
328
  */
329
329
  trigger_event?: string;
330
+ /**
331
+ * Registered customer identity data (optional). Seeds the customer's risk
332
+ * profile so document verification can cross-check the submitted document
333
+ * against trusted reference data (name/DOB match, address verification).
334
+ * Fields never overwrite data already on the profile.
335
+ */
336
+ customer_data?: KycCustomerData;
337
+ }
338
+ /**
339
+ * Customer identity data supplied by your platform on a submit-link request.
340
+ * Mirrors the geolocation `customer_data` contract. Every field is optional
341
+ * and never overwrites data already on the customer's risk profile.
342
+ */
343
+ interface KycCustomerData {
344
+ /**
345
+ * Customer's registered full name. Used to match the OCR-extracted name
346
+ * on the submitted document.
347
+ */
348
+ full_name?: string;
349
+ /**
350
+ * Customer's registered date of birth. ISO 8601 date ("1999-06-02") or an
351
+ * RFC 3339 timestamp ("1986-09-06T18:30:00.000+00:00", as produced by
352
+ * `Date.prototype.toISOString()`) — for timestamps the date portion is
353
+ * used. Used for DOB matching against the submitted document.
354
+ */
355
+ date_of_birth?: string;
356
+ /** Customer's email address */
357
+ email?: string;
358
+ /** Customer's phone number */
359
+ phone?: string;
360
+ /** Customer's residential address. Used for address verification. */
361
+ address?: string;
362
+ /** Customer's country of residence */
363
+ country?: string;
330
364
  }
331
365
  /**
332
366
  * Trigger events that can request Event-Based Face Verification.
@@ -686,7 +720,7 @@ interface UseKycPreferencesResult extends BaseHookState {
686
720
  */
687
721
  declare class KycClient extends BaseClient {
688
722
  private userId?;
689
- private riskProfileBaseURL?;
723
+ private readonly riskProfileBaseURL?;
690
724
  constructor(config: KycClientConfig);
691
725
  /**
692
726
  * Set the user ID for operations requiring user context
@@ -705,7 +739,13 @@ declare class KycClient extends BaseClient {
705
739
  *
706
740
  * Generates a link that the user can visit to submit their KYC documents.
707
741
  *
708
- * @param request - Request containing the user ID, optional redirect URL, and optional callback URL (receives POST requests)
742
+ * Optionally pass the customer's registered identity data as
743
+ * `customer_data` (same shape as the geolocation `customer_data` block).
744
+ * It seeds the customer's risk profile so document verification can
745
+ * cross-check the submitted document against trusted reference data;
746
+ * fields never overwrite data already on the profile.
747
+ *
748
+ * @param request - Request containing the user ID, optional redirect URL, optional callback URL (receives POST requests), and optional customer identity data
709
749
  * @returns Response containing the redirect link and KYC ID
710
750
  *
711
751
  * @example
@@ -713,14 +753,22 @@ declare class KycClient extends BaseClient {
713
753
  * const result = await client.requestKycSubmitLink({
714
754
  * user_id: "user_123",
715
755
  * redirect_url: "https://merchant.com/kyc-complete", // optional
716
- * callback_url: "https://merchant.com/api/kyc-webhook" // optional - receives POST requests on status change
756
+ * callback_url: "https://merchant.com/api/kyc-webhook", // optional - receives POST requests on status change
757
+ * customer_data: { // optional - seeds the risk profile for document cross-checks
758
+ * full_name: "John Doe",
759
+ * date_of_birth: "1999-06-02", // ISO 8601
760
+ * email: "john@example.com",
761
+ * phone: "+94771234567",
762
+ * address: "12 Main St, Colombo", // used for address verification
763
+ * country: "LK"
764
+ * }
717
765
  * });
718
766
  *
719
767
  * console.log(`Redirect user to: ${result.link}`);
720
768
  * console.log(`KYC ID: ${result.kyc_id}`);
721
769
  * ```
722
770
  */
723
- requestKycSubmitLink(request: RequestKycSubmitLinkRequest): Promise<RequestKycSubmitLinkResponse>;
771
+ requestKycSubmitLink(request: RequestKycSubmitLinkRequest, requestOptions?: RequestOptions): Promise<RequestKycSubmitLinkResponse>;
724
772
  /**
725
773
  * Create a Event-Based Face Verification session.
726
774
  *
@@ -746,7 +794,7 @@ declare class KycClient extends BaseClient {
746
794
  *
747
795
  * @param request - Token from `createEventBasedFaceVerificationSession`, plus the base64 selfie.
748
796
  */
749
- submitEventBasedFaceVerificationSession(request: SubmitEventBasedFaceVerificationSessionRequest): Promise<EventBasedFaceVerificationCallback>;
797
+ submitEventBasedFaceVerificationSession(request: SubmitEventBasedFaceVerificationSessionRequest, requestOptions?: RequestOptions): Promise<EventBasedFaceVerificationCallback>;
750
798
  /**
751
799
  * Look up the current state of a Event-Based Face Verification session by its
752
800
  * session token. Useful for desktop pollers waiting on the mobile handoff.
@@ -835,7 +883,7 @@ declare class KycClient extends BaseClient {
835
883
  * console.log(`Verification submitted: ${result.reference}`);
836
884
  * ```
837
885
  */
838
- submitVerification(request: DocumentVerificationRequest): Promise<DocumentVerificationResponse>;
886
+ submitVerification(request: DocumentVerificationRequest, requestOptions?: RequestOptions): Promise<DocumentVerificationResponse>;
839
887
  /**
840
888
  * Get a KYC request by ID
841
889
  *
@@ -1098,4 +1146,4 @@ declare class KycClient extends BaseClient {
1098
1146
  createCustomerProfile(profile: CreateProfileRequest): Promise<CustomerProfile>;
1099
1147
  }
1100
1148
 
1101
- export { type CheckKycStatusRequest, type CheckKycStatusResponse, CreateProfileRequest as CreateCustomerProfileRequest, type CreateEventBasedFaceVerificationSessionRequest, type CreateEventBasedFaceVerificationSessionResponse, CustomerProfile, ProfileFilters as CustomerProfileFilters, ProfileListResponse as CustomerProfileListResponse, type DocumentType, type DocumentVerificationRequest, type DocumentVerificationResponse, type EventBasedFaceVerificationCallback, type EventBasedFaceVerificationDeviceType, type EventBasedFaceVerificationEvent, type EventBasedFaceVerificationFrequencyTrigger, type EventBasedFaceVerificationReactionResult, type EventBasedFaceVerificationReactions, type EventBasedFaceVerificationThresholdTrigger, type EventBasedFaceVerificationTriggers, type FaceProof, KYC_DECLINED_DESCRIPTIONS, type KycAlert, type KycAlertFilters, type KycAlertListResponse, type KycAlertStatus, type KycAlertType, KycClient, type KycClientConfig, type KycCustomerProfile, type KycDeclinedCode, type KycHandoffSession, type KycOverview, type KycPagination, type KycPreferences, type KycRequest, type KycRequestFilters, type KycRequestListResponse, type KycStatus, type Name, PaginationParams, type Proof, type ProofDownloadURL, type ProofType, type RequestAdditionalDocumentsRequest, type RequestKycSubmitLinkRequest, type RequestKycSubmitLinkResponse, RiskLevel, type SubmitEventBasedFaceVerificationSessionRequest, type SubmittedDocument, type SupportedDocumentType, type UpdateKycAlertRequest, type UpdateKycPreferencesRequest, type UpdateKycStatusRequest, type UseKycAlertsOptions, type UseKycAlertsResult, type UseKycOverviewOptions, type UseKycOverviewResult, type UseKycPreferencesResult, type UseKycRequestsOptions, type UseKycRequestsResult, type UseKycSubmissionOptions, type UseKycSubmissionResult };
1149
+ export { type CheckKycStatusRequest, type CheckKycStatusResponse, CreateProfileRequest as CreateCustomerProfileRequest, type CreateEventBasedFaceVerificationSessionRequest, type CreateEventBasedFaceVerificationSessionResponse, CustomerProfile, ProfileFilters as CustomerProfileFilters, ProfileListResponse as CustomerProfileListResponse, type DocumentType, type DocumentVerificationRequest, type DocumentVerificationResponse, type EventBasedFaceVerificationCallback, type EventBasedFaceVerificationDeviceType, type EventBasedFaceVerificationEvent, type EventBasedFaceVerificationFrequencyTrigger, type EventBasedFaceVerificationReactionResult, type EventBasedFaceVerificationReactions, type EventBasedFaceVerificationThresholdTrigger, type EventBasedFaceVerificationTriggers, type FaceProof, KYC_DECLINED_DESCRIPTIONS, type KycAlert, type KycAlertFilters, type KycAlertListResponse, type KycAlertStatus, type KycAlertType, KycClient, type KycClientConfig, type KycCustomerData, type KycCustomerProfile, type KycDeclinedCode, type KycHandoffSession, type KycOverview, type KycPagination, type KycPreferences, type KycRequest, type KycRequestFilters, type KycRequestListResponse, type KycStatus, type Name, PaginationParams, type Proof, type ProofDownloadURL, type ProofType, type RequestAdditionalDocumentsRequest, type RequestKycSubmitLinkRequest, type RequestKycSubmitLinkResponse, RiskLevel, type SubmitEventBasedFaceVerificationSessionRequest, type SubmittedDocument, type SupportedDocumentType, type UpdateKycAlertRequest, type UpdateKycPreferencesRequest, type UpdateKycStatusRequest, type UseKycAlertsOptions, type UseKycAlertsResult, type UseKycOverviewOptions, type UseKycOverviewResult, type UseKycPreferencesResult, type UseKycRequestsOptions, type UseKycRequestsResult, type UseKycSubmissionOptions, type UseKycSubmissionResult };
package/dist/kyc/index.js CHANGED
@@ -271,6 +271,19 @@ var BaseClient = class {
271
271
  this.rateLimitTracker = new RateLimitTracker();
272
272
  }
273
273
  }
274
+ /**
275
+ * Resolve the Idempotency-Key for a request. Mutating methods (POST/PUT/PATCH)
276
+ * get the caller-supplied key or a freshly minted UUID; non-mutating methods get
277
+ * none. requestWithRetry resolves this once and injects it so every retry reuses
278
+ * one key (letting the server dedup replays); a direct request() resolves per call.
279
+ */
280
+ resolveIdempotencyKey(method, requestOptions) {
281
+ const isMutating = ["POST", "PUT", "PATCH"].includes((method || "GET").toUpperCase());
282
+ if (!isMutating) {
283
+ return void 0;
284
+ }
285
+ return requestOptions?.idempotencyKey ?? generateUUID();
286
+ }
274
287
  /**
275
288
  * Make an HTTP request with timeout and error handling
276
289
  */
@@ -303,8 +316,9 @@ var BaseClient = class {
303
316
  headers["X-Sandbox"] = "true";
304
317
  }
305
318
  const method = (options.method || "GET").toUpperCase();
306
- if (["POST", "PUT", "PATCH"].includes(method)) {
307
- headers["Idempotency-Key"] = requestOptions?.idempotencyKey || generateUUID();
319
+ const idempotencyKey = this.resolveIdempotencyKey(method, requestOptions);
320
+ if (idempotencyKey) {
321
+ headers["Idempotency-Key"] = idempotencyKey;
308
322
  }
309
323
  const controller = new AbortController();
310
324
  const timeoutId = setTimeout(() => controller.abort(), this.config.timeout);
@@ -417,9 +431,11 @@ var BaseClient = class {
417
431
  */
418
432
  async requestWithRetry(endpoint, options = {}, serviceURL, retries = this.config.retries, requestOptions) {
419
433
  let lastError;
434
+ const idempotencyKey = this.resolveIdempotencyKey(options.method || "GET", requestOptions);
435
+ const attemptOptions = idempotencyKey ? { ...requestOptions, idempotencyKey } : requestOptions;
420
436
  for (let attempt = 0; attempt <= retries; attempt++) {
421
437
  try {
422
- return await this.request(endpoint, options, serviceURL, requestOptions);
438
+ return await this.request(endpoint, options, serviceURL, attemptOptions);
423
439
  } catch (error) {
424
440
  lastError = error instanceof Error ? error : new Error("Unknown error");
425
441
  if (requestOptions?.signal?.aborted) {
@@ -603,7 +619,13 @@ var KycClient = class extends BaseClient {
603
619
  *
604
620
  * Generates a link that the user can visit to submit their KYC documents.
605
621
  *
606
- * @param request - Request containing the user ID, optional redirect URL, and optional callback URL (receives POST requests)
622
+ * Optionally pass the customer's registered identity data as
623
+ * `customer_data` (same shape as the geolocation `customer_data` block).
624
+ * It seeds the customer's risk profile so document verification can
625
+ * cross-check the submitted document against trusted reference data;
626
+ * fields never overwrite data already on the profile.
627
+ *
628
+ * @param request - Request containing the user ID, optional redirect URL, optional callback URL (receives POST requests), and optional customer identity data
607
629
  * @returns Response containing the redirect link and KYC ID
608
630
  *
609
631
  * @example
@@ -611,19 +633,27 @@ var KycClient = class extends BaseClient {
611
633
  * const result = await client.requestKycSubmitLink({
612
634
  * user_id: "user_123",
613
635
  * redirect_url: "https://merchant.com/kyc-complete", // optional
614
- * callback_url: "https://merchant.com/api/kyc-webhook" // optional - receives POST requests on status change
636
+ * callback_url: "https://merchant.com/api/kyc-webhook", // optional - receives POST requests on status change
637
+ * customer_data: { // optional - seeds the risk profile for document cross-checks
638
+ * full_name: "John Doe",
639
+ * date_of_birth: "1999-06-02", // ISO 8601
640
+ * email: "john@example.com",
641
+ * phone: "+94771234567",
642
+ * address: "12 Main St, Colombo", // used for address verification
643
+ * country: "LK"
644
+ * }
615
645
  * });
616
646
  *
617
647
  * console.log(`Redirect user to: ${result.link}`);
618
648
  * console.log(`KYC ID: ${result.kyc_id}`);
619
649
  * ```
620
650
  */
621
- async requestKycSubmitLink(request) {
651
+ async requestKycSubmitLink(request, requestOptions) {
622
652
  return this.requestWithRetry("/api/v1/kyc/request", {
623
653
  method: "POST",
624
654
  body: JSON.stringify(request),
625
655
  headers: this.getUserHeaders()
626
- });
656
+ }, void 0, void 0, requestOptions);
627
657
  }
628
658
  /**
629
659
  * Create a Event-Based Face Verification session.
@@ -656,12 +686,12 @@ var KycClient = class extends BaseClient {
656
686
  *
657
687
  * @param request - Token from `createEventBasedFaceVerificationSession`, plus the base64 selfie.
658
688
  */
659
- async submitEventBasedFaceVerificationSession(request) {
689
+ async submitEventBasedFaceVerificationSession(request, requestOptions) {
660
690
  return this.request("/api/v1/kyc/face/submit", {
661
691
  method: "POST",
662
692
  body: JSON.stringify(request),
663
693
  headers: this.getUserHeaders()
664
- });
694
+ }, void 0, requestOptions);
665
695
  }
666
696
  /**
667
697
  * Look up the current state of a Event-Based Face Verification session by its
@@ -777,12 +807,12 @@ var KycClient = class extends BaseClient {
777
807
  * console.log(`Verification submitted: ${result.reference}`);
778
808
  * ```
779
809
  */
780
- async submitVerification(request) {
810
+ async submitVerification(request, requestOptions) {
781
811
  return this.requestWithRetry("/api/v1/kyc/submit", {
782
812
  method: "POST",
783
813
  body: JSON.stringify(request),
784
814
  headers: this.getUserHeaders()
785
- });
815
+ }, void 0, void 0, requestOptions);
786
816
  }
787
817
  /**
788
818
  * Get a KYC request by ID