vesant-sdk 1.0.4
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/README.md +247 -0
- package/dist/client-CA9Wr_qb.d.ts +1108 -0
- package/dist/client-DMNkESa0.d.mts +1108 -0
- package/dist/compliance/index.d.mts +543 -0
- package/dist/compliance/index.d.ts +543 -0
- package/dist/compliance/index.js +2133 -0
- package/dist/compliance/index.js.map +1 -0
- package/dist/compliance/index.mjs +2130 -0
- package/dist/compliance/index.mjs.map +1 -0
- package/dist/geolocation/index.d.mts +73 -0
- package/dist/geolocation/index.d.ts +73 -0
- package/dist/geolocation/index.js +1100 -0
- package/dist/geolocation/index.js.map +1 -0
- package/dist/geolocation/index.mjs +1094 -0
- package/dist/geolocation/index.mjs.map +1 -0
- package/dist/index.d.mts +50 -0
- package/dist/index.d.ts +50 -0
- package/dist/index.js +2968 -0
- package/dist/index.js.map +1 -0
- package/dist/index.mjs +2948 -0
- package/dist/index.mjs.map +1 -0
- package/dist/kyc/core.d.mts +3 -0
- package/dist/kyc/core.d.ts +3 -0
- package/dist/kyc/core.js +773 -0
- package/dist/kyc/core.js.map +1 -0
- package/dist/kyc/core.mjs +771 -0
- package/dist/kyc/core.mjs.map +1 -0
- package/dist/kyc/index.d.mts +734 -0
- package/dist/kyc/index.d.ts +734 -0
- package/dist/kyc/index.js +773 -0
- package/dist/kyc/index.js.map +1 -0
- package/dist/kyc/index.mjs +771 -0
- package/dist/kyc/index.mjs.map +1 -0
- package/dist/react.d.mts +487 -0
- package/dist/react.d.ts +487 -0
- package/dist/react.js +1122 -0
- package/dist/react.js.map +1 -0
- package/dist/react.mjs +1102 -0
- package/dist/react.mjs.map +1 -0
- package/dist/risk-profile/index.d.mts +228 -0
- package/dist/risk-profile/index.d.ts +228 -0
- package/dist/risk-profile/index.js +548 -0
- package/dist/risk-profile/index.js.map +1 -0
- package/dist/risk-profile/index.mjs +546 -0
- package/dist/risk-profile/index.mjs.map +1 -0
- package/dist/types-Bnsnejor.d.mts +150 -0
- package/dist/types-Bnsnejor.d.ts +150 -0
- package/dist/types-CFupjwi8.d.ts +213 -0
- package/dist/types-CqOLbaXk.d.mts +213 -0
- package/package.json +94 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/core/errors.ts","../../src/core/client.ts","../../src/kyc/client.ts"],"names":[],"mappings":"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","file":"core.mjs","sourcesContent":["/**\n * Error hierarchy for CGS SDK\n *\n * Provides structured error handling with specific error types\n * for different failure scenarios.\n */\n\nexport class CGSError extends Error {\n constructor(\n message: string,\n public code: string,\n public statusCode?: number,\n public details?: Record<string, unknown>\n ) {\n super(message);\n this.name = 'CGSError';\n Object.setPrototypeOf(this, CGSError.prototype);\n }\n}\n\nexport class NetworkError extends CGSError {\n constructor(message: string, public originalError?: unknown) {\n super(message, 'NETWORK_ERROR', undefined, { originalError });\n this.name = 'NetworkError';\n Object.setPrototypeOf(this, NetworkError.prototype);\n }\n}\n\nexport class ValidationError extends CGSError {\n constructor(message: string, fields?: string[]) {\n super(message, 'VALIDATION_ERROR', 400, { fields });\n this.name = 'ValidationError';\n Object.setPrototypeOf(this, ValidationError.prototype);\n }\n}\n\nexport class ServiceUnavailableError extends CGSError {\n constructor(service: string) {\n super(`${service} is unavailable`, 'SERVICE_UNAVAILABLE', 503, { service });\n this.name = 'ServiceUnavailableError';\n Object.setPrototypeOf(this, ServiceUnavailableError.prototype);\n }\n}\n\nexport class ComplianceBlockedError extends CGSError {\n constructor(reasons: string[]) {\n super('Access blocked due to compliance rules', 'COMPLIANCE_BLOCKED', 403, { reasons });\n this.name = 'ComplianceBlockedError';\n Object.setPrototypeOf(this, ComplianceBlockedError.prototype);\n }\n}\n\nexport class AuthenticationError extends CGSError {\n constructor(message: string = 'Authentication failed') {\n super(message, 'AUTHENTICATION_ERROR', 401);\n this.name = 'AuthenticationError';\n Object.setPrototypeOf(this, AuthenticationError.prototype);\n }\n}\n\nexport class RateLimitError extends CGSError {\n constructor(public retryAfter?: number) {\n super('Rate limit exceeded', 'RATE_LIMIT_EXCEEDED', 429, { retryAfter });\n this.name = 'RateLimitError';\n Object.setPrototypeOf(this, RateLimitError.prototype);\n }\n}\n\nexport class TimeoutError extends CGSError {\n constructor(public timeout: number) {\n super(`Request timeout after ${timeout}ms`, 'TIMEOUT', 408, { timeout });\n this.name = 'TimeoutError';\n Object.setPrototypeOf(this, TimeoutError.prototype);\n }\n}\n\nexport class ComplianceError extends CGSError {\n constructor(\n message: string,\n public originalError?: unknown,\n code: string = 'COMPLIANCE_ERROR'\n ) {\n super(message, code, undefined, { originalError });\n this.name = 'ComplianceError';\n Object.setPrototypeOf(this, ComplianceError.prototype);\n }\n}\n","/**\n * Base HTTP client for all CGS SDK clients\n *\n * Provides common functionality:\n * - Request/response handling\n * - Error handling\n * - Retry logic with exponential backoff\n * - Timeout management\n * - Debug logging\n */\n\nimport type { BaseClientConfig, RequiredBaseClientConfig } from './config';\nimport {\n CGSError,\n NetworkError,\n TimeoutError,\n AuthenticationError,\n RateLimitError,\n ServiceUnavailableError,\n} from './errors';\n\nexport abstract class BaseClient {\n protected config: RequiredBaseClientConfig;\n\n constructor(config: BaseClientConfig) {\n this.config = {\n baseURL: config.baseURL,\n tenantId: config.tenantId,\n apiKey: config.apiKey || '',\n headers: config.headers || {},\n timeout: config.timeout || 10000,\n retries: config.retries || 3,\n debug: config.debug || false,\n };\n }\n\n /**\n * Make an HTTP request with timeout and error handling\n */\n protected async request<T>(\n endpoint: string,\n options: RequestInit = {},\n serviceURL?: string\n ): Promise<T> {\n const url = `${serviceURL || this.config.baseURL}${endpoint}`;\n\n const headers: Record<string, string> = {\n 'Content-Type': 'application/json',\n 'X-Tenant-ID': this.config.tenantId,\n ...this.config.headers,\n ...((options.headers as Record<string, string>) || {}),\n };\n\n if (this.config.apiKey) {\n headers['Authorization'] = `Bearer ${this.config.apiKey}`;\n }\n\n const controller = new AbortController();\n const timeoutId = setTimeout(() => controller.abort(), this.config.timeout);\n\n try {\n if (this.config.debug) {\n console.log(`[CGS SDK] ${options.method || 'GET'} ${url}`, {\n headers,\n body: options.body,\n });\n }\n\n const response = await fetch(url, {\n ...options,\n headers,\n signal: controller.signal,\n });\n\n clearTimeout(timeoutId);\n\n const data = await response.json();\n\n if (!response.ok) {\n this.handleErrorResponse(response.status, data);\n }\n\n if (this.config.debug) {\n console.log(`[CGS SDK] Response:`, data);\n }\n\n return data as T;\n } catch (error) {\n clearTimeout(timeoutId);\n\n if (error instanceof Error) {\n if (error.name === 'AbortError') {\n throw new TimeoutError(this.config.timeout);\n }\n if (error instanceof CGSError) {\n throw error;\n }\n }\n\n throw new NetworkError('Network request failed', error);\n }\n }\n\n /**\n * Make an HTTP request with retry logic\n */\n protected async requestWithRetry<T>(\n endpoint: string,\n options: RequestInit = {},\n serviceURL?: string,\n retries: number = this.config.retries\n ): Promise<T> {\n let lastError: Error | undefined;\n\n for (let attempt = 0; attempt <= retries; attempt++) {\n try {\n return await this.request<T>(endpoint, options, serviceURL);\n } catch (error) {\n lastError = error instanceof Error ? error : new Error('Unknown error');\n\n // Don't retry on client errors (4xx) or authentication errors\n if (\n lastError instanceof CGSError &&\n lastError.statusCode &&\n lastError.statusCode >= 400 &&\n lastError.statusCode < 500\n ) {\n throw lastError;\n }\n\n // Don't retry on last attempt\n if (attempt === retries) {\n break;\n }\n\n // Exponential backoff with jitter\n const delay = Math.min(1000 * Math.pow(2, attempt) + Math.random() * 1000, 10000);\n await new Promise((resolve) => setTimeout(resolve, delay));\n\n if (this.config.debug) {\n console.log(`[CGS SDK] Retry attempt ${attempt + 1}/${retries} after ${delay.toFixed(0)}ms`);\n }\n }\n }\n\n throw new NetworkError(`Request failed after ${retries} retries`, lastError);\n }\n\n /**\n * Handle error responses from API\n */\n protected handleErrorResponse(status: number, data: any): never {\n const message = data.error || data.message || `HTTP ${status}`;\n\n switch (status) {\n case 400:\n throw new CGSError(message, 'BAD_REQUEST', 400, data);\n case 401:\n throw new AuthenticationError(message);\n case 403:\n throw new CGSError(message, 'FORBIDDEN', 403, data);\n case 404:\n throw new CGSError(message, 'NOT_FOUND', 404, data);\n case 429:\n const retryAfter = data.retry_after || data.retryAfter;\n throw new RateLimitError(retryAfter);\n case 500:\n case 502:\n case 503:\n case 504:\n throw new ServiceUnavailableError(message);\n default:\n throw new CGSError(message, 'UNKNOWN_ERROR', status, data);\n }\n }\n\n /**\n * Build query string from parameters\n */\n protected buildQueryString(params: Record<string, unknown>): string {\n const query = new URLSearchParams();\n\n Object.entries(params).forEach(([key, value]) => {\n if (value !== undefined && value !== null) {\n if (Array.isArray(value)) {\n value.forEach((item) => query.append(key, String(item)));\n } else {\n query.append(key, String(value));\n }\n }\n });\n\n const queryString = query.toString();\n return queryString ? `?${queryString}` : '';\n }\n\n /**\n * Update client configuration\n */\n updateConfig(config: Partial<BaseClientConfig>): void {\n this.config = {\n ...this.config,\n ...config,\n headers: {\n ...this.config.headers,\n ...(config.headers || {}),\n },\n };\n }\n\n /**\n * Get current configuration (readonly)\n */\n getConfig(): Readonly<BaseClientConfig> {\n return { ...this.config };\n }\n\n /**\n * Health check endpoint\n */\n async healthCheck(): Promise<{ status: string; timestamp: string }> {\n return this.request('/api/v1/health');\n }\n}\n","/**\n * KycClient - TypeScript SDK for CGS KYC (Know Your Customer) Service\n *\n * Provides type-safe methods to interact with the KYC service API.\n * Extends BaseClient for consistent retry logic, timeout handling, and error management.\n */\n\nimport { BaseClient } from '../core/client';\nimport type { BaseClientConfig } from '../core/config';\nimport type {\n KycClientConfig,\n KycRequest,\n KycRequestFilters,\n KycRequestListResponse,\n DocumentVerificationRequest,\n DocumentVerificationResponse,\n UpdateKycStatusRequest,\n RequestAdditionalDocumentsRequest,\n RequestKycSubmitLinkRequest,\n RequestKycSubmitLinkResponse,\n CheckKycStatusRequest,\n CheckKycStatusResponse,\n ProofDownloadURL,\n KycOverview,\n KycAlert,\n KycAlertFilters,\n KycAlertListResponse,\n UpdateKycAlertRequest,\n KycPreferences,\n UpdateKycPreferencesRequest,\n PaginationParams,\n CustomerProfile,\n CustomerProfileFilters,\n CustomerProfileListResponse,\n CreateCustomerProfileRequest,\n} from './types';\n\n/** Helper to add filter value to params, joining arrays with commas */\nfunction addFilterParam(\n params: Record<string, unknown>,\n key: string,\n value: string | string[] | undefined\n): void {\n if (value !== undefined) {\n params[key] = Array.isArray(value) ? value.join(',') : value;\n }\n}\n\n/** Helper to add simple filter values to params */\nfunction addSimpleParams(\n params: Record<string, unknown>,\n source: Record<string, unknown>,\n keys: string[]\n): void {\n for (const key of keys) {\n if (source[key] !== undefined) {\n params[key] = source[key];\n }\n }\n}\n\n/**\n * KycClient extends BaseClient for:\n * - Consistent retry logic with exponential backoff\n * - Unified error handling (CGSError, NetworkError, TimeoutError, etc.)\n * - Automatic timeout management\n * - Debug logging\n *\n * All KYC verification calls use requestWithRetry() to handle\n * transient failures gracefully.\n */\nexport class KycClient extends BaseClient {\n private userId?: string;\n private riskProfileBaseURL?: string;\n\n constructor(config: KycClientConfig) {\n // Convert KycClientConfig to BaseClientConfig\n const baseConfig: BaseClientConfig = {\n baseURL: config.baseURL,\n tenantId: config.tenantId,\n apiKey: config.apiKey,\n headers: config.headers,\n timeout: config.timeout,\n retries: 3, // Default retry count for KYC calls\n debug: config.debug,\n };\n super(baseConfig);\n this.userId = config.userId;\n this.riskProfileBaseURL = config.riskProfileBaseURL;\n }\n\n /**\n * Set the user ID for operations requiring user context\n */\n setUserId(userId: string): void {\n this.userId = userId;\n }\n\n /**\n * Get current user ID\n */\n getUserId(): string | undefined {\n return this.userId;\n }\n\n /**\n * Build headers including user ID if available\n */\n private getUserHeaders(): Record<string, string> {\n const headers: Record<string, string> = {};\n if (this.userId) {\n headers['X-User-ID'] = this.userId;\n }\n return headers;\n }\n\n // ============================================================================\n // Document Verification\n // ============================================================================\n\n /**\n * Request a KYC submission redirect URL for a user\n *\n * Generates a link that the user can visit to submit their KYC documents.\n *\n * @param request - Request containing the user ID\n * @returns Response containing the redirect link\n *\n * @example\n * ```typescript\n * const result = await client.requestKycSubmitLink({\n * user_id: \"user_123\"\n * });\n *\n * console.log(`Redirect user to: ${result.link}`);\n * ```\n */\n async requestKycSubmitLink(\n request: RequestKycSubmitLinkRequest\n ): Promise<RequestKycSubmitLinkResponse> {\n return this.requestWithRetry<RequestKycSubmitLinkResponse>('/api/v1/kyc/request', {\n method: 'POST',\n body: JSON.stringify(request),\n headers: this.getUserHeaders(),\n });\n }\n\n /**\n * Check KYC status for a user\n *\n * Returns the current KYC status:\n * - \"complete\" → KYC verified, show \"Continue to Login\"\n * - \"processing\" → Under review, show \"Continue to Login\"\n * - \"failed\" / \"declined\" → Show error + retry option\n * - \"pending\" / \"in_progress\" → Keep polling\n *\n * @param request - Request containing user_id and token\n * @returns Response with kyc_status and message (reason)\n *\n * @example\n * ```typescript\n * const result = await client.checkKycStatus({\n * user_id: \"user_123\",\n * token: \"auth_token_xyz\"\n * });\n *\n * if (result.kyc_status === 'complete') {\n * // Show \"Continue to Login\"\n * } else if (result.kyc_status === 'failed' || result.kyc_status === 'declined') {\n * // Show error + retry option\n * } else {\n * // Keep polling\n * }\n * ```\n */\n async checkKycStatus(\n request: CheckKycStatusRequest\n ): Promise<CheckKycStatusResponse> {\n const params = {\n user_id: request.user_id,\n kyc_id: request.kyc_id,\n };\n\n return this.requestWithRetry<CheckKycStatusResponse>(\n `/api/v1/kyc/request/status${this.buildQueryString(params)}`,\n {\n method: 'GET',\n headers: this.getUserHeaders(),\n }\n );\n }\n\n /**\n * Submit a document verification request with OCR\n *\n * Uses requestWithRetry() for automatic retry on transient failures.\n *\n * @param request - Document verification request with documents and customer info\n * @returns Verification response with status and reference\n *\n * @example\n * ```typescript\n * const result = await client.submitVerification({\n * reference: \"customer_123\",\n * email: \"customer@example.com\",\n * country: \"US\",\n * document: {\n * proof: base64EncodedImage,\n * selected_type: [\"id_card\", \"passport\"],\n * name: { first_name: \"John\", last_name: \"Doe\" },\n * dob: \"1990-01-15\"\n * },\n * face: {\n * proof: base64EncodedSelfie\n * }\n * });\n *\n * console.log(`Verification submitted: ${result.reference}`);\n * ```\n */\n async submitVerification(\n request: DocumentVerificationRequest\n ): Promise<DocumentVerificationResponse> {\n return this.requestWithRetry<DocumentVerificationResponse>('/api/v1/kyc/submit', {\n method: 'POST',\n body: JSON.stringify(request),\n headers: this.getUserHeaders(),\n });\n }\n\n /**\n * Get a KYC request by ID\n *\n * @param id - KYC request ID\n * @returns KYC request details including proofs and alerts\n *\n * @example\n * ```typescript\n * const kyc = await client.getKycRequest(\"kyc_abc123\");\n * console.log(`Status: ${kyc.status}, ID Verified: ${kyc.id_verified}`);\n * ```\n */\n async getKycRequest(id: string): Promise<KycRequest> {\n return this.request<KycRequest>(`/api/v1/kyc/requests/${id}`);\n }\n\n /**\n * List KYC requests with filters and pagination\n *\n * @param filters - Optional filters (status, search, date range)\n * @param pagination - Optional pagination (page, page_size)\n * @returns Paginated list of KYC requests\n *\n * @example\n * ```typescript\n * const requests = await client.listKycRequests(\n * { status: \"pending\", search: \"john\" },\n * { page: 1, page_size: 20 }\n * );\n * console.log(`Found ${requests.total} pending requests`);\n * ```\n */\n async listKycRequests(\n filters?: KycRequestFilters,\n pagination?: PaginationParams\n ): Promise<KycRequestListResponse> {\n const params: Record<string, unknown> = {};\n\n if (filters) {\n addFilterParam(params, 'status', filters.status);\n addSimpleParams(params, filters as unknown as Record<string, unknown>, ['search', 'fromDate', 'toDate', 'sortBy', 'order']);\n }\n\n if (pagination) {\n if (pagination.page) params.page = pagination.page;\n if (pagination.page_size) params.limit = pagination.page_size;\n }\n\n return this.request<KycRequestListResponse>(\n `/api/v1/kyc/requests${this.buildQueryString(params)}`,\n { headers: this.getUserHeaders() }\n );\n }\n\n /**\n * Update KYC request status (accept/decline)\n *\n * @param request - Status update request with reference, status, and reason\n *\n * @example\n * ```typescript\n * // Accept a KYC request\n * await client.updateKycStatus({\n * reference: \"shufti_ref_123\",\n * status: \"accepted\",\n * reason: \"All documents verified successfully\"\n * });\n *\n * // Decline a KYC request\n * await client.updateKycStatus({\n * reference: \"shufti_ref_456\",\n * status: \"declined\",\n * reason: \"Document expired\"\n * });\n * ```\n */\n async updateKycStatus(request: UpdateKycStatusRequest): Promise<void> {\n await this.request('/api/v1/kyc/status', {\n method: 'PUT',\n body: JSON.stringify(request),\n headers: this.getUserHeaders(),\n });\n }\n\n /**\n * Request additional documents from customer\n *\n * @param request - Request with KYC ID and document types needed\n *\n * @example\n * ```typescript\n * await client.requestAdditionalDocuments({\n * id: \"kyc_abc123\",\n * document_types: [\"address\", \"document_two\"],\n * message: \"Please provide proof of address and secondary ID\"\n * });\n * ```\n */\n async requestAdditionalDocuments(\n request: RequestAdditionalDocumentsRequest\n ): Promise<void> {\n await this.request('/api/v1/kyc/requests', {\n method: 'PUT',\n body: JSON.stringify(request),\n headers: this.getUserHeaders(),\n });\n }\n\n /**\n * Get downloadable URLs for KYC proofs/documents\n *\n * @param kycId - KYC request ID\n * @returns Array of proof download URLs with expiration\n *\n * @example\n * ```typescript\n * const proofs = await client.getProofDownloadURLs(\"kyc_abc123\");\n * proofs.forEach(proof => {\n * console.log(`${proof.type}: ${proof.url} (expires: ${proof.expires_at})`);\n * });\n * ```\n */\n async getProofDownloadURLs(kycId: string): Promise<ProofDownloadURL[]> {\n return this.request<ProofDownloadURL[]>(\n `/api/v1/kyc/proofs/${kycId}`,\n { headers: this.getUserHeaders() }\n );\n }\n\n // ============================================================================\n // KYC Overview & Statistics\n // ============================================================================\n\n /**\n * Get KYC overview statistics\n *\n * @param fromDate - Optional start date (ISO 8601)\n * @param toDate - Optional end date (ISO 8601)\n * @returns KYC statistics including counts by status\n *\n * @example\n * ```typescript\n * const overview = await client.getOverview(\n * \"2024-01-01T00:00:00Z\",\n * \"2024-12-31T23:59:59Z\"\n * );\n * console.log(`Total: ${overview.total}, Pending: ${overview.pending}`);\n * console.log(`Approved: ${overview.approved}, Rejected: ${overview.rejected}`);\n * ```\n */\n async getOverview(fromDate?: string, toDate?: string): Promise<KycOverview> {\n const params: Record<string, unknown> = {};\n if (fromDate) params.fromDate = fromDate;\n if (toDate) params.toDate = toDate;\n\n return this.request<KycOverview>(\n `/api/v1/kyc/overview${this.buildQueryString(params)}`\n );\n }\n\n // ============================================================================\n // Alert Management\n // ============================================================================\n\n /**\n * Get a KYC alert by ID\n *\n * @param alertId - Alert ID\n * @returns Alert details\n */\n async getAlert(alertId: string): Promise<KycAlert> {\n return this.request<KycAlert>(`/api/v1/kyc/alerts/${alertId}`);\n }\n\n /**\n * List KYC alerts with filters and pagination\n *\n * @param filters - Optional filters (status, risk, alert_type, assigned_for, etc.)\n * @param pagination - Optional pagination (page, page_size)\n * @returns Paginated list of alerts\n *\n * @example\n * ```typescript\n * const alerts = await client.listAlerts(\n * {\n * status: [\"pending\", \"in_progress\"],\n * risk: \"critical\",\n * alert_type: \"kyc\"\n * },\n * { page: 1, page_size: 20 }\n * );\n * console.log(`Found ${alerts.total} alerts`);\n * ```\n */\n async listAlerts(\n filters?: KycAlertFilters,\n pagination?: PaginationParams\n ): Promise<KycAlertListResponse> {\n const params: Record<string, unknown> = {};\n\n if (filters) {\n // Array filters that need comma joining\n addFilterParam(params, 'kyc_id', filters.kyc_id);\n addFilterParam(params, 'alert_type', filters.alert_type);\n addFilterParam(params, 'assigned_for', filters.assigned_for);\n addFilterParam(params, 'status', filters.status);\n addFilterParam(params, 'risk', filters.risk);\n // Simple filters\n addSimpleParams(params, filters as unknown as Record<string, unknown>, ['search', 'fromDate', 'toDate', 'sort_by', 'order']);\n }\n\n if (pagination) {\n if (pagination.page) params.page = pagination.page;\n if (pagination.page_size) params.limit = pagination.page_size;\n }\n\n return this.request<KycAlertListResponse>(\n `/api/v1/kyc/alerts${this.buildQueryString(params)}`\n );\n }\n\n /**\n * Update a KYC alert\n *\n * @param alertId - Alert ID\n * @param update - Fields to update (status, assigned_for, reason, alert_type)\n *\n * @example\n * ```typescript\n * // Assign an alert\n * await client.updateAlert(\"alert_123\", {\n * assigned_for: \"analyst_user_id\",\n * status: \"in_progress\"\n * });\n *\n * // Resolve an alert\n * await client.updateAlert(\"alert_123\", {\n * status: \"resolved\",\n * reason: \"Customer verified via phone call\"\n * });\n *\n * // Escalate an alert\n * await client.updateAlert(\"alert_123\", {\n * status: \"escalated\",\n * assigned_for: \"manager_user_id\",\n * reason: \"Requires senior review - suspicious documents\"\n * });\n * ```\n */\n async updateAlert(alertId: string, update: UpdateKycAlertRequest): Promise<void> {\n await this.request(`/api/v1/kyc/alerts/${alertId}`, {\n method: 'PUT',\n body: JSON.stringify(update),\n headers: this.getUserHeaders(),\n });\n }\n\n // ============================================================================\n // KYC Preferences\n // ============================================================================\n\n /**\n * Get KYC preferences for the tenant\n *\n * @returns KYC preferences configuration\n *\n * @example\n * ```typescript\n * const prefs = await client.getPreferences();\n * console.log(`Face verification required: ${prefs.is_face_verification_required}`);\n * console.log(`Required documents: ${prefs.required_document_count}`);\n * ```\n */\n async getPreferences(): Promise<KycPreferences> {\n return this.request<KycPreferences>('/api/v1/kyc/preferences');\n }\n\n /**\n * Update KYC preferences for the tenant\n *\n * @param update - Fields to update\n * @returns Updated preferences\n *\n * @example\n * ```typescript\n * await client.updatePreferences({\n * is_face_verification_required: true,\n * is_address_verification_required: true,\n * required_document_count: 2,\n * reasons: [\n * \"Documents verified\",\n * \"Identity confirmed\",\n * \"Address matched\"\n * ]\n * });\n * ```\n */\n async updatePreferences(\n update: UpdateKycPreferencesRequest\n ): Promise<KycPreferences> {\n return this.request<KycPreferences>('/api/v1/kyc/preferences', {\n method: 'PUT',\n body: JSON.stringify(update),\n });\n }\n\n // ============================================================================\n // Customer Profile Management (Risk Profile Service)\n // ============================================================================\n\n /**\n * Make a request to the Risk Profile Service\n * Uses riskProfileBaseURL if configured, otherwise falls back to baseURL\n */\n private async riskProfileRequest<T>(\n path: string,\n options: RequestInit = {}\n ): Promise<T> {\n if (!this.riskProfileBaseURL) {\n throw new Error(\n 'Risk Profile Service URL not configured. Please provide riskProfileBaseURL in KycClientConfig.'\n );\n }\n\n const url = `${this.riskProfileBaseURL}${path}`;\n const config = this.getConfig();\n\n const headers: Record<string, string> = {\n 'Content-Type': 'application/json',\n 'X-Tenant-ID': config.tenantId,\n ...(config.apiKey ? { Authorization: `Bearer ${config.apiKey}` } : {}),\n ...this.getUserHeaders(),\n ...(options.headers as Record<string, string>),\n };\n\n const response = await fetch(url, {\n ...options,\n headers,\n });\n\n if (!response.ok) {\n const errorData = await response.json().catch(() => ({}));\n return this.handleErrorResponse(response.status, errorData) as never;\n }\n\n return response.json();\n }\n\n /**\n * List customer profiles for the tenant\n *\n * @param filters - Optional filters (risk_category, entity_type, status, search, etc.)\n * @param pagination - Optional pagination (limit, offset)\n * @returns Paginated list of customer profiles\n *\n * @example\n * ```typescript\n * const profiles = await client.listCustomerProfiles(\n * { risk_category: 'high', entity_type: 'individual' },\n * { limit: 20, offset: 0 }\n * );\n * console.log(`Found ${profiles.total} profiles`);\n * profiles.profiles.forEach(p => console.log(p.customer_id, p.full_name));\n * ```\n */\n async listCustomerProfiles(\n filters?: CustomerProfileFilters,\n pagination?: { limit?: number; offset?: number }\n ): Promise<CustomerProfileListResponse> {\n const params: Record<string, unknown> = {};\n\n if (filters) {\n // Array filters (keep as arrays for this API)\n if (filters.risk_category) {\n params.risk_category = Array.isArray(filters.risk_category)\n ? filters.risk_category\n : [filters.risk_category];\n }\n if (filters.entity_type) {\n params.entity_type = Array.isArray(filters.entity_type)\n ? filters.entity_type\n : [filters.entity_type];\n }\n if (filters.status) {\n params.status = Array.isArray(filters.status)\n ? filters.status\n : [filters.status];\n }\n // Simple filters\n addSimpleParams(params, filters as unknown as Record<string, unknown>, [\n 'search', 'is_pep', 'has_sanctions', 'requires_edd', 'sort_by', 'sort_order'\n ]);\n }\n\n if (pagination) {\n addSimpleParams(params, pagination, ['limit', 'offset']);\n }\n\n return this.riskProfileRequest<CustomerProfileListResponse>(\n `/api/v1/risk-dashboard/profiles${this.buildQueryString(params)}`\n );\n }\n\n /**\n * Get a customer profile by ID\n *\n * @param profileId - The profile UUID\n * @returns Customer profile details\n *\n * @example\n * ```typescript\n * const profile = await client.getCustomerProfile('uuid-here');\n * console.log(`Customer: ${profile.full_name}, Risk: ${profile.risk_category}`);\n * ```\n */\n async getCustomerProfile(profileId: string): Promise<CustomerProfile> {\n return this.riskProfileRequest<CustomerProfile>(\n `/api/v1/risk-dashboard/profiles/${profileId}`\n );\n }\n\n /**\n * Create a new customer profile\n *\n * A customer profile must exist before submitting KYC verification.\n * The customer_id field will be used as the 'reference' in KYC submissions.\n *\n * @param profile - Customer profile data\n * @returns Created customer profile\n *\n * @example\n * ```typescript\n * const profile = await client.createCustomerProfile({\n * customer_id: 'cust_123',\n * entity_type: 'individual',\n * full_name: 'John Doe',\n * email_address: 'john@example.com',\n * country_of_residence: 'US'\n * });\n * console.log(`Created profile: ${profile.id}`);\n *\n * // Now you can submit KYC using the customer_id as reference\n * await client.submitVerification({\n * reference: profile.customer_id, // 'cust_123'\n * email: 'john@example.com',\n * // ... other fields\n * });\n * ```\n */\n async createCustomerProfile(\n profile: CreateCustomerProfileRequest\n ): Promise<CustomerProfile> {\n return this.riskProfileRequest<CustomerProfile>('/api/v1/profiles', {\n method: 'POST',\n body: JSON.stringify(profile),\n });\n }\n\n // ============================================================================\n // Utility Methods (inherited from BaseClient: healthCheck, updateConfig, getConfig, buildQueryString)\n // ============================================================================\n}\n"]}
|