From 6adfa4d0e636c7fd700dddd39da27cbfed4073d0 Mon Sep 17 00:00:00 2001 From: Pranav Mahadik Date: Tue, 16 Apr 2024 19:49:46 +0530 Subject: [PATCH] JS-SDK --- .github/workflows/on_merge_main.yml | 37 + .github/workflows/on_pull_request.yml | 34 + .gitignore | 5 + LICENSE | 21 + README.md | 79 + common.d.ts | 4 + common.js | 9 + documentation/platform/CREDIT.md | 1050 +++ documentation/platform/CUSTOMER.md | 3079 +++++++++ documentation/platform/MULTIKYC.md | 2388 +++++++ documentation/platform/README.md | 8 + index.d.ts | 7 + index.js | 12 + jest.config.d.ts | 4 + jest.config.js | 6 + package-lock.json | 6478 +++++++++++++++++++ package.json | 36 + platform.d.ts | 3 + platform.js | 6 + sdk/common/AxiosHelper.d.ts | 1 + sdk/common/AxiosHelper.js | 130 + sdk/common/Constant.d.ts | 271 + sdk/common/Constant.js | 259 + sdk/common/FDKError.d.ts | 26 + sdk/common/FDKError.js | 51 + sdk/common/Paginator.d.ts | 16 + sdk/common/Paginator.js | 26 + sdk/common/RequestSigner.d.ts | 1 + sdk/common/RequestSigner.js | 310 + sdk/common/Storage.d.ts | 13 + sdk/common/Storage.js | 163 + sdk/common/Utility.d.ts | 9 + sdk/common/Utility.js | 61 + sdk/common/utils.d.ts | 29 + sdk/common/utils.js | 195 + sdk/platform/OAuthClient.d.ts | 23 + sdk/platform/OAuthClient.js | 121 + sdk/platform/PlatformAPIClient.d.ts | 13 + sdk/platform/PlatformAPIClient.js | 48 + sdk/platform/PlatformApplicationClient.d.ts | 2138 ++++++ sdk/platform/PlatformApplicationClient.js | 2833 ++++++++ sdk/platform/PlatformApplicationModels.d.ts | 1 + sdk/platform/PlatformApplicationModels.js | 4340 +++++++++++++ sdk/platform/PlatformClient.d.ts | 4766 ++++++++++++++ sdk/platform/PlatformClient.js | 3361 ++++++++++ sdk/platform/PlatformConfig.d.ts | 31 + sdk/platform/PlatformConfig.js | 30 + sdk/platform/PlatformModels.d.ts | 22 + sdk/platform/PlatformModels.js | 4443 +++++++++++++ sdk/platform/index.d.ts | 2 + sdk/platform/index.js | 4 + tests/helpers/cookie.helper.js | 31 + tests/helpers/oauth.helper.js | 43 + 53 files changed, 37077 insertions(+) create mode 100644 .github/workflows/on_merge_main.yml create mode 100644 .github/workflows/on_pull_request.yml create mode 100644 .gitignore create mode 100644 LICENSE create mode 100644 README.md create mode 100644 common.d.ts create mode 100644 common.js create mode 100644 documentation/platform/CREDIT.md create mode 100644 documentation/platform/CUSTOMER.md create mode 100644 documentation/platform/MULTIKYC.md create mode 100644 documentation/platform/README.md create mode 100644 index.d.ts create mode 100644 index.js create mode 100644 jest.config.d.ts create mode 100644 jest.config.js create mode 100644 package-lock.json create mode 100644 package.json create mode 100644 platform.d.ts create mode 100644 platform.js create mode 100644 sdk/common/AxiosHelper.d.ts create mode 100644 sdk/common/AxiosHelper.js create mode 100644 sdk/common/Constant.d.ts create mode 100644 sdk/common/Constant.js create mode 100644 sdk/common/FDKError.d.ts create mode 100644 sdk/common/FDKError.js create mode 100644 sdk/common/Paginator.d.ts create mode 100644 sdk/common/Paginator.js create mode 100644 sdk/common/RequestSigner.d.ts create mode 100644 sdk/common/RequestSigner.js create mode 100644 sdk/common/Storage.d.ts create mode 100644 sdk/common/Storage.js create mode 100644 sdk/common/Utility.d.ts create mode 100644 sdk/common/Utility.js create mode 100644 sdk/common/utils.d.ts create mode 100644 sdk/common/utils.js create mode 100644 sdk/platform/OAuthClient.d.ts create mode 100644 sdk/platform/OAuthClient.js create mode 100644 sdk/platform/PlatformAPIClient.d.ts create mode 100644 sdk/platform/PlatformAPIClient.js create mode 100644 sdk/platform/PlatformApplicationClient.d.ts create mode 100644 sdk/platform/PlatformApplicationClient.js create mode 100644 sdk/platform/PlatformApplicationModels.d.ts create mode 100644 sdk/platform/PlatformApplicationModels.js create mode 100644 sdk/platform/PlatformClient.d.ts create mode 100644 sdk/platform/PlatformClient.js create mode 100644 sdk/platform/PlatformConfig.d.ts create mode 100644 sdk/platform/PlatformConfig.js create mode 100644 sdk/platform/PlatformModels.d.ts create mode 100644 sdk/platform/PlatformModels.js create mode 100644 sdk/platform/index.d.ts create mode 100644 sdk/platform/index.js create mode 100644 tests/helpers/cookie.helper.js create mode 100644 tests/helpers/oauth.helper.js diff --git a/.github/workflows/on_merge_main.yml b/.github/workflows/on_merge_main.yml new file mode 100644 index 0000000..9772386 --- /dev/null +++ b/.github/workflows/on_merge_main.yml @@ -0,0 +1,37 @@ +name: Merge CI + +on: + push: + branches: [ main ] + +jobs: + build: + + runs-on: ubuntu-latest + + strategy: + matrix: + node-version: [12.x, 14.x, 15.x] + + steps: + - uses: actions/checkout@v2 + + - name: Use Node.js ${{ matrix.node-version }} + uses: actions/setup-node@v1 + with: + node-version: ${{ matrix.node-version }} + + - name: npm install, npm test + run: | + npm install + npm test + env: + API_KEY: ${{ secrets.API_KEY }} + API_SECRET: ${{ secrets.API_SECRET }} + APP_USERNAME: ${{ secrets.APP_USERNAME }} + PASSWORD: ${{ secrets.PASSWORD }} + + - name: Coveralls (Uploading test report) + uses: coverallsapp/github-action@master + with: + github-token: ${{ secrets.GITHUB_TOKEN }} \ No newline at end of file diff --git a/.github/workflows/on_pull_request.yml b/.github/workflows/on_pull_request.yml new file mode 100644 index 0000000..a768d96 --- /dev/null +++ b/.github/workflows/on_pull_request.yml @@ -0,0 +1,34 @@ +name: Pull Request CI + +on: + push: + branches: [ fyndx0 ] + pull_request: + branches: [ main ] + +jobs: + build: + + runs-on: ubuntu-latest + + strategy: + matrix: + node-version: [12.x, 14.x, 15.x] + + steps: + - uses: actions/checkout@v2 + + - name: Use Node.js ${{ matrix.node-version }} + uses: actions/setup-node@v1 + with: + node-version: ${{ matrix.node-version }} + + - name: npm install, npm test + run: | + npm install + npm test + env: + API_KEY: ${{ secrets.API_KEY }} + API_SECRET: ${{ secrets.API_SECRET }} + APP_USERNAME: ${{ secrets.APP_USERNAME }} + PASSWORD: ${{ secrets.PASSWORD }} diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..9038d86 --- /dev/null +++ b/.gitignore @@ -0,0 +1,5 @@ +# dotenv environment variables file +.env +.env.test +.env.production +node_modules \ No newline at end of file diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..1065605 --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2021 Fynd + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/README.md b/README.md new file mode 100644 index 0000000..54a5c1f --- /dev/null +++ b/README.md @@ -0,0 +1,79 @@ +# FDK Javascript + +![GitHub package.json version](https://img.shields.io/github/package-json/v/gofynd/fdk-client-javascript?style=plastic) +![GitHub Workflow Status](https://img.shields.io/github/workflow/status/gofynd/fdk-client-javascript/Node.js%20CI?style=plastic) +![GitHub](https://img.shields.io/github/license/gofynd/fdk-client-javascript?style=plastic) +[![Coverage Status](https://coveralls.io/repos/github/gofynd/fdk-client-javascript/badge.svg)](https://coveralls.io/github/gofynd/fdk-client-javascript) + +FDK client for Javascript + +## Getting Started + +Get started with the Javascript Development SDK for Potlee + +### Usage + +``` +npm install fdk-client-javascript --save +``` + +Using this method, you can `require` fdk-client-javascript like so: + +```js +const { + ApplicationConfig, + ApplicationClient, +} = require("fdk-client-javascript"); +``` + +### Sample Usage - ApplicationClient + +```javascript +const config = new ApplicationConfig({ + applicationID: "YOUR_APPLICATION_ID", + applicationToken: "YOUR_APPLICATION_TOKEN", + locationDetails: "LOCATION_DETAILS_OBJECT" +}); + +const applicationClient = new ApplicationClient(config); + +``` + +### Sample Usage - PlatformClient + +```javascript +const { PlatformConfig, PlatformClient } = require("fdk-client-javascript"); + +let platformConfig = new PlatformConfig({ + companyId: "COMPANY_ID", + apiKey: "API_KEY", + apiSecret: "API_SECRET", + domain: "DOMAIN", + useAutoRenewTimer: true +}); + +async function getData() { + try { + // TODO: get token using OAuth + platformConfig.oauthClient.setToken(token.access_token); + const client = new PlatformClient(platformConfig); + } catch (err) { + console.log(err); + } +} + +getData(); +``` + +### TypeScript + +fdk-client-javascript includes Typescript definitions. + +```typescript +import { ApplicationConfig, ApplicationClient } from "fdk-client-javascript"; +``` + +### Documentation + +- [Application Front](documentation/application/README.md) +- [Platform Front](documentation/platform/README.md) diff --git a/common.d.ts b/common.d.ts new file mode 100644 index 0000000..d6fb9c2 --- /dev/null +++ b/common.d.ts @@ -0,0 +1,4 @@ +import { fdkAxios } from "./sdk/common/AxiosHelper"; +import Utility = require("./sdk/common/Utility"); +import Constant = require("./sdk/common/Constant"); +export { fdkAxios as FdkAxios, Utility, Constant }; diff --git a/common.js b/common.js new file mode 100644 index 0000000..20cb6ae --- /dev/null +++ b/common.js @@ -0,0 +1,9 @@ +const {fdkAxios} = require('./sdk/common/AxiosHelper'); +const Utility = require('./sdk/common/Utility'); +const Constant = require('./sdk/common/Constant'); + +module.exports = { + FdkAxios: fdkAxios, + Utility, + Constant, +}; diff --git a/documentation/platform/CREDIT.md b/documentation/platform/CREDIT.md new file mode 100644 index 0000000..f90c510 --- /dev/null +++ b/documentation/platform/CREDIT.md @@ -0,0 +1,1050 @@ + + + + +##### [Back to Platform docs](./README.md) + +## Credit Methods +Transaction Service +* [disburse](#disburse) +* [getOrderStatus](#getorderstatus) +* [getEligiblePlans](#geteligibleplans) + + + +## Methods with example and description + + +### disburse +Disburse the credit + + + +```javascript +// Promise +const promise = + credit.disburse( + { + disbursalRequest : value + + } + ); + +// Async/Await +const data = await + credit.disburse( + { + disbursalRequest : value + + }); +``` + + + + + +| Argument | Type | Required | Description | +| --------- | ----- | -------- | ----------- | +| body | [DisbursalRequest](#DisbursalRequest) | yes | Request body | + + +Use this API to disburse the credit. + +*Returned Response:* + + + + +[DisbursalResponse](#DisbursalResponse) + +Success. Returns a JSON object as shown below. Refer `DisbursalResponse` for more details. + + + + +
+  Examples: + + +
+  success + +```json +true +``` +
+ +
+ + + + + + + + + +--- + + +### getOrderStatus +check status of the order + + + +```javascript +// Promise +const promise = + credit.getOrderStatus( + { + orderId : value + + } + ); + +// Async/Await +const data = await + credit.getOrderStatus( + { + orderId : value + + }); +``` + + + + + +| Argument | Type | Required | Description | +| --------- | ----- | -------- | ----------- | +| orderId | string | yes | This is order ID | + + + +Use this API to check status the order. + +*Returned Response:* + + + + +[OrderStatus](#OrderStatus) + +Success. Returns a JSON object as shown below. Refer `OrderStatus` for more details. + + + + +
+  Examples: + + +
+  orderId + +```json +"FY12345" +``` +
+ +
+  transactionId + +```json +"TXN123567890" +``` +
+ +
+  status + +```json +"PAYMENT_CAPTURED" +``` +
+ +
+  message + +```json +"Payment Accepted" +``` +
+ +
+ + + + + + + + + +--- + + +### getEligiblePlans +Get eligible plans + + + +```javascript +// Promise +const promise = + credit.getEligiblePlans( + { + lenderSlug : value, + disbursalRequest : value + + } + ); + +// Async/Await +const data = await + credit.getEligiblePlans( + { + lenderSlug : value, + disbursalRequest : value + + }); +``` + + + + + +| Argument | Type | Required | Description | +| --------- | ----- | -------- | ----------- | +| lenderSlug | string | yes | This is lender slug | +| body | [EligiblePlansRequest](#EligiblePlansRequest) | yes | Request body | + + +Use this API to Get eligible plans. + +*Returned Response:* + + + + +[EligiblePlansResponse](#EligiblePlansResponse) + +Success. Returns a JSON object as shown below. Refer `EligiblePlansResponse` for more details. + + + + +
+  Examples: + + +
+  success + +```json +true +``` +
+ +
+ + + + + + + + + +--- + + + +### Schemas + + + + #### [ErrorResponse](#ErrorResponse) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | message | string | no | | + | info | string | no | | + | code | string | no | | + | requestId | string | no | | + | meta | string | no | | + +--- + + + + + #### [DisbursalRequest](#DisbursalRequest) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | fingerprint | string | no | | + | chargeToken | string | yes | | + | loanTypeId | number | no | | + | emiTenure | number | no | | + | isDownpaymentRequired | boolean | no | | + | downpaymentAmount | number | no | | + | loanAmount | number | no | | + +--- + + + + + #### [WorkflowUser](#WorkflowUser) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | mobile | string | no | | + +--- + + + + + #### [EligiblePlansRequest](#EligiblePlansRequest) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | chargeToken | string | no | | + +--- + + + + + #### [EligiblePlans](#EligiblePlans) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | name | string | no | | + | displayName | string | no | | + | description | string | no | | + | brokenInterest | number | no | | + | noOfEmi | number | no | | + | emiAmount | number | no | | + | processingFee | number | no | | + | installmentInterestRate | number | no | | + +--- + + + + + #### [EligiblePlansResponse](#EligiblePlansResponse) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | eligiblePlans | [[EligiblePlans](#EligiblePlans)] | no | | + | __headers | string | no | | + +--- + + + + + #### [DisbursalResponse](#DisbursalResponse) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | transactionId | string | no | | + | status | string | no | | + | message | string | no | | + | __headers | string | no | | + +--- + + + + + #### [OrderStatus](#OrderStatus) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | orderId | string | yes | | + | transactionId | string | no | | + | status | string | yes | | + | message | string | yes | | + | __headers | string | no | | + +--- + + + + + #### [DisbursalStatusRequest](#DisbursalStatusRequest) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | fingerprint | string | no | | + | transactionId | string | yes | | + +--- + + + + + #### [Transactions](#Transactions) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | id | string | yes | | + | userId | string | yes | | + | partnerId | string | no | | + | partner | string | no | | + | partnerLogo | string | no | | + | status | string | yes | | + | type | string | no | | + | remark | string | no | | + | amount | number | yes | | + | loanAccountNumber | string | no | | + | kfs | string | no | | + | utr | string | no | | + | sanctionLetter | string | no | | + | orderId | string | no | | + | refundId | string | no | | + | createdAt | string | yes | | + | lenderId | string | no | | + | lenderName | string | no | | + | lenderLogo | string | no | | + | loanType | string | no | | + | repaymentTransactionId | string | no | | + | nextDueDate | string | no | | + | paidPercent | number | no | | + | lenderDetail | [LenderDetail](#LenderDetail) | no | | + | emis | [[Emi](#Emi)] | no | | + +--- + + + + + #### [LenderDetail](#LenderDetail) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | id | string | no | | + | name | string | no | | + | imageUrl | string | no | | + | slug | string | no | | + | active | boolean | no | | + | b2b | boolean | no | | + | b2c | boolean | no | | + | theme | [Theme](#Theme) | no | | + | createdAt | string | no | | + | updatedAt | string | no | | + | deletedAt | string | no | | + +--- + + + + + #### [FilterKeys](#FilterKeys) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | display | string | no | | + | name | string | no | | + | kind | string | no | | + +--- + + + + + #### [FilterValues](#FilterValues) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | display | string | no | | + | isSelected | boolean | no | | + | value | string | no | | + +--- + + + + + #### [Filters](#Filters) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | key | [FilterKeys](#FilterKeys) | no | | + | values | [[FilterValues](#FilterValues)] | no | | + +--- + + + + + #### [PageResponse](#PageResponse) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | type | string | yes | | + | current | number | yes | | + | hasPrevious | boolean | yes | | + | hasNext | boolean | yes | | + | size | number | yes | | + | itemTotal | number | yes | | + +--- + + + + + #### [FilterByDate](#FilterByDate) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | startDate | string | no | | + | endDate | string | no | | + +--- + + + + + #### [TransactionResponse](#TransactionResponse) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | filters | [[Filters](#Filters)] | yes | | + | page | [PageResponse](#PageResponse) | yes | | + | transactions | [[Transactions](#Transactions)] | yes | | + +--- + + + + + #### [MerchantTransactions](#MerchantTransactions) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | outstandingAmount | string | no | | + +--- + + + + + #### [MerchantTransactionSummary](#MerchantTransactionSummary) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | merchantOutstandingSummary | [MerchantTransactions](#MerchantTransactions) | no | | + +--- + + + + + #### [GetReconciliationFileResponse](#GetReconciliationFileResponse) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | files | [[ReconFile](#ReconFile)] | yes | | + +--- + + + + + #### [ReconFile](#ReconFile) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | base64 | string | yes | | + | name | string | yes | | + +--- + + + + + #### [UploadReconciliationFileRequest](#UploadReconciliationFileRequest) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | base64File | string | yes | | + | format | string | no | | + | lenderId | string | no | | + +--- + + + + + #### [UploadReconciliationFileResponse](#UploadReconciliationFileResponse) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | success | boolean | no | | + +--- + + + + + #### [TransactionCount](#TransactionCount) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | totalTransactions | string | no | | + +--- + + + + + #### [RefundCount](#RefundCount) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | refundTransactions | string | no | | + +--- + + + + + #### [OrganizationTransactionsCount](#OrganizationTransactionsCount) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | count | number | no | | + +--- + + + + + #### [OrganizationTransactionsSum](#OrganizationTransactionsSum) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | sum | number | no | | + +--- + + + + + #### [UniqueCustomersInOrg](#UniqueCustomersInOrg) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | count | number | no | | + +--- + + + + + #### [TransactionAmount](#TransactionAmount) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | totalTransactionAmount | string | no | | + +--- + + + + + #### [SchemaForOneDayTotal](#SchemaForOneDayTotal) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | orgId | string | no | | + | createdAt | string | no | | + | count | number | no | | + | sum | string | no | | + | refund | string | no | | + | difference | string | no | | + +--- + + + + + #### [SumofOneDayTransactions](#SumofOneDayTransactions) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | dayTotal | [[SchemaForOneDayTotal](#SchemaForOneDayTotal)] | no | | + +--- + + + + + #### [AverageTransaction](#AverageTransaction) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | average | number | no | | + +--- + + + + + #### [AllTransactionsResponse](#AllTransactionsResponse) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | id | string | no | | + | userId | string | no | | + | partnerId | string | no | | + | status | string | no | | + | type | string | no | | + | remark | string | no | | + | amount | number | no | | + | loanAccountNumber | string | no | | + | createdAt | string | no | | + +--- + + + + + #### [TotalRefund](#TotalRefund) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | totalRefund | string | no | | + +--- + + + + + #### [TotalRepayment](#TotalRepayment) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | totalRepayment | string | no | | + +--- + + + + + #### [TotalOverDue](#TotalOverDue) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | totalDue | string | no | | + +--- + + + + + #### [TotalLoansDisbursed](#TotalLoansDisbursed) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | totalLoansDisbursed | string | no | | + +--- + + + + + #### [OrganizationTransactionResponse](#OrganizationTransactionResponse) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | filters | [[TrFilters](#TrFilters)] | yes | | + | page | [TrPageResponse](#TrPageResponse) | yes | | + | transactions | [[OrgTransactions](#OrgTransactions)] | yes | | + +--- + + + + + #### [TrFilters](#TrFilters) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | key | [TrFilterKeys](#TrFilterKeys) | no | | + | values | [[TrFilterValues](#TrFilterValues)] | no | | + +--- + + + + + #### [TrPageResponse](#TrPageResponse) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | type | string | yes | | + | current | number | yes | | + | hasPrevious | boolean | yes | | + | hasNext | boolean | yes | | + | size | number | yes | | + | itemTotal | number | yes | | + +--- + + + + + #### [OrgTransactions](#OrgTransactions) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | id | string | yes | | + | userId | string | yes | | + | userName | string | no | | + | partnerId | string | no | | + | partner | string | no | | + | partnerLogo | string | no | | + | status | string | yes | | + | type | string | no | | + | remark | string | no | | + | amount | number | yes | | + | orderId | string | no | | + | loanAccountNumber | string | no | | + | kfs | string | no | | + | sanctionLetter | string | no | | + | createdAt | string | yes | | + +--- + + + + + #### [TrFilterKeys](#TrFilterKeys) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | display | string | no | | + | name | string | no | | + | kind | string | no | | + +--- + + + + + #### [TrFilterValues](#TrFilterValues) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | display | string | no | | + | isSelected | boolean | no | | + | value | string | no | | + +--- + + + + + #### [KfsRequest](#KfsRequest) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | loanTypeId | number | no | | + | chargeToken | string | no | | + +--- + + + + + #### [KfsResponse](#KfsResponse) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | kfsTable | string | no | | + +--- + + + + + #### [LenderTransactionState](#LenderTransactionState) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | id | string | no | | + | stepIndex | number | no | | + | lenderId | string | no | | + | workflowId | string | no | | + | workflowName | string | no | | + | parentStateId | string | no | | + | workflowUrl | string | no | | + | isInternal | boolean | no | | + | active | boolean | no | | + | ttl | number | no | | + | name | string | no | | + | type | string | no | | + | inputData | string | no | | + | createdAt | string | no | | + | updatedAt | string | no | | + | deletedAt | string | no | | + +--- + + + + + #### [TransactionStateResponse](#TransactionStateResponse) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | transactionState | [[LenderTransactionState](#LenderTransactionState)] | no | | + +--- + + + + + #### [Theme](#Theme) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | logoUrl | string | no | | + | iconUrl | string | no | | + | landscapeBgUrl | string | no | | + | portraitBgUrl | string | no | | + | shortName | string | no | | + +--- + + + + + #### [Emi](#Emi) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | id | string | no | | + | userId | string | no | | + | installmentno | number | no | | + | loanAccountNumber | string | no | | + | amount | number | no | | + | dueDate | string | no | | + | referenceTransactionId | string | no | | + | remark | string | no | | + | createdAt | string | no | | + | updatedAt | string | no | | + | entityId | string | no | | + | paid | boolean | no | | + | overdue | boolean | no | | + | repaymentDate | string | no | | + +--- + + + + + #### [MetricPivots](#MetricPivots) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | date | string | no | | + | sum | number | no | | + +--- + + + + + #### [TransactionMetricSubResponse](#TransactionMetricSubResponse) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | total | string | no | | + | pivots | [[MetricPivots](#MetricPivots)] | no | | + | title | string | no | | + | description | string | no | | + | valueFormat | string | no | | + | logo | string | no | | + +--- + + + + + #### [TransactionMetrics](#TransactionMetrics) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | totalDisbursement | [TransactionMetricSubResponse](#TransactionMetricSubResponse) | no | | + | totalOverdue | [TransactionMetricSubResponse](#TransactionMetricSubResponse) | no | | + | totalRepayment | [TransactionMetricSubResponse](#TransactionMetricSubResponse) | no | | + +--- + + + + + #### [LenderCustomerTransactionMetricsFilters](#LenderCustomerTransactionMetricsFilters) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | type | string | yes | | + | display | string | yes | | + | value | [string] | yes | | + | isSelected | boolean | no | | + | isActive | boolean | yes | | + +--- + + + + + #### [LenderCustomerTransactionMetrics](#LenderCustomerTransactionMetrics) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | metrics | [TransactionMetrics](#TransactionMetrics) | no | | + | filters | [[LenderCustomerTransactionMetricsFilters](#LenderCustomerTransactionMetricsFilters)] | no | | + | sort | [[LenderCustomerTransactionMetricsFilters](#LenderCustomerTransactionMetricsFilters)] | no | | + +--- + + + + + #### [LenderCustomerTransactionMetricsResponse](#LenderCustomerTransactionMetricsResponse) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | data | string | no | | + +--- + + + + + #### [LenderCustomerTransactionMetricsRequest](#LenderCustomerTransactionMetricsRequest) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | filters | [[LenderCustomerTransactionMetricsFilters](#LenderCustomerTransactionMetricsFilters)] | no | | + | sort | [[LenderCustomerTransactionMetricsFilters](#LenderCustomerTransactionMetricsFilters)] | no | | + | startDate | string | no | | + | endDate | string | no | | + | merchantId | string | no | | + | lenderId | string | no | | + | pivotPoints | number | no | | + +--- + + + + diff --git a/documentation/platform/CUSTOMER.md b/documentation/platform/CUSTOMER.md new file mode 100644 index 0000000..43c2b4c --- /dev/null +++ b/documentation/platform/CUSTOMER.md @@ -0,0 +1,3079 @@ + + + + +##### [Back to Platform docs](./README.md) + +## Customer Methods +Authentication Service +* [verify](#verify) +* [resendPaymentRequest](#resendpaymentrequest) +* [createOrder](#createorder) +* [link](#link) +* [unlink](#unlink) +* [getAccessToken](#getaccesstoken) +* [renewAccessToken](#renewaccesstoken) +* [refund](#refund) +* [refundStatus](#refundstatus) +* [getSchemes](#getschemes) +* [checkEligibility](#checkeligibility) + + + +## Methods with example and description + + +### verify +Verify Customer + + + +```javascript +// Promise +const promise = + customer.verify( + { + disbursalRequest : value + + } + ); + +// Async/Await +const data = await + customer.verify( + { + disbursalRequest : value + + }); +``` + + + + + +| Argument | Type | Required | Description | +| --------- | ----- | -------- | ----------- | +| body | [VerifyCustomer](#VerifyCustomer) | yes | Request body | + + +Use this API to verify the customer based on mobile number and countryCode. + +*Returned Response:* + + + + +[VerifyCustomerSuccess](#VerifyCustomerSuccess) + +Success. Returns a JSON object as shown below. Refer `VerifyCustomerSuccess` for more details. + + + + +
+  Examples: + + +
+  status + +```json +"enabled" +``` +
+ +
+ + + + + + + + + +--- + + +### resendPaymentRequest +Resend Payment Request + + + +```javascript +// Promise +const promise = + customer.resendPaymentRequest( + { + disbursalRequest : value + + } + ); + +// Async/Await +const data = await + customer.resendPaymentRequest( + { + disbursalRequest : value + + }); +``` + + + + + +| Argument | Type | Required | Description | +| --------- | ----- | -------- | ----------- | +| body | [ResendPaymentRequest](#ResendPaymentRequest) | yes | Request body | + + +Use this API to resend payment request to user + +*Returned Response:* + + + + +[CreateTransactionSuccess](#CreateTransactionSuccess) + +Success. Returns a JSON object as shown below. Refer `CreateTransactionSuccess` for more details. + + + + +
+  Examples: + + +
+  redirectUrl + +```json +"https://account.potleex0.de/auth/login?onboardingToken=e738521b-a763-460d-a440-d9570e79be47&redirectUrl=https://local.potleex0.de:3003/callback?apiKey=0c8e7bbf-6c0c-41b1-8a37-7e066e8fbd4a&apiSecret=48a7d96f46868f78297be845b6afb5da50893d0b&domain=https://api.potleex0.de" +``` +
+ +
+  message + +```json +"Payment Authorised" +``` +
+ +
+  userStatus + +```json +"PAYMENT_AUTHORISED" +``` +
+ +
+ + + + + + + + + +--- + + +### createOrder +Create Order + + + +```javascript +// Promise +const promise = + customer.createOrder( + { + disbursalRequest : value + + } + ); + +// Async/Await +const data = await + customer.createOrder( + { + disbursalRequest : value + + }); +``` + + + + + +| Argument | Type | Required | Description | +| --------- | ----- | -------- | ----------- | +| body | [CreateTransaction](#CreateTransaction) | yes | Request body | + + +Use this API to create transaction for user + +*Returned Response:* + + + + +[CreateTransactionSuccess](#CreateTransactionSuccess) + +Success. Returns a JSON object as shown below. Refer `CreateTransactionSuccess` for more details. + + + + +
+  Examples: + + +
+  chargeToken + +```json +"19be735d-5a4a-4c44-8f2b-d640f7509c4d" +``` +
+ +
+  transactionId + +```json +"6b5e3348-23b0-43cb-af98-37d603385369" +``` +
+ +
+ + + + + + + + + +--- + + +### link +Link account + + + +```javascript +// Promise +const promise = + customer.link( + { + disbursalRequest : value + + } + ); + +// Async/Await +const data = await + customer.link( + { + disbursalRequest : value + + }); +``` + + + + + +| Argument | Type | Required | Description | +| --------- | ----- | -------- | ----------- | +| body | [LinkAccount](#LinkAccount) | yes | Request body | + + +Use this API to link account with merchant + +*Returned Response:* + + + + +[LinkAccountSuccess](#LinkAccountSuccess) + +Success. Returns a JSON object as shown below. Refer `LinkAccountSuccess` for more details. + + + + +
+  Examples: + + +
+  redirectUrl + +```json +"https://account.potlee.co.in/auth/login?linkingToken=1245rtfyg765" +``` +
+ +
+ + + + + + + + + +--- + + +### unlink +Unlink account + + + +```javascript +// Promise +const promise = + customer.unlink( + { + disbursalRequest : value + + } + ); + +// Async/Await +const data = await + customer.unlink( + { + disbursalRequest : value + + }); +``` + + + + + +| Argument | Type | Required | Description | +| --------- | ----- | -------- | ----------- | +| body | [UnlinkAccount](#UnlinkAccount) | yes | Request body | + + +Use this API to unlink account from merchant + +*Returned Response:* + + + + +[UnlinkAccountSuccess](#UnlinkAccountSuccess) + +Success. Returns a JSON object as shown below. Refer `UnlinkAccountSuccess` for more details. + + + + +
+  Examples: + + +
+  success + +```json +true +``` +
+ +
+ + + + + + + + + +--- + + +### getAccessToken +Get Access Token + + + +```javascript +// Promise +const promise = + customer.getAccessToken( + + + + ); + +// Async/Await +const data = await + customer.getAccessToken( + + + ); +``` + + + + + + +Use this API to get access token + +*Returned Response:* + + + + +[GetAccessTokenResponse](#GetAccessTokenResponse) + +Success. Returns a JSON object as shown below. Refer `GetAccessTokenResponse` for more details. + + + + +
+  Examples: + + +
+  success + +```json +true +``` +
+ +
+  accessToken + +```json +"oa-0a7a064dd15ef22fe002946f90c1e7b22eea47de" +``` +
+ +
+  refreshToken + +```json +"oa-d2f33b6be9957050386be051501b84b008f5ef6f" +``` +
+ +
+  tokenExpireAt + +```json +"2023-06-27T09:43:07.818Z" +``` +
+ +
+  tokenExpiryIn + +```json +"600" +``` +
+ +
+  refreshTokenExpiryAt + +```json +"2023-06-27T10:33:07.822Z" +``` +
+ +
+  refreshTokenExpiryIn + +```json +"3600" +``` +
+ +
+  scope + +```json +[ + "transaction" +] +``` +
+ +
+ + + + + + + + + +--- + + +### renewAccessToken +Renew Access Token + + + +```javascript +// Promise +const promise = + customer.renewAccessToken( + { + disbursalRequest : value + + } + ); + +// Async/Await +const data = await + customer.renewAccessToken( + { + disbursalRequest : value + + }); +``` + + + + + +| Argument | Type | Required | Description | +| --------- | ----- | -------- | ----------- | +| body | [RefreshTokenRequest](#RefreshTokenRequest) | yes | Request body | + + +Use this API to renew access token + +*Returned Response:* + + + + +[RefreshTokenResponse](#RefreshTokenResponse) + +Success. Returns a JSON object as shown below. Refer `RefreshTokenResponse` for more details. + + + + +
+  Examples: + + +
+  success + +```json +true +``` +
+ +
+  accessToken + +```json +"oa-de1496c16c91c45396ba87a888eed20fb223995d" +``` +
+ +
+  tokenExpireAt + +```json +"2023-06-26T19:23:46.977Z" +``` +
+ +
+  tokenExpiryIn + +```json +"600" +``` +
+ +
+ + + + + + + + + +--- + + +### refund +Refund customer order amount + + + +```javascript +// Promise +const promise = + customer.refund( + { + disbursalRequest : value + + } + ); + +// Async/Await +const data = await + customer.refund( + { + disbursalRequest : value + + }); +``` + + + + + +| Argument | Type | Required | Description | +| --------- | ----- | -------- | ----------- | +| body | [Refund](#Refund) | yes | Request body | + + +Use this API to verify the refund customer order amount + +*Returned Response:* + + + + +[VerifyCustomerSuccess](#VerifyCustomerSuccess) + +Success. Returns a JSON object as shown below. Refer `RefundSuccess` for more details. + + + + +
+  Examples: + + +
+  status + +```json +"enabled" +``` +
+ +
+ + + + + + + + + +--- + + +### refundStatus +Refund status + + + +```javascript +// Promise +const promise = + customer.refundStatus( + { + refundId : value, + orderId : value + + } + ); + +// Async/Await +const data = await + customer.refundStatus( + { + refundId : value, + orderId : value + + }); +``` + + + + + +| Argument | Type | Required | Description | +| --------- | ----- | -------- | ----------- | +| refundId | string | no | This is the refundId | +| orderId | string | no | This is the order ID | + + + +Use this API to fetch the refund status + +*Returned Response:* + + + + +[RefundStatus](#RefundStatus) + +Success. Returns a JSON object as shown below. Refer `RefundStatus` for more details. + + + + +
+  Examples: + + +
+  orderId + +```json +"PM-28" +``` +
+ +
+  userId + +```json +"c004a863-bce5-492b-b7aa-ba2890bc9e25" +``` +
+ +
+  merchantId + +```json +"3e0cf7da-ad5f-4c99-a9e7-49cad484ef37" +``` +
+ +
+  lenderId + +```json +"f622b3e8-c797-434d-948f-d0fda56e3db6" +``` +
+ +
+  refund + +```json +[ + { + "id": "10122313672606485999", + "loanAccountNumber": "CASHe-1686764747795", + "orderItems": { + "list": [ + { + "sku": "1", + "rate": "1", + "category": "1", + "quantity": 1 + } + ] + }, + "amount": 3000, + "status": "SUCCESS", + "processedDate": "2023-06-14T17:44:28.052Z", + "createdAt": "2023-06-14T17:44:28.052Z" + } +] +``` +
+ +
+ + + + + + + + + +--- + + +### getSchemes +Fetch schemes + + + +```javascript +// Promise +const promise = + customer.getSchemes( + { + disbursalRequest : value + + } + ); + +// Async/Await +const data = await + customer.getSchemes( + { + disbursalRequest : value + + }); +``` + + + + + +| Argument | Type | Required | Description | +| --------- | ----- | -------- | ----------- | +| body | [VerifyCustomer](#VerifyCustomer) | yes | Request body | + + +Use this API to fetch available schemes for user order. + +*Returned Response:* + + + + +[GetSchemesSuccess](#GetSchemesSuccess) + +Success. Returns a JSON object as shown below. Refer `GetSchemesSuccess` for more details. + + + + +
+  Examples: + + +
+  userId + +```json +"bf94b96a-1a15-406b-8d2f-0b37bfe47732" +``` +
+ +
+  lenders + +```json +[ + { + "id": "315f60f4-1238-462c-8108-cfff9fbc400f", + "name": "CASHe", + "title": "CASHe", + "subtitle": "Bhanix Finance and Investment Limited", + "isDefault": false, + "logoUrl": "https://cdn.pixelbin.io/v2/potlee/original/public/lenders/lenderLogo/v2/512h-logo/cashe-logo.png", + "amount": 5000, + "paymentOptions": { + "emis": [ + { + "id": 62, + "title": "3 Months - EMIs", + "subtitle": "CASHe Shop 3EMI (PaymentGateway)", + "description": "3 Months - No cost EMIs", + "tenure": 3, + "interest": 0, + "processingFee": 75, + "amount": 1692, + "emiSchedule": [ + { + "installmentNo": 1, + "installmentAmount": 1741, + "dueDate": "2023-12-22T12:00:00.000+00:00", + "dueAmount": 3334 + }, + { + "installmentNo": 2, + "installmentAmount": 1666, + "dueDate": "2024-01-22T12:00:00.000+00:00", + "dueAmount": 1668 + }, + { + "installmentNo": 3, + "installmentAmount": 1666, + "dueDate": "2024-02-22T12:00:00.000+00:00", + "dueAmount": 2 + } + ], + "isDefault": false + } + ], + "payLater": { + "id": 1, + "title": "PayLater", + "subtitle": "CASHe_PayLater", + "description": "Customer can pay after 30days", + "tenure": 1, + "interest": 0, + "processingFee": 0, + "amount": 5000, + "emiSchedule": null, + "isDefault": true + } + } + } +] +``` +
+ +
+ + + + + + + + + +--- + + +### checkEligibility +Check Credit Eligibility + + + +```javascript +// Promise +const promise = + customer.checkEligibility( + { + disbursalRequest : value + + } + ); + +// Async/Await +const data = await + customer.checkEligibility( + { + disbursalRequest : value + + }); +``` + + + + + +| Argument | Type | Required | Description | +| --------- | ----- | -------- | ----------- | +| body | [CheckEligibilityRequest](#CheckEligibilityRequest) | yes | Request body | + + +Use this API to pre approve by checking the customer's credit eligibility based on mobile number and countryCode and vintage data of monthly transactions. + +*Returned Response:* + + + + +[EligibilitySuccess](#EligibilitySuccess) + +Success. Returns a JSON object as shown below. Refer `EligibilitySuccess` for more details. + + + + +
+  Examples: + + +
+  status + +```json +"ENABLED" +``` +
+ +
+  message + +```json +"User is eligible to transact" +``` +
+ +
+  redirectUrl + +```json +"https://account.potlee.co.in" +``` +
+ +
+  callbackUrl + +```json +"https://www.google.com" +``` +
+ +
+  creditLimit + +```json +[ + { + "availableLimit": 300000, + "possibleLimit": 500000, + "lender": { + "slug": "ugro", + "name": "UGRO", + "logo": "https://cdn.pixelbin.io/v2/potlee/original/public/ugro/ugro_logo" + } + } +] +``` +
+ +
+ + + + + + + + + +--- + + + +### Schemas + + + + #### [UserSchema](#UserSchema) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | id | string | no | | + | firstName | string | no | | + | lastName | string | no | | + | countryCode | string | no | | + | mobile | string | no | | + | email | string | no | | + | gender | string | no | | + | dob | string | no | | + | active | boolean | no | | + | profilePicUrl | string | no | | + | isEmailVerified | boolean | no | | + | createdAt | string | no | | + | updatedAt | string | no | | + | deletedAt | string | no | | + +--- + + + + + #### [count](#count) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | totalUsers | string | no | | + +--- + + + + + #### [FilterByDate](#FilterByDate) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | startDate | string | no | | + | endDate | string | no | | + +--- + + + + + #### [LenderCount](#LenderCount) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | totalLenders | string | no | | + +--- + + + + + #### [LenderSchema](#LenderSchema) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | id | string | no | | + | name | string | no | | + | active | boolean | no | | + | createdAt | string | no | | + | updatedAt | string | no | | + | deletedAt | string | no | | + +--- + + + + + #### [TotalUsersPerLender](#TotalUsersPerLender) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | filters | [[Filters](#Filters)] | yes | | + | page | [PageResponse](#PageResponse) | yes | | + | lenderList | [[TotalUsersPerLenderData](#TotalUsersPerLenderData)] | yes | | + +--- + + + + + #### [TotalUsersPerLenderData](#TotalUsersPerLenderData) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | id | string | no | | + | name | string | no | | + | active | boolean | no | | + | createdAt | string | no | | + | updatedAt | string | no | | + | deletedAt | string | no | | + | totalUsers | string | no | | + +--- + + + + + #### [TotalUserByLender](#TotalUserByLender) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | name | string | no | | + | count | string | no | | + +--- + + + + + #### [UsersByLender](#UsersByLender) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | firstName | string | no | | + | lastName | string | no | | + | mobile | string | no | | + | email | string | no | | + | name | string | no | | + +--- + + + + + #### [ErrorResponse](#ErrorResponse) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | message | string | no | | + | info | string | no | | + | code | string | no | | + | requestId | string | no | | + | meta | string | no | | + +--- + + + + + #### [EditProfileRequest](#EditProfileRequest) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | firstName | string | no | | + | lastName | string | no | | + | countryCode | string | no | | + | mobile | string | no | | + | email | string | no | | + | gender | string | no | | + | dob | string | no | | + | registrationToken | string | no | | + +--- + + + + + #### [VerifyOtpRequest](#VerifyOtpRequest) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | requestId | string | yes | | + | otp | string | yes | | + | captchaCode | string | no | | + | androidHash | string | no | | + | referralCode | string | no | | + | onboardingToken | string | no | | + +--- + + + + + #### [SendMobileOtpRequest](#SendMobileOtpRequest) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | countryCode | string | yes | | + | mobile | string | yes | | + | captchaCode | string | no | | + | androidHash | string | no | | + | force | string | no | | + +--- + + + + + #### [ReSendMobileOtpRequest](#ReSendMobileOtpRequest) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | captchaCode | string | no | | + | token | string | yes | | + | androidHash | string | no | | + +--- + + + + + #### [SendOtpRequest](#SendOtpRequest) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | countryCode | string | no | | + | captchaCode | string | no | | + | mobile | string | no | | + +--- + + + + + #### [ApplicationUser](#ApplicationUser) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | user | [UserSchema](#UserSchema) | no | | + +--- + + + + + #### [SendOtpResponse](#SendOtpResponse) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | resendTimer | number | no | | + | resendToken | string | no | | + | success | boolean | no | | + | requestId | string | no | | + | message | string | no | | + | mobile | string | no | | + | countryCode | string | no | | + | email | string | no | | + | resendEmailToken | string | no | | + | registerToken | string | no | | + | verifyEmailOtp | boolean | no | | + | verifyMobileOtp | boolean | no | | + | userExists | boolean | no | | + +--- + + + + + #### [EmailUpdate](#EmailUpdate) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | email | string | no | | + +--- + + + + + #### [UserUpdateRequest](#UserUpdateRequest) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | firstName | any | no | | + | lastName | any | no | | + | countryCode | string | yes | | + | mobile | string | yes | | + | email | any | no | | + | gender | any | no | | + | dob | any | no | | + | active | boolean | no | | + | profilePictureUrl | any | no | | + | isEmailVerified | boolean | no | | + +--- + + + + + #### [LenderUpdateRequest](#LenderUpdateRequest) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | id | string | yes | | + | name | string | no | | + | active | boolean | no | | + +--- + + + + + #### [ProfileEditSuccess](#ProfileEditSuccess) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | user | [UserSchema](#UserSchema) | no | | + | registerToken | string | no | | + | resendEmailToken | string | no | | + | userExists | boolean | no | | + | verifyEmailLink | boolean | no | | + | verifyEmailOtp | boolean | no | | + | verifyMobileOtp | boolean | no | | + | email | string | no | | + | requestId | string | no | | + | countryCode | string | no | | + | mobile | string | no | | + | success | boolean | no | | + | message | string | no | | + | resendTimer | number | no | | + | resendToken | string | no | | + +--- + + + + + #### [LoginSuccess](#LoginSuccess) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | user | [UserSchema](#UserSchema) | no | | + | requestId | string | no | | + | registerToken | string | no | | + +--- + + + + + #### [VerifyOtpSuccess](#VerifyOtpSuccess) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | user | [UserSchema](#UserSchema) | no | | + | userExists | boolean | no | | + | isNew | boolean | no | | + +--- + + + + + #### [LogoutSuccess](#LogoutSuccess) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | logout | boolean | no | | + +--- + + + + + #### [OtpSuccess](#OtpSuccess) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | resendTimer | number | no | | + | resendToken | string | no | | + | registerToken | string | no | | + | success | boolean | no | | + | requestId | string | no | | + | message | string | no | | + | mobile | string | no | | + | isNew | boolean | no | | + | countryCode | string | no | | + | otpLength | number | no | | + +--- + + + + + #### [SessionListSuccess](#SessionListSuccess) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | sessions | [string] | no | | + +--- + + + + + #### [VerifyMobileOTPSuccess](#VerifyMobileOTPSuccess) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | user | [UserSchema](#UserSchema) | no | | + +--- + + + + + #### [Location](#Location) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | latitude | number | no | | + | longitude | number | no | | + +--- + + + + + #### [OrderAddress](#OrderAddress) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | line1 | string | no | | + | line2 | string | no | | + | city | string | no | | + | state | string | no | | + | country | string | no | | + | pincode | string | no | | + | type | string | no | | + | geoLocation | [Location](#Location) | no | | + +--- + + + + + #### [CustomerObject](#CustomerObject) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | countryCode | string | no | | + | mobile | string | yes | | + | uid | string | yes | | + | email | string | no | | + | firstname | string | no | | + | middleName | string | no | | + | lastName | string | no | | + +--- + + + + + #### [Order](#Order) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | valueInPaise | number | yes | | + | uid | string | yes | | + | emiTenure | number | no | | + | items | [[Items](#Items)] | no | | + | shippingAddress | [OrderAddress](#OrderAddress) | no | | + | billingAddress | [OrderAddress](#OrderAddress) | no | | + +--- + + + + + #### [OrderUid](#OrderUid) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | valueInPaise | number | no | | + | uid | string | yes | | + | items | [[Items](#Items)] | no | | + | shippingAddress | [OrderAddress](#OrderAddress) | no | | + | billingAddress | [OrderAddress](#OrderAddress) | no | | + +--- + + + + + #### [CustomerMeta](#CustomerMeta) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | ip | string | yes | | + | appVersion | string | yes | | + | appIdentifier | string | no | | + | customerUserAgent | string | no | | + | deviceId | string | yes | | + +--- + + + + + #### [Device](#Device) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | ipAddress | string | yes | | + | userAgent | string | yes | | + | latitude | number | no | | + | longitude | number | no | | + +--- + + + + + #### [VerifyCustomer](#VerifyCustomer) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | customer | [CustomerObject](#CustomerObject) | yes | | + | order | [Order](#Order) | yes | | + | device | [Device](#Device) | yes | | + | meta | string | no | | + | fetchLimitOptions | boolean | no | | + +--- + + + + + #### [CreateTransaction](#CreateTransaction) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | autoCapture | boolean | no | | + | redirectUrl | string | yes | | + | customer | [CustomerObject](#CustomerObject) | yes | | + | order | [Order](#Order) | yes | | + | device | [Device](#Device) | yes | | + | meta | string | no | | + +--- + + + + + #### [ResendPaymentRequest](#ResendPaymentRequest) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | autoCapture | boolean | no | | + | redirectUrl | string | no | | + | customer | [CustomerObject](#CustomerObject) | yes | | + | order | [OrderUid](#OrderUid) | yes | | + +--- + + + + + #### [VerifyCustomerSuccess](#VerifyCustomerSuccess) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | status | string | no | | + | userStatus | string | no | | + | message | string | no | | + | __headers | string | no | | + +--- + + + + + #### [CreateTransactionSuccess](#CreateTransactionSuccess) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | chargeToken | string | no | | + | redirectUrl | string | no | | + | message | string | yes | | + | transactionId | string | no | | + | status | string | no | | + | userStatus | string | no | | + | __headers | string | no | | + +--- + + + + + #### [SupportDocuments](#SupportDocuments) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | fileName | string | no | | + | fileUrl | string | no | | + +--- + + + + + #### [CreateTicketResponse](#CreateTicketResponse) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | serviceRequestId | string | no | | + | message | string | no | | + +--- + + + + + #### [CreateTicket](#CreateTicket) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | category | string | yes | | + | transactionId | string | no | | + | description | string | yes | | + | documents | [[SupportDocuments](#SupportDocuments)] | no | | + +--- + + + + + #### [InitiateTransactions](#InitiateTransactions) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | token | string | yes | | + +--- + + + + + #### [GetMobileFromToken](#GetMobileFromToken) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | token | string | yes | | + +--- + + + + + #### [GetDataFromToken](#GetDataFromToken) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | token | string | yes | | + +--- + + + + + #### [MerchantDetails](#MerchantDetails) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | name | string | no | | + | website | string | no | | + | logo | string | no | | + +--- + + + + + #### [InitiateTransactionsSuccess](#InitiateTransactionsSuccess) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | chargeToken | string | yes | | + | session | string | no | | + | expiry | string | no | | + | hash | string | no | | + | order | [Order](#Order) | no | | + | isAsp | boolean | no | | + | merchant | [MerchantDetails](#MerchantDetails) | no | | + +--- + + + + + #### [RetrieveMobileFromToken](#RetrieveMobileFromToken) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | countryCode | string | yes | | + | mobile | string | yes | | + +--- + + + + + #### [CreateDashboardTemplateRequest](#CreateDashboardTemplateRequest) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | name | string | yes | | + | version | string | yes | | + | isDefault | boolean | no | | + | sections | [[TemplateSections](#TemplateSections)] | yes | | + +--- + + + + + #### [TemplateSections](#TemplateSections) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | sequence | number | yes | | + | isAvailableInMobile | boolean | yes | | + | isAvailableInDesktop | boolean | yes | | + | component | [TemplateComponent](#TemplateComponent) | yes | | + +--- + + + + + #### [TemplateComponent](#TemplateComponent) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | name | string | yes | | + | description | string | yes | | + | isAvailableInDesktop | boolean | no | | + | partnerApplications | [[PartnerApplications](#PartnerApplications)] | no | | + | banners | [[Banners](#Banners)] | no | | + | tips | [[Tips](#Tips)] | no | | + +--- + + + + + #### [PartnerApplications](#PartnerApplications) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | name | string | yes | | + | description | string | no | | + | urlPath | string | no | | + | urlTarget | string | no | | + | imageUrl | string | yes | | + | sequence | number | no | | + +--- + + + + + #### [Offerings](#Offerings) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | name | string | yes | | + | description | string | no | | + | urlPath | string | no | | + | urlTarget | string | no | | + | imageUrl | string | yes | | + | sequence | number | no | | + | gradient | [string] | yes | | + +--- + + + + + #### [Banners](#Banners) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | imageUrl | string | yes | | + | action | [ActionSchema](#ActionSchema) | no | | + +--- + + + + + #### [Tips](#Tips) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | name | string | no | | + | description | string | no | | + | urlPath | string | yes | | + | urlTarget | string | no | | + | imageUrl | string | no | | + | sequence | number | no | | + +--- + + + + + #### [DashboardTemplateResponse](#DashboardTemplateResponse) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | id | string | no | | + | name | string | no | | + | version | string | no | | + | active | boolean | no | | + | sections | [[SectionSchema](#SectionSchema)] | yes | | + +--- + + + + + #### [SectionSchema](#SectionSchema) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | type | string | yes | | + | title | string | no | | + | description | string | no | | + | partners | [[PartnerApplicationsResponse](#PartnerApplicationsResponse)] | no | | + | banners | [[BannersResponse](#BannersResponse)] | no | | + | tips | [[TipsResponse](#TipsResponse)] | no | | + +--- + + + + + #### [PartnerApplicationsResponse](#PartnerApplicationsResponse) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | id | string | no | | + | name | string | yes | | + | description | string | no | | + | action | [ActionSchema](#ActionSchema) | yes | | + | imageUrl | string | yes | | + +--- + + + + + #### [OfferingsResponse](#OfferingsResponse) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | id | string | no | | + | name | string | yes | | + | description | string | no | | + | action | [ActionSchema](#ActionSchema) | yes | | + | imageUrl | string | yes | | + | gradient | [string] | yes | | + +--- + + + + + #### [BannersResponse](#BannersResponse) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | action | [ActionSchema](#ActionSchema) | no | | + | imageUrl | string | yes | | + +--- + + + + + #### [TipsSection](#TipsSection) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | tips | [[TipsResponse](#TipsResponse)] | no | | + | categories | [[TipsCategories](#TipsCategories)] | no | | + | action | [ActionSchema](#ActionSchema) | no | | + +--- + + + + + #### [TipsResponse](#TipsResponse) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | name | string | no | | + | category | string | no | | + | description | string | no | | + | action | [ActionSchema](#ActionSchema) | yes | | + | imageUrl | string | no | | + +--- + + + + + #### [TipsCategories](#TipsCategories) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | id | string | yes | | + | title | string | yes | | + +--- + + + + + #### [ActionSchema](#ActionSchema) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | type | string | no | | + | page | [PageSchema](#PageSchema) | no | | + | popup | [PageSchema](#PageSchema) | no | | + +--- + + + + + #### [UpdateDashboardTemplateRequest](#UpdateDashboardTemplateRequest) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | id | string | yes | | + | name | string | no | | + | version | string | no | | + | isDefault | boolean | no | | + | active | boolean | no | | + | sections | [[UpdateTemplateSections](#UpdateTemplateSections)] | no | | + +--- + + + + + #### [UpdateTemplateSections](#UpdateTemplateSections) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | id | string | yes | | + | sequence | number | no | | + | isAvailableInMobile | boolean | no | | + | isAvailableInDesktop | boolean | no | | + | active | boolean | no | | + | component | [UpdateTemplateComponent](#UpdateTemplateComponent) | no | | + +--- + + + + + #### [UpdateTemplateComponent](#UpdateTemplateComponent) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | id | string | yes | | + | name | string | no | | + | description | string | no | | + | isAvailableInDesktop | boolean | no | | + | active | boolean | no | | + | partners | [[UpdatePartnerApplications](#UpdatePartnerApplications)] | no | | + | banners | [[UpdateBanners](#UpdateBanners)] | no | | + | tips | [[UpdateTips](#UpdateTips)] | no | | + +--- + + + + + #### [UpdatePartnerApplications](#UpdatePartnerApplications) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | id | string | yes | | + | name | string | no | | + | description | string | no | | + | action | string | no | | + | imageUrl | string | no | | + | sequence | number | no | | + | active | boolean | no | | + +--- + + + + + #### [UpdateOfferings](#UpdateOfferings) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | id | string | yes | | + | name | string | no | | + | description | string | no | | + | urlPath | string | no | | + | urlTarget | string | no | | + | imageUrl | string | no | | + | sequence | number | no | | + | gradient | [string] | no | | + +--- + + + + + #### [UpdateBanners](#UpdateBanners) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | id | string | yes | | + | imageUrl | string | no | | + | action | string | no | | + | sequence | number | no | | + | active | boolean | no | | + +--- + + + + + #### [UpdateTips](#UpdateTips) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | id | string | yes | | + | name | string | no | | + | description | string | no | | + | imageUrl | string | no | | + | action | string | no | | + | sequence | number | no | | + | active | boolean | no | | + +--- + + + + + #### [NavigationsMobileResponse](#NavigationsMobileResponse) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | tabs | [[TabsSchema](#TabsSchema)] | yes | | + | profileSections | [[ProfileSectionSchema](#ProfileSectionSchema)] | yes | | + +--- + + + + + #### [TabsSchema](#TabsSchema) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | title | string | yes | | + | page | [PageSchema](#PageSchema) | yes | | + | icon | string | yes | | + | activeIcon | string | yes | | + | active | boolean | yes | | + +--- + + + + + #### [PageSchema](#PageSchema) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | link | string | no | | + | type | [PageType](#PageType) | no | | + | params | [String: [string]] | no | | + | query | [String: string] | no | | + +--- + + + + + #### [ProfileSectionSchema](#ProfileSectionSchema) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | title | string | yes | | + | navigations | [[ProfileNavigationSchema](#ProfileNavigationSchema)] | yes | | + | active | boolean | yes | | + +--- + + + + + #### [ProfileNavigationSchema](#ProfileNavigationSchema) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | title | string | yes | | + | description | string | no | | + | icon | string | yes | | + | type | string | yes | | + | action | [ActionSchema](#ActionSchema) | no | | + | active | boolean | no | | + +--- + + + + + #### [SendPNSRegisterRequest](#SendPNSRegisterRequest) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | deviceId | string | yes | | + | deviceType | string | yes | | + | token | string | yes | | + +--- + + + + + #### [PNSRegisterResponse](#PNSRegisterResponse) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | status | boolean | no | | + | message | string | no | | + +--- + + + + + #### [FaqResponse](#FaqResponse) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | categories | [[CategorySchema](#CategorySchema)] | no | | + +--- + + + + + #### [CategorySchema](#CategorySchema) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | uid | string | yes | | + | title | string | no | | + | description | string | no | | + | logo | string | no | | + | questions | [[QuestionSchema](#QuestionSchema)] | no | | + +--- + + + + + #### [QuestionSchema](#QuestionSchema) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | uid | string | yes | | + | title | string | no | | + | description | string | no | | + | displayOrder | number | no | | + | canRaiseRequest | boolean | no | | + +--- + + + + + #### [SupportCategories](#SupportCategories) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | kind | string | no | | + | display | string | no | | + +--- + + + + + #### [SupportCategoriesResponse](#SupportCategoriesResponse) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | categories | [[SupportCategories](#SupportCategories)] | no | | + +--- + + + + + #### [SanctionLetterResponse](#SanctionLetterResponse) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | sanctionedLetterFileUrl | string | yes | | + +--- + + + + + #### [KfsDocumentResponse](#KfsDocumentResponse) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | kfsFileUrl | string | yes | | + +--- + + + + + #### [UserWhiteListedResponse](#UserWhiteListedResponse) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | status | string | no | | + +--- + + + + + #### [UserConsentRequest](#UserConsentRequest) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | consents | [string] | no | | + +--- + + + + + #### [Consents](#Consents) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | type | string | no | | + | text | string | no | | + +--- + + + + + #### [UserConsentRequestV2](#UserConsentRequestV2) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | consents | [[Consents](#Consents)] | no | | + +--- + + + + + #### [UserConsentResponse](#UserConsentResponse) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | success | boolean | no | | + +--- + + + + + #### [UserKycSteps](#UserKycSteps) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | id | string | no | | + | index | string | no | | + | name | string | no | | + | rules | string | no | | + | active | boolean | no | | + | createdAt | string | no | | + | updatedAt | string | no | | + | deletedAt | string | no | | + +--- + + + + + #### [CreateKycStepRequest](#CreateKycStepRequest) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | name | string | yes | | + | index | string | yes | | + | active | boolean | yes | | + | rules | string | no | | + +--- + + + + + #### [RemoveKycStepRequest](#RemoveKycStepRequest) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | name | string | no | | + | index | string | yes | | + | active | boolean | no | | + | rules | string | no | | + +--- + + + + + #### [KycUpdateMessage](#KycUpdateMessage) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | message | string | no | | + +--- + + + + + #### [MobileFromLinkingRequest](#MobileFromLinkingRequest) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | token | string | yes | | + +--- + + + + + #### [MobileFromLinkingResponse](#MobileFromLinkingResponse) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | countryCode | string | yes | | + | mobile | string | yes | | + +--- + + + + + #### [SessionFromLinkingRequest](#SessionFromLinkingRequest) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | token | string | yes | | + +--- + + + + + #### [SessionFromLinkingResponse](#SessionFromLinkingResponse) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | session | string | yes | | + | expiry | number | yes | | + +--- + + + + + #### [LinkAccount](#LinkAccount) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | customer | [CustomerObject](#CustomerObject) | yes | | + | redirectUrl | string | yes | | + | device | [Device](#Device) | yes | | + +--- + + + + + #### [LinkAccountSuccess](#LinkAccountSuccess) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | redirectUrl | string | no | | + | statusCode | number | no | | + | status | string | no | | + | message | string | no | | + | errorCode | string | no | | + | __headers | string | no | | + +--- + + + + + #### [UnlinkAccount](#UnlinkAccount) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | customer | [CustomerObject](#CustomerObject) | yes | | + | device | [Device](#Device) | yes | | + +--- + + + + + #### [UnlinkAccountSuccess](#UnlinkAccountSuccess) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | status | string | yes | | + | message | string | yes | | + | statusCode | number | yes | | + | userStatus | string | no | | + | errorCode | string | no | | + | __headers | string | no | | + +--- + + + + + #### [Refund](#Refund) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | fingerprint | string | no | | + | customer | [CustomerObject](#CustomerObject) | yes | | + | refundItems | [[Items](#Items)] | no | | + | orderId | string | yes | | + | refundId | string | yes | | + | refundAmount | number | yes | | + +--- + + + + + #### [Translation](#Translation) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | content | any | no | | + +--- + + + + + #### [FilterKeys](#FilterKeys) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | display | string | no | | + | name | string | no | | + | kind | string | no | | + +--- + + + + + #### [FilterValues](#FilterValues) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | display | string | no | | + | isSelected | boolean | no | | + | value | string | no | | + +--- + + + + + #### [Filters](#Filters) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | key | [FilterKeys](#FilterKeys) | no | | + | values | [[FilterValues](#FilterValues)] | no | | + +--- + + + + + #### [PageResponse](#PageResponse) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | type | string | yes | | + | current | number | yes | | + | hasPrevious | boolean | yes | | + | hasNext | boolean | yes | | + | size | number | yes | | + | itemTotal | number | yes | | + +--- + + + + + #### [UserResponse](#UserResponse) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | filters | [[Filters](#Filters)] | yes | | + | page | [PageResponse](#PageResponse) | yes | | + | listOfUsers | [[UserSchema](#UserSchema)] | yes | | + +--- + + + + + #### [UserDetailRequest](#UserDetailRequest) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | id | string | yes | | + +--- + + + + + #### [UserConsents](#UserConsents) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | id | string | no | | + | userId | string | no | | + | ipAddress | string | no | | + | text | string | no | | + | createdAt | string | no | | + | updatedAt | string | no | | + | deletedAt | string | no | | + +--- + + + + + #### [CreditScoreSchema](#CreditScoreSchema) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | id | string | no | | + | userId | string | no | | + | cibil | number | no | | + | finbox | string | no | | + | systemAwarded | string | no | | + | isActive | boolean | no | | + | deletedAt | string | no | | + | updatedAt | string | no | | + | createdAt | string | no | | + +--- + + + + + #### [CreditLimitSchema](#CreditLimitSchema) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | id | string | no | | + | userId | string | no | | + | creditLimit | string | no | | + | createdAt | string | no | | + | updatedAt | string | no | | + | deletedAt | string | no | | + +--- + + + + + #### [Screen](#Screen) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | screenType | string | no | | + | name | string | no | | + | link | string | no | | + +--- + + + + + #### [UserStateSchema](#UserStateSchema) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | screen | [Screen](#Screen) | no | | + +--- + + + + + #### [GetAccessTokenResponse](#GetAccessTokenResponse) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | success | boolean | no | | + | accessToken | string | no | | + | refreshToken | string | no | | + | tokenExpireAt | string | no | | + | tokenExpiryIn | string | no | | + | refreshTokenExpiryAt | string | no | | + | refreshTokenExpiryIn | string | no | | + | scope | [string] | no | | + | __headers | string | no | | + +--- + + + + + #### [RefreshTokenResponse](#RefreshTokenResponse) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | success | boolean | no | | + | accessToken | string | no | | + | tokenExpireAt | string | no | | + | tokenExpiryIn | string | no | | + | __headers | string | no | | + +--- + + + + + #### [RefreshTokenRequest](#RefreshTokenRequest) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | token | string | yes | | + +--- + + + + + #### [Items](#Items) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | category | string | no | | + | sku | string | no | | + | rate | number | no | | + | quantity | number | no | | + +--- + + + + + #### [RefundStatusList](#RefundStatusList) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | id | string | no | | + | orderItems | [[Items](#Items)] | no | | + | amount | number | no | | + | status | string | no | | + | createdAt | string | no | | + | processedDate | string | no | | + +--- + + + + + #### [RefundStatus](#RefundStatus) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | orderId | string | no | | + | userId | string | no | | + | merchantId | string | no | | + | lenderId | string | no | | + | loanAccountNumber | string | no | | + | refund | [[RefundStatusList](#RefundStatusList)] | no | | + | __headers | string | no | | + +--- + + + + + #### [CustomerMetricsPivots](#CustomerMetricsPivots) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | date | string | no | | + | sum | number | no | | + +--- + + + + + #### [CustomerMetricsSubResponse](#CustomerMetricsSubResponse) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | total | string | no | | + | pivots | [[CustomerMetricsPivots](#CustomerMetricsPivots)] | no | | + | title | string | no | | + | description | string | no | | + | valueFormat | string | no | | + | logo | string | no | | + +--- + + + + + #### [CustomerMetricsAnalytics](#CustomerMetricsAnalytics) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | totalCustomers | [CustomerMetricsSubResponse](#CustomerMetricsSubResponse) | no | | + | source | [CustomerMetricsSubResponse](#CustomerMetricsSubResponse) | no | | + +--- + + + + + #### [CustomerMetricsFilters](#CustomerMetricsFilters) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | type | string | yes | | + | display | string | yes | | + | value | [string] | yes | | + | isSelected | boolean | no | | + | isActive | boolean | yes | | + +--- + + + + + #### [CustomerMetrics](#CustomerMetrics) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | metrics | [CustomerMetricsAnalytics](#CustomerMetricsAnalytics) | no | | + | filters | [[CustomerMetricsFilters](#CustomerMetricsFilters)] | no | | + | sort | [[CustomerMetricsFilters](#CustomerMetricsFilters)] | no | | + +--- + + + + + #### [CustomerMetricsResponse](#CustomerMetricsResponse) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | data | [CustomerMetrics](#CustomerMetrics) | no | | + +--- + + + + + #### [CustomerMetricsRequest](#CustomerMetricsRequest) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | filters | [[CustomerMetricsFilters](#CustomerMetricsFilters)] | no | | + | sort | [[CustomerMetricsFilters](#CustomerMetricsFilters)] | no | | + | merchantId | string | no | | + | lenderId | string | no | | + | pivotPoints | number | no | | + +--- + + + + + #### [SourceAnalyticsRequest](#SourceAnalyticsRequest) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | filters | [[CustomerMetricsFilters](#CustomerMetricsFilters)] | no | | + +--- + + + + + #### [LenderResponse](#LenderResponse) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | slug | string | no | | + | name | string | no | | + | logo | string | no | | + +--- + + + + + #### [CreditLimitObject](#CreditLimitObject) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | availableLimit | number | no | | + | possibleLimit | number | no | | + | lender | [LenderResponse](#LenderResponse) | no | | + +--- + + + + + #### [BusinessDetails](#BusinessDetails) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | category | string | yes | | + | shopName | string | no | | + | legalName | string | yes | | + | address | string | no | | + | type | string | no | | + | pincode | string | no | | + +--- + + + + + #### [DocumentItems](#DocumentItems) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | number | string | no | | + | category | string | no | | + | type | string | no | | + | name | string | no | | + | issuedOn | string | no | | + | issuedAt | string | no | | + | issuedBy | string | no | | + | expiryOn | string | no | | + +--- + + + + + #### [VintageItems](#VintageItems) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | month | number | yes | | + | year | number | yes | | + | totalTransactions | number | yes | | + | totalTransactionAmount | number | yes | | + | totalCancellations | number | no | | + | totalCancellationAmount | number | no | | + +--- + + + + + #### [EligibilitySuccess](#EligibilitySuccess) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | status | string | no | | + | message | string | no | | + | redirectUrl | string | no | | + | callbackUrl | string | no | | + | creditLimits | [[CreditLimitObject](#CreditLimitObject)] | no | | + | __headers | string | no | | + +--- + + + + + #### [CheckEligibilityRequest](#CheckEligibilityRequest) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | customer | [CustomerObject](#CustomerObject) | yes | | + | order | [Order](#Order) | no | | + | businessDetails | [BusinessDetails](#BusinessDetails) | no | | + | documents | [[DocumentItems](#DocumentItems)] | no | | + | device | [Device](#Device) | yes | | + | vintage | [[VintageItems](#VintageItems)] | no | | + | meta | string | no | | + | fetchLimitOptions | boolean | no | | + +--- + + + + + #### [GetSchemesSuccess](#GetSchemesSuccess) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | userId | string | no | | + | lenders | [undefined] | yes | | + | __headers | string | no | | + +--- + + + + +### Enums + + + + + + #### [PageType](#PageType) + Type : string + + | Name | Value | Description | + | ---- | ----- | ----------- | + | external | external | Symbolic link for External Link: /external/:url | + | login | login | Symbolic link for Login: /login | + | home | home | Symbolic link for Home: / | + | transactions | transactions | Symbolic link for Transactions: /transactions | + | transactionDetails | transactionDetails | Symbolic link for Transaction Details: /transactions/:id | + | rewards | rewards | Symbolic link for Rewards: /rewards | + | referAndEarn | referAndEarn | Symbolic link for Refer: /refer | + | profile | profile | Symbolic link for Profile: /profile | + | setupAutopay | setupAutopay | Symbolic link for AutoPay: /autopay | + | updateEmail | updateEmail | Symbolic link for Update Email: /profile/email | + | reportIssue | reportIssue | Symbolic link for Report Issue: /profile/report | + | creditScore | creditScore | Symbolic link for Credit Score: /credit-score | + | autoPay | autoPay | Symbolic link for Setup Autopay: /autopay | + | helpCenter | helpCenter | Symbolic link for Help Center: /profile/help-center | + | kycInit | kycInit | Symbolic link for Start KYC: /kyc | + | accessDigilocker | accessDigilocker | Symbolic link for Access Digilocker: /kyc/:lender/access-digilocker | + | liveliness | liveliness | Symbolic link for Liveliness: /kyc/:lender/selfie | + | lenderOnboard | lenderOnboard | Symbolic link for Lender Onboard: /kyc/:lender/lender-onboard | + | lender | lender | Symbolic link for Lender: /lender/:lenderName | + | kycDocs | kycDocs | Symbolic link for Verify KYC Documents: /kyc/documents | + | kycSelfie | kycSelfie | Symbolic link for Verify KYC Selfie: /kyc/selfie | + | kycStatus | kycStatus | Symbolic link for KYC Status: /kyc/status | + | kycError | kycError | Symbolic link for KYC Error: /kyc/error | + | kycDigilockerResponse | kycDigilockerResponse | Symbolic link for KYC Digilocker Response: /kyc/digilocker-response | + | kycInitResponse | kycInitResponse | Symbolic link for KYC Init Response: /kyc/init-response | + | repayment | repayment | Symbolic link for Repayment: /repayment | + | netBankingRepayment | netBankingRepayment | Symbolic link for Net Banking Repayment: /repayment/netbanking | + | upiRepayment | upiRepayment | Symbolic link for UPI Repayment: /repayment/upi | + | sanctionLetter | sanctionLetter | Symbolic link for Sanction Letter: /sanction/:userId | + | kfs | kfs | Symbolic link for KFS: /kfs/:userId | + +--- + + + + + + diff --git a/documentation/platform/MULTIKYC.md b/documentation/platform/MULTIKYC.md new file mode 100644 index 0000000..7bc458a --- /dev/null +++ b/documentation/platform/MULTIKYC.md @@ -0,0 +1,2388 @@ + + + + +##### [Back to Platform docs](./README.md) + +## MultiKyc Methods +Will deprecate Hawkeye +* [approvedLenders](#approvedlenders) +* [getLimit](#getlimit) + + + +## Methods with example and description + + +### approvedLenders +Approved lenders + + + +```javascript +// Promise +const promise = + multiKyc.approvedLenders( + + + + ); + +// Async/Await +const data = await + multiKyc.approvedLenders( + + + ); +``` + + + + + + + + +*Returned Response:* + + + + +[ApprovedLendersTransaction](#ApprovedLendersTransaction) + + + + + + +
+  Example: + +```json + +``` +
+ + + + + + + + + +--- + + +### getLimit +Get limit + + + +```javascript +// Promise +const promise = + multiKyc.getLimit( + { + disbursalRequest : value + + } + ); + +// Async/Await +const data = await + multiKyc.getLimit( + { + disbursalRequest : value + + }); +``` + + + + + +| Argument | Type | Required | Description | +| --------- | ----- | -------- | ----------- | +| body | [GetLimitRequest](#GetLimitRequest) | yes | Request body | + + + + +*Returned Response:* + + + + +[IntgrCreditLimit](#IntgrCreditLimit) + + + + + + +
+  Example: + +```json + +``` +
+ + + + + + + + + +--- + + + +### Schemas + + + + #### [LenderTheme](#LenderTheme) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | logoUrl | string | yes | | + | iconUrl | string | yes | | + | landscapeBgUrl | string | yes | | + | portraitBgUrl | string | yes | | + | shortName | string | yes | | + +--- + + + + + #### [Lender](#Lender) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | id | string | no | | + | name | string | no | | + | active | boolean | no | | + | imageUrl | string | no | | + | slug | string | no | | + | theme | [LenderTheme](#LenderTheme) | no | | + | b2b | boolean | no | | + | b2c | boolean | no | | + | merchantConfigSchema | string | no | | + | createdAt | string | no | | + | updatedAt | string | no | | + | approvedLimit | number | no | | + | deletedAt | string | no | | + | meta | any | no | | + | metaSchema | any | no | | + +--- + + + + + #### [UserLender](#UserLender) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | id | string | yes | | + | userId | string | yes | | + | lenderId | string | yes | | + | active | boolean | no | | + | status | string | yes | | + | createdAt | string | yes | | + | updatedAt | string | yes | | + | deletedAt | string | no | | + | approvedLimit | number | yes | | + | entityId | string | no | | + | entityMapId | string | no | | + +--- + + + + + #### [SourceCreditReport](#SourceCreditReport) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | id | string | yes | | + | userId | string | yes | | + | pan | string | yes | | + | name | string | yes | | + | mobile | string | yes | | + | bureau | string | yes | | + | score | string | yes | | + | report | string | yes | | + | createdAt | string | no | | + +--- + + + + + #### [Document](#Document) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | id | string | yes | | + | userId | string | yes | | + | imageUrl | string | yes | | + | number | string | yes | | + | detail | any | yes | | + | valid | boolean | yes | | + | createdAt | string | yes | | + | updatedAt | string | yes | | + | deletedAt | string | no | | + | entityId | string | no | | + +--- + + + + + #### [UserKycDetail](#UserKycDetail) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | id | string | yes | | + | userId | string | yes | | + | status | string | yes | | + | type | string | yes | | + | remark | string | yes | | + | profileType | string | yes | | + | active | boolean | yes | | + | expiryDate | string | no | | + | createdAt | string | no | | + | updatedAt | string | no | | + | deletedAt | string | no | | + | lenderId | string | yes | | + | lender | [Lender](#Lender) | no | | + | entityMapId | string | no | | + | entityId | string | no | | + +--- + + + + + #### [Form](#Form) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | id | string | no | | + | name | string | no | | + | title | string | no | | + | subtitle | string | no | | + | action | string | no | | + | form | any | no | | + | uiSchema | any | no | | + | workflowId | string | no | | + +--- + + + + + #### [LenderKycStepMap](#LenderKycStepMap) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | id | string | no | | + | step | string | yes | | + | stepIndex | number | yes | | + | lenderId | string | yes | | + | active | boolean | yes | | + | rules | any | yes | | + | profileType | string | yes | | + | createdAt | string | no | | + | updatedAt | string | no | | + | deletedAt | string | no | | + | name | string | yes | | + | description | string | yes | | + | iconUrl | string | yes | | + | isInteractive | boolean | yes | | + | formId | string | no | | + | merchantId | string | no | | + | form | [Form](#Form) | yes | | + | docSchema | any | yes | | + +--- + + + + + #### [UserKycLenderStepMap](#UserKycLenderStepMap) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | id | string | yes | | + | userId | string | yes | | + | lenderKycStepMapId | string | yes | | + | userKycDetailId | string | yes | | + | lenderId | string | yes | | + | ruleState | any | yes | | + | active | boolean | yes | | + | status | string | yes | | + | documentId | string | no | | + | createdAt | string | yes | | + | updatedAt | string | yes | | + | deletedAt | string | no | | + | lenderKycStepMap | [LenderKycStepMap](#LenderKycStepMap) | no | | + | entityMapId | string | no | | + | entityId | string | no | | + | updatedBy | string | no | | + +--- + + + + + #### [ProofOfIdentity](#ProofOfIdentity) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | dob | string | yes | | + | hashedEmail | string | yes | | + | gender | string | yes | | + | hashedMobileNumber | string | yes | | + | name | string | yes | | + +--- + + + + + #### [ProofOfAddress](#ProofOfAddress) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | careOf | string | yes | | + | country | string | yes | | + | district | string | yes | | + | house | string | yes | | + | landmark | string | yes | | + | locality | string | yes | | + | pincode | string | yes | | + | postOffice | string | yes | | + | state | string | yes | | + | street | string | yes | | + | subDistrict | string | yes | | + | vtc | string | yes | | + +--- + + + + + #### [EAadhaarData](#EAadhaarData) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | aadhaarReferenceNumber | string | yes | | + | aadhaarUid | string | yes | | + | image | string | yes | | + | proofOfIdentity | [ProofOfIdentity](#ProofOfIdentity) | yes | | + | proofOfAddress | [ProofOfAddress](#ProofOfAddress) | yes | | + | xml | string | no | | + | pdf | string | no | | + | address | string | no | | + +--- + + + + + #### [Consent](#Consent) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | text | string | yes | | + | type | string | yes | | + +--- + + + + + #### [ValidatePanRequest](#ValidatePanRequest) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | pan | string | yes | | + | consents | [[Consent](#Consent)] | yes | | + +--- + + + + + #### [BankDetails](#BankDetails) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | accountType | string | yes | | + | bankName | string | yes | | + | ifsc | string | yes | | + | accountNumber | string | yes | | + | accountHolderName | string | yes | | + +--- + + + + + #### [DocumentData](#DocumentData) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | selfie | string | no | | + | video | string | no | | + | digilockerCode | string | no | | + | bankDetails | [BankDetails](#BankDetails) | no | | + +--- + + + + + #### [ConfirmPanRequest](#ConfirmPanRequest) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | pan | string | yes | | + | name | string | yes | | + | entity | string | no | | + | merchantId | string | no | | + +--- + + + + + #### [LivelinessDetails](#LivelinessDetails) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | selfie | string | yes | | + | video | string | yes | | + +--- + + + + + #### [UploadDocumentRequest](#UploadDocumentRequest) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | user | any | no | | + | documentData | any | no | | + | lenderSlug | string | yes | | + | kycStep | string | yes | | + | merchantId | string | no | | + | entityMapId | string | no | | + +--- + + + + + #### [UploadDocumentRequestV1](#UploadDocumentRequestV1) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | kycStep | string | yes | | + | entityMapId | string | yes | | + | documentData | any | yes | | + +--- + + + + + #### [UploadDocumentRequestV3](#UploadDocumentRequestV3) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | kycStep | string | yes | | + | entityMapId | string | yes | | + | documentData | any | yes | | + +--- + + + + + #### [AadhaarRequest](#AadhaarRequest) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | digilockerCode | string | no | | + +--- + + + + + #### [UploadAadhaarRequest](#UploadAadhaarRequest) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | documentData | [AadhaarRequest](#AadhaarRequest) | no | | + | user | any | no | | + | lenderSlug | string | yes | | + | kycStep | string | yes | | + | merchantId | string | no | | + | entityMapId | string | no | | + +--- + + + + + #### [UploadLivelinessRequest](#UploadLivelinessRequest) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | documentData | [LivelinessDetails](#LivelinessDetails) | no | | + | user | any | no | | + | lenderSlug | string | yes | | + | kycStep | string | yes | | + | merchantId | string | no | | + | entityMapId | string | no | | + +--- + + + + + #### [UploadAadhaarRequestV1](#UploadAadhaarRequestV1) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | documentData | [AadhaarRequest](#AadhaarRequest) | yes | | + | kycStep | string | yes | | + | entityMapId | string | yes | | + +--- + + + + + #### [UploadLivelinessRequestV1](#UploadLivelinessRequestV1) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | documentData | [LivelinessDetails](#LivelinessDetails) | yes | | + | kycStep | string | yes | | + | entityMapId | string | yes | | + +--- + + + + + #### [UploadAadhaarRequestV2](#UploadAadhaarRequestV2) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | documentData | [AadhaarRequest](#AadhaarRequest) | no | | + | user | any | no | | + | lenderSlug | string | yes | | + | kycStep | string | yes | | + | merchantId | string | no | | + | entityMapId | string | no | | + +--- + + + + + #### [UploadLivelinessRequestV2](#UploadLivelinessRequestV2) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | documentData | [LivelinessDetails](#LivelinessDetails) | no | | + | user | any | no | | + | lenderSlug | string | yes | | + | kycStep | string | yes | | + | merchantId | string | no | | + | entityMapId | string | no | | + +--- + + + + + #### [UploadAadhaarRequestV3](#UploadAadhaarRequestV3) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | documentData | [AadhaarRequest](#AadhaarRequest) | yes | | + | kycStep | string | yes | | + | entityMapId | string | yes | | + +--- + + + + + #### [UploadLivelinessRequestV3](#UploadLivelinessRequestV3) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | documentData | [LivelinessDetails](#LivelinessDetails) | yes | | + | kycStep | string | yes | | + | entityMapId | string | yes | | + +--- + + + + + #### [UploadBankDetailsRequest](#UploadBankDetailsRequest) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | documentData | [BankDetails](#BankDetails) | no | | + | user | any | no | | + | lenderSlug | string | yes | | + | kycStep | string | yes | | + | merchantId | string | no | | + | entityMapId | string | no | | + +--- + + + + + #### [InitiateKycRequest](#InitiateKycRequest) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | kycType | string | yes | | + | kycId | string | no | | + | merchantId | string | no | | + +--- + + + + + #### [InitiateKycRequestV1](#InitiateKycRequestV1) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | entityMapId | string | yes | | + | kycType | string | yes | | + | kycId | string | no | | + | merchantId | string | no | | + +--- + + + + + #### [LenderOnboardRequest](#LenderOnboardRequest) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | ack | string | no | | + | data | any | yes | | + | entityMapId | string | no | | + | merchantId | string | no | | + +--- + + + + + #### [UpdateLenderStatusRequest](#UpdateLenderStatusRequest) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | status | string | yes | | + | payload | any | yes | | + | data | any | yes | | + | action | boolean | yes | | + +--- + + + + + #### [UpdateProfileRequest](#UpdateProfileRequest) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | firstName | string | no | | + | lastName | string | no | | + | gender | string | no | | + | dob | string | no | | + | userId | string | yes | | + | isOnboarded | boolean | no | | + | address | string | no | | + +--- + + + + + #### [UpdateEntityRequest](#UpdateEntityRequest) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | name | string | no | | + | gender | string | no | | + | dob | string | no | | + | isDefault | boolean | no | | + | address | [ProofOfAddress](#ProofOfAddress) | no | | + +--- + + + + + #### [CreateKycStepsRequest](#CreateKycStepsRequest) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | data | any | yes | | + +--- + + + + + #### [CreateLenderPgConfigRequest](#CreateLenderPgConfigRequest) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | mid | string | yes | | + | clientId | string | yes | | + | secret | string | yes | | + | active | boolean | yes | | + | pgId | string | yes | | + | lenderId | string | yes | | + +--- + + + + + #### [CreateLenderStateRequest](#CreateLenderStateRequest) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | data | any | yes | | + +--- + + + + + #### [UpdateLenderRequest](#UpdateLenderRequest) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | data | any | yes | | + | lenderId | string | yes | | + +--- + + + + + #### [OtherPolicyFilters](#OtherPolicyFilters) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | orderBy | [any] | no | | + +--- + + + + + #### [GetPolicyFilters](#GetPolicyFilters) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | policyType | string | no | | + | lenderIds | [any] | no | | + | merchantIds | [any] | no | | + | orderBy | [any] | no | | + +--- + + + + + #### [GetPolicyFilters2](#GetPolicyFilters2) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | breType | string | no | | + | lenderId | [any] | no | | + | merchantId | [any] | no | | + | loanType | string | no | | + | journeyType | string | no | | + | subType | string | no | | + +--- + + + + + #### [MerchantConfigRequest](#MerchantConfigRequest) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | id | string | yes | | + | merchantConfigSchema | any | yes | | + +--- + + + + + #### [PanDetails](#PanDetails) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | name | string | yes | | + | idNumber | string | yes | | + +--- + + + + + #### [FilterByDate](#FilterByDate) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | startDate | string | no | | + | endDate | string | no | | + +--- + + + + + #### [AvailableLendersRequest](#AvailableLendersRequest) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | chargeToken | string | yes | | + +--- + + + + + #### [InitialData](#InitialData) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | userId | string | yes | | + | entityId | string | yes | | + +--- + + + + + #### [ExecutePolicyRequest](#ExecutePolicyRequest) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | policyFilters | [GetPolicyFilters](#GetPolicyFilters) | no | | + | initialData | [InitialData](#InitialData) | yes | | + +--- + + + + + #### [ExecutePolicyRequest2](#ExecutePolicyRequest2) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | policyFilters | [GetPolicyFilters2](#GetPolicyFilters2) | no | | + | initialData | [InitialData](#InitialData) | yes | | + +--- + + + + + #### [RegisterGstRequest](#RegisterGstRequest) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | gstTin | string | yes | | + +--- + + + + + #### [PopulateFormRequest](#PopulateFormRequest) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | form | any | yes | | + | lenderId | string | no | | + | merchantId | string | no | | + +--- + + + + + #### [ValidateFormFieldRequest](#ValidateFormFieldRequest) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | workflowName | string | yes | | + | userId | string | no | | + | entityId | string | no | | + | entityMapId | string | no | | + | lenderId | string | no | | + | merchantId | string | no | | + | fields | any | yes | | + +--- + + + + + #### [MerchantMetricFilter](#MerchantMetricFilter) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | type | string | yes | | + | display | string | yes | | + | value | [any] | yes | | + | isSelected | boolean | no | | + | isActive | boolean | no | | + +--- + + + + + #### [LenderCustomerMetricsRequest](#LenderCustomerMetricsRequest) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | sort | [[MerchantMetricFilter](#MerchantMetricFilter)] | no | | + | filters | [[MerchantMetricFilter](#MerchantMetricFilter)] | no | | + | merchantId | string | no | | + | lenderId | string | no | | + | pivotPoints | number | no | | + +--- + + + + + #### [StonewallCustomer](#StonewallCustomer) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | mobile | string | no | | + | uid | string | no | | + +--- + + + + + #### [GetLimitRequest](#GetLimitRequest) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | lenderSlugs | [any] | no | | + | onlyDefaultLender | boolean | no | | + | customer | [StonewallCustomer](#StonewallCustomer) | yes | | + +--- + + + + + #### [DocumentObject](#DocumentObject) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | id | string | no | | + | userId | string | no | | + | name | string | no | | + | imageUrl | string | no | | + | number | string | yes | | + | detail | any | yes | | + | valid | boolean | no | | + | entityId | string | no | | + +--- + + + + + #### [ManualKycRequest](#ManualKycRequest) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | remark | any | yes | | + | status | string | yes | | + | stepId | string | yes | | + | entityMapId | string | yes | | + | documentData | [DocumentObject](#DocumentObject) | no | | + +--- + + + + + #### [RetriggerLenderOnboardRequest](#RetriggerLenderOnboardRequest) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | stepId | string | yes | | + | data | any | yes | | + +--- + + + + + #### [EntityMapDto](#EntityMapDto) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | id | string | yes | | + | merchantId | string | no | | + | status | string | no | | + | lenderId | string | yes | | + | limit | number | no | | + | creditType | string | no | | + | userId | string | yes | | + | entityId | string | yes | | + +--- + + + + + #### [EntityDto](#EntityDto) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | id | string | yes | | + | type | string | no | | + | address | string | no | | + | name | string | no | | + | gender | string | no | | + | dob | string | no | | + | userId | string | yes | | + +--- + + + + + #### [FindDocResponse](#FindDocResponse) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | status | string | yes | | + | info | string | yes | | + | number | string | yes | | + | details | any | no | | + | name | string | no | | + +--- + + + + + #### [LenderKycStatus](#LenderKycStatus) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | status | string | yes | | + | lenderId | string | no | | + | lenderName | string | no | | + | kycType | string | no | | + +--- + + + + + #### [StateResponeDto](#StateResponeDto) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | step | [UserKycLenderStepMap](#UserKycLenderStepMap) | yes | | + | isStepCompleted | boolean | yes | | + +--- + + + + + #### [KycStateMachineDto](#KycStateMachineDto) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | kycResult | [UserKycDetail](#UserKycDetail) | yes | | + | action | [UserKycLenderStepMap](#UserKycLenderStepMap) | no | | + +--- + + + + + #### [InitiateKycDto](#InitiateKycDto) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | kycType | string | yes | | + | lenderId | string | yes | | + | user | any | yes | | + | kycId | string | no | | + | entityRelation | [EntityMapDto](#EntityMapDto) | no | | + +--- + + + + + #### [LenderOnboardDto](#LenderOnboardDto) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | lender | [Lender](#Lender) | no | | + | user | any | yes | | + | userLenderDetail | [UserLender](#UserLender) | no | | + | payload | [LenderOnboardRequest](#LenderOnboardRequest) | yes | | + | entityRelation | [EntityMapDto](#EntityMapDto) | no | | + | ipAddress | string | yes | | + | overrideTtl | boolean | no | | + +--- + + + + + #### [StepDetails](#StepDetails) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | name | string | no | | + | description | string | no | | + | iconUrl | string | no | | + | status | string | yes | | + | step | string | yes | | + | order | number | yes | | + +--- + + + + + #### [OnboardStatusDto](#OnboardStatusDto) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | onboardStep | string | yes | | + | onboardingId | string | yes | | + | status | string | yes | | + | action | string | yes | | + | actionStatus | string | yes | | + | lender | [Lender](#Lender) | yes | | + | navigation | string | no | | + | approvedLimit | number | yes | | + | proposedLimit | number | yes | | + | actionData | any | no | | + | steps | [[StepDetails](#StepDetails)] | no | | + | entityId | string | yes | | + | entityMapId | string | yes | | + | actionIsForm | boolean | yes | | + | actionForm | [Form](#Form) | no | | + +--- + + + + + #### [LenderFilters](#LenderFilters) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | includeStatus | [any] | no | | + | excludeStatus | [any] | no | | + | allowDisabledLender | any | no | | + +--- + + + + + #### [Policy](#Policy) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | id | string | no | | + | name | string | no | | + | url | string | no | | + | data | any | no | | + | version | string | no | | + | active | boolean | no | | + | type | any | no | | + | index | number | no | | + | lenderId | string | no | | + | merchantId | string | no | | + | workflowId | string | no | | + | schemaRef | [any] | no | | + | masterVariableRef | [any] | no | | + | customVariable | any | no | | + | subType | string | no | | + | createdAt | any | no | | + | updatedAt | any | no | | + | deletedAt | any | no | | + +--- + + + + + #### [GetKycDocsResponse](#GetKycDocsResponse) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | documents | [[FindDocResponse](#FindDocResponse)] | yes | | + +--- + + + + + #### [OrganizationLogosObject](#OrganizationLogosObject) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | id | string | yes | | + | name | string | yes | | + | logo | string | yes | | + | active | boolean | yes | | + +--- + + + + + #### [MetricSubTypes](#MetricSubTypes) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | date | string | yes | | + | count | string | no | | + | sum | string | no | | + +--- + + + + + #### [MetricTypes](#MetricTypes) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | pivots | [[MetricSubTypes](#MetricSubTypes)] | yes | | + | total | string | no | | + | description | string | yes | | + | title | string | yes | | + | valueFormat | string | yes | | + | logo | string | yes | | + +--- + + + + + #### [BreApprovedUsersResponse](#BreApprovedUsersResponse) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | data | [MetricTypes](#MetricTypes) | yes | | + +--- + + + + + #### [Metrics](#Metrics) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | lenderApprovedUsers | [MetricTypes](#MetricTypes) | yes | | + | breApprovedUsers | [MetricTypes](#MetricTypes) | yes | | + | totalCreditLine | [MetricTypes](#MetricTypes) | yes | | + +--- + + + + + #### [MetricData](#MetricData) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | metrics | [Metrics](#Metrics) | yes | | + | filters | [[MerchantMetricFilter](#MerchantMetricFilter)] | yes | | + | sort | [[MerchantMetricFilter](#MerchantMetricFilter)] | yes | | + +--- + + + + + #### [ApprovedLenders](#ApprovedLenders) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | status | string | yes | | + | lenders | [[BreOutput](#BreOutput)] | yes | | + +--- + + + + + #### [BreResultStatus](#BreResultStatus) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | status | string | yes | | + | approvedLenders | [[BreOutput](#BreOutput)] | no | | + +--- + + + + + #### [GetAllUserLendersByEnityId](#GetAllUserLendersByEnityId) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | entityId | string | yes | | + | entityMapId | string | yes | | + | userId | string | yes | | + | status | string | yes | | + | lender | [Lender](#Lender) | yes | | + | partnerId | string | no | | + +--- + + + + + #### [LenderState](#LenderState) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | id | string | no | | + | name | string | yes | | + | lenderId | string | yes | | + | index | number | yes | | + | workflowName | string | yes | | + | workflowUrl | string | no | | + | active | boolean | yes | | + | createdAt | string | no | | + | updatedAt | string | no | | + | deletedAt | string | no | | + | lender | [Lender](#Lender) | no | | + | parentStateId | string | no | | + | ttl | number | yes | | + | displayName | string | no | | + | description | string | no | | + | iconUrl | string | no | | + | isInteractive | boolean | yes | | + | schema | any | no | | + +--- + + + + + #### [UserLenderState](#UserLenderState) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | id | string | yes | | + | lenderStateId | string | yes | | + | lenderId | string | yes | | + | userId | string | yes | | + | status | string | yes | | + | userLenderId | string | yes | | + | remark | string | yes | | + | active | boolean | yes | | + | lenderState | [LenderState](#LenderState) | no | | + | data | any | no | | + | createdAt | string | no | | + | updatedAt | string | no | | + | deletedAt | string | no | | + | entityId | string | no | | + | entityMapId | string | no | | + | updatedBy | string | no | | + +--- + + + + + #### [LenderConfig](#LenderConfig) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | id | string | no | | + | baseUrl | string | yes | | + | accessToken | string | no | | + | secret | string | no | | + | data | any | yes | | + | lenderId | string | yes | | + | active | boolean | no | | + | createdAt | string | no | | + | updatedAt | string | no | | + | deletedAt | string | no | | + +--- + + + + + #### [Pg](#Pg) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | id | string | yes | | + | name | string | yes | | + | active | boolean | yes | | + +--- + + + + + #### [LenderPgConfig](#LenderPgConfig) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | id | string | no | | + | mid | string | yes | | + | clientId | string | yes | | + | secret | string | yes | | + | lenderId | string | yes | | + | pgId | string | yes | | + | active | boolean | yes | | + +--- + + + + + #### [FileUploadResponse](#FileUploadResponse) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | fileId | string | yes | | + | name | string | yes | | + | path | string | yes | | + | format | string | yes | | + | size | number | yes | | + | access | string | yes | | + | tags | string | yes | | + | metadata | string | yes | | + | url | string | yes | | + | thumbnail | string | yes | | + +--- + + + + + #### [PresignedUrl](#PresignedUrl) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | url | string | yes | | + | fields | any | yes | | + +--- + + + + + #### [PresignedUrlV2](#PresignedUrlV2) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | url | string | yes | | + | fields | any | yes | | + +--- + + + + + #### [LenderDocument](#LenderDocument) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | id | string | no | | + | lenderId | string | no | | + | type | string | no | | + | document | any | no | | + | active | boolean | no | | + | createdAt | string | no | | + | updatedAt | string | no | | + | deletedAt | string | no | | + +--- + + + + + #### [KycStatusResponse](#KycStatusResponse) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | isKycInitiated | boolean | yes | | + | userId | string | yes | | + | kycStatuses | [[LenderKycStatus](#LenderKycStatus)] | yes | | + +--- + + + + + #### [WorkflowResponse](#WorkflowResponse) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | data | any | no | | + +--- + + + + + #### [Action](#Action) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | step | string | yes | | + | status | string | yes | | + | index | number | yes | | + | isForm | boolean | no | | + | form | [Form](#Form) | yes | | + +--- + + + + + #### [InitiateKycResponse](#InitiateKycResponse) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | kycResult | [UserKycDetail](#UserKycDetail) | yes | | + | action | [Action](#Action) | yes | | + +--- + + + + + #### [UploadDocResponse](#UploadDocResponse) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | status | string | yes | | + | data | any | no | | + | remark | string | no | | + | kycResult | [UserKycDetail](#UserKycDetail) | yes | | + | action | [Action](#Action) | yes | | + +--- + + + + + #### [LenderOnboardResponse](#LenderOnboardResponse) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | result | [UserLender](#UserLender) | yes | | + | action | [UserLenderState](#UserLenderState) | yes | | + | data | any | yes | | + +--- + + + + + #### [OnboardingStatusResponse](#OnboardingStatusResponse) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | onboardStatuses | [[OnboardStatusDto](#OnboardStatusDto)] | yes | | + +--- + + + + + #### [SignedUrlResponse](#SignedUrlResponse) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | signedUrl | [PresignedUrl](#PresignedUrl) | yes | | + | fileUrl | string | yes | | + +--- + + + + + #### [SignedUrlV2Response](#SignedUrlV2Response) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | signedUrl | [PresignedUrlV2](#PresignedUrlV2) | yes | | + | fileUrl | string | yes | | + +--- + + + + + #### [PresignedUrlV3](#PresignedUrlV3) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | signedUrl | string | yes | | + | provider | any | yes | | + +--- + + + + + #### [SignedUrlV3Response](#SignedUrlV3Response) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | signedDetails | [PresignedUrlV3](#PresignedUrlV3) | yes | | + | fileUrl | string | yes | | + +--- + + + + + #### [DigilockerLinkResponse](#DigilockerLinkResponse) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | authorizationUrl | string | yes | | + +--- + + + + + #### [GetDocumentsResponse](#GetDocumentsResponse) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | documents | [[FindDocResponse](#FindDocResponse)] | yes | | + +--- + + + + + #### [ApprovedLendersTransaction](#ApprovedLendersTransaction) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | name | string | yes | | + | slug | string | yes | | + | imageUrl | string | yes | | + | status | string | yes | | + | active | boolean | yes | | + | proposedLimit | number | yes | | + | createdAt | any | yes | | + | updatedAt | any | yes | | + | deletedAt | any | no | | + | isDefault | boolean | no | | + | __headers | string | no | | + +--- + + + + + #### [ApprovedPossibleLenders](#ApprovedPossibleLenders) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | limit | number | yes | | + | name | string | yes | | + | slug | string | yes | | + | active | boolean | yes | | + | id | string | yes | | + | theme | [LenderTheme](#LenderTheme) | no | | + +--- + + + + + #### [AvailableLenders](#AvailableLenders) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | approvedLenders | [[ApprovedPossibleLenders](#ApprovedPossibleLenders)] | yes | | + | possibleLenders | [[ApprovedPossibleLenders](#ApprovedPossibleLenders)] | yes | | + +--- + + + + + #### [CreditLimit](#CreditLimit) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | availableLimit | number | yes | | + | approvedLimit | number | yes | | + +--- + + + + + #### [CreditLimitResponse](#CreditLimitResponse) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | status | string | yes | | + | message | string | yes | | + | action | boolean | yes | | + | credit | [CreditLimit](#CreditLimit) | yes | | + +--- + + + + + #### [LenderPgConfigResponse](#LenderPgConfigResponse) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | id | string | yes | | + | mid | string | yes | | + | clientId | string | yes | | + | secret | string | yes | | + | lenderId | string | yes | | + | pgId | string | yes | | + | active | boolean | yes | | + | pgName | string | yes | | + | pgActive | boolean | yes | | + +--- + + + + + #### [GetLendersResponse](#GetLendersResponse) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | data | [[Lender](#Lender)] | yes | | + +--- + + + + + #### [LenderConfigurationResponse](#LenderConfigurationResponse) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | lender | [Lender](#Lender) | yes | | + | lenderPgConfig | [LenderPgConfig](#LenderPgConfig) | yes | | + | lenderConfig | [LenderConfig](#LenderConfig) | yes | | + | lenderState | [[LenderState](#LenderState)] | yes | | + | lenderKycStepMap | [[LenderKycStepMap](#LenderKycStepMap)] | yes | | + +--- + + + + + #### [UpsertLenderResponse](#UpsertLenderResponse) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | data | any | yes | | + +--- + + + + + #### [UpsertLenderConfigResponse](#UpsertLenderConfigResponse) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | data | any | yes | | + +--- + + + + + #### [CreateKycStepsSchema](#CreateKycStepsSchema) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | data | [[LenderKycStepMap](#LenderKycStepMap)] | yes | | + +--- + + + + + #### [CreatePaymentGatewaySchema](#CreatePaymentGatewaySchema) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | data | [[LenderPgConfig](#LenderPgConfig)] | yes | | + +--- + + + + + #### [CreateLenderStateSchema](#CreateLenderStateSchema) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | data | [[LenderState](#LenderState)] | yes | | + +--- + + + + + #### [GetAllPaymentGatewaysSchema](#GetAllPaymentGatewaysSchema) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | data | [[Pg](#Pg)] | yes | | + +--- + + + + + #### [PolicyResponse](#PolicyResponse) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | policies | [[Policy](#Policy)] | yes | | + +--- + + + + + #### [CreditCheckBreResponse](#CreditCheckBreResponse) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | newLenderAssigned | boolean | yes | | + | breStatus | string | yes | | + +--- + + + + + #### [MerchantConfigResponse](#MerchantConfigResponse) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | id | string | yes | | + | merhantConfigSchema | string | yes | | + +--- + + + + + #### [UserLenderByIdAndStatusResponse](#UserLenderByIdAndStatusResponse) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | id | string | yes | | + | userId | string | yes | | + | lenderId | string | yes | | + | active | boolean | no | | + | status | string | yes | | + | createdAt | string | yes | | + | updatedAt | string | yes | | + | deletedAt | string | no | | + | approvedLimit | number | yes | | + | slug | string | no | | + | theme | [LenderTheme](#LenderTheme) | no | | + | name | any | no | | + +--- + + + + + #### [IntgrAvailableCreditLimit](#IntgrAvailableCreditLimit) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | limit | number | yes | | + | lenderName | string | yes | | + | slug | string | yes | | + | isDefault | boolean | yes | | + | logoUrl | string | yes | | + +--- + + + + + #### [IngtrAvailableLimit](#IngtrAvailableLimit) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | available | [[IntgrAvailableCreditLimit](#IntgrAvailableCreditLimit)] | yes | | + +--- + + + + + #### [IntgrCreditLimit](#IntgrCreditLimit) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | limit | [IngtrAvailableLimit](#IngtrAvailableLimit) | yes | | + | __headers | string | no | | + +--- + + + + + #### [PossibleLendersInternal](#PossibleLendersInternal) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | limit | boolean | yes | | + | lenderName | string | yes | | + | slug | string | yes | | + | isDefault | boolean | yes | | + | logo | string | yes | | + | lenderId | string | yes | | + +--- + + + + + #### [PossibleLendersInternalResponse](#PossibleLendersInternalResponse) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | lenders | [[PossibleLendersInternal](#PossibleLendersInternal)] | yes | | + +--- + + + + + #### [GetTotalKycResponse](#GetTotalKycResponse) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | totalKyc | string | yes | | + +--- + + + + + #### [GetTotalKycCompletedUsersResponse](#GetTotalKycCompletedUsersResponse) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | totalKycCompletedUsers | string | yes | | + +--- + + + + + #### [GetTotalPendingUsersResponse](#GetTotalPendingUsersResponse) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | totalPendingKyc | string | yes | | + +--- + + + + + #### [GetTotalCreditProvidedResponse](#GetTotalCreditProvidedResponse) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | totalCreditLimit | string | yes | | + +--- + + + + + #### [MetaSchemaResponse](#MetaSchemaResponse) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | title | string | yes | | + | name | string | yes | | + | required | [string] | yes | | + | type | string | yes | | + | properties | string | yes | | + +--- + + + + + #### [MetaSchema](#MetaSchema) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | metaSchema | [MetaSchemaResponse](#MetaSchemaResponse) | yes | | + +--- + + + + + #### [AddMetaSchema](#AddMetaSchema) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | lenderSlug | string | yes | | + | merchantId | string | yes | | + | schema | any | yes | | + +--- + + + + + #### [AddMetaSchemaRequest](#AddMetaSchemaRequest) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | merchantId | string | yes | | + | schema | any | yes | | + +--- + + + + + #### [ValidatePanResponse](#ValidatePanResponse) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | panName | string | yes | | + | isPanValid | string | yes | | + | pan | string | yes | | + | isProprietor | boolean | yes | | + | panType | string | yes | | + | errorCode | string | no | | + | status | string | no | | + | errorMessage | string | no | | + +--- + + + + + #### [ConfirmPanResonse](#ConfirmPanResonse) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | status | string | yes | | + | statusCode | string | yes | | + | message | string | yes | | + +--- + + + + + #### [LenderCountResponse](#LenderCountResponse) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | active | number | yes | | + | inActive | number | yes | | + +--- + + + + + #### [OnboardStepsDto](#OnboardStepsDto) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | steps | [[StepDetails](#StepDetails)] | yes | | + | lender | [Lender](#Lender) | yes | | + +--- + + + + + #### [OnboardStepsResponse](#OnboardStepsResponse) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | stepDetails | [[OnboardStepsDto](#OnboardStepsDto)] | yes | | + +--- + + + + + #### [LenderDocumentResponse](#LenderDocumentResponse) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | data | [LenderDocument](#LenderDocument) | yes | | + +--- + + + + + #### [GetUserLendersResponse](#GetUserLendersResponse) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | data | [[UserLender](#UserLender)] | yes | | + +--- + + + + + #### [CreditReportResponse](#CreditReportResponse) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | data | [SourceCreditReport](#SourceCreditReport) | yes | | + +--- + + + + + #### [KycDetailsReponse](#KycDetailsReponse) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | data | [UserKycLenderStepMap](#UserKycLenderStepMap) | yes | | + +--- + + + + + #### [GetDocumentByIdResponse](#GetDocumentByIdResponse) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | data | [Document](#Document) | yes | | + +--- + + + + + #### [GetAllFormsResponse](#GetAllFormsResponse) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | data | any | yes | | + +--- + + + + + #### [UpsertFormResponse](#UpsertFormResponse) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | data | any | yes | | + +--- + + + + + #### [GstDetails](#GstDetails) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | gstTin | string | yes | | + | businessName | string | yes | | + +--- + + + + + #### [GstDetailsResponse](#GstDetailsResponse) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | gstDetails | [[GstDetails](#GstDetails)] | yes | | + +--- + + + + + #### [RegisterGstResponse](#RegisterGstResponse) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | gstDocDetails | [Document](#Document) | yes | | + | status | string | yes | | + +--- + + + + + #### [PopulateFormResponse](#PopulateFormResponse) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | form | any | yes | | + +--- + + + + + #### [ValidateFormFieldResponse](#ValidateFormFieldResponse) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | status | string | yes | | + | message | string | yes | | + | data | any | yes | | + +--- + + + + + #### [LenderCustomerMetricsResponse](#LenderCustomerMetricsResponse) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | status | string | yes | | + | message | string | yes | | + | data | [MetricData](#MetricData) | yes | | + +--- + + + + + #### [ManualKycResponse](#ManualKycResponse) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | message | string | yes | | + | step | [UserKycLenderStepMap](#UserKycLenderStepMap) | yes | | + +--- + + + + + #### [BreOutput](#BreOutput) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | id | string | yes | | + | userId | string | yes | | + | entityId | string | yes | | + | lenderId | string | no | | + | merchantId | string | no | | + | policyName | string | yes | | + | category | string | yes | | + | type | string | yes | | + | output | any | yes | | + | status | string | yes | | + | createdAt | string | yes | | + | updatedAt | string | yes | | + | deletedAt | string | yes | | + +--- + + + + + #### [CustomerKycDetailsReponse](#CustomerKycDetailsReponse) + + | Properties | Type | Nullable | Description | + | ---------- | ---- | -------- | ----------- | + | data | [UserKycLenderStepMap](#UserKycLenderStepMap) | yes | | + +--- + + + + diff --git a/documentation/platform/README.md b/documentation/platform/README.md new file mode 100644 index 0000000..f80480c --- /dev/null +++ b/documentation/platform/README.md @@ -0,0 +1,8 @@ +##### [Back to home](../../README.md) + +# FDK Platform Front API Documentaion + + +* [Customer](CUSTOMER.md) - Authentication Service +* [Credit](CREDIT.md) - Transaction Service +* [MultiKyc](MULTIKYC.md) - Will deprecate Hawkeye \ No newline at end of file diff --git a/index.d.ts b/index.d.ts new file mode 100644 index 0000000..cb0907b --- /dev/null +++ b/index.d.ts @@ -0,0 +1,7 @@ + +import { PlatformConfig } from "./sdk/platform"; +import { PlatformClient } from "./sdk/platform"; +import { fdkAxios } from "./sdk/common/AxiosHelper"; +import Utility = require("./sdk/common/Utility"); +import Constant = require("./sdk/common/Constant"); +export { PlatformConfig, PlatformClient, fdkAxios as FdkAxios, Utility, Constant }; diff --git a/index.js b/index.js new file mode 100644 index 0000000..0eb2c87 --- /dev/null +++ b/index.js @@ -0,0 +1,12 @@ +const {PlatformConfig, PlatformClient} = require('./sdk/platform'); +const {fdkAxios} = require('./sdk/common/AxiosHelper'); +const Utility = require('./sdk/common/Utility'); +const Constant = require('./sdk/common/Constant'); + +module.exports = { + PlatformConfig: PlatformConfig, + PlatformClient: PlatformClient, + FdkAxios: fdkAxios, + Utility, + Constant, +}; diff --git a/jest.config.d.ts b/jest.config.d.ts new file mode 100644 index 0000000..eb1a197 --- /dev/null +++ b/jest.config.d.ts @@ -0,0 +1,4 @@ +export const verbose: boolean; +export const testEnvironment: string; +export const bail: boolean; +export const testTimeout: number; diff --git a/jest.config.js b/jest.config.js new file mode 100644 index 0000000..0807789 --- /dev/null +++ b/jest.config.js @@ -0,0 +1,6 @@ +module.exports = { + verbose: true, + testEnvironment: 'node', + bail: true, + testTimeout: 30000 +}; \ No newline at end of file diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..eadc371 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,6478 @@ +{ + "name": "ryte", + "version": "1.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "ryte", + "version": "1.0.0", + "license": "ISC", + "dependencies": { + "@pixelbin/core": "^6.0.0", + "axios": "^1.6.0", + "axios-retry": "^3.3.1", + "camelcase": "^6.2.0", + "crypto-js": "^4.0.0", + "joi": "^17.4.0", + "query-string": "^6.14.1" + }, + "devDependencies": { + "axios-mock-adapter": "^1.19.0", + "coveralls": "^3.1.0", + "dotenv": "^10.0.0", + "jest": "^26.6.3" + } + }, + "node_modules/@ampproject/remapping": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", + "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", + "dev": true, + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.24.2", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.2.tgz", + "integrity": "sha512-y5+tLQyV8pg3fsiln67BVLD1P13Eg4lh5RW9mF0zUuvLrv9uIQ4MCL+CRT+FTsBlBjcIan6PGsLcBN0m3ClUyQ==", + "dev": true, + "dependencies": { + "@babel/highlight": "^7.24.2", + "picocolors": "^1.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.24.4", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.24.4.tgz", + "integrity": "sha512-vg8Gih2MLK+kOkHJp4gBEIkyaIi00jgWot2D9QOmmfLC8jINSOzmCLta6Bvz/JSBCqnegV0L80jhxkol5GWNfQ==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.24.4", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.24.4.tgz", + "integrity": "sha512-MBVlMXP+kkl5394RBLSxxk/iLTeVGuXTV3cIDXavPpMMqnSnt6apKgan/U8O3USWZCWZT/TbgfEpKa4uMgN4Dg==", + "dev": true, + "dependencies": { + "@ampproject/remapping": "^2.2.0", + "@babel/code-frame": "^7.24.2", + "@babel/generator": "^7.24.4", + "@babel/helper-compilation-targets": "^7.23.6", + "@babel/helper-module-transforms": "^7.23.3", + "@babel/helpers": "^7.24.4", + "@babel/parser": "^7.24.4", + "@babel/template": "^7.24.0", + "@babel/traverse": "^7.24.1", + "@babel/types": "^7.24.0", + "convert-source-map": "^2.0.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@babel/core/node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true + }, + "node_modules/@babel/generator": { + "version": "7.24.4", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.24.4.tgz", + "integrity": "sha512-Xd6+v6SnjWVx/nus+y0l1sxMOTOMBkyL4+BIdbALyatQnAe/SRVjANeDPSCYaX+i1iJmuGSKf3Z+E+V/va1Hvw==", + "dev": true, + "dependencies": { + "@babel/types": "^7.24.0", + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25", + "jsesc": "^2.5.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.23.6", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.23.6.tgz", + "integrity": "sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.23.5", + "@babel/helper-validator-option": "^7.23.5", + "browserslist": "^4.22.2", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-environment-visitor": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz", + "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-function-name": { + "version": "7.23.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz", + "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==", + "dev": true, + "dependencies": { + "@babel/template": "^7.22.15", + "@babel/types": "^7.23.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-hoist-variables": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.22.5.tgz", + "integrity": "sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==", + "dev": true, + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.24.3", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.24.3.tgz", + "integrity": "sha512-viKb0F9f2s0BCS22QSF308z/+1YWKV/76mwt61NBzS5izMzDPwdq1pTrzf+Li3npBWX9KdQbkeCt1jSAM7lZqg==", + "dev": true, + "dependencies": { + "@babel/types": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.23.3.tgz", + "integrity": "sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==", + "dev": true, + "dependencies": { + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-module-imports": "^7.22.15", + "@babel/helper-simple-access": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "@babel/helper-validator-identifier": "^7.22.20" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.24.0", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.0.tgz", + "integrity": "sha512-9cUznXMG0+FxRuJfvL82QlTqIzhVW9sL0KjMPHhAOOvpQGL8QtdxnBKILjBqxlHyliz0yCa1G903ZXI/FuHy2w==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-simple-access": { + "version": "7.22.5", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.22.5.tgz", + "integrity": "sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==", + "dev": true, + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-split-export-declaration": { + "version": "7.22.6", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.22.6.tgz", + "integrity": "sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==", + "dev": true, + "dependencies": { + "@babel/types": "^7.22.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.1.tgz", + "integrity": "sha512-2ofRCjnnA9y+wk8b9IAREroeUP02KHp431N2mhKniy2yKIDKpbrHv9eXwm8cBeWQYcJmzv5qKCu65P47eCF7CQ==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", + "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.23.5.tgz", + "integrity": "sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.24.4", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.24.4.tgz", + "integrity": "sha512-FewdlZbSiwaVGlgT1DPANDuCHaDMiOo+D/IDYRFYjHOuv66xMSJ7fQwwODwRNAPkADIO/z1EoF/l2BCWlWABDw==", + "dev": true, + "dependencies": { + "@babel/template": "^7.24.0", + "@babel/traverse": "^7.24.1", + "@babel/types": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight": { + "version": "7.24.2", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.2.tgz", + "integrity": "sha512-Yac1ao4flkTxTteCDZLEvdxg2fZfz1v8M4QpaGypq/WPDqg3ijHYbDfs+LG5hvzSoqaSZ9/Z9lKSP3CjZjv+pA==", + "dev": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.22.20", + "chalk": "^2.4.2", + "js-tokens": "^4.0.0", + "picocolors": "^1.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/@babel/highlight/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "node_modules/@babel/highlight/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/@babel/highlight/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/parser": { + "version": "7.24.4", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.4.tgz", + "integrity": "sha512-zTvEBcghmeBma9QIGunWevvBAp4/Qu9Bdq+2k0Ot4fVMD6v3dsC9WOcRSKk7tRRyBM/53yKMJko9xOatGQAwSg==", + "dev": true, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-bigint": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", + "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-class-properties": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", + "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-meta": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", + "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-numeric-separator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-top-level-await": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", + "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/runtime": { + "version": "7.22.15", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.22.15.tgz", + "integrity": "sha512-T0O+aa+4w0u06iNmapipJXMV4HoUir03hpx3/YqXXhu9xim3w+dVphjFWl1OH8NbZHw5Lbm9k45drDkgq2VNNA==", + "dependencies": { + "regenerator-runtime": "^0.14.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/template": { + "version": "7.24.0", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.24.0.tgz", + "integrity": "sha512-Bkf2q8lMB0AFpX0NFEqSbx1OkTHf0f+0j82mkw+ZpzBnkk7e9Ql0891vlfgi+kHwOk8tQjiQHpqh4LaSa0fKEA==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.23.5", + "@babel/parser": "^7.24.0", + "@babel/types": "^7.24.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.24.1", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.24.1.tgz", + "integrity": "sha512-xuU6o9m68KeqZbQuDt2TcKSxUw/mrsvavlEqQ1leZ/B+C9tk6E4sRWy97WaXgvq5E+nU3cXMxv3WKOCanVMCmQ==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.24.1", + "@babel/generator": "^7.24.1", + "@babel/helper-environment-visitor": "^7.22.20", + "@babel/helper-function-name": "^7.23.0", + "@babel/helper-hoist-variables": "^7.22.5", + "@babel/helper-split-export-declaration": "^7.22.6", + "@babel/parser": "^7.24.1", + "@babel/types": "^7.24.0", + "debug": "^4.3.1", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/types": { + "version": "7.24.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.24.0.tgz", + "integrity": "sha512-+j7a5c253RfKh8iABBhywc8NSfP5LURe7Uh4qpsh6jc+aLJguvmIUBdjSdEMQv2bENrCR5MfRdjGo7vzS/ob7w==", + "dev": true, + "dependencies": { + "@babel/helper-string-parser": "^7.23.4", + "@babel/helper-validator-identifier": "^7.22.20", + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@bcoe/v8-coverage": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", + "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", + "dev": true + }, + "node_modules/@cnakazawa/watch": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@cnakazawa/watch/-/watch-1.0.4.tgz", + "integrity": "sha512-v9kIhKwjeZThiWrLmj0y17CWoyddASLj9O2yvbZkbvw/N3rWOYy9zkV66ursAoVr0mV15bL8g0c4QZUE6cdDoQ==", + "dev": true, + "dependencies": { + "exec-sh": "^0.3.2", + "minimist": "^1.2.0" + }, + "bin": { + "watch": "cli.js" + }, + "engines": { + "node": ">=0.1.95" + } + }, + "node_modules/@hapi/hoek": { + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.3.0.tgz", + "integrity": "sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==" + }, + "node_modules/@hapi/topo": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-5.1.0.tgz", + "integrity": "sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==", + "dependencies": { + "@hapi/hoek": "^9.0.0" + } + }, + "node_modules/@istanbuljs/load-nyc-config": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", + "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", + "dev": true, + "dependencies": { + "camelcase": "^5.3.1", + "find-up": "^4.1.0", + "get-package-type": "^0.1.0", + "js-yaml": "^3.13.1", + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/@istanbuljs/schema": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", + "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/console": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-26.6.2.tgz", + "integrity": "sha512-IY1R2i2aLsLr7Id3S6p2BA82GNWryt4oSvEXLAKc+L2zdi89dSkE8xC1C+0kpATG4JhBJREnQOH7/zmccM2B0g==", + "dev": true, + "dependencies": { + "@jest/types": "^26.6.2", + "@types/node": "*", + "chalk": "^4.0.0", + "jest-message-util": "^26.6.2", + "jest-util": "^26.6.2", + "slash": "^3.0.0" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/@jest/core": { + "version": "26.6.3", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-26.6.3.tgz", + "integrity": "sha512-xvV1kKbhfUqFVuZ8Cyo+JPpipAHHAV3kcDBftiduK8EICXmTFddryy3P7NfZt8Pv37rA9nEJBKCCkglCPt/Xjw==", + "dev": true, + "dependencies": { + "@jest/console": "^26.6.2", + "@jest/reporters": "^26.6.2", + "@jest/test-result": "^26.6.2", + "@jest/transform": "^26.6.2", + "@jest/types": "^26.6.2", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.4", + "jest-changed-files": "^26.6.2", + "jest-config": "^26.6.3", + "jest-haste-map": "^26.6.2", + "jest-message-util": "^26.6.2", + "jest-regex-util": "^26.0.0", + "jest-resolve": "^26.6.2", + "jest-resolve-dependencies": "^26.6.3", + "jest-runner": "^26.6.3", + "jest-runtime": "^26.6.3", + "jest-snapshot": "^26.6.2", + "jest-util": "^26.6.2", + "jest-validate": "^26.6.2", + "jest-watcher": "^26.6.2", + "micromatch": "^4.0.2", + "p-each-series": "^2.1.0", + "rimraf": "^3.0.0", + "slash": "^3.0.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/@jest/environment": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-26.6.2.tgz", + "integrity": "sha512-nFy+fHl28zUrRsCeMB61VDThV1pVTtlEokBRgqPrcT1JNq4yRNIyTHfyht6PqtUvY9IsuLGTrbG8kPXjSZIZwA==", + "dev": true, + "dependencies": { + "@jest/fake-timers": "^26.6.2", + "@jest/types": "^26.6.2", + "@types/node": "*", + "jest-mock": "^26.6.2" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/@jest/fake-timers": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-26.6.2.tgz", + "integrity": "sha512-14Uleatt7jdzefLPYM3KLcnUl1ZNikaKq34enpb5XG9i81JpppDb5muZvonvKyrl7ftEHkKS5L5/eB/kxJ+bvA==", + "dev": true, + "dependencies": { + "@jest/types": "^26.6.2", + "@sinonjs/fake-timers": "^6.0.1", + "@types/node": "*", + "jest-message-util": "^26.6.2", + "jest-mock": "^26.6.2", + "jest-util": "^26.6.2" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/@jest/globals": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-26.6.2.tgz", + "integrity": "sha512-85Ltnm7HlB/KesBUuALwQ68YTU72w9H2xW9FjZ1eL1U3lhtefjjl5c2MiUbpXt/i6LaPRvoOFJ22yCBSfQ0JIA==", + "dev": true, + "dependencies": { + "@jest/environment": "^26.6.2", + "@jest/types": "^26.6.2", + "expect": "^26.6.2" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/@jest/reporters": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-26.6.2.tgz", + "integrity": "sha512-h2bW53APG4HvkOnVMo8q3QXa6pcaNt1HkwVsOPMBV6LD/q9oSpxNSYZQYkAnjdMjrJ86UuYeLo+aEZClV6opnw==", + "dev": true, + "dependencies": { + "@bcoe/v8-coverage": "^0.2.3", + "@jest/console": "^26.6.2", + "@jest/test-result": "^26.6.2", + "@jest/transform": "^26.6.2", + "@jest/types": "^26.6.2", + "chalk": "^4.0.0", + "collect-v8-coverage": "^1.0.0", + "exit": "^0.1.2", + "glob": "^7.1.2", + "graceful-fs": "^4.2.4", + "istanbul-lib-coverage": "^3.0.0", + "istanbul-lib-instrument": "^4.0.3", + "istanbul-lib-report": "^3.0.0", + "istanbul-lib-source-maps": "^4.0.0", + "istanbul-reports": "^3.0.2", + "jest-haste-map": "^26.6.2", + "jest-resolve": "^26.6.2", + "jest-util": "^26.6.2", + "jest-worker": "^26.6.2", + "slash": "^3.0.0", + "source-map": "^0.6.0", + "string-length": "^4.0.1", + "terminal-link": "^2.0.0", + "v8-to-istanbul": "^7.0.0" + }, + "engines": { + "node": ">= 10.14.2" + }, + "optionalDependencies": { + "node-notifier": "^8.0.0" + } + }, + "node_modules/@jest/source-map": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-26.6.2.tgz", + "integrity": "sha512-YwYcCwAnNmOVsZ8mr3GfnzdXDAl4LaenZP5z+G0c8bzC9/dugL8zRmxZzdoTl4IaS3CryS1uWnROLPFmb6lVvA==", + "dev": true, + "dependencies": { + "callsites": "^3.0.0", + "graceful-fs": "^4.2.4", + "source-map": "^0.6.0" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/@jest/test-result": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-26.6.2.tgz", + "integrity": "sha512-5O7H5c/7YlojphYNrK02LlDIV2GNPYisKwHm2QTKjNZeEzezCbwYs9swJySv2UfPMyZ0VdsmMv7jIlD/IKYQpQ==", + "dev": true, + "dependencies": { + "@jest/console": "^26.6.2", + "@jest/types": "^26.6.2", + "@types/istanbul-lib-coverage": "^2.0.0", + "collect-v8-coverage": "^1.0.0" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/@jest/test-sequencer": { + "version": "26.6.3", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-26.6.3.tgz", + "integrity": "sha512-YHlVIjP5nfEyjlrSr8t/YdNfU/1XEt7c5b4OxcXCjyRhjzLYu/rO69/WHPuYcbCWkz8kAeZVZp2N2+IOLLEPGw==", + "dev": true, + "dependencies": { + "@jest/test-result": "^26.6.2", + "graceful-fs": "^4.2.4", + "jest-haste-map": "^26.6.2", + "jest-runner": "^26.6.3", + "jest-runtime": "^26.6.3" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/@jest/transform": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-26.6.2.tgz", + "integrity": "sha512-E9JjhUgNzvuQ+vVAL21vlyfy12gP0GhazGgJC4h6qUt1jSdUXGWJ1wfu/X7Sd8etSgxV4ovT1pb9v5D6QW4XgA==", + "dev": true, + "dependencies": { + "@babel/core": "^7.1.0", + "@jest/types": "^26.6.2", + "babel-plugin-istanbul": "^6.0.0", + "chalk": "^4.0.0", + "convert-source-map": "^1.4.0", + "fast-json-stable-stringify": "^2.0.0", + "graceful-fs": "^4.2.4", + "jest-haste-map": "^26.6.2", + "jest-regex-util": "^26.0.0", + "jest-util": "^26.6.2", + "micromatch": "^4.0.2", + "pirates": "^4.0.1", + "slash": "^3.0.0", + "source-map": "^0.6.1", + "write-file-atomic": "^3.0.0" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/@jest/types": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz", + "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==", + "dev": true, + "dependencies": { + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^15.0.0", + "chalk": "^4.0.0" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", + "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", + "dev": true, + "dependencies": { + "@jridgewell/set-array": "^1.2.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", + "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.15", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", + "dev": true + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.25", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", + "dev": true, + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@pixelbin/core": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/@pixelbin/core/-/core-6.0.0.tgz", + "integrity": "sha512-SMHcDY5IK1a9/gx3HBKqYy7y6lcYoQzt/07U6BoqyuoI8FBD4aRD2IuFMjuk4KdhjZS9l/DfzVOC5yryO3BQ/w==", + "dependencies": { + "@babel/runtime": "7.22.15", + "fetch-ponyfill": "7.1.0", + "form-data": "4.0.0" + } + }, + "node_modules/@sideway/address": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/@sideway/address/-/address-4.1.5.tgz", + "integrity": "sha512-IqO/DUQHUkPeixNQ8n0JA6102hT9CmaljNTPmQ1u8MEhBo/R4Q8eKLN/vGZxuebwOroDB4cbpjheD4+/sKFK4Q==", + "dependencies": { + "@hapi/hoek": "^9.0.0" + } + }, + "node_modules/@sideway/formula": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@sideway/formula/-/formula-3.0.1.tgz", + "integrity": "sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg==" + }, + "node_modules/@sideway/pinpoint": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@sideway/pinpoint/-/pinpoint-2.0.0.tgz", + "integrity": "sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==" + }, + "node_modules/@sinonjs/commons": { + "version": "1.8.6", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.6.tgz", + "integrity": "sha512-Ky+XkAkqPZSm3NLBeUng77EBQl3cmeJhITaGHdYH8kjVB+aun3S4XBRti2zt17mtt0mIUDiNxYeoJm6drVvBJQ==", + "dev": true, + "dependencies": { + "type-detect": "4.0.8" + } + }, + "node_modules/@sinonjs/fake-timers": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-6.0.1.tgz", + "integrity": "sha512-MZPUxrmFubI36XS1DI3qmI0YdN1gks62JtFZvxR67ljjSNCeK6U08Zx4msEWOXuofgqUt6zPHSi1H9fbjR/NRA==", + "dev": true, + "dependencies": { + "@sinonjs/commons": "^1.7.0" + } + }, + "node_modules/@tootallnate/once": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", + "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/@types/babel__core": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", + "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", + "dev": true, + "dependencies": { + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" + } + }, + "node_modules/@types/babel__generator": { + "version": "7.6.8", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.8.tgz", + "integrity": "sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==", + "dev": true, + "dependencies": { + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__template": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", + "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", + "dev": true, + "dependencies": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__traverse": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.5.tgz", + "integrity": "sha512-WXCyOcRtH37HAUkpXhUduaxdm82b4GSlyTqajXviN4EfiuPgNYR109xMCKvpl6zPIpua0DGlMEDCq+g8EdoheQ==", + "dev": true, + "dependencies": { + "@babel/types": "^7.20.7" + } + }, + "node_modules/@types/graceful-fs": { + "version": "4.1.9", + "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.9.tgz", + "integrity": "sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/istanbul-lib-coverage": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz", + "integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==", + "dev": true + }, + "node_modules/@types/istanbul-lib-report": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz", + "integrity": "sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==", + "dev": true, + "dependencies": { + "@types/istanbul-lib-coverage": "*" + } + }, + "node_modules/@types/istanbul-reports": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz", + "integrity": "sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==", + "dev": true, + "dependencies": { + "@types/istanbul-lib-report": "*" + } + }, + "node_modules/@types/node": { + "version": "20.12.7", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.12.7.tgz", + "integrity": "sha512-wq0cICSkRLVaf3UGLMGItu/PtdY7oaXaI/RVU+xliKVOtRna3PRY57ZDfztpDL0n11vfymMUnXv8QwYCO7L1wg==", + "dev": true, + "dependencies": { + "undici-types": "~5.26.4" + } + }, + "node_modules/@types/normalize-package-data": { + "version": "2.4.4", + "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.4.tgz", + "integrity": "sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==", + "dev": true + }, + "node_modules/@types/prettier": { + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.7.3.tgz", + "integrity": "sha512-+68kP9yzs4LMp7VNh8gdzMSPZFL44MLGqiHWvttYJe+6qnuVr4Ek9wSBQoveqY/r+LwjCcU29kNVkidwim+kYA==", + "dev": true + }, + "node_modules/@types/stack-utils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.3.tgz", + "integrity": "sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==", + "dev": true + }, + "node_modules/@types/yargs": { + "version": "15.0.19", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.19.tgz", + "integrity": "sha512-2XUaGVmyQjgyAZldf0D0c14vvo/yv0MhQBSTJcejMMaitsn3nxCB6TmH4G0ZQf+uxROOa9mpanoSm8h6SG/1ZA==", + "dev": true, + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/@types/yargs-parser": { + "version": "21.0.3", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz", + "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==", + "dev": true + }, + "node_modules/abab": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz", + "integrity": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==", + "deprecated": "Use your platform's native atob() and btoa() methods instead", + "dev": true + }, + "node_modules/acorn": { + "version": "8.11.3", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz", + "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-globals": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-6.0.0.tgz", + "integrity": "sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==", + "dev": true, + "dependencies": { + "acorn": "^7.1.1", + "acorn-walk": "^7.1.1" + } + }, + "node_modules/acorn-globals/node_modules/acorn": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-walk": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz", + "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==", + "dev": true, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "dev": true, + "dependencies": { + "debug": "4" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "dev": true, + "dependencies": { + "type-fest": "^0.21.3" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dev": true, + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/arr-flatten": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/arr-union": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", + "integrity": "sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/asn1": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", + "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==", + "dev": true, + "dependencies": { + "safer-buffer": "~2.1.0" + } + }, + "node_modules/assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==", + "dev": true, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/assign-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", + "integrity": "sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" + }, + "node_modules/atob": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", + "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", + "dev": true, + "bin": { + "atob": "bin/atob.js" + }, + "engines": { + "node": ">= 4.5.0" + } + }, + "node_modules/aws-sign2": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/aws4": { + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.12.0.tgz", + "integrity": "sha512-NmWvPnx0F1SfrQbYwOi7OeaNGokp9XhzNioJ/CSBs8Qa4vxug81mhJEAVZwxXuBmYB5KDRfMq/F3RR0BIU7sWg==", + "dev": true + }, + "node_modules/axios": { + "version": "1.6.8", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.8.tgz", + "integrity": "sha512-v/ZHtJDU39mDpyBoFVkETcd/uNdxrWRrg3bKpOKzXFA6Bvqopts6ALSMU3y6ijYxbw2B+wPrIv46egTzJXCLGQ==", + "dependencies": { + "follow-redirects": "^1.15.6", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" + } + }, + "node_modules/axios-mock-adapter": { + "version": "1.22.0", + "resolved": "https://registry.npmjs.org/axios-mock-adapter/-/axios-mock-adapter-1.22.0.tgz", + "integrity": "sha512-dmI0KbkyAhntUR05YY96qg2H6gg0XMl2+qTW0xmYg6Up+BFBAJYRLROMXRdDEL06/Wqwa0TJThAYvFtSFdRCZw==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.3", + "is-buffer": "^2.0.5" + }, + "peerDependencies": { + "axios": ">= 0.17.0" + } + }, + "node_modules/axios-retry": { + "version": "3.9.1", + "resolved": "https://registry.npmjs.org/axios-retry/-/axios-retry-3.9.1.tgz", + "integrity": "sha512-8PJDLJv7qTTMMwdnbMvrLYuvB47M81wRtxQmEdV5w4rgbTXTt+vtPkXwajOfOdSyv/wZICJOC+/UhXH4aQ/R+w==", + "dependencies": { + "@babel/runtime": "^7.15.4", + "is-retry-allowed": "^2.2.0" + } + }, + "node_modules/babel-jest": { + "version": "26.6.3", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-26.6.3.tgz", + "integrity": "sha512-pl4Q+GAVOHwvjrck6jKjvmGhnO3jHX/xuB9d27f+EJZ/6k+6nMuPjorrYp7s++bKKdANwzElBWnLWaObvTnaZA==", + "dev": true, + "dependencies": { + "@jest/transform": "^26.6.2", + "@jest/types": "^26.6.2", + "@types/babel__core": "^7.1.7", + "babel-plugin-istanbul": "^6.0.0", + "babel-preset-jest": "^26.6.2", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "slash": "^3.0.0" + }, + "engines": { + "node": ">= 10.14.2" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/babel-plugin-istanbul": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", + "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0", + "@istanbuljs/load-nyc-config": "^1.0.0", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-instrument": "^5.0.4", + "test-exclude": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/babel-plugin-istanbul/node_modules/istanbul-lib-instrument": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", + "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", + "dev": true, + "dependencies": { + "@babel/core": "^7.12.3", + "@babel/parser": "^7.14.7", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.2.0", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/babel-plugin-jest-hoist": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-26.6.2.tgz", + "integrity": "sha512-PO9t0697lNTmcEHH69mdtYiOIkkOlj9fySqfO3K1eCcdISevLAE0xY59VLLUj0SoiPiTX/JU2CYFpILydUa5Lw==", + "dev": true, + "dependencies": { + "@babel/template": "^7.3.3", + "@babel/types": "^7.3.3", + "@types/babel__core": "^7.0.0", + "@types/babel__traverse": "^7.0.6" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/babel-preset-current-node-syntax": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz", + "integrity": "sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==", + "dev": true, + "dependencies": { + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-bigint": "^7.8.3", + "@babel/plugin-syntax-class-properties": "^7.8.3", + "@babel/plugin-syntax-import-meta": "^7.8.3", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.8.3", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.8.3", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-top-level-await": "^7.8.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/babel-preset-jest": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-26.6.2.tgz", + "integrity": "sha512-YvdtlVm9t3k777c5NPQIv6cxFFFapys25HiUmuSgHwIZhfifweR5c5Sf5nwE3MAbfu327CYSvps8Yx6ANLyleQ==", + "dev": true, + "dependencies": { + "babel-plugin-jest-hoist": "^26.6.2", + "babel-preset-current-node-syntax": "^1.0.0" + }, + "engines": { + "node": ">= 10.14.2" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "node_modules/base": { + "version": "0.11.2", + "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", + "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", + "dev": true, + "dependencies": { + "cache-base": "^1.0.1", + "class-utils": "^0.3.5", + "component-emitter": "^1.2.1", + "define-property": "^1.0.0", + "isobject": "^3.0.1", + "mixin-deep": "^1.2.0", + "pascalcase": "^0.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/base/node_modules/define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", + "dev": true, + "dependencies": { + "is-descriptor": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/bcrypt-pbkdf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==", + "dev": true, + "dependencies": { + "tweetnacl": "^0.14.3" + } + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/browser-process-hrtime": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz", + "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==", + "dev": true + }, + "node_modules/browserslist": { + "version": "4.23.0", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.0.tgz", + "integrity": "sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "caniuse-lite": "^1.0.30001587", + "electron-to-chromium": "^1.4.668", + "node-releases": "^2.0.14", + "update-browserslist-db": "^1.0.13" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/bser": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", + "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", + "dev": true, + "dependencies": { + "node-int64": "^0.4.0" + } + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true + }, + "node_modules/cache-base": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", + "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", + "dev": true, + "dependencies": { + "collection-visit": "^1.0.0", + "component-emitter": "^1.2.1", + "get-value": "^2.0.6", + "has-value": "^1.0.0", + "isobject": "^3.0.1", + "set-value": "^2.0.0", + "to-object-path": "^0.3.0", + "union-value": "^1.0.0", + "unset-value": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001610", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001610.tgz", + "integrity": "sha512-QFutAY4NgaelojVMjY63o6XlZyORPaLfyMnsl3HgnWdJUcX6K0oaJymHjH8PT5Gk7sTm8rvC/c5COUQKXqmOMA==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ] + }, + "node_modules/capture-exit": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/capture-exit/-/capture-exit-2.0.0.tgz", + "integrity": "sha512-PiT/hQmTonHhl/HFGN+Lx3JJUznrVYJ3+AQsnthneZbvW7x+f08Tk7yLJTLEOUvBTbduLeeBkxEaYXUOUrRq6g==", + "dev": true, + "dependencies": { + "rsvp": "^4.8.4" + }, + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==", + "dev": true + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/char-regex": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", + "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/ci-info": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", + "dev": true + }, + "node_modules/cjs-module-lexer": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-0.6.0.tgz", + "integrity": "sha512-uc2Vix1frTfnuzxxu1Hp4ktSvM3QaI4oXl4ZUqL1wjTu/BGki9TrCWoqLTg/drR1KwAEarXuRFCG2Svr1GxPFw==", + "dev": true + }, + "node_modules/class-utils": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", + "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", + "dev": true, + "dependencies": { + "arr-union": "^3.1.0", + "define-property": "^0.2.5", + "isobject": "^3.0.0", + "static-extend": "^0.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/class-utils/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "dev": true, + "dependencies": { + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/class-utils/node_modules/is-descriptor": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.7.tgz", + "integrity": "sha512-C3grZTvObeN1xud4cRWl366OMXZTj0+HGyk4hvfpx4ZHt1Pb60ANSXqCK7pdOTeUQpRzECBSTphqvD7U+l22Eg==", + "dev": true, + "dependencies": { + "is-accessor-descriptor": "^1.0.1", + "is-data-descriptor": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/cliui": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", + "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", + "dev": true, + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^6.2.0" + } + }, + "node_modules/co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", + "dev": true, + "engines": { + "iojs": ">= 1.0.0", + "node": ">= 0.12.0" + } + }, + "node_modules/collect-v8-coverage": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.2.tgz", + "integrity": "sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==", + "dev": true + }, + "node_modules/collection-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", + "integrity": "sha512-lNkKvzEeMBBjUGHZ+q6z9pSJla0KWAQPvtzhEV9+iGyQYG+pBpl7xKDhxoNSOZH2hhv0v5k0y2yAM4o4SjoSkw==", + "dev": true, + "dependencies": { + "map-visit": "^1.0.0", + "object-visit": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/component-emitter": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.1.tgz", + "integrity": "sha512-T0+barUSQRTUQASh8bx02dl+DhF54GtIDY13Y3m9oWTklKbb3Wv974meRpeZ3lp1JpLVECWWNHC4vaG2XHXouQ==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true + }, + "node_modules/convert-source-map": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", + "dev": true + }, + "node_modules/copy-descriptor": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", + "integrity": "sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==", + "dev": true + }, + "node_modules/coveralls": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/coveralls/-/coveralls-3.1.1.tgz", + "integrity": "sha512-+dxnG2NHncSD1NrqbSM3dn/lE57O6Qf/koe9+I7c+wzkqRmEvcp0kgJdxKInzYzkICKkFMZsX3Vct3++tsF9ww==", + "dev": true, + "dependencies": { + "js-yaml": "^3.13.1", + "lcov-parse": "^1.0.0", + "log-driver": "^1.2.7", + "minimist": "^1.2.5", + "request": "^2.88.2" + }, + "bin": { + "coveralls": "bin/coveralls.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/crypto-js": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/crypto-js/-/crypto-js-4.2.0.tgz", + "integrity": "sha512-KALDyEYgpY+Rlob/iriUtjV6d5Eq+Y191A5g4UqLAi8CyGP9N1+FdVbkc1SxKc2r4YAYqG8JzO2KGL+AizD70Q==" + }, + "node_modules/cssom": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.4.4.tgz", + "integrity": "sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==", + "dev": true + }, + "node_modules/cssstyle": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz", + "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==", + "dev": true, + "dependencies": { + "cssom": "~0.3.6" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cssstyle/node_modules/cssom": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", + "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", + "dev": true + }, + "node_modules/dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==", + "dev": true, + "dependencies": { + "assert-plus": "^1.0.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/data-urls": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-2.0.0.tgz", + "integrity": "sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ==", + "dev": true, + "dependencies": { + "abab": "^2.0.3", + "whatwg-mimetype": "^2.3.0", + "whatwg-url": "^8.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/decimal.js": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.3.tgz", + "integrity": "sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==", + "dev": true + }, + "node_modules/decode-uri-component": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.2.tgz", + "integrity": "sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==", + "engines": { + "node": ">=0.10" + } + }, + "node_modules/deepmerge": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", + "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/define-property": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "dev": true, + "dependencies": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/detect-newline": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", + "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/diff-sequences": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-26.6.2.tgz", + "integrity": "sha512-Mv/TDa3nZ9sbc5soK+OoA74BsS3mL37yixCvUAQkiuA4Wz6YtwP/K47n2rv2ovzHZvoiQeA5FTQOschKkEwB0Q==", + "dev": true, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/domexception": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/domexception/-/domexception-2.0.1.tgz", + "integrity": "sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg==", + "deprecated": "Use your platform's native DOMException instead", + "dev": true, + "dependencies": { + "webidl-conversions": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/domexception/node_modules/webidl-conversions": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-5.0.0.tgz", + "integrity": "sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/dotenv": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-10.0.0.tgz", + "integrity": "sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/ecc-jsbn": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==", + "dev": true, + "dependencies": { + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" + } + }, + "node_modules/electron-to-chromium": { + "version": "1.4.737", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.737.tgz", + "integrity": "sha512-QvLTxaLHKdy5YxvixAw/FfHq2eWLUL9KvsPjp0aHK1gI5d3EDuDgITkvj0nFO2c6zUY3ZqVAJQiBYyQP9tQpfw==", + "dev": true + }, + "node_modules/emittery": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.7.2.tgz", + "integrity": "sha512-A8OG5SR/ij3SsJdWDJdkkSYUjQdCUx6APQXem0SaEePBSRg4eymGYwBkKo1Y6DU+af/Jn2dBQqDBvjnr9Vi8nQ==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/emittery?sponsor=1" + } + }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "node_modules/end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "dev": true, + "dependencies": { + "once": "^1.4.0" + } + }, + "node_modules/error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, + "node_modules/escalade": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz", + "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-string-regexp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", + "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/escodegen": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.1.0.tgz", + "integrity": "sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==", + "dev": true, + "dependencies": { + "esprima": "^4.0.1", + "estraverse": "^5.2.0", + "esutils": "^2.0.2" + }, + "bin": { + "escodegen": "bin/escodegen.js", + "esgenerate": "bin/esgenerate.js" + }, + "engines": { + "node": ">=6.0" + }, + "optionalDependencies": { + "source-map": "~0.6.1" + } + }, + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true, + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/exec-sh": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/exec-sh/-/exec-sh-0.3.6.tgz", + "integrity": "sha512-nQn+hI3yp+oD0huYhKwvYI32+JFeq+XkNcD1GAo3Y/MjxsfVGmrrzrnzjWiNY6f+pUCP440fThsFh5gZrRAU/w==", + "dev": true + }, + "node_modules/execa": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-4.1.0.tgz", + "integrity": "sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.0", + "get-stream": "^5.0.0", + "human-signals": "^1.1.1", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.0", + "onetime": "^5.1.0", + "signal-exit": "^3.0.2", + "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/exit": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", + "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha512-w/ozOKR9Obk3qoWeY/WDi6MFta9AoMR+zud60mdnbniMcBxRuFJyDt2LdX/14A1UABeqk+Uk+LDfUpvoGKppZA==", + "dev": true, + "dependencies": { + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-brackets/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/expand-brackets/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "dev": true, + "dependencies": { + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-brackets/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dev": true, + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-brackets/node_modules/is-descriptor": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.7.tgz", + "integrity": "sha512-C3grZTvObeN1xud4cRWl366OMXZTj0+HGyk4hvfpx4ZHt1Pb60ANSXqCK7pdOTeUQpRzECBSTphqvD7U+l22Eg==", + "dev": true, + "dependencies": { + "is-accessor-descriptor": "^1.0.1", + "is-data-descriptor": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/expand-brackets/node_modules/is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/expand-brackets/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "node_modules/expect": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/expect/-/expect-26.6.2.tgz", + "integrity": "sha512-9/hlOBkQl2l/PLHJx6JjoDF6xPKcJEsUlWKb23rKE7KzeDqUZKXKNMW27KIue5JMdBV9HgmoJPcc8HtO85t9IA==", + "dev": true, + "dependencies": { + "@jest/types": "^26.6.2", + "ansi-styles": "^4.0.0", + "jest-get-type": "^26.3.0", + "jest-matcher-utils": "^26.6.2", + "jest-message-util": "^26.6.2", + "jest-regex-util": "^26.0.0" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "dev": true + }, + "node_modules/extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", + "dev": true, + "dependencies": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "dev": true, + "dependencies": { + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/extglob/node_modules/define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", + "dev": true, + "dependencies": { + "is-descriptor": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/extglob/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dev": true, + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/extglob/node_modules/is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==", + "dev": true, + "engines": [ + "node >=0.6.0" + ] + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "node_modules/fb-watchman": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz", + "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==", + "dev": true, + "dependencies": { + "bser": "2.1.1" + } + }, + "node_modules/fetch-ponyfill": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/fetch-ponyfill/-/fetch-ponyfill-7.1.0.tgz", + "integrity": "sha512-FhbbL55dj/qdVO3YNK7ZEkshvj3eQ7EuIGV2I6ic/2YiocvyWv+7jg2s4AyS0wdRU75s3tA8ZxI/xPigb0v5Aw==", + "dependencies": { + "node-fetch": "~2.6.1" + } + }, + "node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/filter-obj": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/filter-obj/-/filter-obj-1.1.0.tgz", + "integrity": "sha512-8rXg1ZnX7xzy2NGDVkBVaAy+lSlPNwad13BtgSlLuxfIslyt5Vg64U7tFcCt4WS1R0hvtnQybT/IyCkGZ3DpXQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/follow-redirects": { + "version": "1.15.6", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz", + "integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fragment-cache": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", + "integrity": "sha512-GMBAbW9antB8iZRHLoGw0b3HANt57diZYFO/HL1JGIC1MjKrdmhxvrJbupnVvpys0zsz7yBApXdQyfepKly2kA==", + "dev": true, + "dependencies": { + "map-cache": "^0.2.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true, + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/get-package-type": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", + "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", + "dev": true, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "dev": true, + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/get-value": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", + "integrity": "sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==", + "dev": true, + "dependencies": { + "assert-plus": "^1.0.0" + } + }, + "node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "dev": true + }, + "node_modules/growly": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/growly/-/growly-1.3.0.tgz", + "integrity": "sha512-+xGQY0YyAWCnqy7Cd++hc2JqMYzlm0dG30Jd0beaA64sROr8C4nt8Yc9V5Ro3avlSUDTN0ulqP/VBKi1/lLygw==", + "dev": true, + "optional": true + }, + "node_modules/har-schema": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/har-validator": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", + "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", + "deprecated": "this library is no longer supported", + "dev": true, + "dependencies": { + "ajv": "^6.12.3", + "har-schema": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/has-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", + "integrity": "sha512-IBXk4GTsLYdQ7Rvt+GRBrFSVEkmuOUy4re0Xjd9kJSUQpnTrWR4/y9RpfexN9vkAPMFuQoeWKwqzPozRTlasGw==", + "dev": true, + "dependencies": { + "get-value": "^2.0.6", + "has-values": "^1.0.0", + "isobject": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/has-values": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", + "integrity": "sha512-ODYZC64uqzmtfGMEAX/FvZiRyWLpAC3vYnNunURUnkGVTS+mI0smVsWaPydRBsE3g+ok7h960jChO8mFcWlHaQ==", + "dev": true, + "dependencies": { + "is-number": "^3.0.0", + "kind-of": "^4.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/has-values/node_modules/is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "node_modules/has-values/node_modules/is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/has-values/node_modules/is-number/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/has-values/node_modules/kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha512-24XsCxmEbRwEDbz/qz3stgin8TTzZ1ESR56OMCN0ujYg+vRutNSiOj9bHH9u85DKgXguraugV5sFuvbD4FW/hw==", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", + "dev": true + }, + "node_modules/html-encoding-sniffer": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz", + "integrity": "sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ==", + "dev": true, + "dependencies": { + "whatwg-encoding": "^1.0.5" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/html-escaper": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", + "dev": true + }, + "node_modules/http-proxy-agent": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", + "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", + "dev": true, + "dependencies": { + "@tootallnate/once": "1", + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ==", + "dev": true, + "dependencies": { + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" + }, + "engines": { + "node": ">=0.8", + "npm": ">=1.3.7" + } + }, + "node_modules/https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "dev": true, + "dependencies": { + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/human-signals": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz", + "integrity": "sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==", + "dev": true, + "engines": { + "node": ">=8.12.0" + } + }, + "node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/import-local": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", + "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==", + "dev": true, + "dependencies": { + "pkg-dir": "^4.2.0", + "resolve-cwd": "^3.0.0" + }, + "bin": { + "import-local-fixture": "fixtures/cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true, + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "dev": true, + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "node_modules/is-accessor-descriptor": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.1.tgz", + "integrity": "sha512-YBUanLI8Yoihw923YeFUS5fs0fF2f5TSFTNiYAAzhhDscDa3lEqYuz1pDOEP5KvX94I9ey3vsqjJcLVFVU+3QA==", + "dev": true, + "dependencies": { + "hasown": "^2.0.0" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "dev": true + }, + "node_modules/is-buffer": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz", + "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "engines": { + "node": ">=4" + } + }, + "node_modules/is-ci": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", + "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", + "dev": true, + "dependencies": { + "ci-info": "^2.0.0" + }, + "bin": { + "is-ci": "bin.js" + } + }, + "node_modules/is-core-module": { + "version": "2.13.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", + "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", + "dev": true, + "dependencies": { + "hasown": "^2.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-data-descriptor": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.1.tgz", + "integrity": "sha512-bc4NlCDiCr28U4aEsQ3Qs2491gVq4V8G7MQyws968ImqjKuYtTJXrl7Vq7jsN7Ly/C3xj5KWFrY7sHNeDkAzXw==", + "dev": true, + "dependencies": { + "hasown": "^2.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/is-descriptor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.3.tgz", + "integrity": "sha512-JCNNGbwWZEVaSPtS45mdtrneRWJFp07LLmykxeFV5F6oBvNF8vHSfJuJgoT472pSfk+Mf8VnlrspaFBHWM8JAw==", + "dev": true, + "dependencies": { + "is-accessor-descriptor": "^1.0.1", + "is-data-descriptor": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/is-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "dev": true, + "optional": true, + "bin": { + "is-docker": "cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "dependencies": { + "is-plain-object": "^2.0.4" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-generator-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", + "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-potential-custom-element-name": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", + "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==", + "dev": true + }, + "node_modules/is-retry-allowed": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-2.2.0.tgz", + "integrity": "sha512-XVm7LOeLpTW4jV19QSH38vkswxoLud8sQ57YwJVTPWdiaI9I8keEhGFpBlslyVsgdQy4Opg8QOLb8YRgsyZiQg==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==", + "dev": true + }, + "node_modules/is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "dev": true, + "optional": true, + "dependencies": { + "is-docker": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, + "node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==", + "dev": true + }, + "node_modules/istanbul-lib-coverage": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz", + "integrity": "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-instrument": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz", + "integrity": "sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ==", + "dev": true, + "dependencies": { + "@babel/core": "^7.7.5", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.0.0", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-report": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", + "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", + "dev": true, + "dependencies": { + "istanbul-lib-coverage": "^3.0.0", + "make-dir": "^4.0.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/istanbul-lib-source-maps": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", + "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", + "dev": true, + "dependencies": { + "debug": "^4.1.1", + "istanbul-lib-coverage": "^3.0.0", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/istanbul-reports": { + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.7.tgz", + "integrity": "sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==", + "dev": true, + "dependencies": { + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest": { + "version": "26.6.3", + "resolved": "https://registry.npmjs.org/jest/-/jest-26.6.3.tgz", + "integrity": "sha512-lGS5PXGAzR4RF7V5+XObhqz2KZIDUA1yD0DG6pBVmy10eh0ZIXQImRuzocsI/N2XZ1GrLFwTS27In2i2jlpq1Q==", + "dev": true, + "dependencies": { + "@jest/core": "^26.6.3", + "import-local": "^3.0.2", + "jest-cli": "^26.6.3" + }, + "bin": { + "jest": "bin/jest.js" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/jest-changed-files": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-26.6.2.tgz", + "integrity": "sha512-fDS7szLcY9sCtIip8Fjry9oGf3I2ht/QT21bAHm5Dmf0mD4X3ReNUf17y+bO6fR8WgbIZTlbyG1ak/53cbRzKQ==", + "dev": true, + "dependencies": { + "@jest/types": "^26.6.2", + "execa": "^4.0.0", + "throat": "^5.0.0" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/jest-cli": { + "version": "26.6.3", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-26.6.3.tgz", + "integrity": "sha512-GF9noBSa9t08pSyl3CY4frMrqp+aQXFGFkf5hEPbh/pIUFYWMK6ZLTfbmadxJVcJrdRoChlWQsA2VkJcDFK8hg==", + "dev": true, + "dependencies": { + "@jest/core": "^26.6.3", + "@jest/test-result": "^26.6.2", + "@jest/types": "^26.6.2", + "chalk": "^4.0.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.4", + "import-local": "^3.0.2", + "is-ci": "^2.0.0", + "jest-config": "^26.6.3", + "jest-util": "^26.6.2", + "jest-validate": "^26.6.2", + "prompts": "^2.0.1", + "yargs": "^15.4.1" + }, + "bin": { + "jest": "bin/jest.js" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/jest-config": { + "version": "26.6.3", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-26.6.3.tgz", + "integrity": "sha512-t5qdIj/bCj2j7NFVHb2nFB4aUdfucDn3JRKgrZnplb8nieAirAzRSHP8uDEd+qV6ygzg9Pz4YG7UTJf94LPSyg==", + "dev": true, + "dependencies": { + "@babel/core": "^7.1.0", + "@jest/test-sequencer": "^26.6.3", + "@jest/types": "^26.6.2", + "babel-jest": "^26.6.3", + "chalk": "^4.0.0", + "deepmerge": "^4.2.2", + "glob": "^7.1.1", + "graceful-fs": "^4.2.4", + "jest-environment-jsdom": "^26.6.2", + "jest-environment-node": "^26.6.2", + "jest-get-type": "^26.3.0", + "jest-jasmine2": "^26.6.3", + "jest-regex-util": "^26.0.0", + "jest-resolve": "^26.6.2", + "jest-util": "^26.6.2", + "jest-validate": "^26.6.2", + "micromatch": "^4.0.2", + "pretty-format": "^26.6.2" + }, + "engines": { + "node": ">= 10.14.2" + }, + "peerDependencies": { + "ts-node": ">=9.0.0" + }, + "peerDependenciesMeta": { + "ts-node": { + "optional": true + } + } + }, + "node_modules/jest-diff": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-26.6.2.tgz", + "integrity": "sha512-6m+9Z3Gv9wN0WFVasqjCL/06+EFCMTqDEUl/b87HYK2rAPTyfz4ZIuSlPhY51PIQRWx5TaxeF1qmXKe9gfN3sA==", + "dev": true, + "dependencies": { + "chalk": "^4.0.0", + "diff-sequences": "^26.6.2", + "jest-get-type": "^26.3.0", + "pretty-format": "^26.6.2" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/jest-docblock": { + "version": "26.0.0", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-26.0.0.tgz", + "integrity": "sha512-RDZ4Iz3QbtRWycd8bUEPxQsTlYazfYn/h5R65Fc6gOfwozFhoImx+affzky/FFBuqISPTqjXomoIGJVKBWoo0w==", + "dev": true, + "dependencies": { + "detect-newline": "^3.0.0" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/jest-each": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-26.6.2.tgz", + "integrity": "sha512-Mer/f0KaATbjl8MCJ+0GEpNdqmnVmDYqCTJYTvoo7rqmRiDllmp2AYN+06F93nXcY3ur9ShIjS+CO/uD+BbH4A==", + "dev": true, + "dependencies": { + "@jest/types": "^26.6.2", + "chalk": "^4.0.0", + "jest-get-type": "^26.3.0", + "jest-util": "^26.6.2", + "pretty-format": "^26.6.2" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/jest-environment-jsdom": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-26.6.2.tgz", + "integrity": "sha512-jgPqCruTlt3Kwqg5/WVFyHIOJHsiAvhcp2qiR2QQstuG9yWox5+iHpU3ZrcBxW14T4fe5Z68jAfLRh7joCSP2Q==", + "dev": true, + "dependencies": { + "@jest/environment": "^26.6.2", + "@jest/fake-timers": "^26.6.2", + "@jest/types": "^26.6.2", + "@types/node": "*", + "jest-mock": "^26.6.2", + "jest-util": "^26.6.2", + "jsdom": "^16.4.0" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/jest-environment-node": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-26.6.2.tgz", + "integrity": "sha512-zhtMio3Exty18dy8ee8eJ9kjnRyZC1N4C1Nt/VShN1apyXc8rWGtJ9lI7vqiWcyyXS4BVSEn9lxAM2D+07/Tag==", + "dev": true, + "dependencies": { + "@jest/environment": "^26.6.2", + "@jest/fake-timers": "^26.6.2", + "@jest/types": "^26.6.2", + "@types/node": "*", + "jest-mock": "^26.6.2", + "jest-util": "^26.6.2" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/jest-get-type": { + "version": "26.3.0", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-26.3.0.tgz", + "integrity": "sha512-TpfaviN1R2pQWkIihlfEanwOXK0zcxrKEE4MlU6Tn7keoXdN6/3gK/xl0yEh8DOunn5pOVGKf8hB4R9gVh04ig==", + "dev": true, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/jest-haste-map": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-26.6.2.tgz", + "integrity": "sha512-easWIJXIw71B2RdR8kgqpjQrbMRWQBgiBwXYEhtGUTaX+doCjBheluShdDMeR8IMfJiTqH4+zfhtg29apJf/8w==", + "dev": true, + "dependencies": { + "@jest/types": "^26.6.2", + "@types/graceful-fs": "^4.1.2", + "@types/node": "*", + "anymatch": "^3.0.3", + "fb-watchman": "^2.0.0", + "graceful-fs": "^4.2.4", + "jest-regex-util": "^26.0.0", + "jest-serializer": "^26.6.2", + "jest-util": "^26.6.2", + "jest-worker": "^26.6.2", + "micromatch": "^4.0.2", + "sane": "^4.0.3", + "walker": "^1.0.7" + }, + "engines": { + "node": ">= 10.14.2" + }, + "optionalDependencies": { + "fsevents": "^2.1.2" + } + }, + "node_modules/jest-jasmine2": { + "version": "26.6.3", + "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-26.6.3.tgz", + "integrity": "sha512-kPKUrQtc8aYwBV7CqBg5pu+tmYXlvFlSFYn18ev4gPFtrRzB15N2gW/Roew3187q2w2eHuu0MU9TJz6w0/nPEg==", + "dev": true, + "dependencies": { + "@babel/traverse": "^7.1.0", + "@jest/environment": "^26.6.2", + "@jest/source-map": "^26.6.2", + "@jest/test-result": "^26.6.2", + "@jest/types": "^26.6.2", + "@types/node": "*", + "chalk": "^4.0.0", + "co": "^4.6.0", + "expect": "^26.6.2", + "is-generator-fn": "^2.0.0", + "jest-each": "^26.6.2", + "jest-matcher-utils": "^26.6.2", + "jest-message-util": "^26.6.2", + "jest-runtime": "^26.6.3", + "jest-snapshot": "^26.6.2", + "jest-util": "^26.6.2", + "pretty-format": "^26.6.2", + "throat": "^5.0.0" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/jest-leak-detector": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-26.6.2.tgz", + "integrity": "sha512-i4xlXpsVSMeKvg2cEKdfhh0H39qlJlP5Ex1yQxwF9ubahboQYMgTtz5oML35AVA3B4Eu+YsmwaiKVev9KCvLxg==", + "dev": true, + "dependencies": { + "jest-get-type": "^26.3.0", + "pretty-format": "^26.6.2" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/jest-matcher-utils": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-26.6.2.tgz", + "integrity": "sha512-llnc8vQgYcNqDrqRDXWwMr9i7rS5XFiCwvh6DTP7Jqa2mqpcCBBlpCbn+trkG0KNhPu/h8rzyBkriOtBstvWhw==", + "dev": true, + "dependencies": { + "chalk": "^4.0.0", + "jest-diff": "^26.6.2", + "jest-get-type": "^26.3.0", + "pretty-format": "^26.6.2" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/jest-message-util": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-26.6.2.tgz", + "integrity": "sha512-rGiLePzQ3AzwUshu2+Rn+UMFk0pHN58sOG+IaJbk5Jxuqo3NYO1U2/MIR4S1sKgsoYSXSzdtSa0TgrmtUwEbmA==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.0.0", + "@jest/types": "^26.6.2", + "@types/stack-utils": "^2.0.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "micromatch": "^4.0.2", + "pretty-format": "^26.6.2", + "slash": "^3.0.0", + "stack-utils": "^2.0.2" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/jest-mock": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-26.6.2.tgz", + "integrity": "sha512-YyFjePHHp1LzpzYcmgqkJ0nm0gg/lJx2aZFzFy1S6eUqNjXsOqTK10zNRff2dNfssgokjkG65OlWNcIlgd3zew==", + "dev": true, + "dependencies": { + "@jest/types": "^26.6.2", + "@types/node": "*" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/jest-pnp-resolver": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz", + "integrity": "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==", + "dev": true, + "engines": { + "node": ">=6" + }, + "peerDependencies": { + "jest-resolve": "*" + }, + "peerDependenciesMeta": { + "jest-resolve": { + "optional": true + } + } + }, + "node_modules/jest-regex-util": { + "version": "26.0.0", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-26.0.0.tgz", + "integrity": "sha512-Gv3ZIs/nA48/Zvjrl34bf+oD76JHiGDUxNOVgUjh3j890sblXryjY4rss71fPtD/njchl6PSE2hIhvyWa1eT0A==", + "dev": true, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/jest-resolve": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-26.6.2.tgz", + "integrity": "sha512-sOxsZOq25mT1wRsfHcbtkInS+Ek7Q8jCHUB0ZUTP0tc/c41QHriU/NunqMfCUWsL4H3MHpvQD4QR9kSYhS7UvQ==", + "dev": true, + "dependencies": { + "@jest/types": "^26.6.2", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "jest-pnp-resolver": "^1.2.2", + "jest-util": "^26.6.2", + "read-pkg-up": "^7.0.1", + "resolve": "^1.18.1", + "slash": "^3.0.0" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/jest-resolve-dependencies": { + "version": "26.6.3", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-26.6.3.tgz", + "integrity": "sha512-pVwUjJkxbhe4RY8QEWzN3vns2kqyuldKpxlxJlzEYfKSvY6/bMvxoFrYYzUO1Gx28yKWN37qyV7rIoIp2h8fTg==", + "dev": true, + "dependencies": { + "@jest/types": "^26.6.2", + "jest-regex-util": "^26.0.0", + "jest-snapshot": "^26.6.2" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/jest-runner": { + "version": "26.6.3", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-26.6.3.tgz", + "integrity": "sha512-atgKpRHnaA2OvByG/HpGA4g6CSPS/1LK0jK3gATJAoptC1ojltpmVlYC3TYgdmGp+GLuhzpH30Gvs36szSL2JQ==", + "dev": true, + "dependencies": { + "@jest/console": "^26.6.2", + "@jest/environment": "^26.6.2", + "@jest/test-result": "^26.6.2", + "@jest/types": "^26.6.2", + "@types/node": "*", + "chalk": "^4.0.0", + "emittery": "^0.7.1", + "exit": "^0.1.2", + "graceful-fs": "^4.2.4", + "jest-config": "^26.6.3", + "jest-docblock": "^26.0.0", + "jest-haste-map": "^26.6.2", + "jest-leak-detector": "^26.6.2", + "jest-message-util": "^26.6.2", + "jest-resolve": "^26.6.2", + "jest-runtime": "^26.6.3", + "jest-util": "^26.6.2", + "jest-worker": "^26.6.2", + "source-map-support": "^0.5.6", + "throat": "^5.0.0" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/jest-runtime": { + "version": "26.6.3", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-26.6.3.tgz", + "integrity": "sha512-lrzyR3N8sacTAMeonbqpnSka1dHNux2uk0qqDXVkMv2c/A3wYnvQ4EXuI013Y6+gSKSCxdaczvf4HF0mVXHRdw==", + "dev": true, + "dependencies": { + "@jest/console": "^26.6.2", + "@jest/environment": "^26.6.2", + "@jest/fake-timers": "^26.6.2", + "@jest/globals": "^26.6.2", + "@jest/source-map": "^26.6.2", + "@jest/test-result": "^26.6.2", + "@jest/transform": "^26.6.2", + "@jest/types": "^26.6.2", + "@types/yargs": "^15.0.0", + "chalk": "^4.0.0", + "cjs-module-lexer": "^0.6.0", + "collect-v8-coverage": "^1.0.0", + "exit": "^0.1.2", + "glob": "^7.1.3", + "graceful-fs": "^4.2.4", + "jest-config": "^26.6.3", + "jest-haste-map": "^26.6.2", + "jest-message-util": "^26.6.2", + "jest-mock": "^26.6.2", + "jest-regex-util": "^26.0.0", + "jest-resolve": "^26.6.2", + "jest-snapshot": "^26.6.2", + "jest-util": "^26.6.2", + "jest-validate": "^26.6.2", + "slash": "^3.0.0", + "strip-bom": "^4.0.0", + "yargs": "^15.4.1" + }, + "bin": { + "jest-runtime": "bin/jest-runtime.js" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/jest-serializer": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-26.6.2.tgz", + "integrity": "sha512-S5wqyz0DXnNJPd/xfIzZ5Xnp1HrJWBczg8mMfMpN78OJ5eDxXyf+Ygld9wX1DnUWbIbhM1YDY95NjR4CBXkb2g==", + "dev": true, + "dependencies": { + "@types/node": "*", + "graceful-fs": "^4.2.4" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/jest-snapshot": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-26.6.2.tgz", + "integrity": "sha512-OLhxz05EzUtsAmOMzuupt1lHYXCNib0ECyuZ/PZOx9TrZcC8vL0x+DUG3TL+GLX3yHG45e6YGjIm0XwDc3q3og==", + "dev": true, + "dependencies": { + "@babel/types": "^7.0.0", + "@jest/types": "^26.6.2", + "@types/babel__traverse": "^7.0.4", + "@types/prettier": "^2.0.0", + "chalk": "^4.0.0", + "expect": "^26.6.2", + "graceful-fs": "^4.2.4", + "jest-diff": "^26.6.2", + "jest-get-type": "^26.3.0", + "jest-haste-map": "^26.6.2", + "jest-matcher-utils": "^26.6.2", + "jest-message-util": "^26.6.2", + "jest-resolve": "^26.6.2", + "natural-compare": "^1.4.0", + "pretty-format": "^26.6.2", + "semver": "^7.3.2" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/jest-snapshot/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/jest-snapshot/node_modules/semver": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/jest-snapshot/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/jest-util": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-26.6.2.tgz", + "integrity": "sha512-MDW0fKfsn0OI7MS7Euz6h8HNDXVQ0gaM9uW6RjfDmd1DAFcaxX9OqIakHIqhbnmF08Cf2DLDG+ulq8YQQ0Lp0Q==", + "dev": true, + "dependencies": { + "@jest/types": "^26.6.2", + "@types/node": "*", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.4", + "is-ci": "^2.0.0", + "micromatch": "^4.0.2" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/jest-validate": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-26.6.2.tgz", + "integrity": "sha512-NEYZ9Aeyj0i5rQqbq+tpIOom0YS1u2MVu6+euBsvpgIme+FOfRmoC4R5p0JiAUpaFvFy24xgrpMknarR/93XjQ==", + "dev": true, + "dependencies": { + "@jest/types": "^26.6.2", + "camelcase": "^6.0.0", + "chalk": "^4.0.0", + "jest-get-type": "^26.3.0", + "leven": "^3.1.0", + "pretty-format": "^26.6.2" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/jest-watcher": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-26.6.2.tgz", + "integrity": "sha512-WKJob0P/Em2csiVthsI68p6aGKTIcsfjH9Gsx1f0A3Italz43e3ho0geSAVsmj09RWOELP1AZ/DXyJgOgDKxXQ==", + "dev": true, + "dependencies": { + "@jest/test-result": "^26.6.2", + "@jest/types": "^26.6.2", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "jest-util": "^26.6.2", + "string-length": "^4.0.1" + }, + "engines": { + "node": ">= 10.14.2" + } + }, + "node_modules/jest-worker": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz", + "integrity": "sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==", + "dev": true, + "dependencies": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^7.0.0" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/joi": { + "version": "17.12.3", + "resolved": "https://registry.npmjs.org/joi/-/joi-17.12.3.tgz", + "integrity": "sha512-2RRziagf555owrm9IRVtdKynOBeITiDpuZqIpgwqXShPncPKNiRQoiGsl/T8SQdq+8ugRzH2LqY67irr2y/d+g==", + "dependencies": { + "@hapi/hoek": "^9.3.0", + "@hapi/topo": "^5.1.0", + "@sideway/address": "^4.1.5", + "@sideway/formula": "^3.0.1", + "@sideway/pinpoint": "^2.0.0" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "node_modules/js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dev": true, + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==", + "dev": true + }, + "node_modules/jsdom": { + "version": "16.7.0", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-16.7.0.tgz", + "integrity": "sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw==", + "dev": true, + "dependencies": { + "abab": "^2.0.5", + "acorn": "^8.2.4", + "acorn-globals": "^6.0.0", + "cssom": "^0.4.4", + "cssstyle": "^2.3.0", + "data-urls": "^2.0.0", + "decimal.js": "^10.2.1", + "domexception": "^2.0.1", + "escodegen": "^2.0.0", + "form-data": "^3.0.0", + "html-encoding-sniffer": "^2.0.1", + "http-proxy-agent": "^4.0.1", + "https-proxy-agent": "^5.0.0", + "is-potential-custom-element-name": "^1.0.1", + "nwsapi": "^2.2.0", + "parse5": "6.0.1", + "saxes": "^5.0.1", + "symbol-tree": "^3.2.4", + "tough-cookie": "^4.0.0", + "w3c-hr-time": "^1.0.2", + "w3c-xmlserializer": "^2.0.0", + "webidl-conversions": "^6.1.0", + "whatwg-encoding": "^1.0.5", + "whatwg-mimetype": "^2.3.0", + "whatwg-url": "^8.5.0", + "ws": "^7.4.6", + "xml-name-validator": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "canvas": "^2.5.0" + }, + "peerDependenciesMeta": { + "canvas": { + "optional": true + } + } + }, + "node_modules/jsdom/node_modules/form-data": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-3.0.1.tgz", + "integrity": "sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==", + "dev": true, + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true, + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true + }, + "node_modules/json-schema": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", + "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==", + "dev": true + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "node_modules/json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==", + "dev": true + }, + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "dev": true, + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/jsprim": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz", + "integrity": "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==", + "dev": true, + "dependencies": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.4.0", + "verror": "1.10.0" + }, + "engines": { + "node": ">=0.6.0" + } + }, + "node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/kleur": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", + "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/lcov-parse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lcov-parse/-/lcov-parse-1.0.0.tgz", + "integrity": "sha512-aprLII/vPzuQvYZnDRU78Fns9I2Ag3gi4Ipga/hxnVMCZC8DnR2nI7XBqrPoywGfxqIx/DgarGvDJZAD3YBTgQ==", + "dev": true, + "bin": { + "lcov-parse": "bin/cli.js" + } + }, + "node_modules/leven": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", + "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "dev": true + }, + "node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, + "node_modules/log-driver": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/log-driver/-/log-driver-1.2.7.tgz", + "integrity": "sha512-U7KCmLdqsGHBLeWqYlFA0V0Sl6P08EE1ZrmA9cxjUE0WVqT9qnyVDPz1kzpFEP0jdJuFnasWIfSd7fsaNXkpbg==", + "dev": true, + "engines": { + "node": ">=0.8.6" + } + }, + "node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "dependencies": { + "yallist": "^3.0.2" + } + }, + "node_modules/make-dir": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", + "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", + "dev": true, + "dependencies": { + "semver": "^7.5.3" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/make-dir/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/make-dir/node_modules/semver": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/make-dir/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/makeerror": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", + "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", + "dev": true, + "dependencies": { + "tmpl": "1.0.5" + } + }, + "node_modules/map-cache": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", + "integrity": "sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/map-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", + "integrity": "sha512-4y7uGv8bd2WdM9vpQsiQNo41Ln1NvhvDRuVt0k2JZQ+ezN2uaQes7lZeZ+QQUHOLQAtDaBJ+7wCbi+ab/KFs+w==", + "dev": true, + "dependencies": { + "object-visit": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true + }, + "node_modules/micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dev": true, + "dependencies": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/mixin-deep": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", + "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", + "dev": true, + "dependencies": { + "for-in": "^1.0.2", + "is-extendable": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/nanomatch": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", + "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", + "dev": true, + "dependencies": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "fragment-cache": "^0.2.1", + "is-windows": "^1.0.2", + "kind-of": "^6.0.2", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true + }, + "node_modules/nice-try": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", + "dev": true + }, + "node_modules/node-fetch": { + "version": "2.6.13", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.13.tgz", + "integrity": "sha512-StxNAxh15zr77QvvkmveSQ8uCQ4+v5FkvNTj0OESmiHu+VRi/gXArXtkWMElOsOUNLtUEvI4yS+rdtOHZTwlQA==", + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, + "node_modules/node-fetch/node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" + }, + "node_modules/node-fetch/node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" + }, + "node_modules/node-fetch/node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, + "node_modules/node-int64": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", + "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==", + "dev": true + }, + "node_modules/node-notifier": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/node-notifier/-/node-notifier-8.0.2.tgz", + "integrity": "sha512-oJP/9NAdd9+x2Q+rfphB2RJCHjod70RcRLjosiPMMu5gjIfwVnOUGq2nbTjTUbmy0DJ/tFIVT30+Qe3nzl4TJg==", + "dev": true, + "optional": true, + "dependencies": { + "growly": "^1.3.0", + "is-wsl": "^2.2.0", + "semver": "^7.3.2", + "shellwords": "^0.1.1", + "uuid": "^8.3.0", + "which": "^2.0.2" + } + }, + "node_modules/node-notifier/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "optional": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/node-notifier/node_modules/semver": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", + "dev": true, + "optional": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/node-notifier/node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true, + "optional": true + }, + "node_modules/node-releases": { + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz", + "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==", + "dev": true + }, + "node_modules/normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dev": true, + "dependencies": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "node_modules/normalize-package-data/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/nwsapi": { + "version": "2.2.7", + "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.7.tgz", + "integrity": "sha512-ub5E4+FBPKwAZx0UwIQOjYWGHTEq5sPqHQNRN8Z9e4A7u3Tj1weLJsL59yH9vmvqEtBHaOmT6cYQKIZOxp35FQ==", + "dev": true + }, + "node_modules/oauth-sign": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/object-copy": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", + "integrity": "sha512-79LYn6VAb63zgtmAteVOWo9Vdj71ZVBy3Pbse+VqxDpEP83XuujMrGqHIwAXJ5I/aM0zU7dIyIAhifVTPrNItQ==", + "dev": true, + "dependencies": { + "copy-descriptor": "^0.1.0", + "define-property": "^0.2.5", + "kind-of": "^3.0.3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-copy/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "dev": true, + "dependencies": { + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-copy/node_modules/is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "node_modules/object-copy/node_modules/is-descriptor": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.7.tgz", + "integrity": "sha512-C3grZTvObeN1xud4cRWl366OMXZTj0+HGyk4hvfpx4ZHt1Pb60ANSXqCK7pdOTeUQpRzECBSTphqvD7U+l22Eg==", + "dev": true, + "dependencies": { + "is-accessor-descriptor": "^1.0.1", + "is-data-descriptor": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object-copy/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-visit": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", + "integrity": "sha512-GBaMwwAVK9qbQN3Scdo0OyvgPW7l3lnaVMj84uTOZlswkX0KpF6fyDBJhtTthf7pymztoN36/KEr1DyhF96zEA==", + "dev": true, + "dependencies": { + "isobject": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object.pick": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", + "integrity": "sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ==", + "dev": true, + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-each-series": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-each-series/-/p-each-series-2.2.0.tgz", + "integrity": "sha512-ycIL2+1V32th+8scbpTvyHNaHe02z0sjgh91XXjAk+ZeXoPN4Z46DVUnzdso0aX4KckKw0FNNFHdjZ2UsZvxiA==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/parse5": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", + "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", + "dev": true + }, + "node_modules/pascalcase": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", + "integrity": "sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "node_modules/performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==", + "dev": true + }, + "node_modules/picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "dev": true + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pirates": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz", + "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dev": true, + "dependencies": { + "find-up": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/posix-character-classes": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", + "integrity": "sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pretty-format": { + "version": "26.6.2", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-26.6.2.tgz", + "integrity": "sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg==", + "dev": true, + "dependencies": { + "@jest/types": "^26.6.2", + "ansi-regex": "^5.0.0", + "ansi-styles": "^4.0.0", + "react-is": "^17.0.1" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/prompts": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", + "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", + "dev": true, + "dependencies": { + "kleur": "^3.0.3", + "sisteransi": "^1.0.5" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" + }, + "node_modules/psl": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", + "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==", + "dev": true + }, + "node_modules/pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dev": true, + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/qs": { + "version": "6.5.3", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz", + "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==", + "dev": true, + "engines": { + "node": ">=0.6" + } + }, + "node_modules/query-string": { + "version": "6.14.1", + "resolved": "https://registry.npmjs.org/query-string/-/query-string-6.14.1.tgz", + "integrity": "sha512-XDxAeVmpfu1/6IjyT/gXHOl+S0vQ9owggJ30hhWKdHAsNPOcasn5o9BW0eejZqL2e4vMjhAxoW3jVHcD6mbcYw==", + "dependencies": { + "decode-uri-component": "^0.2.0", + "filter-obj": "^1.1.0", + "split-on-first": "^1.0.0", + "strict-uri-encode": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/querystringify": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", + "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", + "dev": true + }, + "node_modules/react-is": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", + "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", + "dev": true + }, + "node_modules/read-pkg": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", + "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", + "dev": true, + "dependencies": { + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^2.5.0", + "parse-json": "^5.0.0", + "type-fest": "^0.6.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/read-pkg-up": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", + "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", + "dev": true, + "dependencies": { + "find-up": "^4.1.0", + "read-pkg": "^5.2.0", + "type-fest": "^0.8.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/read-pkg-up/node_modules/type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/read-pkg/node_modules/type-fest": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", + "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/regenerator-runtime": { + "version": "0.14.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", + "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==" + }, + "node_modules/regex-not": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", + "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", + "dev": true, + "dependencies": { + "extend-shallow": "^3.0.2", + "safe-regex": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/remove-trailing-separator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", + "integrity": "sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw==", + "dev": true + }, + "node_modules/repeat-element": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.4.tgz", + "integrity": "sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==", + "dev": true, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/request": { + "version": "2.88.2", + "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", + "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", + "deprecated": "request has been deprecated, see https://github.com/request/request/issues/3142", + "dev": true, + "dependencies": { + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "form-data": "~2.3.2", + "har-validator": "~5.1.3", + "http-signature": "~1.2.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.19", + "oauth-sign": "~0.9.0", + "performance-now": "^2.1.0", + "qs": "~6.5.2", + "safe-buffer": "^5.1.2", + "tough-cookie": "~2.5.0", + "tunnel-agent": "^0.6.0", + "uuid": "^3.3.2" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/request/node_modules/form-data": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", + "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", + "dev": true, + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 0.12" + } + }, + "node_modules/request/node_modules/tough-cookie": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", + "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", + "dev": true, + "dependencies": { + "psl": "^1.1.28", + "punycode": "^2.1.1" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/request/node_modules/uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", + "dev": true, + "bin": { + "uuid": "bin/uuid" + } + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/require-main-filename": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", + "dev": true + }, + "node_modules/requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", + "dev": true + }, + "node_modules/resolve": { + "version": "1.22.8", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", + "dev": true, + "dependencies": { + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-cwd": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", + "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", + "dev": true, + "dependencies": { + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/resolve-url": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", + "integrity": "sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg==", + "deprecated": "https://github.com/lydell/resolve-url#deprecated", + "dev": true + }, + "node_modules/ret": { + "version": "0.1.15", + "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", + "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", + "dev": true, + "engines": { + "node": ">=0.12" + } + }, + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/rsvp": { + "version": "4.8.5", + "resolved": "https://registry.npmjs.org/rsvp/-/rsvp-4.8.5.tgz", + "integrity": "sha512-nfMOlASu9OnRJo1mbEk2cz0D56a1MBNrJ7orjRZQG10XDyuvwksKbuXNp6qa+kbn839HwjwhBzhFmdsaEAfauA==", + "dev": true, + "engines": { + "node": "6.* || >= 7.*" + } + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/safe-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", + "integrity": "sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg==", + "dev": true, + "dependencies": { + "ret": "~0.1.10" + } + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true + }, + "node_modules/sane": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/sane/-/sane-4.1.0.tgz", + "integrity": "sha512-hhbzAgTIX8O7SHfp2c8/kREfEn4qO/9q8C9beyY6+tvZ87EpoZ3i1RIEvp27YBswnNbY9mWd6paKVmKbAgLfZA==", + "deprecated": "some dependency vulnerabilities fixed, support for node < 10 dropped, and newer ECMAScript syntax/features added", + "dev": true, + "dependencies": { + "@cnakazawa/watch": "^1.0.3", + "anymatch": "^2.0.0", + "capture-exit": "^2.0.0", + "exec-sh": "^0.3.2", + "execa": "^1.0.0", + "fb-watchman": "^2.0.0", + "micromatch": "^3.1.4", + "minimist": "^1.1.1", + "walker": "~1.0.5" + }, + "bin": { + "sane": "src/cli.js" + }, + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/sane/node_modules/anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "dev": true, + "dependencies": { + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" + } + }, + "node_modules/sane/node_modules/braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "dependencies": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sane/node_modules/braces/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dev": true, + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sane/node_modules/cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dev": true, + "dependencies": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + }, + "engines": { + "node": ">=4.8" + } + }, + "node_modules/sane/node_modules/execa": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", + "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "dev": true, + "dependencies": { + "cross-spawn": "^6.0.0", + "get-stream": "^4.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/sane/node_modules/fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==", + "dev": true, + "dependencies": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sane/node_modules/fill-range/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dev": true, + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sane/node_modules/get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "dev": true, + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/sane/node_modules/is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "node_modules/sane/node_modules/is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sane/node_modules/is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sane/node_modules/is-number/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sane/node_modules/is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sane/node_modules/micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, + "dependencies": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sane/node_modules/normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==", + "dev": true, + "dependencies": { + "remove-trailing-separator": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sane/node_modules/npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==", + "dev": true, + "dependencies": { + "path-key": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/sane/node_modules/path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/sane/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/sane/node_modules/shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", + "dev": true, + "dependencies": { + "shebang-regex": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sane/node_modules/shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sane/node_modules/to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==", + "dev": true, + "dependencies": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sane/node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, + "node_modules/saxes": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/saxes/-/saxes-5.0.1.tgz", + "integrity": "sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==", + "dev": true, + "dependencies": { + "xmlchars": "^2.2.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", + "dev": true + }, + "node_modules/set-value": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", + "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", + "dev": true, + "dependencies": { + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.3", + "split-string": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/set-value/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dev": true, + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/set-value/node_modules/is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/shellwords": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/shellwords/-/shellwords-0.1.1.tgz", + "integrity": "sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww==", + "dev": true, + "optional": true + }, + "node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true + }, + "node_modules/sisteransi": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", + "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", + "dev": true + }, + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/snapdragon": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", + "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", + "dev": true, + "dependencies": { + "base": "^0.11.1", + "debug": "^2.2.0", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "map-cache": "^0.2.2", + "source-map": "^0.5.6", + "source-map-resolve": "^0.5.0", + "use": "^3.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon-node": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", + "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", + "dev": true, + "dependencies": { + "define-property": "^1.0.0", + "isobject": "^3.0.0", + "snapdragon-util": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon-node/node_modules/define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", + "dev": true, + "dependencies": { + "is-descriptor": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon-util": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", + "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", + "dev": true, + "dependencies": { + "kind-of": "^3.2.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon-util/node_modules/is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "node_modules/snapdragon-util/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/snapdragon/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "dev": true, + "dependencies": { + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dev": true, + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/is-descriptor": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.7.tgz", + "integrity": "sha512-C3grZTvObeN1xud4cRWl366OMXZTj0+HGyk4hvfpx4ZHt1Pb60ANSXqCK7pdOTeUQpRzECBSTphqvD7U+l22Eg==", + "dev": true, + "dependencies": { + "is-accessor-descriptor": "^1.0.1", + "is-data-descriptor": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/snapdragon/node_modules/is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/snapdragon/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "node_modules/snapdragon/node_modules/source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-resolve": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz", + "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==", + "deprecated": "See https://github.com/lydell/source-map-resolve#deprecated", + "dev": true, + "dependencies": { + "atob": "^2.1.2", + "decode-uri-component": "^0.2.0", + "resolve-url": "^0.2.1", + "source-map-url": "^0.4.0", + "urix": "^0.1.0" + } + }, + "node_modules/source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "dev": true, + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/source-map-url": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.1.tgz", + "integrity": "sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==", + "deprecated": "See https://github.com/lydell/source-map-url#deprecated", + "dev": true + }, + "node_modules/spdx-correct": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz", + "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==", + "dev": true, + "dependencies": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-exceptions": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.5.0.tgz", + "integrity": "sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==", + "dev": true + }, + "node_modules/spdx-expression-parse": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "dev": true, + "dependencies": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-license-ids": { + "version": "3.0.17", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.17.tgz", + "integrity": "sha512-sh8PWc/ftMqAAdFiBu6Fy6JUOYjqDJBJvIhpfDMyHrr0Rbp5liZqd4TjtQ/RgfLjKFZb+LMx5hpml5qOWy0qvg==", + "dev": true + }, + "node_modules/split-on-first": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/split-on-first/-/split-on-first-1.1.0.tgz", + "integrity": "sha512-43ZssAJaMusuKWL8sKUBQXHWOpq8d6CfN/u1p4gUzfJkM05C8rxTmYrkIPTXapZpORA6LkkzcUulJ8FqA7Uudw==", + "engines": { + "node": ">=6" + } + }, + "node_modules/split-string": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", + "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", + "dev": true, + "dependencies": { + "extend-shallow": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "dev": true + }, + "node_modules/sshpk": { + "version": "1.18.0", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.18.0.tgz", + "integrity": "sha512-2p2KJZTSqQ/I3+HX42EpYOa2l3f8Erv8MWKsy2I9uf4wA7yFIkXRffYdsx86y6z4vHtV8u7g+pPlr8/4ouAxsQ==", + "dev": true, + "dependencies": { + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "safer-buffer": "^2.0.2", + "tweetnacl": "~0.14.0" + }, + "bin": { + "sshpk-conv": "bin/sshpk-conv", + "sshpk-sign": "bin/sshpk-sign", + "sshpk-verify": "bin/sshpk-verify" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/stack-utils": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz", + "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==", + "dev": true, + "dependencies": { + "escape-string-regexp": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/static-extend": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", + "integrity": "sha512-72E9+uLc27Mt718pMHt9VMNiAL4LMsmDbBva8mxWUCkT07fSzEGMYUCk0XWY6lp0j6RBAG4cJ3mWuZv2OE3s0g==", + "dev": true, + "dependencies": { + "define-property": "^0.2.5", + "object-copy": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/static-extend/node_modules/define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "dev": true, + "dependencies": { + "is-descriptor": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/static-extend/node_modules/is-descriptor": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.7.tgz", + "integrity": "sha512-C3grZTvObeN1xud4cRWl366OMXZTj0+HGyk4hvfpx4ZHt1Pb60ANSXqCK7pdOTeUQpRzECBSTphqvD7U+l22Eg==", + "dev": true, + "dependencies": { + "is-accessor-descriptor": "^1.0.1", + "is-data-descriptor": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/strict-uri-encode": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-2.0.0.tgz", + "integrity": "sha512-QwiXZgpRcKkhTj2Scnn++4PKtWsH0kpzZ62L2R6c/LUVYv7hVnZqcg2+sMuT6R7Jusu1vviK/MFsu6kNJfWlEQ==", + "engines": { + "node": ">=4" + } + }, + "node_modules/string-length": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", + "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==", + "dev": true, + "dependencies": { + "char-regex": "^1.0.2", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-bom": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", + "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-eof": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-hyperlinks": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.3.0.tgz", + "integrity": "sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0", + "supports-color": "^7.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/symbol-tree": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", + "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", + "dev": true + }, + "node_modules/terminal-link": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/terminal-link/-/terminal-link-2.1.1.tgz", + "integrity": "sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==", + "dev": true, + "dependencies": { + "ansi-escapes": "^4.2.1", + "supports-hyperlinks": "^2.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/test-exclude": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", + "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", + "dev": true, + "dependencies": { + "@istanbuljs/schema": "^0.1.2", + "glob": "^7.1.4", + "minimatch": "^3.0.4" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/throat": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/throat/-/throat-5.0.0.tgz", + "integrity": "sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA==", + "dev": true + }, + "node_modules/tmpl": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", + "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", + "dev": true + }, + "node_modules/to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/to-object-path": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", + "integrity": "sha512-9mWHdnGRuh3onocaHzukyvCZhzvr6tiflAy/JRFXcJX0TjgfWA9pk9t8CMbzmBE4Jfw58pXbkngtBtqYxzNEyg==", + "dev": true, + "dependencies": { + "kind-of": "^3.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/to-object-path/node_modules/is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "node_modules/to-object-path/node_modules/kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "dependencies": { + "is-buffer": "^1.1.5" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/to-regex": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", + "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", + "dev": true, + "dependencies": { + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "regex-not": "^1.0.2", + "safe-regex": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/tough-cookie": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.3.tgz", + "integrity": "sha512-aX/y5pVRkfRnfmuX+OdbSdXvPe6ieKX/G2s7e98f4poJHnqH3281gDPm/metm6E/WRamfx7WC4HUqkWHfQHprw==", + "dev": true, + "dependencies": { + "psl": "^1.1.33", + "punycode": "^2.1.1", + "universalify": "^0.2.0", + "url-parse": "^1.5.3" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/tr46": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-2.1.0.tgz", + "integrity": "sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==", + "dev": true, + "dependencies": { + "punycode": "^2.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", + "dev": true, + "dependencies": { + "safe-buffer": "^5.0.1" + }, + "engines": { + "node": "*" + } + }, + "node_modules/tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==", + "dev": true + }, + "node_modules/type-detect": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/typedarray-to-buffer": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", + "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", + "dev": true, + "dependencies": { + "is-typedarray": "^1.0.0" + } + }, + "node_modules/undici-types": { + "version": "5.26.5", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", + "dev": true + }, + "node_modules/union-value": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", + "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", + "dev": true, + "dependencies": { + "arr-union": "^3.1.0", + "get-value": "^2.0.6", + "is-extendable": "^0.1.1", + "set-value": "^2.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/union-value/node_modules/is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/universalify": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz", + "integrity": "sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==", + "dev": true, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/unset-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", + "integrity": "sha512-PcA2tsuGSF9cnySLHTLSh2qrQiJ70mn+r+Glzxv2TWZblxsxCC52BDlZoPCsz7STd9pN7EZetkWZBAvk4cgZdQ==", + "dev": true, + "dependencies": { + "has-value": "^0.3.1", + "isobject": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/unset-value/node_modules/has-value": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", + "integrity": "sha512-gpG936j8/MzaeID5Yif+577c17TxaDmhuyVgSwtnL/q8UUTySg8Mecb+8Cf1otgLoD7DDH75axp86ER7LFsf3Q==", + "dev": true, + "dependencies": { + "get-value": "^2.0.3", + "has-values": "^0.1.4", + "isobject": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/unset-value/node_modules/has-value/node_modules/isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA==", + "dev": true, + "dependencies": { + "isarray": "1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/unset-value/node_modules/has-values": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", + "integrity": "sha512-J8S0cEdWuQbqD9//tlZxiMuMNmxB8PlEwvYwuxsTmR1G5RXUePEX/SJn7aD0GMLieuZYSwNH0cQuJGwnYunXRQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/update-browserslist-db": { + "version": "1.0.13", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz", + "integrity": "sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "escalade": "^3.1.1", + "picocolors": "^1.0.0" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/urix": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", + "integrity": "sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg==", + "deprecated": "Please see https://github.com/lydell/urix#deprecated", + "dev": true + }, + "node_modules/url-parse": { + "version": "1.5.10", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", + "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", + "dev": true, + "dependencies": { + "querystringify": "^2.1.1", + "requires-port": "^1.0.0" + } + }, + "node_modules/use": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", + "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "dev": true, + "optional": true, + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/v8-to-istanbul": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-7.1.2.tgz", + "integrity": "sha512-TxNb7YEUwkLXCQYeudi6lgQ/SZrzNO4kMdlqVxaZPUIUjCv6iSSypUQX70kNBSERpQ8fk48+d61FXk+tgqcWow==", + "dev": true, + "dependencies": { + "@types/istanbul-lib-coverage": "^2.0.1", + "convert-source-map": "^1.6.0", + "source-map": "^0.7.3" + }, + "engines": { + "node": ">=10.10.0" + } + }, + "node_modules/v8-to-istanbul/node_modules/source-map": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", + "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "dev": true, + "dependencies": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "node_modules/verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==", + "dev": true, + "engines": [ + "node >=0.6.0" + ], + "dependencies": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + } + }, + "node_modules/w3c-hr-time": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz", + "integrity": "sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==", + "deprecated": "Use your platform's native performance.now() and performance.timeOrigin.", + "dev": true, + "dependencies": { + "browser-process-hrtime": "^1.0.0" + } + }, + "node_modules/w3c-xmlserializer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz", + "integrity": "sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA==", + "dev": true, + "dependencies": { + "xml-name-validator": "^3.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/walker": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", + "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", + "dev": true, + "dependencies": { + "makeerror": "1.0.12" + } + }, + "node_modules/webidl-conversions": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz", + "integrity": "sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==", + "dev": true, + "engines": { + "node": ">=10.4" + } + }, + "node_modules/whatwg-encoding": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz", + "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==", + "dev": true, + "dependencies": { + "iconv-lite": "0.4.24" + } + }, + "node_modules/whatwg-mimetype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz", + "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==", + "dev": true + }, + "node_modules/whatwg-url": { + "version": "8.7.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.7.0.tgz", + "integrity": "sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg==", + "dev": true, + "dependencies": { + "lodash": "^4.7.0", + "tr46": "^2.1.0", + "webidl-conversions": "^6.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/which-module": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.1.tgz", + "integrity": "sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==", + "dev": true + }, + "node_modules/wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true + }, + "node_modules/write-file-atomic": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", + "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", + "dev": true, + "dependencies": { + "imurmurhash": "^0.1.4", + "is-typedarray": "^1.0.0", + "signal-exit": "^3.0.2", + "typedarray-to-buffer": "^3.1.5" + } + }, + "node_modules/ws": { + "version": "7.5.9", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", + "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", + "dev": true, + "engines": { + "node": ">=8.3.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/xml-name-validator": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz", + "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==", + "dev": true + }, + "node_modules/xmlchars": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", + "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", + "dev": true + }, + "node_modules/y18n": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", + "dev": true + }, + "node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true + }, + "node_modules/yargs": { + "version": "15.4.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", + "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", + "dev": true, + "dependencies": { + "cliui": "^6.0.0", + "decamelize": "^1.2.0", + "find-up": "^4.1.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^4.2.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^18.1.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/yargs-parser": { + "version": "18.1.3", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", + "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", + "dev": true, + "dependencies": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/yargs-parser/node_modules/camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true, + "engines": { + "node": ">=6" + } + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..05437d0 --- /dev/null +++ b/package.json @@ -0,0 +1,36 @@ +{ + "name": "ryte", + "version": "1.0.0", + "description": "", + "main": "index.js", + "scripts": { + "test": "jest --coverage", + "prettier": "npx prettier -w ./sdk ./tests && npx tsc" + }, + "jest": { + "coverageThreshold": { + "global": { + "branches": 0, + "functions": 0, + "lines": 0 + } + } + }, + "author": "Pranav Mahadik ", + "license": "ISC", + "dependencies": { + "@pixelbin/core": "^6.0.0", + "axios": "^1.6.0", + "axios-retry": "^3.3.1", + "crypto-js": "^4.0.0", + "joi": "^17.4.0", + "query-string": "^6.14.1", + "camelcase": "^6.2.0" + }, + "devDependencies": { + "axios-mock-adapter": "^1.19.0", + "coveralls": "^3.1.0", + "dotenv": "^10.0.0", + "jest": "^26.6.3" + } +} diff --git a/platform.d.ts b/platform.d.ts new file mode 100644 index 0000000..b4d0894 --- /dev/null +++ b/platform.d.ts @@ -0,0 +1,3 @@ +import { PlatformConfig } from "./sdk/platform"; +import { PlatformClient } from "./sdk/platform"; +export { PlatformConfig, PlatformClient }; diff --git a/platform.js b/platform.js new file mode 100644 index 0000000..7b365ec --- /dev/null +++ b/platform.js @@ -0,0 +1,6 @@ +const {PlatformConfig, PlatformClient} = require('./sdk/platform'); + +module.exports = { + PlatformConfig: PlatformConfig, + PlatformClient: PlatformClient +}; diff --git a/sdk/common/AxiosHelper.d.ts b/sdk/common/AxiosHelper.d.ts new file mode 100644 index 0000000..d66d225 --- /dev/null +++ b/sdk/common/AxiosHelper.d.ts @@ -0,0 +1 @@ +export const fdkAxios: any; diff --git a/sdk/common/AxiosHelper.js b/sdk/common/AxiosHelper.js new file mode 100644 index 0000000..06dea8c --- /dev/null +++ b/sdk/common/AxiosHelper.js @@ -0,0 +1,130 @@ +const { combineURLs, isAbsoluteURL } = require("./utils"); +const axios = require("axios"); +const axiosRetry = require("axios-retry"); +const querystring = require("query-string"); +const { sign } = require("./RequestSigner"); +const { FDKServerResponseError } = require("./FDKError"); +axios.defaults.withCredentials = true; + +function getTransformer(config) { + const { transformRequest } = config; + + if (transformRequest) { + if (typeof transformRequest === "function") { + return transformRequest; + } else if (transformRequest.length) { + return transformRequest[0]; + } + } + + throw new Error( + "Could not get default transformRequest function from Axios defaults" + ); +} + +function requestInterceptorFn() { + return (config) => { + if (!config.url) { + throw new Error( + "No URL present in request config, unable to sign request" + ); + } + + let url = config.url; + if (config.baseURL && !isAbsoluteURL(config.url)) { + url = combineURLs(config.baseURL, config.url); + } + const { host, pathname, search } = new URL(url); + const { data, headers, method, params } = config; + headers["x-ptl-sdk-version"] = "v1.0"; + let querySearchObj = querystring.parse(search); + querySearchObj = { ...querySearchObj, ...params }; + let queryParam = ""; + if (querySearchObj && Object.keys(querySearchObj).length) { + if (querystring.stringify(querySearchObj).trim() !== "") { + queryParam = `?${querystring.stringify(querySearchObj)}`; + } + } + let transformedData; + if (method != "get") { + const transformRequest = getTransformer(config); + transformedData = transformRequest(data, headers); + } + + // Remove all the default Axios headers + const { + common, + delete: _delete, // 'delete' is a reserved word + get, + head, + post, + put, + patch, + ...headersToSign + } = headers; + + const signingOptions = { + method: method && method.toUpperCase(), + host: host, + path: pathname + search + queryParam, + body: transformedData, + headers: headersToSign, + secret: headers["x-merchant-secret"], + }; + delete headers["x-merchant-secret"]; + sign(signingOptions); + + config.headers["x-ptl-date"] = signingOptions.headers["x-ptl-date"]; + config.headers["x-ptl-signature"] = + signingOptions.headers["x-ptl-signature"]; + return config; + }; +} +const fdkAxios = axios.create({ + paramsSerializer: (params) => { + return querystring.stringify(params); + }, +}); + +axiosRetry(fdkAxios, { retries: 2 }, { retryDelay: 1000 }); + +fdkAxios.interceptors.request.use(requestInterceptorFn()); +fdkAxios.interceptors.response.use( + function (response) { + if (response.config.method == "head") { + return response.headers; + } + if (process.env.INCLUDE_HEADERS_IN_RESPONSE) { + response.data.__headers = response.headers; + } + return response.data; // IF 2XX then return response.data only + }, + function (error) { + console.log(error); + if (error.response) { + // Request made and server responded + throw new FDKServerResponseError( + error.response.data.message || error.message, + error.response.data.stack || error.stack, + error.response.statusText, + error.response.status, + error.response.data + ); + } else if (error.request) { + // The request was made but no error.response was received + throw new FDKServerResponseError( + error.message, + error.stack, + error.code, + error.code + ); + } else { + // Something happened in setting up the request that triggered an Error + throw new FDKServerResponseError(error.message, error.stack); + } + } +); + +module.exports = { + fdkAxios, +}; diff --git a/sdk/common/Constant.d.ts b/sdk/common/Constant.d.ts new file mode 100644 index 0000000..b971f35 --- /dev/null +++ b/sdk/common/Constant.d.ts @@ -0,0 +1,271 @@ +export namespace AVAILABLE_PAGE_TYPE { + const EXTERNAL: string; + const LOGIN: string; + const HOME: string; + const TRANSACTIONS: string; + const TRANSACTIONDETAILS: string; + const REWARDS: string; + const REFERANDEARN: string; + const PROFILE: string; + const SETUPAUTOPAY: string; + const UPDATEEMAIL: string; + const REPORTISSUE: string; + const CREDITSCORE: string; + const AUTOPAY: string; + const HELPCENTER: string; + const KYCINIT: string; + const ACCESSDIGILOCKER: string; + const LIVELINESS: string; + const LENDERONBOARD: string; + const LENDER: string; + const KYCDOCS: string; + const KYCSELFIE: string; + const KYCSTATUS: string; + const KYCERROR: string; + const KYCDIGILOCKERRESPONSE: string; + const KYCINITRESPONSE: string; + const REPAYMENT: string; + const NETBANKINGREPAYMENT: string; + const UPIREPAYMENT: string; + const SANCTIONLETTER: string; + const KFS: string; +} +export namespace NAVIGATORS { + namespace external { + const name: string; + const link: string; + const query: { + key: string; + required: boolean; + }[]; + } + namespace login { + const name_1: string; + export { name_1 as name }; + const link_1: string; + export { link_1 as link }; + } + namespace home { + export const screenType: string; + const name_2: string; + export { name_2 as name }; + const link_2: string; + export { link_2 as link }; + } + namespace transactions { + const name_3: string; + export { name_3 as name }; + const link_3: string; + export { link_3 as link }; + } + namespace transactionDetails { + const name_4: string; + export { name_4 as name }; + const link_4: string; + export { link_4 as link }; + export const params: { + key: string; + required: boolean; + }[]; + } + namespace rewards { + const name_5: string; + export { name_5 as name }; + const link_5: string; + export { link_5 as link }; + } + namespace referAndEarn { + const name_6: string; + export { name_6 as name }; + const link_6: string; + export { link_6 as link }; + } + namespace profile { + const name_7: string; + export { name_7 as name }; + const link_7: string; + export { link_7 as link }; + } + namespace setupAutopay { + const name_8: string; + export { name_8 as name }; + const link_8: string; + export { link_8 as link }; + } + namespace updateEmail { + const name_9: string; + export { name_9 as name }; + const link_9: string; + export { link_9 as link }; + } + namespace reportIssue { + const name_10: string; + export { name_10 as name }; + const link_10: string; + export { link_10 as link }; + } + namespace creditScore { + const name_11: string; + export { name_11 as name }; + const link_11: string; + export { link_11 as link }; + } + namespace autoPay { + const name_12: string; + export { name_12 as name }; + const link_12: string; + export { link_12 as link }; + } + namespace helpCenter { + const name_13: string; + export { name_13 as name }; + const link_13: string; + export { link_13 as link }; + } + namespace kycInit { + const name_14: string; + export { name_14 as name }; + const link_14: string; + export { link_14 as link }; + } + namespace accessDigilocker { + const name_15: string; + export { name_15 as name }; + const link_15: string; + export { link_15 as link }; + const params_1: { + key: string; + required: boolean; + }[]; + export { params_1 as params }; + } + namespace liveliness { + const name_16: string; + export { name_16 as name }; + const link_16: string; + export { link_16 as link }; + const params_2: { + key: string; + required: boolean; + }[]; + export { params_2 as params }; + } + namespace lenderOnboard { + const name_17: string; + export { name_17 as name }; + const link_17: string; + export { link_17 as link }; + const params_3: { + key: string; + required: boolean; + }[]; + export { params_3 as params }; + } + namespace lender { + const name_18: string; + export { name_18 as name }; + const link_18: string; + export { link_18 as link }; + const params_4: { + key: string; + required: boolean; + }[]; + export { params_4 as params }; + } + namespace kycDocs { + const name_19: string; + export { name_19 as name }; + const link_19: string; + export { link_19 as link }; + } + namespace kycSelfie { + const name_20: string; + export { name_20 as name }; + const link_20: string; + export { link_20 as link }; + } + namespace kycStatus { + const name_21: string; + export { name_21 as name }; + const link_21: string; + export { link_21 as link }; + } + namespace kycError { + const name_22: string; + export { name_22 as name }; + const link_22: string; + export { link_22 as link }; + } + namespace kycDigilockerResponse { + const name_23: string; + export { name_23 as name }; + const link_23: string; + export { link_23 as link }; + } + namespace kycInitResponse { + const name_24: string; + export { name_24 as name }; + const link_24: string; + export { link_24 as link }; + } + namespace repayment { + const name_25: string; + export { name_25 as name }; + const link_25: string; + export { link_25 as link }; + const query_1: { + key: string; + required: boolean; + }[]; + export { query_1 as query }; + } + namespace netBankingRepayment { + const name_26: string; + export { name_26 as name }; + const link_26: string; + export { link_26 as link }; + } + namespace upiRepayment { + const name_27: string; + export { name_27 as name }; + const link_27: string; + export { link_27 as link }; + const query_2: { + key: string; + required: boolean; + }[]; + export { query_2 as query }; + } + namespace sanctionLetter { + const name_28: string; + export { name_28 as name }; + const link_28: string; + export { link_28 as link }; + const params_5: { + key: string; + required: boolean; + }[]; + export { params_5 as params }; + const query_3: { + key: string; + required: boolean; + }[]; + export { query_3 as query }; + } + namespace kfs { + const name_29: string; + export { name_29 as name }; + const link_29: string; + export { link_29 as link }; + const params_6: { + key: string; + required: boolean; + }[]; + export { params_6 as params }; + const query_4: { + key: string; + required: boolean; + }[]; + export { query_4 as query }; + } +} diff --git a/sdk/common/Constant.js b/sdk/common/Constant.js new file mode 100644 index 0000000..b49b187 --- /dev/null +++ b/sdk/common/Constant.js @@ -0,0 +1,259 @@ +const AVAILABLE_PAGE_TYPE = { + EXTERNAL: "external", + LOGIN: "login", + HOME: "home", + TRANSACTIONS: "transactions", + TRANSACTIONDETAILS: "transactionDetails", + REWARDS: "rewards", + REFERANDEARN: "referAndEarn", + PROFILE: "profile", + SETUPAUTOPAY: "setupAutopay", + UPDATEEMAIL: "updateEmail", + REPORTISSUE: "reportIssue", + CREDITSCORE: "creditScore", + AUTOPAY: "autoPay", + HELPCENTER: "helpCenter", + KYCINIT: "kycInit", + ACCESSDIGILOCKER: "accessDigilocker", + LIVELINESS: "liveliness", + LENDERONBOARD: "lenderOnboard", + LENDER: "lender", + KYCDOCS: "kycDocs", + KYCSELFIE: "kycSelfie", + KYCSTATUS: "kycStatus", + KYCERROR: "kycError", + KYCDIGILOCKERRESPONSE: "kycDigilockerResponse", + KYCINITRESPONSE: "kycInitResponse", + REPAYMENT: "repayment", + NETBANKINGREPAYMENT: "netBankingRepayment", + UPIREPAYMENT: "upiRepayment", + SANCTIONLETTER: "sanctionLetter", + KFS: "kfs", +}; + +Object.freeze(AVAILABLE_PAGE_TYPE); + +const NAVIGATORS = { + external: { + name: "External Link", + link: "/external/:url", + query: [ + { + key: "url", + required: true, + }, + ], + }, + login: { + name: "Login", + link: "/login", + }, + home: { + screenType: "DASHBOARD, PAN, LENDERS", + name: "Home", + link: "/", + }, + transactions: { + name: "Transactions", + link: "/transactions", + }, + transactionDetails: { + name: "Transaction Details", + link: "/transactions/:id", + params: [ + { + key: "id", + required: true, + }, + ], + }, + rewards: { + name: "Rewards", + link: "/rewards", + }, + referAndEarn: { + name: "Refer", + link: "/refer", + }, + profile: { + name: "Profile", + link: "/profile", + }, + setupAutopay: { + name: "AutoPay", + link: "/autopay", + }, + updateEmail: { + name: "Update Email", + link: "/profile/email", + }, + reportIssue: { + name: "Report Issue", + link: "/profile/report", + }, + creditScore: { + name: "Credit Score", + link: "/credit-score", + }, + autoPay: { + name: "Setup Autopay", + link: "/autopay", + }, + helpCenter: { + name: "Help Center", + link: "/profile/help-center", + }, + kycInit: { + name: "Start KYC", + link: "/kyc", + }, + accessDigilocker: { + name: "Access Digilocker", + link: "/kyc/:lender/access-digilocker", + params: [ + { + key: "lender", + required: true, + }, + ], + }, + liveliness: { + name: "Liveliness", + link: "/kyc/:lender/selfie", + params: [ + { + key: "lender", + required: true, + }, + ], + }, + lenderOnboard: { + name: "Lender Onboard", + link: "/kyc/:lender/lender-onboard", + params: [ + { + key: "lender", + required: true, + }, + ], + }, + lender: { + name: "Lender", + link: "/lender/:lenderName", + params: [ + { + key: "lenderName", + required: true, + }, + ], + }, + kycDocs: { + name: "Verify KYC Documents", + link: "/kyc/documents", + }, + kycSelfie: { + name: "Verify KYC Selfie", + link: "/kyc/selfie", + }, + kycStatus: { + name: "KYC Status", + link: "/kyc/status", + }, + kycError: { + name: "KYC Error", + link: "/kyc/error", + }, + kycDigilockerResponse: { + name: "KYC Digilocker Response", + link: "/kyc/digilocker-response", + }, + kycInitResponse: { + name: "KYC Init Response", + link: "/kyc/init-response", + }, + repayment: { + name: "Repayment", + link: "/repayment", + query: [ + { + key: "tid", + required: false, + }, + { + key: "intentid", + required: false, + }, + ], + }, + netBankingRepayment: { + name: "Net Banking Repayment", + link: "/repayment/netbanking", + }, + upiRepayment: { + name: "UPI Repayment", + link: "/repayment/upi", + query: [ + { + key: "tid", + required: false, + }, + { + key: "intentid", + required: false, + }, + ], + }, + sanctionLetter: { + name: "Sanction Letter", + link: "/sanction/:userId", + params: [ + { + key: "userId", + required: true, + }, + ], + query: [ + { + key: "loanAmount", + required: true, + }, + { + key: "orderUid", + required: true, + }, + { + key: "merchantId", + required: true, + }, + ], + }, + kfs: { + name: "KFS", + link: "/kfs/:userId", + params: [ + { + key: "userId", + required: true, + }, + ], + query: [ + { + key: "loanAmount", + required: true, + }, + { + key: "orderUid", + required: true, + }, + { + key: "merchantId", + required: true, + }, + ], + }, +}; + +module.exports = { + AVAILABLE_PAGE_TYPE, + NAVIGATORS, +}; diff --git a/sdk/common/FDKError.d.ts b/sdk/common/FDKError.d.ts new file mode 100644 index 0000000..b8a3798 --- /dev/null +++ b/sdk/common/FDKError.d.ts @@ -0,0 +1,26 @@ +export class FDKServerResponseError extends Error { + /** + * @param {string} message + * @param {string} stackTrace + * @param {string} [status] + * @param {string} [code] + */ + constructor(message: string, stackTrace: string, status?: string, code?: string, details?: any); + stackTrace: string; + status: string; + code: string; + details: any; +} +export class FDKClientValidationError extends Error { + constructor(errObj: any); + details: any; +} +export class FDKInvalidCredentialError extends Error { + constructor(message: any); +} +export class FDKTokenIssueError extends Error { + constructor(message: any); +} +export class FDKOAuthCodeError extends Error { + constructor(message: any); +} diff --git a/sdk/common/FDKError.js b/sdk/common/FDKError.js new file mode 100644 index 0000000..6cd7076 --- /dev/null +++ b/sdk/common/FDKError.js @@ -0,0 +1,51 @@ +class FDKServerResponseError extends Error { + /** + * @param {string} message + * @param {string} stackTrace + * @param {string} [status] + * @param {string} [code] + */ + constructor(message, stackTrace, status = null, code = null, details = null) { + super(message); + this.name = "FDKServerResponseError"; + this.stackTrace = stackTrace; + this.status = status; + this.code = code; + this.details = details; + } +} + +class FDKClientValidationError extends Error { + constructor(errObj) { + super(errObj.message); + this.name = "FDKClientValidationError"; + this.details = errObj.details; + } +} + +class FDKInvalidCredentialError extends Error { + constructor(message) { + super(message); + this.name = "FDKInvalidCredentialError"; + } +} +class FDKTokenIssueError extends Error { + constructor(message) { + super(message); + this.name = "FDKTokenIssueError"; + } +} +class FDKOAuthCodeError extends Error { + constructor(message) { + super(message); + this.name = "FDKOAuthCodeError"; + } +} + +module.exports = { + FDKServerResponseError, + FDKClientValidationError, + FDKInvalidCredentialError, + FDKTokenIssueError, + FDKOAuthCodeError, +}; diff --git a/sdk/common/Paginator.d.ts b/sdk/common/Paginator.d.ts new file mode 100644 index 0000000..140faa4 --- /dev/null +++ b/sdk/common/Paginator.d.ts @@ -0,0 +1,16 @@ +export = Paginator; +declare class Paginator { + constructor(pageNo: any); + pageNo: any; + callback: any; + setCallback(callback: any): void; + hasNext(): any; + setPaginator({ hasNext, nextId, pageNo }: { + hasNext: any; + nextId?: any; + pageNo?: number; + }): void; + isNext: any; + nextId: any; + next(): any; +} diff --git a/sdk/common/Paginator.js b/sdk/common/Paginator.js new file mode 100644 index 0000000..f8352b9 --- /dev/null +++ b/sdk/common/Paginator.js @@ -0,0 +1,26 @@ +class Paginator { + constructor(pageNo) { + this.pageNo = pageNo; + this.callback = undefined; + } + + setCallback(callback) { + this.callback = callback; + } + + hasNext() { + return this.isNext; + } + + setPaginator({ hasNext, nextId = undefined, pageNo = 1 }) { + this.isNext = hasNext; + this.nextId = nextId; + this.pageNo = pageNo; + } + + next() { + return this.callback(); + } +} + +module.exports = Paginator; diff --git a/sdk/common/RequestSigner.d.ts b/sdk/common/RequestSigner.d.ts new file mode 100644 index 0000000..e951bbf --- /dev/null +++ b/sdk/common/RequestSigner.d.ts @@ -0,0 +1 @@ +export function sign(request: any): any; diff --git a/sdk/common/RequestSigner.js b/sdk/common/RequestSigner.js new file mode 100644 index 0000000..e83011d --- /dev/null +++ b/sdk/common/RequestSigner.js @@ -0,0 +1,310 @@ +"use strict"; + +const url = require("url"); +const querystring = require("query-string"); +const sha256 = require("crypto-js/sha256"); +const hmacSHA256 = require("crypto-js/hmac-sha256"); + +function hmac(key, string, encoding) { + return hmacSHA256(string, key).toString(); +} +function hash(string, encoding) { + return sha256(string).toString(); +} + +// This function assumes the string has already been percent encoded +function encodeRfc3986(urlEncodedString) { + return urlEncodedString.replace(/[!'()*]/g, function (c) { + return "%" + c.charCodeAt(0).toString(16).toUpperCase(); + }); +} + +function encodeRfc3986Full(str) { + return str; + // return encodeRfc3986(encodeURIComponent(str)); +} + +const HEADERS_TO_IGNORE = { + authorization: true, + connection: true, + "x-amzn-trace-id": true, + "user-agent": true, + expect: true, + "presigned-expires": true, + range: true, +}; + +const HEADERS_TO_INCLUDE = ["x-ptl-.*", "host"]; + +// request: { path | body, [host], [method], [headers], [service], [region] } +class RequestSigner { + constructor(request) { + if (typeof request === "string") { + request = url.parse(request); + } + + let headers = (request.headers = request.headers || {}); + this.request = request; + + if (!request.method && request.body) { + request.method = "POST"; + } + + if (!headers.Host && !headers.host) { + headers.Host = request.hostname || request.host; + + // If a port is specified explicitly, use it as is + if (request.port) { + headers.Host += ":" + request.port; + } + } + if (!request.hostname && !request.host) { + request.hostname = headers.Host || headers.host; + } + } + + prepareRequest() { + this.parsePath(); + + let request = this.request; + let headers = request.headers; + let query; + + if (request.signQuery) { + this.parsedPath.query = query = this.parsedPath.query || {}; + + if (query["x-ptl-date"]) { + this.datetime = query["x-ptl-date"]; + } else { + query["x-ptl-date"] = this.getDateTime(); + } + } else { + if (!request.doNotModifyHeaders) { + if (headers["x-ptl-date"]) { + this.datetime = headers["x-ptl-date"] || headers["x-ptl-date"]; + } else { + headers["x-ptl-date"] = this.getDateTime(); + } + } + + delete headers["x-ptl-signature"]; + delete headers["x-ptl-Signature"]; + } + } + + sign() { + if (!this.parsedPath) { + this.prepareRequest(); + } + if (this.request.signQuery) { + this.parsedPath.query["x-ptl-signature"] = this.signature( + this.request.secret + ); + } else { + this.request.headers["x-ptl-signature"] = this.signature( + this.request.secret + ); + } + this.request.path = this.formatPath(); + return this.request; + } + + getDateTime() { + if (!this.datetime) { + let headers = this.request.headers; + let date = new Date(headers.Date || headers.date || new Date()); + + this.datetime = date.toISOString().replace(/[:\-]|\.\d{3}/g, ""); + } + return this.datetime; + } + + getDate() { + return this.getDateTime().substr(0, 8); + } + + signature(secret = "1234567") { + let kCredentials = secret; + let strTosign = this.stringToSign(); + // console.log(strTosign); + return `v1:${hmac(kCredentials, strTosign, "hex")}`; + } + + stringToSign() { + return [this.getDateTime(), hash(this.canonicalString(), "hex")].join("\n"); + } + + canonicalString() { + if (!this.parsedPath) { + this.prepareRequest(); + } + + let pathStr = this.parsedPath.path; + let query = this.parsedPath.query; + let headers = this.request.headers; + let queryStr = ""; + let normalizePath = true; + let decodePath = this.request.doNotEncodePath; + let decodeSlashesInPath = false; + let firstValOnly = false; + let bodyHash = hash(this.request.body || "", "hex"); + if (query) { + let reducedQuery = Object.keys(query).reduce(function (obj, key) { + if (!key) { + return obj; + } + obj[encodeRfc3986Full(key)] = !Array.isArray(query[key]) + ? query[key] + : firstValOnly + ? query[key][0] + : query[key]; + return obj; + }, {}); + let encodedQueryPieces = []; + Object.keys(reducedQuery) + .sort() + .forEach(function (key) { + if (!Array.isArray(reducedQuery[key])) { + encodedQueryPieces.push( + key + "=" + encodeRfc3986Full(reducedQuery[key]) + ); + } else { + reducedQuery[key] + .map(encodeRfc3986Full) + .sort() + .forEach(function (val) { + encodedQueryPieces.push(key + "=" + val); + }); + } + }); + queryStr = encodedQueryPieces.join("&"); + } + if (pathStr !== "/") { + if (normalizePath) { + pathStr = pathStr.replace(/\/{2,}/g, "/"); + } + pathStr = pathStr + .split("/") + .reduce(function (path, piece) { + if (normalizePath && piece === "..") { + path.pop(); + } else if (!normalizePath || piece !== ".") { + if (decodePath) + piece = decodeURIComponent(piece.replace(/\+/g, " ")); + path.push(encodeRfc3986Full(piece)); + } + return path; + }, []) + .join("/"); + if (pathStr[0] !== "/") pathStr = "/" + pathStr; + if (decodeSlashesInPath) pathStr = pathStr.replace(/%2F/g, "/"); + } + + let canonicalReq = [ + this.request.method || "GET", + pathStr, + queryStr, + this.canonicalHeaders() + "\n", + this.signedHeaders(), + bodyHash, + ].join("\n"); + return canonicalReq; + } + + canonicalHeaders() { + let headers = this.request.headers; + + function trimAll(header) { + return header.toString().trim().replace(/\s+/g, " "); + } + return Object.keys(headers) + .filter(function (key) { + let notInIgnoreHeader = HEADERS_TO_IGNORE[key.toLowerCase()] == null; + if (notInIgnoreHeader) { + let foundMatch = false; + for (let t in HEADERS_TO_INCLUDE) { + foundMatch = + foundMatch || new RegExp(HEADERS_TO_INCLUDE[t], "ig").test(key); + } + return foundMatch; + } else { + return false; + } + }) + .sort(function (a, b) { + return a.toLowerCase() < b.toLowerCase() ? -1 : 1; + }) + .map(function (key) { + return key.toLowerCase() + ":" + trimAll(headers[key]); + }) + .join("\n"); + } + + signedHeaders() { + return Object.keys(this.request.headers) + .map(function (key) { + return key.toLowerCase(); + }) + .filter(function (key) { + let notInIgnoreHeader = HEADERS_TO_IGNORE[key.toLowerCase()] == null; + if (notInIgnoreHeader) { + let foundMatch = false; + for (let t in HEADERS_TO_INCLUDE) { + foundMatch = + foundMatch || new RegExp(HEADERS_TO_INCLUDE[t], "ig").test(key); + } + return foundMatch; + } else { + return false; + } + }) + .sort() + .join(";"); + } + + parsePath() { + let path = this.request.path || "/"; + let queryIx = path.indexOf("?"); + let query = null; + + if (queryIx >= 0) { + query = querystring.parse(path.slice(queryIx + 1)); + path = path.slice(0, queryIx); + } + path = path + .split("/") + .map((t) => { + return encodeURIComponent(decodeURIComponent(t)); + }) + .join("/"); + + this.parsedPath = { + path: path, + query: query, + }; + } + + formatPath() { + let path = this.parsedPath.path; + let query = this.parsedPath.query; + + if (!query) { + return path; + } + + // Services don't support empty query string keys + if (query[""] != null) { + delete query[""]; + } + + return path + "?" + encodeRfc3986(querystring.stringify(query)); + } +} + +function sign(request) { + return new RequestSigner(request).sign(); +} + +module.exports = { + sign: sign, +}; diff --git a/sdk/common/Storage.d.ts b/sdk/common/Storage.d.ts new file mode 100644 index 0000000..d9856c1 --- /dev/null +++ b/sdk/common/Storage.d.ts @@ -0,0 +1,13 @@ +export type OnProgressCallback = (progress: number) => any; +/** + * Uploads a file to a cloud storage provider using a signed URL. + * + * @param {File} file - The file to be uploaded. + * @param signedDetails - An object containing details required for the upload, + * including the provider. + * @param {OnProgressCallback} [onProgress] - An optional callback function to + * handle progress updates. Receives progress as a percentage. + * @returns {Promise} A promise that resolves with the response from the upload. + * @throws {Error} Throws an error if the provider is unsupported or the upload fails. + */ +export function uploadFile(file: File, signedDetails: any, onProgress?: OnProgressCallback): Promise; diff --git a/sdk/common/Storage.js b/sdk/common/Storage.js new file mode 100644 index 0000000..a74c5ee --- /dev/null +++ b/sdk/common/Storage.js @@ -0,0 +1,163 @@ +/** + * @callback OnProgressCallback + * @param {number} progress - Upload progress in percentage. + */ + +/** + * Uploads a file to Google Cloud Storage (GCS) using a signed URL. + * + * @param {File} file - The file to be uploaded. + * @param signedDetails - An object containing the signed URL and other details + * for the upload. + * @param {OnProgressCallback} [onProgress] - An optional callback function to + * handle progress updates. Receives progress as a percentage. + * @returns {Promise} A promise that resolves with the response from the + * GCS upload. + * @throws {Error} Throws an error if the upload fails. + */ +const uploadFileToGcs = (file, signedDetails, onProgress) => { + return new Promise((resolve, reject) => { + const xhr = new XMLHttpRequest(); + xhr.open("PUT", signedDetails.signedUrl); + + // Assuming file.type contains something like "video/webm;codecs=vp9" + const mainMimeType = file.type.split(";")[0]; // This splits the string at ';' and takes the first part, i.e., "video/webm" + // Set the request headers + xhr.setRequestHeader( + "Content-Type", + mainMimeType || "application/octet-stream" + ); + + // Handle the response + xhr.onload = () => { + if (xhr.status >= 200 && xhr.status < 300) { + resolve(xhr.response); + } else { + reject(new Error("An error occurred while uploading file.")); + } + }; + + // Handle network errors + xhr.onerror = () => { + reject(new Error("A network error occurred while uploading file.")); + }; + + // Progress event + xhr.upload.onprogress = (event) => { + if (event.lengthComputable) { + const progress = (event.loaded / event.total) * 100; + // Call the onProgress callback with the progress value + if (typeof onProgress === "function") { + onProgress(progress); + } + } + }; + + // Send the request + xhr.send(file); + }); +}; + +/** + * Asynchronously uploads a file to Pixelbin cloud storage, providing progress updates. + * + * This function initiates the upload of a given file to Pixelbin using a signed URL. + * + * @param {File} file - The file object to be uploaded. + * @param signedDetails - Contains the signed URL and the file URL for checking + * the upload status. + * @param {OnProgressCallback} [onProgress] - An optional callback function that + * receives upload progress updates. Receives progress as a percentage. + * @returns {Promise} A promise that resolves when the file is + * successfully uploaded or rejects if an error occurs. + * @throws {Error} Throws an error if the upload fails due to network issues or + * if the server responds with a status indicating failure. + */ +const uploadFileToPixelbin = async (file, signedDetails, onProgress) => { + const Pixelbin = require("@pixelbin/core"); + + let lastProgress = 0; + + // Send random progress updates before Pixelbin.upload is called + const sendRandomProgress = () => { + if (typeof onProgress === "function") { + // Ensure the new random progress is always greater than the last sent progress + const minProgress = Math.min(lastProgress + 1, 49); // Ensure it doesn't exceed 49 + const randomProgress = Math.floor( + Math.random() * (50 - minProgress) + minProgress + ); + lastProgress = randomProgress; + onProgress(randomProgress); + } + }; + + const randomProgressInterval = setInterval(sendRandomProgress, 1000); + + await Pixelbin.default.upload(file, signedDetails.signedUrl); + + clearInterval(randomProgressInterval); + + // Once Pixelbin.upload has returned, send 50 progress + if (typeof onProgress === "function") { + lastProgress = 50; // Update lastProgress to reflect this manual update + onProgress(50); + } + + const axios = require("axios"); + axios.defaults.withCredentials = false; + + return new Promise((resolve, reject) => { + const interval = setInterval(() => { + axios + .head(signedDetails.fileUrl) + .then((response) => { + if (response.status === 200) { + if (interval) clearInterval(interval); + // Once HEAD call returns 200, send 100 progress + if (typeof onProgress === "function") { + onProgress(100); + } + resolve(); + } + }) + .catch((error) => { + const parsedError = JSON.parse(JSON.stringify(error)); + console.error("Error:", error.message); + // Error status is null in case of 429 + if (parsedError.status === null || parsedError.status === 429) { + if (interval) clearInterval(interval); + reject(new Error("An error occurred while uploading file.")); + } + }); + }, Number(process.env.PIXELBIN_HEAD_POLLING_INTERVAL) || 3000); + }); +}; + +/** + * Uploads a file to a cloud storage provider using a signed URL. + * + * @param {File} file - The file to be uploaded. + * @param signedDetails - An object containing details required for the upload, + * including the provider. + * @param {OnProgressCallback} [onProgress] - An optional callback function to + * handle progress updates. Receives progress as a percentage. + * @returns {Promise} A promise that resolves with the response from the upload. + * @throws {Error} Throws an error if the provider is unsupported or the upload fails. + */ +const uploadFile = async (file, signedDetails, onProgress) => { + switch (signedDetails.provider) { + case "gcp": { + return await uploadFileToGcs(file, signedDetails, onProgress); + } + case "pixelbin": { + return await uploadFileToPixelbin(file, signedDetails, onProgress); + } + default: { + throw new Error("Unsupported provider"); + } + } +}; + +module.exports = { + uploadFile, +}; diff --git a/sdk/common/Utility.d.ts b/sdk/common/Utility.d.ts new file mode 100644 index 0000000..1d8eb39 --- /dev/null +++ b/sdk/common/Utility.d.ts @@ -0,0 +1,9 @@ +export function convertActionToUrl(action: any): any; +export function convertUrlToAction(url: any): { + type: string; + page: { + type: string; + query: {}; + params: {}; + }; +}; diff --git a/sdk/common/Utility.js b/sdk/common/Utility.js new file mode 100644 index 0000000..531f9cf --- /dev/null +++ b/sdk/common/Utility.js @@ -0,0 +1,61 @@ +const utils = require("./utils"); +const Constant = require("./Constant"); + +function convertUrlToAction(url) { + const path = utils.trimChar(url); + const query = utils.getQuery(path); + const pathname = utils.validURL(path) + ? new URL(path).pathname + : path.split("?")[0]; + const allNavigations = Object.assign({}, Constant.NAVIGATORS); + const allLinks = Object.values(allNavigations).map((nav) => { + return nav["link"]; + }); + allLinks.sort(function (a, b) { + return b.length - a.length; + }); + const bestMatchingLink = utils.findBestMatchingLink(allLinks, pathname); + let closestMatchingNavKey = Object.keys(allNavigations).find((pageType) => { + return ( + utils.trimChar(allNavigations[pageType]["link"]) === + bestMatchingLink.value + ); + }); + if (!closestMatchingNavKey) { + closestMatchingNavKey = "home"; + } + return { + type: "page", + page: { + type: closestMatchingNavKey, + query: query, + params: bestMatchingLink.params, + }, + }; +} + +function convertActionToUrl(action) { + switch (action.type) { + case utils.NAV_TYPE.PAGE: { + const item = Object.assign({}, Constant.NAVIGATORS[action.page.type]); + if (item) { + //get param + item.link = utils.generateUrlWithParams(item, action.page.params); + //get query + if (action.page.query && Object.keys(action.page.query).length > 0) { + item.link += "/?" + utils.transformRequestOptions(action.page.query); + } + return item.link; + } + return ""; + } + case utils.NAV_TYPE.POPUP: { + break; + } + } +} + +module.exports = { + convertActionToUrl, + convertUrlToAction, +}; diff --git a/sdk/common/utils.d.ts b/sdk/common/utils.d.ts new file mode 100644 index 0000000..90b0f68 --- /dev/null +++ b/sdk/common/utils.d.ts @@ -0,0 +1,29 @@ +export function transformRequestOptions(params: any): string; +export function getParamsFromItem(params: any): string; +export function getQuery(path: any): {}; +export function trimChar(string?: string, charToRemove?: string): string; +export function generateUrlWithParams(item: {}, params: any): string; +export function findBestMatchingLink(allLinks?: any[], pathname?: string): { + value: string; + params: {}; +}; +export function validURL(str: any): boolean; +/** + * Creates a new URL by combining the specified URLs + * + * @param {string} baseURL The base URL + * @param {string} relativeURL The relative URL + * @returns {string} The combined URL + */ +export function combineURLs(baseURL: string, relativeURL: string): string; +/** + * Determines whether the specified URL is absolute + * + * @param {string} url The URL to test + * @returns {boolean} True if the specified URL is absolute, otherwise false + */ +export function isAbsoluteURL(url: string): boolean; +export namespace NAV_TYPE { + const PAGE: string; + const POPUP: string; +} diff --git a/sdk/common/utils.js b/sdk/common/utils.js new file mode 100644 index 0000000..0a82ae0 --- /dev/null +++ b/sdk/common/utils.js @@ -0,0 +1,195 @@ +const SLUG_DELIMETER = ":::"; +const transformRequestOptions = (params) => { + let options = ""; + + for (const key in params) { + if (typeof params[key] !== "object" && params[key]) { + const encodeVal = encodeURIComponent(params[key]); + options += `${key}=${encodeVal}&`; + } else if (Array.isArray(params[key])) { + params[key].forEach((el) => { + const encodeVal = encodeURIComponent(el); + options += `${key}=${encodeVal}&`; + }); + } else if (typeof params[key] === "object" && params[key]) { + options += transformRequestOptions(params[key]); + } + } + return options ? options.slice(0, -1) : options; +}; + +const getParamsFromItem = (params) => { + let strParam = ""; + for (let key in params) { + if (Array.isArray(params[key])) { + for (let index = 0; index < params[key].length; index++) { + strParam += + index === params[key].length - 1 + ? params[key][index] + : params[key][index] + SLUG_DELIMETER; + } + return strParam; + } + } + return strParam; +}; +const generateUrlWithParams = (item = {}, params) => { + if (!item || !item.link) return ""; + if (!params) return `/${trimChar(item.link.split(":")[0])}`; + const joinedParamsObj = {}; + for (let key in params) { + if (Array.isArray(params[key])) { + let joinedParams = ""; + for (let index = 0; index < params[key].length; index++) { + joinedParams += + index === params[key].length - 1 + ? params[key][index] + : params[key][index] + SLUG_DELIMETER; + } + joinedParamsObj[key] = joinedParams; + } + } + item.link = trimChar(item.link); + + let linkArr = item.link.split("/"); + let url = ""; + for (let linkSubString of linkArr) { + if (linkSubString.startsWith(":")) { + linkSubString = linkSubString.slice(1); + url += `${joinedParamsObj[linkSubString]}`; + } else url += `${linkSubString}`; + url += "/"; + } + url = trimChar(url); + return `/${url}`; +}; +const getQuery = (path) => { + let parseUrl = path.split("?"); + if (parseUrl.length > 1) { + const searchParams = new URLSearchParams(parseUrl[1]); + let queryResult = {}; + for (let item of searchParams) { + let key = item[0], + value = item[1]; + + queryResult[key] = queryResult[key] + ? [...queryResult[key], value] + : [value]; + } + return queryResult; + } + return {}; +}; +const trimChar = (string = "", charToRemove = "/") => { + while (string.charAt(0) == charToRemove) { + string = string.substring(1); + } + + while (string.charAt(string.length - 1) == charToRemove) { + string = string.substring(0, string.length - 1); + } + + return string; +}; + +function validURL(str) { + var pattern = new RegExp( + "^(https?:\\/\\/)?" + // protocol + "((([a-z\\d]([a-z\\d-]*[a-z\\d])*)\\.)+[a-z]{2,}|" + // domain name + "((\\d{1,3}\\.){3}\\d{1,3}))" + // OR ip (v4) address + "(\\:\\d+)?(\\/[-a-z\\d%_.~+]*)*" + // port and path + "(\\?[;&a-z\\d%_.~+=-]*)?" + // query string + "(\\#[-a-z\\d_]*)?$", + "i" + ); // fragment locator + return !!pattern.test(str); +} + +const findBestMatchingLink = (allLinks = [], pathname = "/") => { + let bestMatch = { value: "", params: {} }; + pathname = trimChar(pathname); // -> product/test-product-tag/reviews + for (let i = 0; i < allLinks.length; i++) { + let link = trimChar(allLinks[i]); // -> product/:slug/add-reviews + if (new RegExp(`^${trimChar(link)}`).test(pathname)) { + bestMatch.value = link; + break; + } + const linkArr = link.split("/"); // -> [ 'product', ':slug', 'add-reviews' ] + const pathArr = pathname.split("/"); // -> [ 'product', 'test-product-tag', 'reviews' ] + if (linkArr.length === pathArr.length) { + // some match + let j; + bestMatch = { value: "", params: {} }; + for (j = 0; j < linkArr.length; ++j) { + if (linkArr[j].startsWith(":")) { + // this will be :slug & test-slug + let arrParams = []; + if (pathArr[j].includes(SLUG_DELIMETER)) { + // if link container multiple path params eg test-slug--test-slug-123 + arrParams = pathArr[j].split(SLUG_DELIMETER); // split it into array + } else arrParams = [pathArr[j]]; // else assign + if (bestMatch.params[linkArr[j].slice(1)]) { + // if params is already present in best match object spread new params + arrParams = [ + ...bestMatch.params[linkArr[j].slice(1)], + ...arrParams, + ]; + } + bestMatch.params[linkArr[j].slice(1)] = arrParams; // else assign + } else if (linkArr[j] !== pathArr[j]) break; // if path and link params not match and are not :slug type break and move to next link + } + if (j === linkArr.length) { + // if all paths match and j is not 0 coz 'about-us' & 'notification' have same length and in that case j will be 0. This type of matching is handled in Regex on line #100 + bestMatch.value = link; + break; + } + } + } + return bestMatch; +}; + +/** + * Creates a new URL by combining the specified URLs + * + * @param {string} baseURL The base URL + * @param {string} relativeURL The relative URL + * @returns {string} The combined URL + */ +function combineURLs(baseURL, relativeURL) { + return relativeURL + ? baseURL.replace(/\/+$/, "") + "/" + relativeURL.replace(/^\/+/, "") + : baseURL; +} + +("use strict"); + +/** + * Determines whether the specified URL is absolute + * + * @param {string} url The URL to test + * @returns {boolean} True if the specified URL is absolute, otherwise false + */ +function isAbsoluteURL(url) { + // A URL is considered absolute if it begins with "://" or "//" (protocol-relative URL). + // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed + // by any combination of letters, digits, plus, period, or hyphen. + return /^([a-z][a-z\d+\-.]*:)?\/\//i.test(url); +} + +const NAV_TYPE = { + PAGE: "page", + POPUP: "popup", +}; + +module.exports = { + transformRequestOptions, + getParamsFromItem, + getQuery, + trimChar, + generateUrlWithParams, + findBestMatchingLink, + validURL, + combineURLs, + isAbsoluteURL, + NAV_TYPE, +}; diff --git a/sdk/platform/OAuthClient.d.ts b/sdk/platform/OAuthClient.d.ts new file mode 100644 index 0000000..9bdf908 --- /dev/null +++ b/sdk/platform/OAuthClient.d.ts @@ -0,0 +1,23 @@ +export = OAuthClient; +declare class OAuthClient { + constructor(config: any); + config: any; + token: any; + refreshToken: any; + retryOAuthTokenTimer: NodeJS.Timeout; + raw_token: any; + token_expires_in: any; + token_expires_at: number; + useAutoRenewTimer: any; + refresh_token_time: number; + getAccessToken(): Promise; + isTokenExpired(ttl?: number): boolean; + setToken(token: any): any; + retryOAuthToken(expires_in: any): void; + renewAccessToken(): Promise; + getAccesstokenObj({ grant_type, refresh_token, code }: { + grant_type: any; + refresh_token: any; + code: any; + }): Promise; +} diff --git a/sdk/platform/OAuthClient.js b/sdk/platform/OAuthClient.js new file mode 100644 index 0000000..dcecc9a --- /dev/null +++ b/sdk/platform/OAuthClient.js @@ -0,0 +1,121 @@ +const querystring = require("query-string"); +const { fdkAxios } = require("../common/AxiosHelper"); +const { sign } = require("../common/RequestSigner"); +const { FDKTokenIssueError, FDKOAuthCodeError } = require("../common/FDKError"); +class OAuthClient { + constructor(config) { + this.config = config; + this.token = null; + this.refreshToken = null; + this.retryOAuthTokenTimer = null; + this.raw_token = null; + this.token_expires_in = null; + this.token_expires_at = 0; + this.useAutoRenewTimer = + config.useAutoRenewTimer !== undefined ? config.useAutoRenewTimer : true; + this.refresh_token_time = null; + } + + async getAccessToken() { + if ( + !this.useAutoRenewTimer && + this.refreshToken && + this.isTokenExpired(this.refresh_token_time) + ) { + // Check if token is about to expire in less than 2 mins. + // Renew if to be expired and auto renew timer is not enabled. + await this.renewAccessToken(); + } + if (this.token == null) { + let res = await this.getAccesstokenObj({ + grant_type: "authorization_code", + }); + return this.setToken(res); + } else { + return this.token; + } + } + + // default TTL checked 0 seconds + isTokenExpired(ttl = 0) { + const currentTimestamp = new Date().getTime(); + // Check if token is about to expire in less than 2 mins + if ((this.token_expires_at - currentTimestamp) / 1000 < ttl) { + return true; + } + return false; + } + + setToken(token) { + this.raw_token = token; + this.token_expires_in = token.tokenExpiryIn; + this.token = token.accessToken; + this.refresh_token_time = token.tokenExpiryIn / 2; + this.refreshToken = token.refreshToken ? token.refreshToken : null; + if (this.refreshToken && this.useAutoRenewTimer) { + this.retryOAuthToken(token.tokenExpiryIn); + } + return token.accessToken; + } + + retryOAuthToken(expires_in) { + if (this.retryOAuthTokenTimer) { + clearTimeout(this.retryOAuthTokenTimer); + } + if (expires_in > this.refresh_token_time) { + this.retryOAuthTokenTimer = setTimeout(() => { + this.renewAccessToken(); + }, (expires_in - this.refresh_token_time) * 1000); + } + } + + async renewAccessToken() { + try { + let res = await this.getAccesstokenObj({ + grant_type: "refresh_token", + refresh_token: this.refreshToken, + }); + this.setToken(res); + this.token_expires_at = + new Date().getTime() + this.token_expires_in * 1000; + return res; + } catch (error) { + if (error.isAxiosError) { + throw new FDKTokenIssueError(error.message); + } + throw error; + } + } + + async getAccesstokenObj({ grant_type, refresh_token, code }) { + let reqData = { + grant_type: grant_type, + }; + let url = undefined; + if (grant_type === "refresh_token") { + reqData = { ...reqData, token: refresh_token }; + url = `${this.config.domain}/service/integration/staff/authentication/oauth/${this.config.apiKey}/token`; + } else if (grant_type === "authorization_code") { + url = `${this.config.domain}/service/integration/staff/authentication/oauth/${this.config.apiKey}/authorize`; + reqData = { ...reqData, code }; + } + const token = Buffer.from( + `${this.config.apiKey}:${this.config.apiSecret}`, + "utf8" + ).toString("base64"); + + const rawRequest = { + method: "post", + url: url, + data: querystring.stringify(reqData), + headers: { + Authorization: `Basic ${token}`, + "Content-Type": "application/x-www-form-urlencoded", + "x-merchant-secret": this.config.topSecret, + }, + }; + return fdkAxios.request(rawRequest); + } +} + +module.exports = OAuthClient; diff --git a/sdk/platform/PlatformAPIClient.d.ts b/sdk/platform/PlatformAPIClient.d.ts new file mode 100644 index 0000000..f3d8201 --- /dev/null +++ b/sdk/platform/PlatformAPIClient.d.ts @@ -0,0 +1,13 @@ +export = APIClient; +declare class APIClient { + /** + * @param {object} conf + * @param {string} method + * @param {string} url + * @param {object} query + * @param {string} session + * @param {object} disbursalRequest + */ + static execute(conf: object, method: string, url: string, query: object, disbursalRequest: object, session: string): Promise; + get(url: any, config: any): Promise; +} diff --git a/sdk/platform/PlatformAPIClient.js b/sdk/platform/PlatformAPIClient.js new file mode 100644 index 0000000..ef97ab2 --- /dev/null +++ b/sdk/platform/PlatformAPIClient.js @@ -0,0 +1,48 @@ +const { fdkAxios } = require("../common/AxiosHelper"); + +class APIClient { + /** + * @param {object} conf + * @param {string} method + * @param {string} url + * @param {object} query + * @param {string} session + * @param {object} disbursalRequest + */ + static async execute(conf, method, url, query, disbursalRequest, session) { + const token = await conf.oauthClient.getAccessToken(); + + let extraHeaders = conf.extraHeaders.reduce((acc, curr) => { + acc = { ...acc, ...curr }; + return acc; + }, {}); + if (session) { + extraHeaders.cookie = `user.session=${session}`; + } + if (conf.topSecret) { + extraHeaders["x-merchant-secret"] = conf.topSecret; + } + const rawRequest = { + baseURL: conf.domain, + method: method, + url: url, + params: query, + data: disbursalRequest, + headers: { + Authorization: "Bearer " + token, + ...extraHeaders, + }, + }; + + return fdkAxios.request(rawRequest); + } + + async get(url, config) { + let access_token = await this.configuration.getAccessToken(); + config = config || {}; + config.headers = config.headers || {}; + config.headers.Authorization = "Bearer " + access_token; + return axios.get(url); + } +} +module.exports = APIClient; diff --git a/sdk/platform/PlatformApplicationClient.d.ts b/sdk/platform/PlatformApplicationClient.d.ts new file mode 100644 index 0000000..76c8da1 --- /dev/null +++ b/sdk/platform/PlatformApplicationClient.d.ts @@ -0,0 +1,2138 @@ +export = PlatformApplicationClient; +declare class PlatformApplicationClient { + constructor(applicationId: any, config: any); + config: any; + companyId: any; + applicationId: any; + setExtraHeaders(header: any): void; +} +declare namespace PlatformApplicationClient { + export { UserSchema, count, FilterByDate, LenderCount, LenderSchema, TotalUsersPerLender, TotalUsersPerLenderData, TotalUserByLender, UsersByLender, ErrorResponse, EditProfileRequest, VerifyOtpRequest, SendMobileOtpRequest, ReSendMobileOtpRequest, SendOtpRequest, ApplicationUser, SendOtpResponse, EmailUpdate, UserUpdateRequest, LenderUpdateRequest, ProfileEditSuccess, LoginSuccess, VerifyOtpSuccess, LogoutSuccess, OtpSuccess, SessionListSuccess, VerifyMobileOTPSuccess, Location, OrderAddress, CustomerObject, Order, OrderUid, CustomerMeta, Device, VerifyCustomer, CreateTransaction, ResendPaymentRequest, VerifyCustomerSuccess, CreateTransactionSuccess, SupportDocuments, CreateTicketResponse, CreateTicket, InitiateTransactions, GetMobileFromToken, GetDataFromToken, MerchantDetails, InitiateTransactionsSuccess, RetrieveMobileFromToken, CreateDashboardTemplateRequest, TemplateSections, TemplateComponent, PartnerApplications, Offerings, Banners, Tips, DashboardTemplateResponse, SectionSchema, PartnerApplicationsResponse, OfferingsResponse, BannersResponse, TipsSection, TipsResponse, TipsCategories, ActionSchema, UpdateDashboardTemplateRequest, UpdateTemplateSections, UpdateTemplateComponent, UpdatePartnerApplications, UpdateOfferings, UpdateBanners, UpdateTips, NavigationsMobileResponse, TabsSchema, PageSchema, ProfileSectionSchema, ProfileNavigationSchema, SendPNSRegisterRequest, PNSRegisterResponse, FaqResponse, CategorySchema, QuestionSchema, SupportCategories, SupportCategoriesResponse, SanctionLetterResponse, KfsDocumentResponse, UserWhiteListedResponse, UserConsentRequest, Consents, UserConsentRequestV2, UserConsentResponse, UserKycSteps, CreateKycStepRequest, RemoveKycStepRequest, KycUpdateMessage, MobileFromLinkingRequest, MobileFromLinkingResponse, SessionFromLinkingRequest, SessionFromLinkingResponse, LinkAccount, LinkAccountSuccess, UnlinkAccount, UnlinkAccountSuccess, Refund, Translation, FilterKeys, FilterValues, Filters, PageResponse, UserResponse, UserDetailRequest, UserConsents, CreditScoreSchema, CreditLimitSchema, Screen, UserStateSchema, GetAccessTokenResponse, RefreshTokenResponse, RefreshTokenRequest, Items, RefundStatusList, RefundStatus, CustomerMetricsPivots, CustomerMetricsSubResponse, CustomerMetricsAnalytics, CustomerMetricsFilters, CustomerMetrics, CustomerMetricsResponse, CustomerMetricsRequest, SourceAnalyticsRequest, LenderResponse, CreditLimitObject, BusinessDetails, DocumentItems, VintageItems, EligibilitySuccess, CheckEligibilityRequest, GetSchemesSuccess, DisbursalRequest, WorkflowUser, EligiblePlansRequest, EligiblePlans, EligiblePlansResponse, DisbursalResponse, OrderStatus, DisbursalStatusRequest, Transactions, LenderDetail, TransactionResponse, MerchantTransactions, MerchantTransactionSummary, GetReconciliationFileResponse, ReconFile, UploadReconciliationFileRequest, UploadReconciliationFileResponse, TransactionCount, RefundCount, OrganizationTransactionsCount, OrganizationTransactionsSum, UniqueCustomersInOrg, TransactionAmount, SchemaForOneDayTotal, SumofOneDayTransactions, AverageTransaction, AllTransactionsResponse, TotalRefund, TotalRepayment, TotalOverDue, TotalLoansDisbursed, OrganizationTransactionResponse, TrFilters, TrPageResponse, OrgTransactions, TrFilterKeys, TrFilterValues, KfsRequest, KfsResponse, LenderTransactionState, TransactionStateResponse, Theme, Emi, MetricPivots, TransactionMetricSubResponse, TransactionMetrics, LenderCustomerTransactionMetricsFilters, LenderCustomerTransactionMetrics, LenderCustomerTransactionMetricsResponse, LenderCustomerTransactionMetricsRequest, LenderTheme, Lender, UserLender, SourceCreditReport, Document, UserKycDetail, Form, LenderKycStepMap, UserKycLenderStepMap, ProofOfIdentity, ProofOfAddress, EAadhaarData, Consent, ValidatePanRequest, BankDetails, DocumentData, ConfirmPanRequest, LivelinessDetails, UploadDocumentRequest, UploadDocumentRequestV1, UploadDocumentRequestV3, AadhaarRequest, UploadAadhaarRequest, UploadLivelinessRequest, UploadAadhaarRequestV1, UploadLivelinessRequestV1, UploadAadhaarRequestV2, UploadLivelinessRequestV2, UploadAadhaarRequestV3, UploadLivelinessRequestV3, UploadBankDetailsRequest, InitiateKycRequest, InitiateKycRequestV1, LenderOnboardRequest, UpdateLenderStatusRequest, UpdateProfileRequest, UpdateEntityRequest, CreateKycStepsRequest, CreateLenderPgConfigRequest, CreateLenderStateRequest, UpdateLenderRequest, OtherPolicyFilters, GetPolicyFilters, GetPolicyFilters2, MerchantConfigRequest, PanDetails, AvailableLendersRequest, InitialData, ExecutePolicyRequest, ExecutePolicyRequest2, RegisterGstRequest, PopulateFormRequest, ValidateFormFieldRequest, MerchantMetricFilter, LenderCustomerMetricsRequest, StonewallCustomer, GetLimitRequest, DocumentObject, ManualKycRequest, RetriggerLenderOnboardRequest, EntityMapDto, EntityDto, FindDocResponse, LenderKycStatus, StateResponeDto, KycStateMachineDto, InitiateKycDto, LenderOnboardDto, StepDetails, OnboardStatusDto, LenderFilters, Policy, GetKycDocsResponse, OrganizationLogosObject, MetricSubTypes, MetricTypes, BreApprovedUsersResponse, Metrics, MetricData, ApprovedLenders, BreResultStatus, GetAllUserLendersByEnityId, LenderState, UserLenderState, LenderConfig, Pg, LenderPgConfig, FileUploadResponse, PresignedUrl, PresignedUrlV2, LenderDocument, KycStatusResponse, WorkflowResponse, InitiateKycResponse, UploadDocResponse, LenderOnboardResponse, OnboardingStatusResponse, SignedUrlResponse, SignedUrlV2Response, PresignedUrlV3, SignedUrlV3Response, DigilockerLinkResponse, GetDocumentsResponse, ApprovedLendersTransaction, ApprovedPossibleLenders, AvailableLenders, CreditLimit, CreditLimitResponse, LenderPgConfigResponse, GetLendersResponse, LenderConfigurationResponse, UpsertLenderResponse, UpsertLenderConfigResponse, CreateKycStepsSchema, CreatePaymentGatewaySchema, CreateLenderStateSchema, GetAllPaymentGatewaysSchema, PolicyResponse, CreditCheckBreResponse, MerchantConfigResponse, UserLenderByIdAndStatusResponse, IntgrAvailableCreditLimit, IngtrAvailableLimit, IntgrCreditLimit, PossibleLendersInternal, PossibleLendersInternalResponse, GetTotalKycResponse, GetTotalKycCompletedUsersResponse, GetTotalPendingUsersResponse, GetTotalCreditProvidedResponse, MetaSchemaResponse, MetaSchema, AddMetaSchema, AddMetaSchemaRequest, ValidatePanResponse, ConfirmPanResonse, LenderCountResponse, OnboardStepsDto, OnboardStepsResponse, LenderDocumentResponse, GetUserLendersResponse, CreditReportResponse, KycDetailsReponse, GetDocumentByIdResponse, GetAllFormsResponse, UpsertFormResponse, GstDetails, GstDetailsResponse, RegisterGstResponse, PopulateFormResponse, ValidateFormFieldResponse, LenderCustomerMetricsResponse, ManualKycResponse, BreOutput, CustomerKycDetailsReponse }; +} +type UserSchema = { + id?: string; + firstName?: string; + lastName?: string; + countryCode?: string; + mobile?: string; + email?: string; + gender?: string; + dob?: string; + active?: boolean; + profilePicUrl?: string; + isEmailVerified?: boolean; + createdAt?: string; + updatedAt?: string; + deletedAt?: string; +}; +type count = { + totalUsers?: string; +}; +type FilterByDate = { + startDate?: string; + endDate?: string; +}; +type LenderCount = { + totalLenders?: string; +}; +type LenderSchema = { + id?: string; + name?: string; + active?: boolean; + createdAt?: string; + updatedAt?: string; + deletedAt?: string; +}; +type TotalUsersPerLender = { + filters: Filters[]; + page: PageResponse; + lenderList: TotalUsersPerLenderData[]; +}; +type TotalUsersPerLenderData = { + id?: string; + name?: string; + active?: boolean; + createdAt?: string; + updatedAt?: string; + deletedAt?: string; + totalUsers?: string; +}; +type TotalUserByLender = { + name?: string; + count?: string; +}; +type UsersByLender = { + firstName?: string; + lastName?: string; + mobile?: string; + email?: string; + name?: string; +}; +type ErrorResponse = { + message?: string; + info?: string; + code?: string; + requestId?: string; + meta?: any; +}; +type EditProfileRequest = { + firstName?: string; + lastName?: string; + countryCode?: string; + mobile?: string; + email?: string; + gender?: string; + dob?: string; + registrationToken?: string; +}; +type VerifyOtpRequest = { + requestId: string; + otp: string; + captchaCode?: string; + androidHash?: string; + referralCode?: string; + onboardingToken?: string; +}; +type SendMobileOtpRequest = { + countryCode: string; + mobile: string; + captchaCode?: string; + androidHash?: string; + force?: string; +}; +type ReSendMobileOtpRequest = { + captchaCode?: string; + token: string; + androidHash?: string; +}; +type SendOtpRequest = { + countryCode?: string; + captchaCode?: string; + mobile?: string; +}; +type ApplicationUser = { + user?: UserSchema; +}; +type SendOtpResponse = { + resendTimer?: number; + resendToken?: string; + success?: boolean; + requestId?: string; + message?: string; + mobile?: string; + countryCode?: string; + email?: string; + resendEmailToken?: string; + registerToken?: string; + verifyEmailOtp?: boolean; + verifyMobileOtp?: boolean; + userExists?: boolean; +}; +type EmailUpdate = { + email?: string; +}; +type UserUpdateRequest = { + firstName?: any; + lastName?: any; + countryCode: string; + mobile: string; + email?: any; + gender?: any; + dob?: any; + active?: boolean; + profilePictureUrl?: any; + isEmailVerified?: boolean; +}; +type LenderUpdateRequest = { + id: string; + name?: string; + active?: boolean; +}; +type ProfileEditSuccess = { + user?: UserSchema; + registerToken?: string; + resendEmailToken?: string; + userExists?: boolean; + verifyEmailLink?: boolean; + verifyEmailOtp?: boolean; + verifyMobileOtp?: boolean; + email?: string; + requestId?: string; + countryCode?: string; + mobile?: string; + success?: boolean; + message?: string; + resendTimer?: number; + resendToken?: string; +}; +type LoginSuccess = { + user?: UserSchema; + requestId?: string; + registerToken?: string; +}; +type VerifyOtpSuccess = { + user?: UserSchema; + userExists?: boolean; + isNew?: boolean; +}; +type LogoutSuccess = { + logout?: boolean; +}; +type OtpSuccess = { + resendTimer?: number; + resendToken?: string; + registerToken?: string; + success?: boolean; + requestId?: string; + message?: string; + mobile?: string; + isNew?: boolean; + countryCode?: string; + otpLength?: number; +}; +type SessionListSuccess = { + sessions?: string[]; +}; +type VerifyMobileOTPSuccess = { + user?: UserSchema; +}; +type Location = { + latitude?: number; + longitude?: number; +}; +type OrderAddress = { + line1?: string; + line2?: string; + city?: string; + state?: string; + country?: string; + pincode?: string; + type?: string; + geoLocation?: Location; +}; +type CustomerObject = { + countryCode?: string; + mobile: string; + uid: string; + email?: string; + firstname?: string; + middleName?: string; + lastName?: string; +}; +type Order = { + valueInPaise: number; + uid: string; + emiTenure?: number; + items?: Items[]; + shippingAddress?: OrderAddress; + billingAddress?: OrderAddress; +}; +type OrderUid = { + valueInPaise?: number; + uid: string; + items?: Items[]; + shippingAddress?: OrderAddress; + billingAddress?: OrderAddress; +}; +type CustomerMeta = { + ip: string; + appVersion: string; + appIdentifier?: string; + customerUserAgent?: string; + deviceId: string; +}; +type Device = { + ipAddress: string; + userAgent: string; + latitude?: number; + longitude?: number; +}; +type VerifyCustomer = { + customer: CustomerObject; + order: Order; + device: Device; + meta?: any; + fetchLimitOptions?: boolean; +}; +type CreateTransaction = { + autoCapture?: boolean; + redirectUrl: string; + customer: CustomerObject; + order: Order; + device: Device; + meta?: any; +}; +type ResendPaymentRequest = { + autoCapture?: boolean; + redirectUrl?: string; + customer: CustomerObject; + order: OrderUid; +}; +type VerifyCustomerSuccess = { + status?: string; + userStatus?: string; + message?: string; + __headers?: any; +}; +type CreateTransactionSuccess = { + chargeToken?: string; + redirectUrl?: string; + message: string; + transactionId?: string; + status?: string; + userStatus?: string; + __headers?: any; +}; +type SupportDocuments = { + fileName?: string; + fileUrl?: string; +}; +type CreateTicketResponse = { + serviceRequestId?: string; + message?: string; +}; +type CreateTicket = { + category: string; + transactionId?: string; + description: string; + documents?: SupportDocuments[]; +}; +type InitiateTransactions = { + token: string; +}; +type GetMobileFromToken = { + token: string; +}; +type GetDataFromToken = { + token: string; +}; +type MerchantDetails = { + name?: string; + website?: string; + logo?: string; +}; +type InitiateTransactionsSuccess = { + chargeToken: string; + session?: string; + expiry?: string; + hash?: string; + order?: Order; + isAsp?: boolean; + merchant?: MerchantDetails; +}; +type RetrieveMobileFromToken = { + countryCode: string; + mobile: string; +}; +type CreateDashboardTemplateRequest = { + name: string; + version: string; + isDefault?: boolean; + sections: TemplateSections[]; +}; +type TemplateSections = { + sequence: number; + isAvailableInMobile: boolean; + isAvailableInDesktop: boolean; + component: TemplateComponent; +}; +type TemplateComponent = { + name: string; + description: string; + isAvailableInDesktop?: boolean; + partnerApplications?: PartnerApplications[]; + banners?: Banners[]; + tips?: Tips[]; +}; +type PartnerApplications = { + name: string; + description?: string; + urlPath?: string; + urlTarget?: string; + imageUrl: string; + sequence?: number; +}; +type Offerings = { + name: string; + description?: string; + urlPath?: string; + urlTarget?: string; + imageUrl: string; + sequence?: number; + gradient: string[]; +}; +type Banners = { + imageUrl: string; + action?: ActionSchema; +}; +type Tips = { + name?: string; + description?: string; + urlPath: string; + urlTarget?: string; + imageUrl?: string; + sequence?: number; +}; +type DashboardTemplateResponse = { + id?: string; + name?: string; + version?: string; + active?: boolean; + sections: SectionSchema[]; +}; +type SectionSchema = { + type: string; + title?: string; + description?: string; + partners?: PartnerApplicationsResponse[]; + banners?: BannersResponse[]; + tips?: TipsResponse[]; +}; +type PartnerApplicationsResponse = { + id?: string; + name: string; + description?: string; + action: ActionSchema; + imageUrl: string; +}; +type OfferingsResponse = { + id?: string; + name: string; + description?: string; + action: ActionSchema; + imageUrl: string; + gradient: string[]; +}; +type BannersResponse = { + action?: ActionSchema; + imageUrl: string; +}; +type TipsSection = { + tips?: TipsResponse[]; + categories?: TipsCategories[]; + action?: ActionSchema; +}; +type TipsResponse = { + name?: string; + category?: string; + description?: string; + action: ActionSchema; + imageUrl?: string; +}; +type TipsCategories = { + id: string; + title: string; +}; +type ActionSchema = { + type?: string; + page?: PageSchema; + popup?: PageSchema; +}; +type UpdateDashboardTemplateRequest = { + id: string; + name?: string; + version?: string; + isDefault?: boolean; + active?: boolean; + sections?: UpdateTemplateSections[]; +}; +type UpdateTemplateSections = { + id: string; + sequence?: number; + isAvailableInMobile?: boolean; + isAvailableInDesktop?: boolean; + active?: boolean; + component?: UpdateTemplateComponent; +}; +type UpdateTemplateComponent = { + id: string; + name?: string; + description?: string; + isAvailableInDesktop?: boolean; + active?: boolean; + partners?: UpdatePartnerApplications[]; + banners?: UpdateBanners[]; + tips?: UpdateTips[]; +}; +type UpdatePartnerApplications = { + id: string; + name?: string; + description?: string; + action?: any; + imageUrl?: string; + sequence?: number; + active?: boolean; +}; +type UpdateOfferings = { + id: string; + name?: string; + description?: string; + urlPath?: string; + urlTarget?: string; + imageUrl?: string; + sequence?: number; + gradient?: string[]; +}; +type UpdateBanners = { + id: string; + imageUrl?: string; + action?: any; + sequence?: number; + active?: boolean; +}; +type UpdateTips = { + id: string; + name?: string; + description?: string; + imageUrl?: string; + action?: any; + sequence?: number; + active?: boolean; +}; +type NavigationsMobileResponse = { + tabs: TabsSchema[]; + profileSections: ProfileSectionSchema[]; +}; +type TabsSchema = { + title: string; + page: PageSchema; + icon: string; + activeIcon: string; + active: boolean; +}; +type PageSchema = { + link?: string; + type?: any; + params?: any; + query?: any; +}; +type ProfileSectionSchema = { + title: string; + navigations: ProfileNavigationSchema[]; + active: boolean; +}; +type ProfileNavigationSchema = { + title: string; + description?: string; + icon: string; + type: string; + action?: ActionSchema; + active?: boolean; +}; +type SendPNSRegisterRequest = { + deviceId: string; + deviceType: string; + token: string; +}; +type PNSRegisterResponse = { + status?: boolean; + message?: string; +}; +type FaqResponse = { + categories?: CategorySchema[]; +}; +type CategorySchema = { + uid: string; + title?: string; + description?: string; + logo?: string; + questions?: QuestionSchema[]; +}; +type QuestionSchema = { + uid: string; + title?: string; + description?: string; + displayOrder?: number; + canRaiseRequest?: boolean; +}; +type SupportCategories = { + kind?: string; + display?: string; +}; +type SupportCategoriesResponse = { + categories?: SupportCategories[]; +}; +type SanctionLetterResponse = { + sanctionedLetterFileUrl: string; +}; +type KfsDocumentResponse = { + kfsFileUrl: string; +}; +type UserWhiteListedResponse = { + status?: string; +}; +type UserConsentRequest = { + consents?: string[]; +}; +type Consents = { + type?: string; + text?: string; +}; +type UserConsentRequestV2 = { + consents?: Consents[]; +}; +type UserConsentResponse = { + success?: boolean; +}; +type UserKycSteps = { + id?: string; + index?: string; + name?: string; + rules?: any; + active?: boolean; + createdAt?: string; + updatedAt?: string; + deletedAt?: string; +}; +type CreateKycStepRequest = { + name: string; + index: string; + active: boolean; + rules?: any; +}; +type RemoveKycStepRequest = { + name?: string; + index: string; + active?: boolean; + rules?: any; +}; +type KycUpdateMessage = { + message?: string; +}; +type MobileFromLinkingRequest = { + token: string; +}; +type MobileFromLinkingResponse = { + countryCode: string; + mobile: string; +}; +type SessionFromLinkingRequest = { + token: string; +}; +type SessionFromLinkingResponse = { + session: string; + expiry: number; +}; +type LinkAccount = { + customer: CustomerObject; + redirectUrl: string; + device: Device; +}; +type LinkAccountSuccess = { + redirectUrl?: string; + statusCode?: number; + status?: string; + message?: string; + errorCode?: string; + __headers?: any; +}; +type UnlinkAccount = { + customer: CustomerObject; + device: Device; +}; +type UnlinkAccountSuccess = { + status: string; + message: string; + statusCode: number; + userStatus?: string; + errorCode?: string; + __headers?: any; +}; +type Refund = { + fingerprint?: string; + customer: CustomerObject; + refundItems?: Items[]; + orderId: string; + refundId: string; + refundAmount: number; +}; +type Translation = { + content?: any; +}; +type FilterKeys = { + display?: string; + name?: string; + kind?: string; +}; +type FilterValues = { + display?: string; + isSelected?: boolean; + value?: string; +}; +type Filters = { + key?: FilterKeys; + values?: FilterValues[]; +}; +type PageResponse = { + type: string; + current: number; + hasPrevious: boolean; + hasNext: boolean; + size: number; + itemTotal: number; +}; +type UserResponse = { + filters: Filters[]; + page: PageResponse; + listOfUsers: UserSchema[]; +}; +type UserDetailRequest = { + id: string; +}; +type UserConsents = { + id?: string; + userId?: string; + ipAddress?: string; + text?: string; + createdAt?: string; + updatedAt?: string; + deletedAt?: string; +}; +type CreditScoreSchema = { + id?: string; + userId?: string; + cibil?: number; + finbox?: string; + systemAwarded?: string; + isActive?: boolean; + deletedAt?: string; + updatedAt?: string; + createdAt?: string; +}; +type CreditLimitSchema = { + id?: string; + userId?: string; + creditLimit?: string; + createdAt?: string; + updatedAt?: string; + deletedAt?: string; +}; +type Screen = { + screenType?: string; + name?: string; + link?: string; +}; +type UserStateSchema = { + screen?: Screen; +}; +type GetAccessTokenResponse = { + success?: boolean; + accessToken?: string; + refreshToken?: string; + tokenExpireAt?: string; + tokenExpiryIn?: string; + refreshTokenExpiryAt?: string; + refreshTokenExpiryIn?: string; + scope?: string[]; + __headers?: any; +}; +type RefreshTokenResponse = { + success?: boolean; + accessToken?: string; + tokenExpireAt?: string; + tokenExpiryIn?: string; + __headers?: any; +}; +type RefreshTokenRequest = { + token: string; +}; +type Items = { + category?: string; + sku?: string; + rate?: number; + quantity?: number; +}; +type RefundStatusList = { + id?: string; + orderItems?: Items[]; + amount?: number; + status?: string; + createdAt?: string; + processedDate?: string; +}; +type RefundStatus = { + orderId?: string; + userId?: string; + merchantId?: string; + lenderId?: string; + loanAccountNumber?: string; + refund?: RefundStatusList[]; + __headers?: any; +}; +type CustomerMetricsPivots = { + date?: string; + sum?: number; +}; +type CustomerMetricsSubResponse = { + total?: string; + pivots?: CustomerMetricsPivots[]; + title?: string; + description?: string; + valueFormat?: string; + logo?: string; +}; +type CustomerMetricsAnalytics = { + totalCustomers?: CustomerMetricsSubResponse; + source?: CustomerMetricsSubResponse; +}; +type CustomerMetricsFilters = { + type: string; + display: string; + value: string[]; + isSelected?: boolean; + isActive: boolean; +}; +type CustomerMetrics = { + metrics?: CustomerMetricsAnalytics; + filters?: CustomerMetricsFilters[]; + sort?: CustomerMetricsFilters[]; +}; +type CustomerMetricsResponse = { + data?: CustomerMetrics; +}; +type CustomerMetricsRequest = { + filters?: CustomerMetricsFilters[]; + sort?: CustomerMetricsFilters[]; + merchantId?: string; + lenderId?: string; + pivotPoints?: number; +}; +type SourceAnalyticsRequest = { + filters?: CustomerMetricsFilters[]; +}; +type LenderResponse = { + slug?: string; + name?: string; + logo?: string; +}; +type CreditLimitObject = { + availableLimit?: number; + possibleLimit?: number; + lender?: LenderResponse; +}; +type BusinessDetails = { + category: string; + shopName?: string; + legalName: string; + address?: string; + type?: string; + pincode?: string; +}; +type DocumentItems = { + number?: string; + category?: string; + type?: string; + name?: string; + issuedOn?: string; + issuedAt?: string; + issuedBy?: string; + expiryOn?: string; +}; +type VintageItems = { + month: number; + year: number; + totalTransactions: number; + totalTransactionAmount: number; + totalCancellations?: number; + totalCancellationAmount?: number; +}; +type EligibilitySuccess = { + status?: string; + message?: string; + redirectUrl?: string; + callbackUrl?: string; + creditLimits?: CreditLimitObject[]; + __headers?: any; +}; +type CheckEligibilityRequest = { + customer: CustomerObject; + order?: Order; + businessDetails?: BusinessDetails; + documents?: DocumentItems[]; + device: Device; + vintage?: VintageItems[]; + meta?: any; + fetchLimitOptions?: boolean; +}; +type GetSchemesSuccess = { + userId?: string; + lenders: undefined[]; + __headers?: any; +}; +type DisbursalRequest = { + fingerprint?: string; + chargeToken: string; + loanTypeId?: number; + emiTenure?: number; + isDownpaymentRequired?: boolean; + downpaymentAmount?: number; + loanAmount?: number; +}; +type WorkflowUser = { + mobile?: string; +}; +type EligiblePlansRequest = { + chargeToken?: string; +}; +type EligiblePlans = { + name?: string; + displayName?: string; + description?: string; + brokenInterest?: number; + noOfEmi?: number; + emiAmount?: number; + processingFee?: number; + installmentInterestRate?: number; +}; +type EligiblePlansResponse = { + eligiblePlans?: EligiblePlans[]; + __headers?: any; +}; +type DisbursalResponse = { + transactionId?: string; + status?: string; + message?: string; + __headers?: any; +}; +type OrderStatus = { + orderId: string; + transactionId?: string; + status: string; + message: string; + __headers?: any; +}; +type DisbursalStatusRequest = { + fingerprint?: string; + transactionId: string; +}; +type Transactions = { + id: string; + userId: string; + partnerId?: string; + partner?: string; + partnerLogo?: string; + status: string; + type?: string; + remark?: string; + amount: number; + loanAccountNumber?: string; + kfs?: string; + utr?: string; + sanctionLetter?: string; + orderId?: string; + refundId?: string; + createdAt: string; + lenderId?: string; + lenderName?: string; + lenderLogo?: string; + loanType?: string; + repaymentTransactionId?: string; + nextDueDate?: string; + paidPercent?: number; + lenderDetail?: LenderDetail; + emis?: Emi[]; +}; +type LenderDetail = { + id?: string; + name?: string; + imageUrl?: string; + slug?: string; + active?: boolean; + b2b?: boolean; + b2c?: boolean; + theme?: Theme; + createdAt?: string; + updatedAt?: string; + deletedAt?: string; +}; +type TransactionResponse = { + filters: Filters[]; + page: PageResponse; + transactions: Transactions[]; +}; +type MerchantTransactions = { + outstandingAmount?: string; +}; +type MerchantTransactionSummary = { + merchantOutstandingSummary?: MerchantTransactions; +}; +type GetReconciliationFileResponse = { + files: ReconFile[]; +}; +type ReconFile = { + base64: string; + name: string; +}; +type UploadReconciliationFileRequest = { + base64File: string; + format?: string; + lenderId?: string; +}; +type UploadReconciliationFileResponse = { + success?: boolean; +}; +type TransactionCount = { + totalTransactions?: string; +}; +type RefundCount = { + refundTransactions?: string; +}; +type OrganizationTransactionsCount = { + count?: number; +}; +type OrganizationTransactionsSum = { + sum?: number; +}; +type UniqueCustomersInOrg = { + count?: number; +}; +type TransactionAmount = { + totalTransactionAmount?: string; +}; +type SchemaForOneDayTotal = { + orgId?: string; + createdAt?: string; + count?: number; + sum?: string; + refund?: string; + difference?: string; +}; +type SumofOneDayTransactions = { + dayTotal?: SchemaForOneDayTotal[]; +}; +type AverageTransaction = { + average?: number; +}; +type AllTransactionsResponse = { + id?: string; + userId?: string; + partnerId?: string; + status?: string; + type?: string; + remark?: string; + amount?: number; + loanAccountNumber?: string; + createdAt?: string; +}; +type TotalRefund = { + totalRefund?: string; +}; +type TotalRepayment = { + totalRepayment?: string; +}; +type TotalOverDue = { + totalDue?: string; +}; +type TotalLoansDisbursed = { + totalLoansDisbursed?: string; +}; +type OrganizationTransactionResponse = { + filters: TrFilters[]; + page: TrPageResponse; + transactions: OrgTransactions[]; +}; +type TrFilters = { + key?: TrFilterKeys; + values?: TrFilterValues[]; +}; +type TrPageResponse = { + type: string; + current: number; + hasPrevious: boolean; + hasNext: boolean; + size: number; + itemTotal: number; +}; +type OrgTransactions = { + id: string; + userId: string; + userName?: string; + partnerId?: string; + partner?: string; + partnerLogo?: string; + status: string; + type?: string; + remark?: string; + amount: number; + orderId?: string; + loanAccountNumber?: string; + kfs?: string; + sanctionLetter?: string; + createdAt: string; +}; +type TrFilterKeys = { + display?: string; + name?: string; + kind?: string; +}; +type TrFilterValues = { + display?: string; + isSelected?: boolean; + value?: string; +}; +type KfsRequest = { + loanTypeId?: number; + chargeToken?: string; +}; +type KfsResponse = { + kfsTable?: string; +}; +type LenderTransactionState = { + id?: string; + stepIndex?: number; + lenderId?: string; + workflowId?: string; + workflowName?: string; + parentStateId?: string; + workflowUrl?: string; + isInternal?: boolean; + active?: boolean; + ttl?: number; + name?: string; + type?: string; + inputData?: any; + createdAt?: string; + updatedAt?: string; + deletedAt?: string; +}; +type TransactionStateResponse = { + transactionState?: LenderTransactionState[]; +}; +type Theme = { + logoUrl?: string; + iconUrl?: string; + landscapeBgUrl?: string; + portraitBgUrl?: string; + shortName?: string; +}; +type Emi = { + id?: string; + userId?: string; + installmentno?: number; + loanAccountNumber?: string; + amount?: number; + dueDate?: string; + referenceTransactionId?: string; + remark?: string; + createdAt?: string; + updatedAt?: string; + entityId?: string; + paid?: boolean; + overdue?: boolean; + repaymentDate?: string; +}; +type MetricPivots = { + date?: string; + sum?: number; +}; +type TransactionMetricSubResponse = { + total?: string; + pivots?: MetricPivots[]; + title?: string; + description?: string; + valueFormat?: string; + logo?: string; +}; +type TransactionMetrics = { + totalDisbursement?: TransactionMetricSubResponse; + totalOverdue?: TransactionMetricSubResponse; + totalRepayment?: TransactionMetricSubResponse; +}; +type LenderCustomerTransactionMetricsFilters = { + type: string; + display: string; + value: string[]; + isSelected?: boolean; + isActive: boolean; +}; +type LenderCustomerTransactionMetrics = { + metrics?: TransactionMetrics; + filters?: LenderCustomerTransactionMetricsFilters[]; + sort?: LenderCustomerTransactionMetricsFilters[]; +}; +type LenderCustomerTransactionMetricsResponse = { + data?: any; +}; +type LenderCustomerTransactionMetricsRequest = { + filters?: LenderCustomerTransactionMetricsFilters[]; + sort?: LenderCustomerTransactionMetricsFilters[]; + startDate?: string; + endDate?: string; + merchantId?: string; + lenderId?: string; + pivotPoints?: number; +}; +type LenderTheme = { + logoUrl: string; + iconUrl: string; + landscapeBgUrl: string; + portraitBgUrl: string; + shortName: string; +}; +type Lender = { + id?: string; + name?: string; + active?: boolean; + imageUrl?: string; + slug?: string; + theme?: LenderTheme; + b2b?: boolean; + b2c?: boolean; + merchantConfigSchema?: string; + createdAt?: string; + updatedAt?: string; + approvedLimit?: number; + deletedAt?: string; + meta?: any; + metaSchema?: any; +}; +type UserLender = { + id: string; + userId: string; + lenderId: string; + active?: boolean; + status: string; + createdAt: string; + updatedAt: string; + deletedAt?: string; + approvedLimit: number; + entityId?: string; + entityMapId?: string; +}; +type SourceCreditReport = { + id: string; + userId: string; + pan: string; + name: string; + mobile: string; + bureau: string; + score: string; + report: string; + createdAt?: string; +}; +type Document = { + id: string; + userId: string; + imageUrl: string; + number: string; + detail: any; + valid: boolean; + createdAt: string; + updatedAt: string; + deletedAt?: string; + entityId?: string; +}; +type UserKycDetail = { + id: string; + userId: string; + status: string; + type: string; + remark: string; + profileType: string; + active: boolean; + expiryDate?: string; + createdAt?: string; + updatedAt?: string; + deletedAt?: string; + lenderId: string; + lender?: Lender; + entityMapId?: string; + entityId?: string; +}; +type Form = { + id?: string; + name?: string; + title?: string; + subtitle?: string; + action?: string; + form?: any; + uiSchema?: any; + workflowId?: string; +}; +type LenderKycStepMap = { + id?: string; + step: string; + stepIndex: number; + lenderId: string; + active: boolean; + rules: any; + profileType: string; + createdAt?: string; + updatedAt?: string; + deletedAt?: string; + name: string; + description: string; + iconUrl: string; + isInteractive: boolean; + formId?: string; + merchantId?: string; + form: Form; + docSchema: any; +}; +type UserKycLenderStepMap = { + id: string; + userId: string; + lenderKycStepMapId: string; + userKycDetailId: string; + lenderId: string; + ruleState: any; + active: boolean; + status: string; + documentId?: string; + createdAt: string; + updatedAt: string; + deletedAt?: string; + lenderKycStepMap?: LenderKycStepMap; + entityMapId?: string; + entityId?: string; + updatedBy?: string; +}; +type ProofOfIdentity = { + dob: string; + hashedEmail: string; + gender: string; + hashedMobileNumber: string; + name: string; +}; +type ProofOfAddress = { + careOf: string; + country: string; + district: string; + house: string; + landmark: string; + locality: string; + pincode: string; + postOffice: string; + state: string; + street: string; + subDistrict: string; + vtc: string; +}; +type EAadhaarData = { + aadhaarReferenceNumber: string; + aadhaarUid: string; + image: string; + proofOfIdentity: ProofOfIdentity; + proofOfAddress: ProofOfAddress; + xml?: string; + pdf?: string; + address?: string; +}; +type Consent = { + text: string; + type: string; +}; +type ValidatePanRequest = { + pan: string; + consents: Consent[]; +}; +type BankDetails = { + accountType: string; + bankName: string; + ifsc: string; + accountNumber: string; + accountHolderName: string; +}; +type DocumentData = { + selfie?: string; + video?: string; + digilockerCode?: string; + bankDetails?: BankDetails; +}; +type ConfirmPanRequest = { + pan: string; + name: string; + entity?: string; + merchantId?: string; +}; +type LivelinessDetails = { + selfie: string; + video: string; +}; +type UploadDocumentRequest = { + user?: any; + documentData?: any; + lenderSlug: string; + kycStep: string; + merchantId?: string; + entityMapId?: string; +}; +type UploadDocumentRequestV1 = { + kycStep: string; + entityMapId: string; + documentData: any; +}; +type UploadDocumentRequestV3 = { + kycStep: string; + entityMapId: string; + documentData: any; +}; +type AadhaarRequest = { + digilockerCode?: string; +}; +type UploadAadhaarRequest = { + documentData?: AadhaarRequest; + user?: any; + lenderSlug: string; + kycStep: string; + merchantId?: string; + entityMapId?: string; +}; +type UploadLivelinessRequest = { + documentData?: LivelinessDetails; + user?: any; + lenderSlug: string; + kycStep: string; + merchantId?: string; + entityMapId?: string; +}; +type UploadAadhaarRequestV1 = { + documentData: AadhaarRequest; + kycStep: string; + entityMapId: string; +}; +type UploadLivelinessRequestV1 = { + documentData: LivelinessDetails; + kycStep: string; + entityMapId: string; +}; +type UploadAadhaarRequestV2 = { + documentData?: AadhaarRequest; + user?: any; + lenderSlug: string; + kycStep: string; + merchantId?: string; + entityMapId?: string; +}; +type UploadLivelinessRequestV2 = { + documentData?: LivelinessDetails; + user?: any; + lenderSlug: string; + kycStep: string; + merchantId?: string; + entityMapId?: string; +}; +type UploadAadhaarRequestV3 = { + documentData: AadhaarRequest; + kycStep: string; + entityMapId: string; +}; +type UploadLivelinessRequestV3 = { + documentData: LivelinessDetails; + kycStep: string; + entityMapId: string; +}; +type UploadBankDetailsRequest = { + documentData?: BankDetails; + user?: any; + lenderSlug: string; + kycStep: string; + merchantId?: string; + entityMapId?: string; +}; +type InitiateKycRequest = { + kycType: string; + kycId?: string; + merchantId?: string; +}; +type InitiateKycRequestV1 = { + entityMapId: string; + kycType: string; + kycId?: string; + merchantId?: string; +}; +type LenderOnboardRequest = { + ack?: string; + data: any; + entityMapId?: string; + merchantId?: string; +}; +type UpdateLenderStatusRequest = { + status: string; + payload: any; + data: any; + action: boolean; +}; +type UpdateProfileRequest = { + firstName?: string; + lastName?: string; + gender?: string; + dob?: string; + userId: string; + isOnboarded?: boolean; + address?: string; +}; +type UpdateEntityRequest = { + name?: string; + gender?: string; + dob?: string; + isDefault?: boolean; + address?: ProofOfAddress; +}; +type CreateKycStepsRequest = { + data: any; +}; +type CreateLenderPgConfigRequest = { + mid: string; + clientId: string; + secret: string; + active: boolean; + pgId: string; + lenderId: string; +}; +type CreateLenderStateRequest = { + data: any; +}; +type UpdateLenderRequest = { + data: any; + lenderId: string; +}; +type OtherPolicyFilters = { + orderBy?: any[]; +}; +type GetPolicyFilters = { + policyType?: string; + lenderIds?: any[]; + merchantIds?: any[]; + orderBy?: any[]; +}; +type GetPolicyFilters2 = { + breType?: string; + lenderId?: any[]; + merchantId?: any[]; + loanType?: string; + journeyType?: string; + subType?: string; +}; +type MerchantConfigRequest = { + id: string; + merchantConfigSchema: any; +}; +type PanDetails = { + name: string; + idNumber: string; +}; +type AvailableLendersRequest = { + chargeToken: string; +}; +type InitialData = { + userId: string; + entityId: string; +}; +type ExecutePolicyRequest = { + policyFilters?: GetPolicyFilters; + initialData: InitialData; +}; +type ExecutePolicyRequest2 = { + policyFilters?: GetPolicyFilters2; + initialData: InitialData; +}; +type RegisterGstRequest = { + gstTin: string; +}; +type PopulateFormRequest = { + form: any; + lenderId?: string; + merchantId?: string; +}; +type ValidateFormFieldRequest = { + workflowName: string; + userId?: string; + entityId?: string; + entityMapId?: string; + lenderId?: string; + merchantId?: string; + fields: any; +}; +type MerchantMetricFilter = { + type: string; + display: string; + value: any[]; + isSelected?: boolean; + isActive?: boolean; +}; +type LenderCustomerMetricsRequest = { + sort?: MerchantMetricFilter[]; + filters?: MerchantMetricFilter[]; + merchantId?: string; + lenderId?: string; + pivotPoints?: number; +}; +type StonewallCustomer = { + mobile?: string; + uid?: string; +}; +type GetLimitRequest = { + lenderSlugs?: any[]; + onlyDefaultLender?: boolean; + customer: StonewallCustomer; +}; +type DocumentObject = { + id?: string; + userId?: string; + name?: string; + imageUrl?: string; + number: string; + detail: any; + valid?: boolean; + entityId?: string; +}; +type ManualKycRequest = { + remark: any; + status: string; + stepId: string; + entityMapId: string; + documentData?: DocumentObject; +}; +type RetriggerLenderOnboardRequest = { + stepId: string; + data: any; +}; +type EntityMapDto = { + id: string; + merchantId?: string; + status?: string; + lenderId: string; + limit?: number; + creditType?: string; + userId: string; + entityId: string; +}; +type EntityDto = { + id: string; + type?: string; + address?: string; + name?: string; + gender?: string; + dob?: string; + userId: string; +}; +type FindDocResponse = { + status: string; + info: string; + number: string; + details?: any; + name?: string; +}; +type LenderKycStatus = { + status: string; + lenderId?: string; + lenderName?: string; + kycType?: string; +}; +type StateResponeDto = { + step: UserKycLenderStepMap; + isStepCompleted: boolean; +}; +type KycStateMachineDto = { + kycResult: UserKycDetail; + action?: UserKycLenderStepMap; +}; +type InitiateKycDto = { + kycType: string; + lenderId: string; + user: any; + kycId?: string; + entityRelation?: EntityMapDto; +}; +type LenderOnboardDto = { + lender?: Lender; + user: any; + userLenderDetail?: UserLender; + payload: LenderOnboardRequest; + entityRelation?: EntityMapDto; + ipAddress: string; + overrideTtl?: boolean; +}; +type StepDetails = { + name?: string; + description?: string; + iconUrl?: string; + status: string; + step: string; + order: number; +}; +type OnboardStatusDto = { + onboardStep: string; + onboardingId: string; + status: string; + action: string; + actionStatus: string; + lender: Lender; + navigation?: string; + approvedLimit: number; + proposedLimit: number; + actionData?: any; + steps?: StepDetails[]; + entityId: string; + entityMapId: string; + actionIsForm: boolean; + actionForm?: Form; +}; +type LenderFilters = { + includeStatus?: any[]; + excludeStatus?: any[]; + allowDisabledLender?: any; +}; +type Policy = { + id?: string; + name?: string; + url?: string; + data?: any; + version?: string; + active?: boolean; + type?: any; + index?: number; + lenderId?: string; + merchantId?: string; + workflowId?: string; + schemaRef?: any[]; + masterVariableRef?: any[]; + customVariable?: any; + subType?: string; + createdAt?: any; + updatedAt?: any; + deletedAt?: any; +}; +type GetKycDocsResponse = { + documents: FindDocResponse[]; +}; +type OrganizationLogosObject = { + id: string; + name: string; + logo: string; + active: boolean; +}; +type MetricSubTypes = { + date: string; + count?: string; + sum?: string; +}; +type MetricTypes = { + pivots: MetricSubTypes[]; + total?: string; + description: string; + title: string; + valueFormat: string; + logo: string; +}; +type BreApprovedUsersResponse = { + data: MetricTypes; +}; +type Metrics = { + lenderApprovedUsers: MetricTypes; + breApprovedUsers: MetricTypes; + totalCreditLine: MetricTypes; +}; +type MetricData = { + metrics: Metrics; + filters: MerchantMetricFilter[]; + sort: MerchantMetricFilter[]; +}; +type ApprovedLenders = { + status: string; + lenders: BreOutput[]; +}; +type BreResultStatus = { + status: string; + approvedLenders?: BreOutput[]; +}; +type GetAllUserLendersByEnityId = { + entityId: string; + entityMapId: string; + userId: string; + status: string; + lender: Lender; + partnerId?: string; +}; +type LenderState = { + id?: string; + name: string; + lenderId: string; + index: number; + workflowName: string; + workflowUrl?: string; + active: boolean; + createdAt?: string; + updatedAt?: string; + deletedAt?: string; + lender?: Lender; + parentStateId?: string; + ttl: number; + displayName?: string; + description?: string; + iconUrl?: string; + isInteractive: boolean; + schema?: any; +}; +type UserLenderState = { + id: string; + lenderStateId: string; + lenderId: string; + userId: string; + status: string; + userLenderId: string; + remark: string; + active: boolean; + lenderState?: LenderState; + data?: any; + createdAt?: string; + updatedAt?: string; + deletedAt?: string; + entityId?: string; + entityMapId?: string; + updatedBy?: string; +}; +type LenderConfig = { + id?: string; + baseUrl: string; + accessToken?: string; + secret?: string; + data: any; + lenderId: string; + active?: boolean; + createdAt?: string; + updatedAt?: string; + deletedAt?: string; +}; +type Pg = { + id: string; + name: string; + active: boolean; +}; +type LenderPgConfig = { + id?: string; + mid: string; + clientId: string; + secret: string; + lenderId: string; + pgId: string; + active: boolean; +}; +type FileUploadResponse = { + fileId: string; + name: string; + path: string; + format: string; + size: number; + access: string; + tags: string; + metadata: string; + url: string; + thumbnail: string; +}; +type PresignedUrl = { + url: string; + fields: any; +}; +type PresignedUrlV2 = { + url: string; + fields: any; +}; +type LenderDocument = { + id?: string; + lenderId?: string; + type?: string; + document?: any; + active?: boolean; + createdAt?: string; + updatedAt?: string; + deletedAt?: string; +}; +type KycStatusResponse = { + isKycInitiated: boolean; + userId: string; + kycStatuses: LenderKycStatus[]; +}; +type WorkflowResponse = { + data?: any; +}; +type InitiateKycResponse = { + kycResult: UserKycDetail; + action: any; +}; +type UploadDocResponse = { + status: string; + data?: any; + remark?: string; + kycResult: UserKycDetail; + action: any; +}; +type LenderOnboardResponse = { + result: UserLender; + action: UserLenderState; + data: any; +}; +type OnboardingStatusResponse = { + onboardStatuses: OnboardStatusDto[]; +}; +type SignedUrlResponse = { + signedUrl: PresignedUrl; + fileUrl: string; +}; +type SignedUrlV2Response = { + signedUrl: PresignedUrlV2; + fileUrl: string; +}; +type PresignedUrlV3 = { + signedUrl: string; + provider: any; +}; +type SignedUrlV3Response = { + signedDetails: PresignedUrlV3; + fileUrl: string; +}; +type DigilockerLinkResponse = { + authorizationUrl: string; +}; +type GetDocumentsResponse = { + documents: FindDocResponse[]; +}; +type ApprovedLendersTransaction = { + name: string; + slug: string; + imageUrl: string; + status: string; + active: boolean; + proposedLimit: number; + createdAt: any; + updatedAt: any; + deletedAt?: any; + isDefault?: boolean; + __headers?: any; +}; +type ApprovedPossibleLenders = { + limit: number; + name: string; + slug: string; + active: boolean; + id: string; + theme?: LenderTheme; +}; +type AvailableLenders = { + approvedLenders: ApprovedPossibleLenders[]; + possibleLenders: ApprovedPossibleLenders[]; +}; +type CreditLimit = { + availableLimit: number; + approvedLimit: number; +}; +type CreditLimitResponse = { + status: string; + message: string; + action: boolean; + credit: CreditLimit; +}; +type LenderPgConfigResponse = { + id: string; + mid: string; + clientId: string; + secret: string; + lenderId: string; + pgId: string; + active: boolean; + pgName: string; + pgActive: boolean; +}; +type GetLendersResponse = { + data: Lender[]; +}; +type LenderConfigurationResponse = { + lender: Lender; + lenderPgConfig: LenderPgConfig; + lenderConfig: LenderConfig; + lenderState: LenderState[]; + lenderKycStepMap: LenderKycStepMap[]; +}; +type UpsertLenderResponse = { + data: any; +}; +type UpsertLenderConfigResponse = { + data: any; +}; +type CreateKycStepsSchema = { + data: LenderKycStepMap[]; +}; +type CreatePaymentGatewaySchema = { + data: LenderPgConfig[]; +}; +type CreateLenderStateSchema = { + data: LenderState[]; +}; +type GetAllPaymentGatewaysSchema = { + data: Pg[]; +}; +type PolicyResponse = { + policies: Policy[]; +}; +type CreditCheckBreResponse = { + newLenderAssigned: boolean; + breStatus: string; +}; +type MerchantConfigResponse = { + id: string; + merhantConfigSchema: string; +}; +type UserLenderByIdAndStatusResponse = { + id: string; + userId: string; + lenderId: string; + active?: boolean; + status: string; + createdAt: string; + updatedAt: string; + deletedAt?: string; + approvedLimit: number; + slug?: string; + theme?: LenderTheme; + name?: any; +}; +type IntgrAvailableCreditLimit = { + limit: number; + lenderName: string; + slug: string; + isDefault: boolean; + logoUrl: string; +}; +type IngtrAvailableLimit = { + available: IntgrAvailableCreditLimit[]; +}; +type IntgrCreditLimit = { + limit: IngtrAvailableLimit; + __headers?: any; +}; +type PossibleLendersInternal = { + limit: boolean; + lenderName: string; + slug: string; + isDefault: boolean; + logo: string; + lenderId: string; +}; +type PossibleLendersInternalResponse = { + lenders: PossibleLendersInternal[]; +}; +type GetTotalKycResponse = { + totalKyc: string; +}; +type GetTotalKycCompletedUsersResponse = { + totalKycCompletedUsers: string; +}; +type GetTotalPendingUsersResponse = { + totalPendingKyc: string; +}; +type GetTotalCreditProvidedResponse = { + totalCreditLimit: string; +}; +type MetaSchemaResponse = { + title: string; + name: string; + required: string[]; + type: string; + properties: any; +}; +type MetaSchema = { + metaSchema: MetaSchemaResponse; +}; +type AddMetaSchema = { + lenderSlug: string; + merchantId: string; + schema: any; +}; +type AddMetaSchemaRequest = { + merchantId: string; + schema: any; +}; +type ValidatePanResponse = { + panName: string; + isPanValid: string; + pan: string; + isProprietor: boolean; + panType: string; + errorCode?: string; + status?: string; + errorMessage?: string; +}; +type ConfirmPanResonse = { + status: string; + statusCode: string; + message: string; +}; +type LenderCountResponse = { + active: number; + inActive: number; +}; +type OnboardStepsDto = { + steps: StepDetails[]; + lender: Lender; +}; +type OnboardStepsResponse = { + stepDetails: OnboardStepsDto[]; +}; +type LenderDocumentResponse = { + data: LenderDocument; +}; +type GetUserLendersResponse = { + data: UserLender[]; +}; +type CreditReportResponse = { + data: SourceCreditReport; +}; +type KycDetailsReponse = { + data: UserKycLenderStepMap; +}; +type GetDocumentByIdResponse = { + data: Document; +}; +type GetAllFormsResponse = { + data: any; +}; +type UpsertFormResponse = { + data: any; +}; +type GstDetails = { + gstTin: string; + businessName: string; +}; +type GstDetailsResponse = { + gstDetails: GstDetails[]; +}; +type RegisterGstResponse = { + gstDocDetails: Document; + status: string; +}; +type PopulateFormResponse = { + form: any; +}; +type ValidateFormFieldResponse = { + status: string; + message: string; + data: any; +}; +type LenderCustomerMetricsResponse = { + status: string; + message: string; + data: MetricData; +}; +type ManualKycResponse = { + message: string; + step: UserKycLenderStepMap; +}; +type BreOutput = { + id: string; + userId: string; + entityId: string; + lenderId?: string; + merchantId?: string; + policyName: string; + category: string; + type: string; + output: any; + status: string; + createdAt: string; + updatedAt: string; + deletedAt: string; +}; +type CustomerKycDetailsReponse = { + data: UserKycLenderStepMap; +}; diff --git a/sdk/platform/PlatformApplicationClient.js b/sdk/platform/PlatformApplicationClient.js new file mode 100644 index 0000000..08237f9 --- /dev/null +++ b/sdk/platform/PlatformApplicationClient.js @@ -0,0 +1,2833 @@ +const {} = require("./PlatformApplicationModels"); +const PlatformAPIClient = require("./PlatformAPIClient"); +const Paginator = require("../common/Paginator"); +const { FDKClientValidationError } = require("../common/FDKError"); + +class PlatformApplicationClient { + constructor(applicationId, config) { + this.config = config; + this.companyId = config.companyId; + this.applicationId = applicationId; + } + + setExtraHeaders(header) { + if (typeof header === "object") { + this.config.extraHeaders.push(header); + } else { + throw new FDKClientValidationError("Context value should be an object"); + } + } +} + +/** + * @typedef UserSchema + * @property {string} [id] + * @property {string} [firstName] + * @property {string} [lastName] + * @property {string} [countryCode] + * @property {string} [mobile] + * @property {string} [email] + * @property {string} [gender] + * @property {string} [dob] + * @property {boolean} [active] + * @property {string} [profilePicUrl] + * @property {boolean} [isEmailVerified] + * @property {string} [createdAt] + * @property {string} [updatedAt] + * @property {string} [deletedAt] + */ + +/** + * @typedef count + * @property {string} [totalUsers] + */ + +/** + * @typedef FilterByDate + * @property {string} [startDate] + * @property {string} [endDate] + */ + +/** + * @typedef LenderCount + * @property {string} [totalLenders] + */ + +/** + * @typedef LenderSchema + * @property {string} [id] + * @property {string} [name] + * @property {boolean} [active] + * @property {string} [createdAt] + * @property {string} [updatedAt] + * @property {string} [deletedAt] + */ + +/** + * @typedef TotalUsersPerLender + * @property {Filters[]} filters + * @property {PageResponse} page + * @property {TotalUsersPerLenderData[]} lenderList + */ + +/** + * @typedef TotalUsersPerLenderData + * @property {string} [id] + * @property {string} [name] + * @property {boolean} [active] + * @property {string} [createdAt] + * @property {string} [updatedAt] + * @property {string} [deletedAt] + * @property {string} [totalUsers] + */ + +/** + * @typedef TotalUserByLender + * @property {string} [name] + * @property {string} [count] + */ + +/** + * @typedef UsersByLender + * @property {string} [firstName] + * @property {string} [lastName] + * @property {string} [mobile] + * @property {string} [email] + * @property {string} [name] + */ + +/** + * @typedef ErrorResponse + * @property {string} [message] + * @property {string} [info] + * @property {string} [code] + * @property {string} [requestId] + * @property {Object} [meta] + */ + +/** + * @typedef EditProfileRequest + * @property {string} [firstName] + * @property {string} [lastName] + * @property {string} [countryCode] + * @property {string} [mobile] + * @property {string} [email] + * @property {string} [gender] + * @property {string} [dob] + * @property {string} [registrationToken] + */ + +/** + * @typedef VerifyOtpRequest + * @property {string} requestId + * @property {string} otp + * @property {string} [captchaCode] + * @property {string} [androidHash] + * @property {string} [referralCode] + * @property {string} [onboardingToken] + */ + +/** + * @typedef SendMobileOtpRequest + * @property {string} countryCode + * @property {string} mobile + * @property {string} [captchaCode] + * @property {string} [androidHash] + * @property {string} [force] + */ + +/** + * @typedef ReSendMobileOtpRequest + * @property {string} [captchaCode] + * @property {string} token + * @property {string} [androidHash] + */ + +/** + * @typedef SendOtpRequest + * @property {string} [countryCode] + * @property {string} [captchaCode] + * @property {string} [mobile] + */ + +/** + * @typedef ApplicationUser + * @property {UserSchema} [user] + */ + +/** + * @typedef SendOtpResponse + * @property {number} [resendTimer] + * @property {string} [resendToken] + * @property {boolean} [success] + * @property {string} [requestId] + * @property {string} [message] + * @property {string} [mobile] + * @property {string} [countryCode] + * @property {string} [email] + * @property {string} [resendEmailToken] + * @property {string} [registerToken] + * @property {boolean} [verifyEmailOtp] + * @property {boolean} [verifyMobileOtp] + * @property {boolean} [userExists] + */ + +/** + * @typedef EmailUpdate + * @property {string} [email] + */ + +/** + * @typedef UserUpdateRequest + * @property {Object} [firstName] + * @property {Object} [lastName] + * @property {string} countryCode + * @property {string} mobile + * @property {Object} [email] + * @property {Object} [gender] + * @property {Object} [dob] + * @property {boolean} [active] + * @property {Object} [profilePictureUrl] + * @property {boolean} [isEmailVerified] + */ + +/** + * @typedef LenderUpdateRequest + * @property {string} id + * @property {string} [name] + * @property {boolean} [active] + */ + +/** + * @typedef ProfileEditSuccess + * @property {UserSchema} [user] + * @property {string} [registerToken] + * @property {string} [resendEmailToken] + * @property {boolean} [userExists] + * @property {boolean} [verifyEmailLink] + * @property {boolean} [verifyEmailOtp] + * @property {boolean} [verifyMobileOtp] + * @property {string} [email] + * @property {string} [requestId] + * @property {string} [countryCode] + * @property {string} [mobile] + * @property {boolean} [success] + * @property {string} [message] + * @property {number} [resendTimer] + * @property {string} [resendToken] + */ + +/** + * @typedef LoginSuccess + * @property {UserSchema} [user] + * @property {string} [requestId] + * @property {string} [registerToken] + */ + +/** + * @typedef VerifyOtpSuccess + * @property {UserSchema} [user] + * @property {boolean} [userExists] + * @property {boolean} [isNew] + */ + +/** + * @typedef LogoutSuccess + * @property {boolean} [logout] + */ + +/** + * @typedef OtpSuccess + * @property {number} [resendTimer] + * @property {string} [resendToken] + * @property {string} [registerToken] + * @property {boolean} [success] + * @property {string} [requestId] + * @property {string} [message] + * @property {string} [mobile] + * @property {boolean} [isNew] + * @property {string} [countryCode] + * @property {number} [otpLength] + */ + +/** + * @typedef SessionListSuccess + * @property {string[]} [sessions] + */ + +/** + * @typedef VerifyMobileOTPSuccess + * @property {UserSchema} [user] + */ + +/** + * @typedef Location + * @property {number} [latitude] + * @property {number} [longitude] + */ + +/** + * @typedef OrderAddress + * @property {string} [line1] + * @property {string} [line2] + * @property {string} [city] + * @property {string} [state] + * @property {string} [country] + * @property {string} [pincode] + * @property {string} [type] + * @property {Location} [geoLocation] + */ + +/** + * @typedef CustomerObject + * @property {string} [countryCode] + * @property {string} mobile + * @property {string} uid + * @property {string} [email] + * @property {string} [firstname] + * @property {string} [middleName] + * @property {string} [lastName] + */ + +/** + * @typedef Order + * @property {number} valueInPaise + * @property {string} uid + * @property {number} [emiTenure] + * @property {Items[]} [items] + * @property {OrderAddress} [shippingAddress] + * @property {OrderAddress} [billingAddress] + */ + +/** + * @typedef OrderUid + * @property {number} [valueInPaise] + * @property {string} uid + * @property {Items[]} [items] + * @property {OrderAddress} [shippingAddress] + * @property {OrderAddress} [billingAddress] + */ + +/** + * @typedef CustomerMeta + * @property {string} ip + * @property {string} appVersion + * @property {string} [appIdentifier] + * @property {string} [customerUserAgent] + * @property {string} deviceId + */ + +/** + * @typedef Device + * @property {string} ipAddress + * @property {string} userAgent + * @property {number} [latitude] + * @property {number} [longitude] + */ + +/** + * @typedef VerifyCustomer + * @property {CustomerObject} customer + * @property {Order} order + * @property {Device} device + * @property {Object} [meta] + * @property {boolean} [fetchLimitOptions] + */ + +/** + * @typedef CreateTransaction + * @property {boolean} [autoCapture] + * @property {string} redirectUrl + * @property {CustomerObject} customer + * @property {Order} order + * @property {Device} device + * @property {Object} [meta] + */ + +/** + * @typedef ResendPaymentRequest + * @property {boolean} [autoCapture] + * @property {string} [redirectUrl] + * @property {CustomerObject} customer + * @property {OrderUid} order + */ + +/** + * @typedef VerifyCustomerSuccess + * @property {string} [status] + * @property {string} [userStatus] + * @property {string} [message] + * @property {Object} [__headers] + */ + +/** + * @typedef CreateTransactionSuccess + * @property {string} [chargeToken] + * @property {string} [redirectUrl] + * @property {string} message + * @property {string} [transactionId] + * @property {string} [status] + * @property {string} [userStatus] + * @property {Object} [__headers] + */ + +/** + * @typedef SupportDocuments + * @property {string} [fileName] + * @property {string} [fileUrl] + */ + +/** + * @typedef CreateTicketResponse + * @property {string} [serviceRequestId] + * @property {string} [message] + */ + +/** + * @typedef CreateTicket + * @property {string} category + * @property {string} [transactionId] + * @property {string} description + * @property {SupportDocuments[]} [documents] + */ + +/** + * @typedef InitiateTransactions + * @property {string} token + */ + +/** + * @typedef GetMobileFromToken + * @property {string} token + */ + +/** + * @typedef GetDataFromToken + * @property {string} token + */ + +/** + * @typedef MerchantDetails + * @property {string} [name] + * @property {string} [website] + * @property {string} [logo] + */ + +/** + * @typedef InitiateTransactionsSuccess + * @property {string} chargeToken + * @property {string} [session] + * @property {string} [expiry] + * @property {string} [hash] + * @property {Order} [order] + * @property {boolean} [isAsp] + * @property {MerchantDetails} [merchant] + */ + +/** + * @typedef RetrieveMobileFromToken + * @property {string} countryCode + * @property {string} mobile + */ + +/** + * @typedef CreateDashboardTemplateRequest + * @property {string} name + * @property {string} version + * @property {boolean} [isDefault] + * @property {TemplateSections[]} sections + */ + +/** + * @typedef TemplateSections + * @property {number} sequence + * @property {boolean} isAvailableInMobile + * @property {boolean} isAvailableInDesktop + * @property {TemplateComponent} component + */ + +/** + * @typedef TemplateComponent + * @property {string} name + * @property {string} description + * @property {boolean} [isAvailableInDesktop] + * @property {PartnerApplications[]} [partnerApplications] + * @property {Banners[]} [banners] + * @property {Tips[]} [tips] + */ + +/** + * @typedef PartnerApplications + * @property {string} name + * @property {string} [description] + * @property {string} [urlPath] + * @property {string} [urlTarget] + * @property {string} imageUrl + * @property {number} [sequence] + */ + +/** + * @typedef Offerings + * @property {string} name + * @property {string} [description] + * @property {string} [urlPath] + * @property {string} [urlTarget] + * @property {string} imageUrl + * @property {number} [sequence] + * @property {string[]} gradient + */ + +/** + * @typedef Banners + * @property {string} imageUrl + * @property {ActionSchema} [action] + */ + +/** + * @typedef Tips + * @property {string} [name] + * @property {string} [description] + * @property {string} urlPath + * @property {string} [urlTarget] + * @property {string} [imageUrl] + * @property {number} [sequence] + */ + +/** + * @typedef DashboardTemplateResponse + * @property {string} [id] + * @property {string} [name] + * @property {string} [version] + * @property {boolean} [active] + * @property {SectionSchema[]} sections + */ + +/** + * @typedef SectionSchema + * @property {string} type + * @property {string} [title] + * @property {string} [description] + * @property {PartnerApplicationsResponse[]} [partners] + * @property {BannersResponse[]} [banners] + * @property {TipsResponse[]} [tips] + */ + +/** + * @typedef PartnerApplicationsResponse + * @property {string} [id] + * @property {string} name + * @property {string} [description] + * @property {ActionSchema} action + * @property {string} imageUrl + */ + +/** + * @typedef OfferingsResponse + * @property {string} [id] + * @property {string} name + * @property {string} [description] + * @property {ActionSchema} action + * @property {string} imageUrl + * @property {string[]} gradient + */ + +/** + * @typedef BannersResponse + * @property {ActionSchema} [action] + * @property {string} imageUrl + */ + +/** + * @typedef TipsSection + * @property {TipsResponse[]} [tips] + * @property {TipsCategories[]} [categories] + * @property {ActionSchema} [action] + */ + +/** + * @typedef TipsResponse + * @property {string} [name] + * @property {string} [category] + * @property {string} [description] + * @property {ActionSchema} action + * @property {string} [imageUrl] + */ + +/** + * @typedef TipsCategories + * @property {string} id + * @property {string} title + */ + +/** + * @typedef ActionSchema + * @property {string} [type] + * @property {PageSchema} [page] + * @property {PageSchema} [popup] + */ + +/** + * @typedef UpdateDashboardTemplateRequest + * @property {string} id + * @property {string} [name] + * @property {string} [version] + * @property {boolean} [isDefault] + * @property {boolean} [active] + * @property {UpdateTemplateSections[]} [sections] + */ + +/** + * @typedef UpdateTemplateSections + * @property {string} id + * @property {number} [sequence] + * @property {boolean} [isAvailableInMobile] + * @property {boolean} [isAvailableInDesktop] + * @property {boolean} [active] + * @property {UpdateTemplateComponent} [component] + */ + +/** + * @typedef UpdateTemplateComponent + * @property {string} id + * @property {string} [name] + * @property {string} [description] + * @property {boolean} [isAvailableInDesktop] + * @property {boolean} [active] + * @property {UpdatePartnerApplications[]} [partners] + * @property {UpdateBanners[]} [banners] + * @property {UpdateTips[]} [tips] + */ + +/** + * @typedef UpdatePartnerApplications + * @property {string} id + * @property {string} [name] + * @property {string} [description] + * @property {Object} [action] + * @property {string} [imageUrl] + * @property {number} [sequence] + * @property {boolean} [active] + */ + +/** + * @typedef UpdateOfferings + * @property {string} id + * @property {string} [name] + * @property {string} [description] + * @property {string} [urlPath] + * @property {string} [urlTarget] + * @property {string} [imageUrl] + * @property {number} [sequence] + * @property {string[]} [gradient] + */ + +/** + * @typedef UpdateBanners + * @property {string} id + * @property {string} [imageUrl] + * @property {Object} [action] + * @property {number} [sequence] + * @property {boolean} [active] + */ + +/** + * @typedef UpdateTips + * @property {string} id + * @property {string} [name] + * @property {string} [description] + * @property {string} [imageUrl] + * @property {Object} [action] + * @property {number} [sequence] + * @property {boolean} [active] + */ + +/** + * @typedef NavigationsMobileResponse + * @property {TabsSchema[]} tabs + * @property {ProfileSectionSchema[]} profileSections + */ + +/** + * @typedef TabsSchema + * @property {string} title + * @property {PageSchema} page + * @property {string} icon + * @property {string} activeIcon + * @property {boolean} active + */ + +/** + * @typedef PageSchema + * @property {string} [link] + * @property {PageType} [type] + * @property {Object} [params] + * @property {Object} [query] + */ + +/** + * @typedef ProfileSectionSchema + * @property {string} title + * @property {ProfileNavigationSchema[]} navigations + * @property {boolean} active + */ + +/** + * @typedef ProfileNavigationSchema + * @property {string} title + * @property {string} [description] + * @property {string} icon + * @property {string} type + * @property {ActionSchema} [action] + * @property {boolean} [active] + */ + +/** + * @typedef SendPNSRegisterRequest + * @property {string} deviceId + * @property {string} deviceType + * @property {string} token + */ + +/** + * @typedef PNSRegisterResponse + * @property {boolean} [status] + * @property {string} [message] + */ + +/** + * @typedef FaqResponse + * @property {CategorySchema[]} [categories] + */ + +/** + * @typedef CategorySchema + * @property {string} uid + * @property {string} [title] + * @property {string} [description] + * @property {string} [logo] + * @property {QuestionSchema[]} [questions] + */ + +/** + * @typedef QuestionSchema + * @property {string} uid + * @property {string} [title] + * @property {string} [description] + * @property {number} [displayOrder] + * @property {boolean} [canRaiseRequest] + */ + +/** + * @typedef SupportCategories + * @property {string} [kind] + * @property {string} [display] + */ + +/** + * @typedef SupportCategoriesResponse + * @property {SupportCategories[]} [categories] + */ + +/** + * @typedef SanctionLetterResponse + * @property {string} sanctionedLetterFileUrl + */ + +/** + * @typedef KfsDocumentResponse + * @property {string} kfsFileUrl + */ + +/** + * @typedef UserWhiteListedResponse + * @property {string} [status] + */ + +/** + * @typedef UserConsentRequest + * @property {string[]} [consents] + */ + +/** + * @typedef Consents + * @property {string} [type] + * @property {string} [text] + */ + +/** + * @typedef UserConsentRequestV2 + * @property {Consents[]} [consents] + */ + +/** + * @typedef UserConsentResponse + * @property {boolean} [success] + */ + +/** + * @typedef UserKycSteps + * @property {string} [id] + * @property {string} [index] + * @property {string} [name] + * @property {Object} [rules] + * @property {boolean} [active] + * @property {string} [createdAt] + * @property {string} [updatedAt] + * @property {string} [deletedAt] + */ + +/** + * @typedef CreateKycStepRequest + * @property {string} name + * @property {string} index + * @property {boolean} active + * @property {Object} [rules] + */ + +/** + * @typedef RemoveKycStepRequest + * @property {string} [name] + * @property {string} index + * @property {boolean} [active] + * @property {Object} [rules] + */ + +/** + * @typedef KycUpdateMessage + * @property {string} [message] + */ + +/** + * @typedef MobileFromLinkingRequest + * @property {string} token + */ + +/** + * @typedef MobileFromLinkingResponse + * @property {string} countryCode + * @property {string} mobile + */ + +/** + * @typedef SessionFromLinkingRequest + * @property {string} token + */ + +/** + * @typedef SessionFromLinkingResponse + * @property {string} session + * @property {number} expiry + */ + +/** + * @typedef LinkAccount + * @property {CustomerObject} customer + * @property {string} redirectUrl + * @property {Device} device + */ + +/** + * @typedef LinkAccountSuccess + * @property {string} [redirectUrl] + * @property {number} [statusCode] + * @property {string} [status] + * @property {string} [message] + * @property {string} [errorCode] + * @property {Object} [__headers] + */ + +/** + * @typedef UnlinkAccount + * @property {CustomerObject} customer + * @property {Device} device + */ + +/** + * @typedef UnlinkAccountSuccess + * @property {string} status + * @property {string} message + * @property {number} statusCode + * @property {string} [userStatus] + * @property {string} [errorCode] + * @property {Object} [__headers] + */ + +/** + * @typedef Refund + * @property {string} [fingerprint] + * @property {CustomerObject} customer + * @property {Items[]} [refundItems] + * @property {string} orderId + * @property {string} refundId + * @property {number} refundAmount + */ + +/** + * @typedef Translation + * @property {Object} [content] + */ + +/** + * @typedef FilterKeys + * @property {string} [display] + * @property {string} [name] + * @property {string} [kind] + */ + +/** + * @typedef FilterValues + * @property {string} [display] + * @property {boolean} [isSelected] + * @property {string} [value] + */ + +/** + * @typedef Filters + * @property {FilterKeys} [key] + * @property {FilterValues[]} [values] + */ + +/** + * @typedef PageResponse + * @property {string} type + * @property {number} current + * @property {boolean} hasPrevious + * @property {boolean} hasNext + * @property {number} size + * @property {number} itemTotal + */ + +/** + * @typedef UserResponse + * @property {Filters[]} filters + * @property {PageResponse} page + * @property {UserSchema[]} listOfUsers + */ + +/** + * @typedef UserDetailRequest + * @property {string} id + */ + +/** + * @typedef UserConsents + * @property {string} [id] + * @property {string} [userId] + * @property {string} [ipAddress] + * @property {string} [text] + * @property {string} [createdAt] + * @property {string} [updatedAt] + * @property {string} [deletedAt] + */ + +/** + * @typedef CreditScoreSchema + * @property {string} [id] + * @property {string} [userId] + * @property {number} [cibil] + * @property {string} [finbox] + * @property {string} [systemAwarded] + * @property {boolean} [isActive] + * @property {string} [deletedAt] + * @property {string} [updatedAt] + * @property {string} [createdAt] + */ + +/** + * @typedef CreditLimitSchema + * @property {string} [id] + * @property {string} [userId] + * @property {string} [creditLimit] + * @property {string} [createdAt] + * @property {string} [updatedAt] + * @property {string} [deletedAt] + */ + +/** + * @typedef Screen + * @property {string} [screenType] + * @property {string} [name] + * @property {string} [link] + */ + +/** + * @typedef UserStateSchema + * @property {Screen} [screen] + */ + +/** + * @typedef GetAccessTokenResponse + * @property {boolean} [success] + * @property {string} [accessToken] + * @property {string} [refreshToken] + * @property {string} [tokenExpireAt] + * @property {string} [tokenExpiryIn] + * @property {string} [refreshTokenExpiryAt] + * @property {string} [refreshTokenExpiryIn] + * @property {string[]} [scope] + * @property {Object} [__headers] + */ + +/** + * @typedef RefreshTokenResponse + * @property {boolean} [success] + * @property {string} [accessToken] + * @property {string} [tokenExpireAt] + * @property {string} [tokenExpiryIn] + * @property {Object} [__headers] + */ + +/** + * @typedef RefreshTokenRequest + * @property {string} token + */ + +/** + * @typedef Items + * @property {string} [category] + * @property {string} [sku] + * @property {number} [rate] + * @property {number} [quantity] + */ + +/** + * @typedef RefundStatusList + * @property {string} [id] + * @property {Items[]} [orderItems] + * @property {number} [amount] + * @property {string} [status] + * @property {string} [createdAt] + * @property {string} [processedDate] + */ + +/** + * @typedef RefundStatus + * @property {string} [orderId] + * @property {string} [userId] + * @property {string} [merchantId] + * @property {string} [lenderId] + * @property {string} [loanAccountNumber] + * @property {RefundStatusList[]} [refund] + * @property {Object} [__headers] + */ + +/** + * @typedef CustomerMetricsPivots + * @property {string} [date] + * @property {number} [sum] + */ + +/** + * @typedef CustomerMetricsSubResponse + * @property {string} [total] + * @property {CustomerMetricsPivots[]} [pivots] + * @property {string} [title] + * @property {string} [description] + * @property {string} [valueFormat] + * @property {string} [logo] + */ + +/** + * @typedef CustomerMetricsAnalytics + * @property {CustomerMetricsSubResponse} [totalCustomers] + * @property {CustomerMetricsSubResponse} [source] + */ + +/** + * @typedef CustomerMetricsFilters + * @property {string} type + * @property {string} display + * @property {string[]} value + * @property {boolean} [isSelected] + * @property {boolean} isActive + */ + +/** + * @typedef CustomerMetrics + * @property {CustomerMetricsAnalytics} [metrics] + * @property {CustomerMetricsFilters[]} [filters] + * @property {CustomerMetricsFilters[]} [sort] + */ + +/** + * @typedef CustomerMetricsResponse + * @property {CustomerMetrics} [data] + */ + +/** + * @typedef CustomerMetricsRequest + * @property {CustomerMetricsFilters[]} [filters] + * @property {CustomerMetricsFilters[]} [sort] + * @property {string} [merchantId] + * @property {string} [lenderId] + * @property {number} [pivotPoints] + */ + +/** + * @typedef SourceAnalyticsRequest + * @property {CustomerMetricsFilters[]} [filters] + */ + +/** + * @typedef LenderResponse + * @property {string} [slug] + * @property {string} [name] + * @property {string} [logo] + */ + +/** + * @typedef CreditLimitObject + * @property {number} [availableLimit] + * @property {number} [possibleLimit] + * @property {LenderResponse} [lender] + */ + +/** + * @typedef BusinessDetails + * @property {string} category + * @property {string} [shopName] + * @property {string} legalName + * @property {string} [address] + * @property {string} [type] + * @property {string} [pincode] + */ + +/** + * @typedef DocumentItems + * @property {string} [number] + * @property {string} [category] + * @property {string} [type] + * @property {string} [name] + * @property {string} [issuedOn] + * @property {string} [issuedAt] + * @property {string} [issuedBy] + * @property {string} [expiryOn] + */ + +/** + * @typedef VintageItems + * @property {number} month + * @property {number} year + * @property {number} totalTransactions + * @property {number} totalTransactionAmount + * @property {number} [totalCancellations] + * @property {number} [totalCancellationAmount] + */ + +/** + * @typedef EligibilitySuccess + * @property {string} [status] + * @property {string} [message] + * @property {string} [redirectUrl] + * @property {string} [callbackUrl] + * @property {CreditLimitObject[]} [creditLimits] + * @property {Object} [__headers] + */ + +/** + * @typedef CheckEligibilityRequest + * @property {CustomerObject} customer + * @property {Order} [order] + * @property {BusinessDetails} [businessDetails] + * @property {DocumentItems[]} [documents] + * @property {Device} device + * @property {VintageItems[]} [vintage] + * @property {Object} [meta] + * @property {boolean} [fetchLimitOptions] + */ + +/** + * @typedef GetSchemesSuccess + * @property {string} [userId] + * @property {undefined[]} lenders + * @property {Object} [__headers] + */ + +/** + * @typedef DisbursalRequest + * @property {string} [fingerprint] + * @property {string} chargeToken + * @property {number} [loanTypeId] + * @property {number} [emiTenure] + * @property {boolean} [isDownpaymentRequired] + * @property {number} [downpaymentAmount] + * @property {number} [loanAmount] + */ + +/** + * @typedef WorkflowUser + * @property {string} [mobile] + */ + +/** + * @typedef EligiblePlansRequest + * @property {string} [chargeToken] + */ + +/** + * @typedef EligiblePlans + * @property {string} [name] + * @property {string} [displayName] + * @property {string} [description] + * @property {number} [brokenInterest] + * @property {number} [noOfEmi] + * @property {number} [emiAmount] + * @property {number} [processingFee] + * @property {number} [installmentInterestRate] + */ + +/** + * @typedef EligiblePlansResponse + * @property {EligiblePlans[]} [eligiblePlans] + * @property {Object} [__headers] + */ + +/** + * @typedef DisbursalResponse + * @property {string} [transactionId] + * @property {string} [status] + * @property {string} [message] + * @property {Object} [__headers] + */ + +/** + * @typedef OrderStatus + * @property {string} orderId + * @property {string} [transactionId] + * @property {string} status + * @property {string} message + * @property {Object} [__headers] + */ + +/** + * @typedef DisbursalStatusRequest + * @property {string} [fingerprint] + * @property {string} transactionId + */ + +/** + * @typedef Transactions + * @property {string} id + * @property {string} userId + * @property {string} [partnerId] + * @property {string} [partner] + * @property {string} [partnerLogo] + * @property {string} status + * @property {string} [type] + * @property {string} [remark] + * @property {number} amount + * @property {string} [loanAccountNumber] + * @property {string} [kfs] + * @property {string} [utr] + * @property {string} [sanctionLetter] + * @property {string} [orderId] + * @property {string} [refundId] + * @property {string} createdAt + * @property {string} [lenderId] + * @property {string} [lenderName] + * @property {string} [lenderLogo] + * @property {string} [loanType] + * @property {string} [repaymentTransactionId] + * @property {string} [nextDueDate] + * @property {number} [paidPercent] + * @property {LenderDetail} [lenderDetail] + * @property {Emi[]} [emis] + */ + +/** + * @typedef LenderDetail + * @property {string} [id] + * @property {string} [name] + * @property {string} [imageUrl] + * @property {string} [slug] + * @property {boolean} [active] + * @property {boolean} [b2b] + * @property {boolean} [b2c] + * @property {Theme} [theme] + * @property {string} [createdAt] + * @property {string} [updatedAt] + * @property {string} [deletedAt] + */ + +/** + * @typedef TransactionResponse + * @property {Filters[]} filters + * @property {PageResponse} page + * @property {Transactions[]} transactions + */ + +/** + * @typedef MerchantTransactions + * @property {string} [outstandingAmount] + */ + +/** + * @typedef MerchantTransactionSummary + * @property {MerchantTransactions} [merchantOutstandingSummary] + */ + +/** + * @typedef GetReconciliationFileResponse + * @property {ReconFile[]} files + */ + +/** + * @typedef ReconFile + * @property {string} base64 + * @property {string} name + */ + +/** + * @typedef UploadReconciliationFileRequest + * @property {string} base64File + * @property {string} [format] + * @property {string} [lenderId] + */ + +/** + * @typedef UploadReconciliationFileResponse + * @property {boolean} [success] + */ + +/** + * @typedef TransactionCount + * @property {string} [totalTransactions] + */ + +/** + * @typedef RefundCount + * @property {string} [refundTransactions] + */ + +/** + * @typedef OrganizationTransactionsCount + * @property {number} [count] + */ + +/** + * @typedef OrganizationTransactionsSum + * @property {number} [sum] + */ + +/** + * @typedef UniqueCustomersInOrg + * @property {number} [count] + */ + +/** + * @typedef TransactionAmount + * @property {string} [totalTransactionAmount] + */ + +/** + * @typedef SchemaForOneDayTotal + * @property {string} [orgId] + * @property {string} [createdAt] + * @property {number} [count] + * @property {string} [sum] + * @property {string} [refund] + * @property {string} [difference] + */ + +/** + * @typedef SumofOneDayTransactions + * @property {SchemaForOneDayTotal[]} [dayTotal] + */ + +/** + * @typedef AverageTransaction + * @property {number} [average] + */ + +/** + * @typedef AllTransactionsResponse + * @property {string} [id] + * @property {string} [userId] + * @property {string} [partnerId] + * @property {string} [status] + * @property {string} [type] + * @property {string} [remark] + * @property {number} [amount] + * @property {string} [loanAccountNumber] + * @property {string} [createdAt] + */ + +/** + * @typedef TotalRefund + * @property {string} [totalRefund] + */ + +/** + * @typedef TotalRepayment + * @property {string} [totalRepayment] + */ + +/** + * @typedef TotalOverDue + * @property {string} [totalDue] + */ + +/** + * @typedef TotalLoansDisbursed + * @property {string} [totalLoansDisbursed] + */ + +/** + * @typedef OrganizationTransactionResponse + * @property {TrFilters[]} filters + * @property {TrPageResponse} page + * @property {OrgTransactions[]} transactions + */ + +/** + * @typedef TrFilters + * @property {TrFilterKeys} [key] + * @property {TrFilterValues[]} [values] + */ + +/** + * @typedef TrPageResponse + * @property {string} type + * @property {number} current + * @property {boolean} hasPrevious + * @property {boolean} hasNext + * @property {number} size + * @property {number} itemTotal + */ + +/** + * @typedef OrgTransactions + * @property {string} id + * @property {string} userId + * @property {string} [userName] + * @property {string} [partnerId] + * @property {string} [partner] + * @property {string} [partnerLogo] + * @property {string} status + * @property {string} [type] + * @property {string} [remark] + * @property {number} amount + * @property {string} [orderId] + * @property {string} [loanAccountNumber] + * @property {string} [kfs] + * @property {string} [sanctionLetter] + * @property {string} createdAt + */ + +/** + * @typedef TrFilterKeys + * @property {string} [display] + * @property {string} [name] + * @property {string} [kind] + */ + +/** + * @typedef TrFilterValues + * @property {string} [display] + * @property {boolean} [isSelected] + * @property {string} [value] + */ + +/** + * @typedef KfsRequest + * @property {number} [loanTypeId] + * @property {string} [chargeToken] + */ + +/** + * @typedef KfsResponse + * @property {string} [kfsTable] + */ + +/** + * @typedef LenderTransactionState + * @property {string} [id] + * @property {number} [stepIndex] + * @property {string} [lenderId] + * @property {string} [workflowId] + * @property {string} [workflowName] + * @property {string} [parentStateId] + * @property {string} [workflowUrl] + * @property {boolean} [isInternal] + * @property {boolean} [active] + * @property {number} [ttl] + * @property {string} [name] + * @property {string} [type] + * @property {Object} [inputData] + * @property {string} [createdAt] + * @property {string} [updatedAt] + * @property {string} [deletedAt] + */ + +/** + * @typedef TransactionStateResponse + * @property {LenderTransactionState[]} [transactionState] + */ + +/** + * @typedef Theme + * @property {string} [logoUrl] + * @property {string} [iconUrl] + * @property {string} [landscapeBgUrl] + * @property {string} [portraitBgUrl] + * @property {string} [shortName] + */ + +/** + * @typedef Emi + * @property {string} [id] + * @property {string} [userId] + * @property {number} [installmentno] + * @property {string} [loanAccountNumber] + * @property {number} [amount] + * @property {string} [dueDate] + * @property {string} [referenceTransactionId] + * @property {string} [remark] + * @property {string} [createdAt] + * @property {string} [updatedAt] + * @property {string} [entityId] + * @property {boolean} [paid] + * @property {boolean} [overdue] + * @property {string} [repaymentDate] + */ + +/** + * @typedef MetricPivots + * @property {string} [date] + * @property {number} [sum] + */ + +/** + * @typedef TransactionMetricSubResponse + * @property {string} [total] + * @property {MetricPivots[]} [pivots] + * @property {string} [title] + * @property {string} [description] + * @property {string} [valueFormat] + * @property {string} [logo] + */ + +/** + * @typedef TransactionMetrics + * @property {TransactionMetricSubResponse} [totalDisbursement] + * @property {TransactionMetricSubResponse} [totalOverdue] + * @property {TransactionMetricSubResponse} [totalRepayment] + */ + +/** + * @typedef LenderCustomerTransactionMetricsFilters + * @property {string} type + * @property {string} display + * @property {string[]} value + * @property {boolean} [isSelected] + * @property {boolean} isActive + */ + +/** + * @typedef LenderCustomerTransactionMetrics + * @property {TransactionMetrics} [metrics] + * @property {LenderCustomerTransactionMetricsFilters[]} [filters] + * @property {LenderCustomerTransactionMetricsFilters[]} [sort] + */ + +/** + * @typedef LenderCustomerTransactionMetricsResponse + * @property {Object} [data] + */ + +/** + * @typedef LenderCustomerTransactionMetricsRequest + * @property {LenderCustomerTransactionMetricsFilters[]} [filters] + * @property {LenderCustomerTransactionMetricsFilters[]} [sort] + * @property {string} [startDate] + * @property {string} [endDate] + * @property {string} [merchantId] + * @property {string} [lenderId] + * @property {number} [pivotPoints] + */ + +/** + * @typedef LenderTheme + * @property {string} logoUrl + * @property {string} iconUrl + * @property {string} landscapeBgUrl + * @property {string} portraitBgUrl + * @property {string} shortName + */ + +/** + * @typedef Lender + * @property {string} [id] + * @property {string} [name] + * @property {boolean} [active] + * @property {string} [imageUrl] + * @property {string} [slug] + * @property {LenderTheme} [theme] + * @property {boolean} [b2b] + * @property {boolean} [b2c] + * @property {string} [merchantConfigSchema] + * @property {string} [createdAt] + * @property {string} [updatedAt] + * @property {number} [approvedLimit] + * @property {string} [deletedAt] + * @property {Object} [meta] + * @property {Object} [metaSchema] + */ + +/** + * @typedef UserLender + * @property {string} id + * @property {string} userId + * @property {string} lenderId + * @property {boolean} [active] + * @property {string} status + * @property {string} createdAt + * @property {string} updatedAt + * @property {string} [deletedAt] + * @property {number} approvedLimit + * @property {string} [entityId] + * @property {string} [entityMapId] + */ + +/** + * @typedef SourceCreditReport + * @property {string} id + * @property {string} userId + * @property {string} pan + * @property {string} name + * @property {string} mobile + * @property {string} bureau + * @property {string} score + * @property {string} report + * @property {string} [createdAt] + */ + +/** + * @typedef Document + * @property {string} id + * @property {string} userId + * @property {string} imageUrl + * @property {string} number + * @property {Object} detail + * @property {boolean} valid + * @property {string} createdAt + * @property {string} updatedAt + * @property {string} [deletedAt] + * @property {string} [entityId] + */ + +/** + * @typedef UserKycDetail + * @property {string} id + * @property {string} userId + * @property {string} status + * @property {string} type + * @property {string} remark + * @property {string} profileType + * @property {boolean} active + * @property {string} [expiryDate] + * @property {string} [createdAt] + * @property {string} [updatedAt] + * @property {string} [deletedAt] + * @property {string} lenderId + * @property {Lender} [lender] + * @property {string} [entityMapId] + * @property {string} [entityId] + */ + +/** + * @typedef Form + * @property {string} [id] + * @property {string} [name] + * @property {string} [title] + * @property {string} [subtitle] + * @property {string} [action] + * @property {Object} [form] + * @property {Object} [uiSchema] + * @property {string} [workflowId] + */ + +/** + * @typedef LenderKycStepMap + * @property {string} [id] + * @property {string} step + * @property {number} stepIndex + * @property {string} lenderId + * @property {boolean} active + * @property {Object} rules + * @property {string} profileType + * @property {string} [createdAt] + * @property {string} [updatedAt] + * @property {string} [deletedAt] + * @property {string} name + * @property {string} description + * @property {string} iconUrl + * @property {boolean} isInteractive + * @property {string} [formId] + * @property {string} [merchantId] + * @property {Form} form + * @property {Object} docSchema + */ + +/** + * @typedef UserKycLenderStepMap + * @property {string} id + * @property {string} userId + * @property {string} lenderKycStepMapId + * @property {string} userKycDetailId + * @property {string} lenderId + * @property {Object} ruleState + * @property {boolean} active + * @property {string} status + * @property {string} [documentId] + * @property {string} createdAt + * @property {string} updatedAt + * @property {string} [deletedAt] + * @property {LenderKycStepMap} [lenderKycStepMap] + * @property {string} [entityMapId] + * @property {string} [entityId] + * @property {string} [updatedBy] + */ + +/** + * @typedef ProofOfIdentity + * @property {string} dob + * @property {string} hashedEmail + * @property {string} gender + * @property {string} hashedMobileNumber + * @property {string} name + */ + +/** + * @typedef ProofOfAddress + * @property {string} careOf + * @property {string} country + * @property {string} district + * @property {string} house + * @property {string} landmark + * @property {string} locality + * @property {string} pincode + * @property {string} postOffice + * @property {string} state + * @property {string} street + * @property {string} subDistrict + * @property {string} vtc + */ + +/** + * @typedef EAadhaarData + * @property {string} aadhaarReferenceNumber + * @property {string} aadhaarUid + * @property {string} image + * @property {ProofOfIdentity} proofOfIdentity + * @property {ProofOfAddress} proofOfAddress + * @property {string} [xml] + * @property {string} [pdf] + * @property {string} [address] + */ + +/** + * @typedef Consent + * @property {string} text + * @property {string} type + */ + +/** + * @typedef ValidatePanRequest + * @property {string} pan + * @property {Consent[]} consents + */ + +/** + * @typedef BankDetails + * @property {string} accountType + * @property {string} bankName + * @property {string} ifsc + * @property {string} accountNumber + * @property {string} accountHolderName + */ + +/** + * @typedef DocumentData + * @property {string} [selfie] + * @property {string} [video] + * @property {string} [digilockerCode] + * @property {BankDetails} [bankDetails] + */ + +/** + * @typedef ConfirmPanRequest + * @property {string} pan + * @property {string} name + * @property {string} [entity] + * @property {string} [merchantId] + */ + +/** + * @typedef LivelinessDetails + * @property {string} selfie + * @property {string} video + */ + +/** + * @typedef UploadDocumentRequest + * @property {Object} [user] + * @property {Object} [documentData] + * @property {string} lenderSlug + * @property {string} kycStep + * @property {string} [merchantId] + * @property {string} [entityMapId] + */ + +/** + * @typedef UploadDocumentRequestV1 + * @property {string} kycStep + * @property {string} entityMapId + * @property {Object} documentData + */ + +/** + * @typedef UploadDocumentRequestV3 + * @property {string} kycStep + * @property {string} entityMapId + * @property {Object} documentData + */ + +/** + * @typedef AadhaarRequest + * @property {string} [digilockerCode] + */ + +/** + * @typedef UploadAadhaarRequest + * @property {AadhaarRequest} [documentData] + * @property {Object} [user] + * @property {string} lenderSlug + * @property {string} kycStep + * @property {string} [merchantId] + * @property {string} [entityMapId] + */ + +/** + * @typedef UploadLivelinessRequest + * @property {LivelinessDetails} [documentData] + * @property {Object} [user] + * @property {string} lenderSlug + * @property {string} kycStep + * @property {string} [merchantId] + * @property {string} [entityMapId] + */ + +/** + * @typedef UploadAadhaarRequestV1 + * @property {AadhaarRequest} documentData + * @property {string} kycStep + * @property {string} entityMapId + */ + +/** + * @typedef UploadLivelinessRequestV1 + * @property {LivelinessDetails} documentData + * @property {string} kycStep + * @property {string} entityMapId + */ + +/** + * @typedef UploadAadhaarRequestV2 + * @property {AadhaarRequest} [documentData] + * @property {Object} [user] + * @property {string} lenderSlug + * @property {string} kycStep + * @property {string} [merchantId] + * @property {string} [entityMapId] + */ + +/** + * @typedef UploadLivelinessRequestV2 + * @property {LivelinessDetails} [documentData] + * @property {Object} [user] + * @property {string} lenderSlug + * @property {string} kycStep + * @property {string} [merchantId] + * @property {string} [entityMapId] + */ + +/** + * @typedef UploadAadhaarRequestV3 + * @property {AadhaarRequest} documentData + * @property {string} kycStep + * @property {string} entityMapId + */ + +/** + * @typedef UploadLivelinessRequestV3 + * @property {LivelinessDetails} documentData + * @property {string} kycStep + * @property {string} entityMapId + */ + +/** + * @typedef UploadBankDetailsRequest + * @property {BankDetails} [documentData] + * @property {Object} [user] + * @property {string} lenderSlug + * @property {string} kycStep + * @property {string} [merchantId] + * @property {string} [entityMapId] + */ + +/** + * @typedef InitiateKycRequest + * @property {string} kycType + * @property {string} [kycId] + * @property {string} [merchantId] + */ + +/** + * @typedef InitiateKycRequestV1 + * @property {string} entityMapId + * @property {string} kycType + * @property {string} [kycId] + * @property {string} [merchantId] + */ + +/** + * @typedef LenderOnboardRequest + * @property {string} [ack] + * @property {Object} data + * @property {string} [entityMapId] + * @property {string} [merchantId] + */ + +/** + * @typedef UpdateLenderStatusRequest + * @property {string} status + * @property {Object} payload + * @property {Object} data + * @property {boolean} action + */ + +/** + * @typedef UpdateProfileRequest + * @property {string} [firstName] + * @property {string} [lastName] + * @property {string} [gender] + * @property {string} [dob] + * @property {string} userId + * @property {boolean} [isOnboarded] + * @property {string} [address] + */ + +/** + * @typedef UpdateEntityRequest + * @property {string} [name] + * @property {string} [gender] + * @property {string} [dob] + * @property {boolean} [isDefault] + * @property {ProofOfAddress} [address] + */ + +/** + * @typedef CreateKycStepsRequest + * @property {Object} data + */ + +/** + * @typedef CreateLenderPgConfigRequest + * @property {string} mid + * @property {string} clientId + * @property {string} secret + * @property {boolean} active + * @property {string} pgId + * @property {string} lenderId + */ + +/** + * @typedef CreateLenderStateRequest + * @property {Object} data + */ + +/** + * @typedef UpdateLenderRequest + * @property {Object} data + * @property {string} lenderId + */ + +/** + * @typedef OtherPolicyFilters + * @property {Object[]} [orderBy] + */ + +/** + * @typedef GetPolicyFilters + * @property {string} [policyType] + * @property {Object[]} [lenderIds] + * @property {Object[]} [merchantIds] + * @property {Object[]} [orderBy] + */ + +/** + * @typedef GetPolicyFilters2 + * @property {string} [breType] + * @property {Object[]} [lenderId] + * @property {Object[]} [merchantId] + * @property {string} [loanType] + * @property {string} [journeyType] + * @property {string} [subType] + */ + +/** + * @typedef MerchantConfigRequest + * @property {string} id + * @property {Object} merchantConfigSchema + */ + +/** + * @typedef PanDetails + * @property {string} name + * @property {string} idNumber + */ + +/** + * @typedef AvailableLendersRequest + * @property {string} chargeToken + */ + +/** + * @typedef InitialData + * @property {string} userId + * @property {string} entityId + */ + +/** + * @typedef ExecutePolicyRequest + * @property {GetPolicyFilters} [policyFilters] + * @property {InitialData} initialData + */ + +/** + * @typedef ExecutePolicyRequest2 + * @property {GetPolicyFilters2} [policyFilters] + * @property {InitialData} initialData + */ + +/** + * @typedef RegisterGstRequest + * @property {string} gstTin + */ + +/** + * @typedef PopulateFormRequest + * @property {Object} form + * @property {string} [lenderId] + * @property {string} [merchantId] + */ + +/** + * @typedef ValidateFormFieldRequest + * @property {string} workflowName + * @property {string} [userId] + * @property {string} [entityId] + * @property {string} [entityMapId] + * @property {string} [lenderId] + * @property {string} [merchantId] + * @property {Object} fields + */ + +/** + * @typedef MerchantMetricFilter + * @property {string} type + * @property {string} display + * @property {Object[]} value + * @property {boolean} [isSelected] + * @property {boolean} [isActive] + */ + +/** + * @typedef LenderCustomerMetricsRequest + * @property {MerchantMetricFilter[]} [sort] + * @property {MerchantMetricFilter[]} [filters] + * @property {string} [merchantId] + * @property {string} [lenderId] + * @property {number} [pivotPoints] + */ + +/** + * @typedef StonewallCustomer + * @property {string} [mobile] + * @property {string} [uid] + */ + +/** + * @typedef GetLimitRequest + * @property {Object[]} [lenderSlugs] + * @property {boolean} [onlyDefaultLender] + * @property {StonewallCustomer} customer + */ + +/** + * @typedef DocumentObject + * @property {string} [id] + * @property {string} [userId] + * @property {string} [name] + * @property {string} [imageUrl] + * @property {string} number + * @property {Object} detail + * @property {boolean} [valid] + * @property {string} [entityId] + */ + +/** + * @typedef ManualKycRequest + * @property {Object} remark + * @property {string} status + * @property {string} stepId + * @property {string} entityMapId + * @property {DocumentObject} [documentData] + */ + +/** + * @typedef RetriggerLenderOnboardRequest + * @property {string} stepId + * @property {Object} data + */ + +/** + * @typedef EntityMapDto + * @property {string} id + * @property {string} [merchantId] + * @property {string} [status] + * @property {string} lenderId + * @property {number} [limit] + * @property {string} [creditType] + * @property {string} userId + * @property {string} entityId + */ + +/** + * @typedef EntityDto + * @property {string} id + * @property {string} [type] + * @property {string} [address] + * @property {string} [name] + * @property {string} [gender] + * @property {string} [dob] + * @property {string} userId + */ + +/** + * @typedef FindDocResponse + * @property {string} status + * @property {string} info + * @property {string} number + * @property {Object} [details] + * @property {string} [name] + */ + +/** + * @typedef LenderKycStatus + * @property {string} status + * @property {string} [lenderId] + * @property {string} [lenderName] + * @property {string} [kycType] + */ + +/** + * @typedef StateResponeDto + * @property {UserKycLenderStepMap} step + * @property {boolean} isStepCompleted + */ + +/** + * @typedef KycStateMachineDto + * @property {UserKycDetail} kycResult + * @property {UserKycLenderStepMap} [action] + */ + +/** + * @typedef InitiateKycDto + * @property {string} kycType + * @property {string} lenderId + * @property {Object} user + * @property {string} [kycId] + * @property {EntityMapDto} [entityRelation] + */ + +/** + * @typedef LenderOnboardDto + * @property {Lender} [lender] + * @property {Object} user + * @property {UserLender} [userLenderDetail] + * @property {LenderOnboardRequest} payload + * @property {EntityMapDto} [entityRelation] + * @property {string} ipAddress + * @property {boolean} [overrideTtl] + */ + +/** + * @typedef StepDetails + * @property {string} [name] + * @property {string} [description] + * @property {string} [iconUrl] + * @property {string} status + * @property {string} step + * @property {number} order + */ + +/** + * @typedef OnboardStatusDto + * @property {string} onboardStep + * @property {string} onboardingId + * @property {string} status + * @property {string} action + * @property {string} actionStatus + * @property {Lender} lender + * @property {string} [navigation] + * @property {number} approvedLimit + * @property {number} proposedLimit + * @property {Object} [actionData] + * @property {StepDetails[]} [steps] + * @property {string} entityId + * @property {string} entityMapId + * @property {boolean} actionIsForm + * @property {Form} [actionForm] + */ + +/** + * @typedef LenderFilters + * @property {Object[]} [includeStatus] + * @property {Object[]} [excludeStatus] + * @property {Object} [allowDisabledLender] + */ + +/** + * @typedef Policy + * @property {string} [id] + * @property {string} [name] + * @property {string} [url] + * @property {Object} [data] + * @property {string} [version] + * @property {boolean} [active] + * @property {Object} [type] + * @property {number} [index] + * @property {string} [lenderId] + * @property {string} [merchantId] + * @property {string} [workflowId] + * @property {Object[]} [schemaRef] + * @property {Object[]} [masterVariableRef] + * @property {Object} [customVariable] + * @property {string} [subType] + * @property {Object} [createdAt] + * @property {Object} [updatedAt] + * @property {Object} [deletedAt] + */ + +/** + * @typedef GetKycDocsResponse + * @property {FindDocResponse[]} documents + */ + +/** + * @typedef OrganizationLogosObject + * @property {string} id + * @property {string} name + * @property {string} logo + * @property {boolean} active + */ + +/** + * @typedef MetricSubTypes + * @property {string} date + * @property {string} [count] + * @property {string} [sum] + */ + +/** + * @typedef MetricTypes + * @property {MetricSubTypes[]} pivots + * @property {string} [total] + * @property {string} description + * @property {string} title + * @property {string} valueFormat + * @property {string} logo + */ + +/** + * @typedef BreApprovedUsersResponse + * @property {MetricTypes} data + */ + +/** + * @typedef Metrics + * @property {MetricTypes} lenderApprovedUsers + * @property {MetricTypes} breApprovedUsers + * @property {MetricTypes} totalCreditLine + */ + +/** + * @typedef MetricData + * @property {Metrics} metrics + * @property {MerchantMetricFilter[]} filters + * @property {MerchantMetricFilter[]} sort + */ + +/** + * @typedef ApprovedLenders + * @property {string} status + * @property {BreOutput[]} lenders + */ + +/** + * @typedef BreResultStatus + * @property {string} status + * @property {BreOutput[]} [approvedLenders] + */ + +/** + * @typedef GetAllUserLendersByEnityId + * @property {string} entityId + * @property {string} entityMapId + * @property {string} userId + * @property {string} status + * @property {Lender} lender + * @property {string} [partnerId] + */ + +/** + * @typedef LenderState + * @property {string} [id] + * @property {string} name + * @property {string} lenderId + * @property {number} index + * @property {string} workflowName + * @property {string} [workflowUrl] + * @property {boolean} active + * @property {string} [createdAt] + * @property {string} [updatedAt] + * @property {string} [deletedAt] + * @property {Lender} [lender] + * @property {string} [parentStateId] + * @property {number} ttl + * @property {string} [displayName] + * @property {string} [description] + * @property {string} [iconUrl] + * @property {boolean} isInteractive + * @property {Object} [schema] + */ + +/** + * @typedef UserLenderState + * @property {string} id + * @property {string} lenderStateId + * @property {string} lenderId + * @property {string} userId + * @property {string} status + * @property {string} userLenderId + * @property {string} remark + * @property {boolean} active + * @property {LenderState} [lenderState] + * @property {Object} [data] + * @property {string} [createdAt] + * @property {string} [updatedAt] + * @property {string} [deletedAt] + * @property {string} [entityId] + * @property {string} [entityMapId] + * @property {string} [updatedBy] + */ + +/** + * @typedef LenderConfig + * @property {string} [id] + * @property {string} baseUrl + * @property {string} [accessToken] + * @property {string} [secret] + * @property {Object} data + * @property {string} lenderId + * @property {boolean} [active] + * @property {string} [createdAt] + * @property {string} [updatedAt] + * @property {string} [deletedAt] + */ + +/** + * @typedef Pg + * @property {string} id + * @property {string} name + * @property {boolean} active + */ + +/** + * @typedef LenderPgConfig + * @property {string} [id] + * @property {string} mid + * @property {string} clientId + * @property {string} secret + * @property {string} lenderId + * @property {string} pgId + * @property {boolean} active + */ + +/** + * @typedef FileUploadResponse + * @property {string} fileId + * @property {string} name + * @property {string} path + * @property {string} format + * @property {number} size + * @property {string} access + * @property {string} tags + * @property {string} metadata + * @property {string} url + * @property {string} thumbnail + */ + +/** + * @typedef PresignedUrl + * @property {string} url + * @property {Object} fields + */ + +/** + * @typedef PresignedUrlV2 + * @property {string} url + * @property {Object} fields + */ + +/** + * @typedef LenderDocument + * @property {string} [id] + * @property {string} [lenderId] + * @property {string} [type] + * @property {Object} [document] + * @property {boolean} [active] + * @property {string} [createdAt] + * @property {string} [updatedAt] + * @property {string} [deletedAt] + */ + +/** + * @typedef KycStatusResponse + * @property {boolean} isKycInitiated + * @property {string} userId + * @property {LenderKycStatus[]} kycStatuses + */ + +/** + * @typedef WorkflowResponse + * @property {Object} [data] + */ + +/** + * @typedef InitiateKycResponse + * @property {UserKycDetail} kycResult + * @property {Action} action + */ + +/** + * @typedef UploadDocResponse + * @property {string} status + * @property {Object} [data] + * @property {string} [remark] + * @property {UserKycDetail} kycResult + * @property {Action} action + */ + +/** + * @typedef LenderOnboardResponse + * @property {UserLender} result + * @property {UserLenderState} action + * @property {Object} data + */ + +/** + * @typedef OnboardingStatusResponse + * @property {OnboardStatusDto[]} onboardStatuses + */ + +/** + * @typedef SignedUrlResponse + * @property {PresignedUrl} signedUrl + * @property {string} fileUrl + */ + +/** + * @typedef SignedUrlV2Response + * @property {PresignedUrlV2} signedUrl + * @property {string} fileUrl + */ + +/** + * @typedef PresignedUrlV3 + * @property {string} signedUrl + * @property {Object} provider + */ + +/** + * @typedef SignedUrlV3Response + * @property {PresignedUrlV3} signedDetails + * @property {string} fileUrl + */ + +/** + * @typedef DigilockerLinkResponse + * @property {string} authorizationUrl + */ + +/** + * @typedef GetDocumentsResponse + * @property {FindDocResponse[]} documents + */ + +/** + * @typedef ApprovedLendersTransaction + * @property {string} name + * @property {string} slug + * @property {string} imageUrl + * @property {string} status + * @property {boolean} active + * @property {number} proposedLimit + * @property {Object} createdAt + * @property {Object} updatedAt + * @property {Object} [deletedAt] + * @property {boolean} [isDefault] + * @property {Object} [__headers] + */ + +/** + * @typedef ApprovedPossibleLenders + * @property {number} limit + * @property {string} name + * @property {string} slug + * @property {boolean} active + * @property {string} id + * @property {LenderTheme} [theme] + */ + +/** + * @typedef AvailableLenders + * @property {ApprovedPossibleLenders[]} approvedLenders + * @property {ApprovedPossibleLenders[]} possibleLenders + */ + +/** + * @typedef CreditLimit + * @property {number} availableLimit + * @property {number} approvedLimit + */ + +/** + * @typedef CreditLimitResponse + * @property {string} status + * @property {string} message + * @property {boolean} action + * @property {CreditLimit} credit + */ + +/** + * @typedef LenderPgConfigResponse + * @property {string} id + * @property {string} mid + * @property {string} clientId + * @property {string} secret + * @property {string} lenderId + * @property {string} pgId + * @property {boolean} active + * @property {string} pgName + * @property {boolean} pgActive + */ + +/** + * @typedef GetLendersResponse + * @property {Lender[]} data + */ + +/** + * @typedef LenderConfigurationResponse + * @property {Lender} lender + * @property {LenderPgConfig} lenderPgConfig + * @property {LenderConfig} lenderConfig + * @property {LenderState[]} lenderState + * @property {LenderKycStepMap[]} lenderKycStepMap + */ + +/** + * @typedef UpsertLenderResponse + * @property {Object} data + */ + +/** + * @typedef UpsertLenderConfigResponse + * @property {Object} data + */ + +/** + * @typedef CreateKycStepsSchema + * @property {LenderKycStepMap[]} data + */ + +/** + * @typedef CreatePaymentGatewaySchema + * @property {LenderPgConfig[]} data + */ + +/** + * @typedef CreateLenderStateSchema + * @property {LenderState[]} data + */ + +/** + * @typedef GetAllPaymentGatewaysSchema + * @property {Pg[]} data + */ + +/** + * @typedef PolicyResponse + * @property {Policy[]} policies + */ + +/** + * @typedef CreditCheckBreResponse + * @property {boolean} newLenderAssigned + * @property {string} breStatus + */ + +/** + * @typedef MerchantConfigResponse + * @property {string} id + * @property {string} merhantConfigSchema + */ + +/** + * @typedef UserLenderByIdAndStatusResponse + * @property {string} id + * @property {string} userId + * @property {string} lenderId + * @property {boolean} [active] + * @property {string} status + * @property {string} createdAt + * @property {string} updatedAt + * @property {string} [deletedAt] + * @property {number} approvedLimit + * @property {string} [slug] + * @property {LenderTheme} [theme] + * @property {Object} [name] + */ + +/** + * @typedef IntgrAvailableCreditLimit + * @property {number} limit + * @property {string} lenderName + * @property {string} slug + * @property {boolean} isDefault + * @property {string} logoUrl + */ + +/** + * @typedef IngtrAvailableLimit + * @property {IntgrAvailableCreditLimit[]} available + */ + +/** + * @typedef IntgrCreditLimit + * @property {IngtrAvailableLimit} limit + * @property {Object} [__headers] + */ + +/** + * @typedef PossibleLendersInternal + * @property {boolean} limit + * @property {string} lenderName + * @property {string} slug + * @property {boolean} isDefault + * @property {string} logo + * @property {string} lenderId + */ + +/** + * @typedef PossibleLendersInternalResponse + * @property {PossibleLendersInternal[]} lenders + */ + +/** + * @typedef GetTotalKycResponse + * @property {string} totalKyc + */ + +/** + * @typedef GetTotalKycCompletedUsersResponse + * @property {string} totalKycCompletedUsers + */ + +/** + * @typedef GetTotalPendingUsersResponse + * @property {string} totalPendingKyc + */ + +/** + * @typedef GetTotalCreditProvidedResponse + * @property {string} totalCreditLimit + */ + +/** + * @typedef MetaSchemaResponse + * @property {string} title + * @property {string} name + * @property {string[]} required + * @property {string} type + * @property {Object} properties + */ + +/** + * @typedef MetaSchema + * @property {MetaSchemaResponse} metaSchema + */ + +/** + * @typedef AddMetaSchema + * @property {string} lenderSlug + * @property {string} merchantId + * @property {Object} schema + */ + +/** + * @typedef AddMetaSchemaRequest + * @property {string} merchantId + * @property {Object} schema + */ + +/** + * @typedef ValidatePanResponse + * @property {string} panName + * @property {string} isPanValid + * @property {string} pan + * @property {boolean} isProprietor + * @property {string} panType + * @property {string} [errorCode] + * @property {string} [status] + * @property {string} [errorMessage] + */ + +/** + * @typedef ConfirmPanResonse + * @property {string} status + * @property {string} statusCode + * @property {string} message + */ + +/** + * @typedef LenderCountResponse + * @property {number} active + * @property {number} inActive + */ + +/** + * @typedef OnboardStepsDto + * @property {StepDetails[]} steps + * @property {Lender} lender + */ + +/** + * @typedef OnboardStepsResponse + * @property {OnboardStepsDto[]} stepDetails + */ + +/** + * @typedef LenderDocumentResponse + * @property {LenderDocument} data + */ + +/** + * @typedef GetUserLendersResponse + * @property {UserLender[]} data + */ + +/** + * @typedef CreditReportResponse + * @property {SourceCreditReport} data + */ + +/** + * @typedef KycDetailsReponse + * @property {UserKycLenderStepMap} data + */ + +/** + * @typedef GetDocumentByIdResponse + * @property {Document} data + */ + +/** + * @typedef GetAllFormsResponse + * @property {Object} data + */ + +/** + * @typedef UpsertFormResponse + * @property {Object} data + */ + +/** + * @typedef GstDetails + * @property {string} gstTin + * @property {string} businessName + */ + +/** + * @typedef GstDetailsResponse + * @property {GstDetails[]} gstDetails + */ + +/** + * @typedef RegisterGstResponse + * @property {Document} gstDocDetails + * @property {string} status + */ + +/** + * @typedef PopulateFormResponse + * @property {Object} form + */ + +/** + * @typedef ValidateFormFieldResponse + * @property {string} status + * @property {string} message + * @property {Object} data + */ + +/** + * @typedef LenderCustomerMetricsResponse + * @property {string} status + * @property {string} message + * @property {MetricData} data + */ + +/** + * @typedef ManualKycResponse + * @property {string} message + * @property {UserKycLenderStepMap} step + */ + +/** + * @typedef BreOutput + * @property {string} id + * @property {string} userId + * @property {string} entityId + * @property {string} [lenderId] + * @property {string} [merchantId] + * @property {string} policyName + * @property {string} category + * @property {string} type + * @property {Object} output + * @property {string} status + * @property {string} createdAt + * @property {string} updatedAt + * @property {string} deletedAt + */ + +/** + * @typedef CustomerKycDetailsReponse + * @property {UserKycLenderStepMap} data + */ + +module.exports = PlatformApplicationClient; diff --git a/sdk/platform/PlatformApplicationModels.d.ts b/sdk/platform/PlatformApplicationModels.d.ts new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/sdk/platform/PlatformApplicationModels.d.ts @@ -0,0 +1 @@ +export {}; diff --git a/sdk/platform/PlatformApplicationModels.js b/sdk/platform/PlatformApplicationModels.js new file mode 100644 index 0000000..86e3fde --- /dev/null +++ b/sdk/platform/PlatformApplicationModels.js @@ -0,0 +1,4340 @@ +const Joi = require("joi"); + +class Validator { + static UserSchema() { + return Joi.object({ + id: Joi.string().allow(""), + + firstName: Joi.string().allow(""), + + lastName: Joi.string().allow(""), + + countryCode: Joi.string().allow(""), + + mobile: Joi.string().allow(""), + + email: Joi.string().allow(""), + + gender: Joi.string().allow(""), + + dob: Joi.string().allow(""), + + active: Joi.boolean(), + + profilePicUrl: Joi.string().allow(""), + + isEmailVerified: Joi.boolean(), + + createdAt: Joi.string().allow(""), + + updatedAt: Joi.string().allow(""), + + deletedAt: Joi.string().allow(""), + }); + } + + static count() { + return Joi.object({ + totalUsers: Joi.string().allow(""), + }); + } + + static FilterByDate() { + return Joi.object({ + startDate: Joi.string().allow(""), + + endDate: Joi.string().allow(""), + }); + } + + static LenderCount() { + return Joi.object({ + totalLenders: Joi.string().allow(""), + }); + } + + static LenderSchema() { + return Joi.object({ + id: Joi.string().allow(""), + + name: Joi.string().allow(""), + + active: Joi.boolean(), + + createdAt: Joi.string().allow(""), + + updatedAt: Joi.string().allow(""), + + deletedAt: Joi.string().allow(""), + }); + } + + static TotalUsersPerLender() { + return Joi.object({ + filters: Joi.array().items(this.Filters()).required(), + + page: this.PageResponse().required(), + + lenderList: Joi.array().items(this.TotalUsersPerLenderData()).required(), + }); + } + + static TotalUsersPerLenderData() { + return Joi.object({ + id: Joi.string().allow(""), + + name: Joi.string().allow(""), + + active: Joi.boolean(), + + createdAt: Joi.string().allow(""), + + updatedAt: Joi.string().allow(""), + + deletedAt: Joi.string().allow(""), + + totalUsers: Joi.string().allow(""), + }); + } + + static TotalUserByLender() { + return Joi.object({ + name: Joi.string().allow(""), + + count: Joi.string().allow(""), + }); + } + + static UsersByLender() { + return Joi.object({ + firstName: Joi.string().allow(""), + + lastName: Joi.string().allow(""), + + mobile: Joi.string().allow(""), + + email: Joi.string().allow(""), + + name: Joi.string().allow(""), + }); + } + + static ErrorResponse() { + return Joi.object({ + message: Joi.string().allow(""), + + info: Joi.string().allow(""), + + code: Joi.string().allow(""), + + requestId: Joi.string().allow(""), + + meta: Joi.any(), + }); + } + + static EditProfileRequest() { + return Joi.object({ + firstName: Joi.string().allow(""), + + lastName: Joi.string().allow(""), + + countryCode: Joi.string().allow(""), + + mobile: Joi.string().allow(""), + + email: Joi.string().allow(""), + + gender: Joi.string().allow(""), + + dob: Joi.string().allow(""), + + registrationToken: Joi.string().allow(""), + }); + } + + static VerifyOtpRequest() { + return Joi.object({ + requestId: Joi.string().allow("").required(), + + otp: Joi.string().allow("").required(), + + captchaCode: Joi.string().allow(""), + + androidHash: Joi.string().allow(""), + + referralCode: Joi.string().allow(""), + + onboardingToken: Joi.string().allow(""), + }); + } + + static SendMobileOtpRequest() { + return Joi.object({ + countryCode: Joi.string().allow("").required(), + + mobile: Joi.string().allow("").required(), + + captchaCode: Joi.string().allow(""), + + androidHash: Joi.string().allow(""), + + force: Joi.string().allow(""), + }); + } + + static ReSendMobileOtpRequest() { + return Joi.object({ + captchaCode: Joi.string().allow(""), + + token: Joi.string().allow("").required(), + + androidHash: Joi.string().allow(""), + }); + } + + static SendOtpRequest() { + return Joi.object({ + countryCode: Joi.string().allow(""), + + captchaCode: Joi.string().allow(""), + + mobile: Joi.string().allow(""), + }); + } + + static ApplicationUser() { + return Joi.object({ + user: this.UserSchema(), + }); + } + + static SendOtpResponse() { + return Joi.object({ + resendTimer: Joi.number(), + + resendToken: Joi.string().allow(""), + + success: Joi.boolean(), + + requestId: Joi.string().allow(""), + + message: Joi.string().allow(""), + + mobile: Joi.string().allow(""), + + countryCode: Joi.string().allow(""), + + email: Joi.string().allow(""), + + resendEmailToken: Joi.string().allow(""), + + registerToken: Joi.string().allow(""), + + verifyEmailOtp: Joi.boolean(), + + verifyMobileOtp: Joi.boolean(), + + userExists: Joi.boolean(), + }); + } + + static EmailUpdate() { + return Joi.object({ + email: Joi.string().allow(""), + }); + } + + static UserUpdateRequest() { + return Joi.object({ + firstName: Joi.any(), + + lastName: Joi.any(), + + countryCode: Joi.string().allow("").required(), + + mobile: Joi.string().allow("").required(), + + email: Joi.any(), + + gender: Joi.any(), + + dob: Joi.any(), + + active: Joi.boolean(), + + profilePictureUrl: Joi.any(), + + isEmailVerified: Joi.boolean(), + }); + } + + static LenderUpdateRequest() { + return Joi.object({ + id: Joi.string().allow("").required(), + + name: Joi.string().allow(""), + + active: Joi.boolean(), + }); + } + + static ProfileEditSuccess() { + return Joi.object({ + user: this.UserSchema(), + + registerToken: Joi.string().allow(""), + + resendEmailToken: Joi.string().allow(""), + + userExists: Joi.boolean(), + + verifyEmailLink: Joi.boolean(), + + verifyEmailOtp: Joi.boolean(), + + verifyMobileOtp: Joi.boolean(), + + email: Joi.string().allow(""), + + requestId: Joi.string().allow(""), + + countryCode: Joi.string().allow(""), + + mobile: Joi.string().allow(""), + + success: Joi.boolean(), + + message: Joi.string().allow(""), + + resendTimer: Joi.number(), + + resendToken: Joi.string().allow(""), + }); + } + + static LoginSuccess() { + return Joi.object({ + user: this.UserSchema(), + + requestId: Joi.string().allow(""), + + registerToken: Joi.string().allow(""), + }); + } + + static VerifyOtpSuccess() { + return Joi.object({ + user: this.UserSchema(), + + userExists: Joi.boolean(), + + isNew: Joi.boolean(), + }); + } + + static LogoutSuccess() { + return Joi.object({ + logout: Joi.boolean(), + }); + } + + static OtpSuccess() { + return Joi.object({ + resendTimer: Joi.number(), + + resendToken: Joi.string().allow(""), + + registerToken: Joi.string().allow(""), + + success: Joi.boolean(), + + requestId: Joi.string().allow(""), + + message: Joi.string().allow(""), + + mobile: Joi.string().allow(""), + + isNew: Joi.boolean(), + + countryCode: Joi.string().allow(""), + + otpLength: Joi.number(), + }); + } + + static SessionListSuccess() { + return Joi.object({ + sessions: Joi.array().items(Joi.string().allow("")), + }); + } + + static VerifyMobileOTPSuccess() { + return Joi.object({ + user: this.UserSchema(), + }); + } + + static Location() { + return Joi.object({ + latitude: Joi.number(), + + longitude: Joi.number(), + }); + } + + static OrderAddress() { + return Joi.object({ + line1: Joi.string().allow(""), + + line2: Joi.string().allow(""), + + city: Joi.string().allow(""), + + state: Joi.string().allow(""), + + country: Joi.string().allow(""), + + pincode: Joi.string().allow(""), + + type: Joi.string().allow(""), + + geoLocation: this.Location(), + }); + } + + static CustomerObject() { + return Joi.object({ + countryCode: Joi.string().allow(""), + + mobile: Joi.string().allow("").required(), + + uid: Joi.string().allow("").required(), + + email: Joi.string().allow(""), + + firstname: Joi.string().allow(""), + + middleName: Joi.string().allow(""), + + lastName: Joi.string().allow(""), + }); + } + + static Order() { + return Joi.object({ + valueInPaise: Joi.number().required(), + + uid: Joi.string().allow("").required(), + + emiTenure: Joi.number(), + + items: Joi.array().items(this.Items()), + + shippingAddress: this.OrderAddress(), + + billingAddress: this.OrderAddress(), + }); + } + + static OrderUid() { + return Joi.object({ + valueInPaise: Joi.number(), + + uid: Joi.string().allow("").required(), + + items: Joi.array().items(this.Items()), + + shippingAddress: this.OrderAddress(), + + billingAddress: this.OrderAddress(), + }); + } + + static CustomerMeta() { + return Joi.object({ + ip: Joi.string().allow("").required(), + + appVersion: Joi.string().allow("").required(), + + appIdentifier: Joi.string().allow(""), + + customerUserAgent: Joi.string().allow(""), + + deviceId: Joi.string().allow("").required(), + }); + } + + static Device() { + return Joi.object({ + ipAddress: Joi.string().allow("").required(), + + userAgent: Joi.string().allow("").required(), + + latitude: Joi.number(), + + longitude: Joi.number(), + }); + } + + static VerifyCustomer() { + return Joi.object({ + customer: this.CustomerObject().required(), + + order: this.Order().required(), + + device: this.Device().required(), + + meta: Joi.any(), + + fetchLimitOptions: Joi.boolean(), + }); + } + + static CreateTransaction() { + return Joi.object({ + autoCapture: Joi.boolean(), + + redirectUrl: Joi.string().allow("").required(), + + customer: this.CustomerObject().required(), + + order: this.Order().required(), + + device: this.Device().required(), + + meta: Joi.any(), + }); + } + + static ResendPaymentRequest() { + return Joi.object({ + autoCapture: Joi.boolean(), + + redirectUrl: Joi.string().allow(""), + + customer: this.CustomerObject().required(), + + order: this.OrderUid().required(), + }); + } + + static VerifyCustomerSuccess() { + return Joi.object({ + status: Joi.string().allow(""), + + userStatus: Joi.string().allow(""), + + message: Joi.string().allow(""), + + __headers: Joi.any(), + }); + } + + static CreateTransactionSuccess() { + return Joi.object({ + chargeToken: Joi.string().allow(""), + + redirectUrl: Joi.string().allow(""), + + message: Joi.string().allow("").required(), + + transactionId: Joi.string().allow(""), + + status: Joi.string().allow(""), + + userStatus: Joi.string().allow(""), + + __headers: Joi.any(), + }); + } + + static SupportDocuments() { + return Joi.object({ + fileName: Joi.string().allow(""), + + fileUrl: Joi.string().allow(""), + }); + } + + static CreateTicketResponse() { + return Joi.object({ + serviceRequestId: Joi.string().allow(""), + + message: Joi.string().allow(""), + }); + } + + static CreateTicket() { + return Joi.object({ + category: Joi.string().allow("").required(), + + transactionId: Joi.string().allow(""), + + description: Joi.string().allow("").required(), + + documents: Joi.array().items(this.SupportDocuments()), + }); + } + + static InitiateTransactions() { + return Joi.object({ + token: Joi.string().allow("").required(), + }); + } + + static GetMobileFromToken() { + return Joi.object({ + token: Joi.string().allow("").required(), + }); + } + + static GetDataFromToken() { + return Joi.object({ + token: Joi.string().allow("").required(), + }); + } + + static MerchantDetails() { + return Joi.object({ + name: Joi.string().allow(""), + + website: Joi.string().allow(""), + + logo: Joi.string().allow(""), + }); + } + + static InitiateTransactionsSuccess() { + return Joi.object({ + chargeToken: Joi.string().allow("").required(), + + session: Joi.string().allow(""), + + expiry: Joi.string().allow(""), + + hash: Joi.string().allow(""), + + order: this.Order(), + + isAsp: Joi.boolean(), + + merchant: this.MerchantDetails(), + }); + } + + static RetrieveMobileFromToken() { + return Joi.object({ + countryCode: Joi.string().allow("").required(), + + mobile: Joi.string().allow("").required(), + }); + } + + static CreateDashboardTemplateRequest() { + return Joi.object({ + name: Joi.string().allow("").required(), + + version: Joi.string().allow("").required(), + + isDefault: Joi.boolean(), + + sections: Joi.array().items(this.TemplateSections()).required(), + }); + } + + static TemplateSections() { + return Joi.object({ + sequence: Joi.number().required(), + + isAvailableInMobile: Joi.boolean().required(), + + isAvailableInDesktop: Joi.boolean().required(), + + component: this.TemplateComponent().required(), + }); + } + + static TemplateComponent() { + return Joi.object({ + name: Joi.string().allow("").required(), + + description: Joi.string().allow("").required(), + + isAvailableInDesktop: Joi.boolean(), + + partnerApplications: Joi.array().items(this.PartnerApplications()), + + banners: Joi.array().items(this.Banners()), + + tips: Joi.array().items(this.Tips()), + }); + } + + static PartnerApplications() { + return Joi.object({ + name: Joi.string().allow("").required(), + + description: Joi.string().allow(""), + + urlPath: Joi.string().allow(""), + + urlTarget: Joi.string().allow(""), + + imageUrl: Joi.string().allow("").required(), + + sequence: Joi.number(), + }); + } + + static Offerings() { + return Joi.object({ + name: Joi.string().allow("").required(), + + description: Joi.string().allow(""), + + urlPath: Joi.string().allow(""), + + urlTarget: Joi.string().allow(""), + + imageUrl: Joi.string().allow("").required(), + + sequence: Joi.number(), + + gradient: Joi.array().items(Joi.string().allow("")).required(), + }); + } + + static Banners() { + return Joi.object({ + imageUrl: Joi.string().allow("").required(), + + action: this.ActionSchema(), + }); + } + + static Tips() { + return Joi.object({ + name: Joi.string().allow(""), + + description: Joi.string().allow(""), + + urlPath: Joi.string().allow("").required(), + + urlTarget: Joi.string().allow(""), + + imageUrl: Joi.string().allow(""), + + sequence: Joi.number(), + }); + } + + static DashboardTemplateResponse() { + return Joi.object({ + id: Joi.string().allow(""), + + name: Joi.string().allow(""), + + version: Joi.string().allow(""), + + active: Joi.boolean(), + + sections: Joi.array().items(this.SectionSchema()).required(), + }); + } + + static SectionSchema() { + return Joi.object({ + type: Joi.string().allow("").required(), + + title: Joi.string().allow(""), + + description: Joi.string().allow(""), + + partners: Joi.array().items(this.PartnerApplicationsResponse()), + + banners: Joi.array().items(this.BannersResponse()), + + tips: Joi.array().items(this.TipsResponse()), + }); + } + + static PartnerApplicationsResponse() { + return Joi.object({ + id: Joi.string().allow(""), + + name: Joi.string().allow("").required(), + + description: Joi.string().allow(""), + + action: this.ActionSchema().required(), + + imageUrl: Joi.string().allow("").required(), + }); + } + + static OfferingsResponse() { + return Joi.object({ + id: Joi.string().allow(""), + + name: Joi.string().allow("").required(), + + description: Joi.string().allow(""), + + action: this.ActionSchema().required(), + + imageUrl: Joi.string().allow("").required(), + + gradient: Joi.array().items(Joi.string().allow("")).required(), + }); + } + + static BannersResponse() { + return Joi.object({ + action: this.ActionSchema(), + + imageUrl: Joi.string().allow("").required(), + }); + } + + static TipsSection() { + return Joi.object({ + tips: Joi.array().items(this.TipsResponse()), + + categories: Joi.array().items(this.TipsCategories()), + + action: this.ActionSchema(), + }); + } + + static TipsResponse() { + return Joi.object({ + name: Joi.string().allow(""), + + category: Joi.string().allow(""), + + description: Joi.string().allow(""), + + action: this.ActionSchema().required(), + + imageUrl: Joi.string().allow(""), + }); + } + + static TipsCategories() { + return Joi.object({ + id: Joi.string().allow("").required(), + + title: Joi.string().allow("").required(), + }); + } + + static ActionSchema() { + return Joi.object({ + type: Joi.string().allow(""), + + page: this.PageSchema(), + + popup: this.PageSchema(), + }); + } + + static UpdateDashboardTemplateRequest() { + return Joi.object({ + id: Joi.string().allow("").required(), + + name: Joi.string().allow(""), + + version: Joi.string().allow(""), + + isDefault: Joi.boolean(), + + active: Joi.boolean(), + + sections: Joi.array().items(this.UpdateTemplateSections()), + }); + } + + static UpdateTemplateSections() { + return Joi.object({ + id: Joi.string().allow("").required(), + + sequence: Joi.number(), + + isAvailableInMobile: Joi.boolean(), + + isAvailableInDesktop: Joi.boolean(), + + active: Joi.boolean(), + + component: this.UpdateTemplateComponent(), + }); + } + + static UpdateTemplateComponent() { + return Joi.object({ + id: Joi.string().allow("").required(), + + name: Joi.string().allow(""), + + description: Joi.string().allow(""), + + isAvailableInDesktop: Joi.boolean(), + + active: Joi.boolean(), + + partners: Joi.array().items(this.UpdatePartnerApplications()), + + banners: Joi.array().items(this.UpdateBanners()), + + tips: Joi.array().items(this.UpdateTips()), + }); + } + + static UpdatePartnerApplications() { + return Joi.object({ + id: Joi.string().allow("").required(), + + name: Joi.string().allow(""), + + description: Joi.string().allow(""), + + action: Joi.any(), + + imageUrl: Joi.string().allow(""), + + sequence: Joi.number(), + + active: Joi.boolean(), + }); + } + + static UpdateOfferings() { + return Joi.object({ + id: Joi.string().allow("").required(), + + name: Joi.string().allow(""), + + description: Joi.string().allow(""), + + urlPath: Joi.string().allow(""), + + urlTarget: Joi.string().allow(""), + + imageUrl: Joi.string().allow(""), + + sequence: Joi.number(), + + gradient: Joi.array().items(Joi.string().allow("")), + }); + } + + static UpdateBanners() { + return Joi.object({ + id: Joi.string().allow("").required(), + + imageUrl: Joi.string().allow(""), + + action: Joi.any(), + + sequence: Joi.number(), + + active: Joi.boolean(), + }); + } + + static UpdateTips() { + return Joi.object({ + id: Joi.string().allow("").required(), + + name: Joi.string().allow(""), + + description: Joi.string().allow(""), + + imageUrl: Joi.string().allow(""), + + action: Joi.any(), + + sequence: Joi.number(), + + active: Joi.boolean(), + }); + } + + static NavigationsMobileResponse() { + return Joi.object({ + tabs: Joi.array().items(this.TabsSchema()).required(), + + profileSections: Joi.array() + .items(this.ProfileSectionSchema()) + .required(), + }); + } + + static TabsSchema() { + return Joi.object({ + title: Joi.string().allow("").required(), + + page: this.PageSchema().required(), + + icon: Joi.string().allow("").required(), + + activeIcon: Joi.string().allow("").required(), + + active: Joi.boolean().required(), + }); + } + + static PageSchema() { + return Joi.object({ + link: Joi.string().allow(""), + + type: this.PageType(), + + params: Joi.object().pattern( + /\S/, + Joi.array().items(Joi.string().allow("")) + ), + + query: Joi.object().pattern(/\S/, Joi.string().allow("")), + }); + } + + static ProfileSectionSchema() { + return Joi.object({ + title: Joi.string().allow("").required(), + + navigations: Joi.array().items(this.ProfileNavigationSchema()).required(), + + active: Joi.boolean().required(), + }); + } + + static ProfileNavigationSchema() { + return Joi.object({ + title: Joi.string().allow("").required(), + + description: Joi.string().allow(""), + + icon: Joi.string().allow("").required(), + + type: Joi.string().allow("").required(), + + action: this.ActionSchema(), + + active: Joi.boolean(), + }); + } + + static SendPNSRegisterRequest() { + return Joi.object({ + deviceId: Joi.string().allow("").required(), + + deviceType: Joi.string().allow("").required(), + + token: Joi.string().allow("").required(), + }); + } + + static PNSRegisterResponse() { + return Joi.object({ + status: Joi.boolean(), + + message: Joi.string().allow(""), + }); + } + + static FaqResponse() { + return Joi.object({ + categories: Joi.array().items(this.CategorySchema()), + }); + } + + static CategorySchema() { + return Joi.object({ + uid: Joi.string().allow("").required(), + + title: Joi.string().allow(""), + + description: Joi.string().allow(""), + + logo: Joi.string().allow(""), + + questions: Joi.array().items(this.QuestionSchema()), + }); + } + + static QuestionSchema() { + return Joi.object({ + uid: Joi.string().allow("").required(), + + title: Joi.string().allow(""), + + description: Joi.string().allow(""), + + displayOrder: Joi.number(), + + canRaiseRequest: Joi.boolean(), + }); + } + + static SupportCategories() { + return Joi.object({ + kind: Joi.string().allow(""), + + display: Joi.string().allow(""), + }); + } + + static SupportCategoriesResponse() { + return Joi.object({ + categories: Joi.array().items(this.SupportCategories()), + }); + } + + static SanctionLetterResponse() { + return Joi.object({ + sanctionedLetterFileUrl: Joi.string().allow("").required(), + }); + } + + static KfsDocumentResponse() { + return Joi.object({ + kfsFileUrl: Joi.string().allow("").required(), + }); + } + + static UserWhiteListedResponse() { + return Joi.object({ + status: Joi.string().allow(""), + }); + } + + static UserConsentRequest() { + return Joi.object({ + consents: Joi.array().items(Joi.string().allow("")), + }); + } + + static Consents() { + return Joi.object({ + type: Joi.string().allow(""), + + text: Joi.string().allow(""), + }); + } + + static UserConsentRequestV2() { + return Joi.object({ + consents: Joi.array().items(this.Consents()), + }); + } + + static UserConsentResponse() { + return Joi.object({ + success: Joi.boolean(), + }); + } + + static UserKycSteps() { + return Joi.object({ + id: Joi.string().allow(""), + + index: Joi.string().allow(""), + + name: Joi.string().allow(""), + + rules: Joi.any(), + + active: Joi.boolean(), + + createdAt: Joi.string().allow(""), + + updatedAt: Joi.string().allow(""), + + deletedAt: Joi.string().allow(""), + }); + } + + static CreateKycStepRequest() { + return Joi.object({ + name: Joi.string().allow("").required(), + + index: Joi.string().allow("").required(), + + active: Joi.boolean().required(), + + rules: Joi.any(), + }); + } + + static RemoveKycStepRequest() { + return Joi.object({ + name: Joi.string().allow(""), + + index: Joi.string().allow("").required(), + + active: Joi.boolean(), + + rules: Joi.any(), + }); + } + + static KycUpdateMessage() { + return Joi.object({ + message: Joi.string().allow(""), + }); + } + + static MobileFromLinkingRequest() { + return Joi.object({ + token: Joi.string().allow("").required(), + }); + } + + static MobileFromLinkingResponse() { + return Joi.object({ + countryCode: Joi.string().allow("").required(), + + mobile: Joi.string().allow("").required(), + }); + } + + static SessionFromLinkingRequest() { + return Joi.object({ + token: Joi.string().allow("").required(), + }); + } + + static SessionFromLinkingResponse() { + return Joi.object({ + session: Joi.string().allow("").required(), + + expiry: Joi.number().required(), + }); + } + + static LinkAccount() { + return Joi.object({ + customer: this.CustomerObject().required(), + + redirectUrl: Joi.string().allow("").required(), + + device: this.Device().required(), + }); + } + + static LinkAccountSuccess() { + return Joi.object({ + redirectUrl: Joi.string().allow(""), + + statusCode: Joi.number(), + + status: Joi.string().allow(""), + + message: Joi.string().allow(""), + + errorCode: Joi.string().allow(""), + + __headers: Joi.any(), + }); + } + + static UnlinkAccount() { + return Joi.object({ + customer: this.CustomerObject().required(), + + device: this.Device().required(), + }); + } + + static UnlinkAccountSuccess() { + return Joi.object({ + status: Joi.string().allow("").required(), + + message: Joi.string().allow("").required(), + + statusCode: Joi.number().required(), + + userStatus: Joi.string().allow(""), + + errorCode: Joi.string().allow(""), + + __headers: Joi.any(), + }); + } + + static Refund() { + return Joi.object({ + fingerprint: Joi.string().allow(""), + + customer: this.CustomerObject().required(), + + refundItems: Joi.array().items(this.Items()), + + orderId: Joi.string().allow("").required(), + + refundId: Joi.string().allow("").required(), + + refundAmount: Joi.number().required(), + }); + } + + static Translation() { + return Joi.object({ + content: Joi.any(), + }); + } + + static FilterKeys() { + return Joi.object({ + display: Joi.string().allow(""), + + name: Joi.string().allow(""), + + kind: Joi.string().allow(""), + }); + } + + static FilterValues() { + return Joi.object({ + display: Joi.string().allow(""), + + isSelected: Joi.boolean(), + + value: Joi.string().allow(""), + }); + } + + static Filters() { + return Joi.object({ + key: this.FilterKeys(), + + values: Joi.array().items(this.FilterValues()), + }); + } + + static PageResponse() { + return Joi.object({ + type: Joi.string().allow("").required(), + + current: Joi.number().required(), + + hasPrevious: Joi.boolean().required(), + + hasNext: Joi.boolean().required(), + + size: Joi.number().required(), + + itemTotal: Joi.number().required(), + }); + } + + static UserResponse() { + return Joi.object({ + filters: Joi.array().items(this.Filters()).required(), + + page: this.PageResponse().required(), + + listOfUsers: Joi.array().items(this.UserSchema()).required(), + }); + } + + static UserDetailRequest() { + return Joi.object({ + id: Joi.string().allow("").required(), + }); + } + + static UserConsents() { + return Joi.object({ + id: Joi.string().allow(""), + + userId: Joi.string().allow(""), + + ipAddress: Joi.string().allow(""), + + text: Joi.string().allow(""), + + createdAt: Joi.string().allow(""), + + updatedAt: Joi.string().allow(""), + + deletedAt: Joi.string().allow(""), + }); + } + + static CreditScoreSchema() { + return Joi.object({ + id: Joi.string().allow(""), + + userId: Joi.string().allow(""), + + cibil: Joi.number(), + + finbox: Joi.string().allow(""), + + systemAwarded: Joi.string().allow(""), + + isActive: Joi.boolean(), + + deletedAt: Joi.string().allow(""), + + updatedAt: Joi.string().allow(""), + + createdAt: Joi.string().allow(""), + }); + } + + static CreditLimitSchema() { + return Joi.object({ + id: Joi.string().allow(""), + + userId: Joi.string().allow(""), + + creditLimit: Joi.string().allow(""), + + createdAt: Joi.string().allow(""), + + updatedAt: Joi.string().allow(""), + + deletedAt: Joi.string().allow(""), + }); + } + + static Screen() { + return Joi.object({ + screenType: Joi.string().allow(""), + + name: Joi.string().allow(""), + + link: Joi.string().allow(""), + }); + } + + static UserStateSchema() { + return Joi.object({ + screen: this.Screen(), + }); + } + + static GetAccessTokenResponse() { + return Joi.object({ + success: Joi.boolean(), + + accessToken: Joi.string().allow(""), + + refreshToken: Joi.string().allow(""), + + tokenExpireAt: Joi.string().allow(""), + + tokenExpiryIn: Joi.string().allow(""), + + refreshTokenExpiryAt: Joi.string().allow(""), + + refreshTokenExpiryIn: Joi.string().allow(""), + + scope: Joi.array().items(Joi.string().allow("")), + + __headers: Joi.any(), + }); + } + + static RefreshTokenResponse() { + return Joi.object({ + success: Joi.boolean(), + + accessToken: Joi.string().allow(""), + + tokenExpireAt: Joi.string().allow(""), + + tokenExpiryIn: Joi.string().allow(""), + + __headers: Joi.any(), + }); + } + + static RefreshTokenRequest() { + return Joi.object({ + token: Joi.string().allow("").required(), + }); + } + + static Items() { + return Joi.object({ + category: Joi.string().allow(""), + + sku: Joi.string().allow(""), + + rate: Joi.number(), + + quantity: Joi.number(), + }); + } + + static RefundStatusList() { + return Joi.object({ + id: Joi.string().allow(""), + + orderItems: Joi.array().items(this.Items()), + + amount: Joi.number(), + + status: Joi.string().allow(""), + + createdAt: Joi.string().allow(""), + + processedDate: Joi.string().allow(""), + }); + } + + static RefundStatus() { + return Joi.object({ + orderId: Joi.string().allow(""), + + userId: Joi.string().allow(""), + + merchantId: Joi.string().allow(""), + + lenderId: Joi.string().allow(""), + + loanAccountNumber: Joi.string().allow(""), + + refund: Joi.array().items(this.RefundStatusList()), + + __headers: Joi.any(), + }); + } + + static CustomerMetricsPivots() { + return Joi.object({ + date: Joi.string().allow(""), + + sum: Joi.number(), + }); + } + + static CustomerMetricsSubResponse() { + return Joi.object({ + total: Joi.string().allow(""), + + pivots: Joi.array().items(this.CustomerMetricsPivots()), + + title: Joi.string().allow(""), + + description: Joi.string().allow(""), + + valueFormat: Joi.string().allow(""), + + logo: Joi.string().allow(""), + }); + } + + static CustomerMetricsAnalytics() { + return Joi.object({ + totalCustomers: this.CustomerMetricsSubResponse(), + + source: this.CustomerMetricsSubResponse(), + }); + } + + static CustomerMetricsFilters() { + return Joi.object({ + type: Joi.string().allow("").required(), + + display: Joi.string().allow("").required(), + + value: Joi.array().items(Joi.string().allow("")).required(), + + isSelected: Joi.boolean(), + + isActive: Joi.boolean().required(), + }); + } + + static CustomerMetrics() { + return Joi.object({ + metrics: this.CustomerMetricsAnalytics(), + + filters: Joi.array().items(this.CustomerMetricsFilters()), + + sort: Joi.array().items(this.CustomerMetricsFilters()), + }); + } + + static CustomerMetricsResponse() { + return Joi.object({ + data: this.CustomerMetrics(), + }); + } + + static CustomerMetricsRequest() { + return Joi.object({ + filters: Joi.array().items(this.CustomerMetricsFilters()), + + sort: Joi.array().items(this.CustomerMetricsFilters()), + + merchantId: Joi.string().allow(""), + + lenderId: Joi.string().allow(""), + + pivotPoints: Joi.number(), + }); + } + + static SourceAnalyticsRequest() { + return Joi.object({ + filters: Joi.array().items(this.CustomerMetricsFilters()), + }); + } + + static LenderResponse() { + return Joi.object({ + slug: Joi.string().allow(""), + + name: Joi.string().allow(""), + + logo: Joi.string().allow(""), + }); + } + + static CreditLimitObject() { + return Joi.object({ + availableLimit: Joi.number(), + + possibleLimit: Joi.number(), + + lender: this.LenderResponse(), + }); + } + + static BusinessDetails() { + return Joi.object({ + category: Joi.string().allow("").required(), + + shopName: Joi.string().allow(""), + + legalName: Joi.string().allow("").required(), + + address: Joi.string().allow(""), + + type: Joi.string().allow(""), + + pincode: Joi.string().allow(""), + }); + } + + static DocumentItems() { + return Joi.object({ + number: Joi.string().allow(""), + + category: Joi.string().allow(""), + + type: Joi.string().allow(""), + + name: Joi.string().allow(""), + + issuedOn: Joi.string().allow(""), + + issuedAt: Joi.string().allow(""), + + issuedBy: Joi.string().allow(""), + + expiryOn: Joi.string().allow(""), + }); + } + + static VintageItems() { + return Joi.object({ + month: Joi.number().required(), + + year: Joi.number().required(), + + totalTransactions: Joi.number().required(), + + totalTransactionAmount: Joi.number().required(), + + totalCancellations: Joi.number(), + + totalCancellationAmount: Joi.number(), + }); + } + + static EligibilitySuccess() { + return Joi.object({ + status: Joi.string().allow(""), + + message: Joi.string().allow(""), + + redirectUrl: Joi.string().allow(""), + + callbackUrl: Joi.string().allow(""), + + creditLimits: Joi.array().items(this.CreditLimitObject()), + + __headers: Joi.any(), + }); + } + + static CheckEligibilityRequest() { + return Joi.object({ + customer: this.CustomerObject().required(), + + order: this.Order(), + + businessDetails: this.BusinessDetails(), + + documents: Joi.array().items(this.DocumentItems()), + + device: this.Device().required(), + + vintage: Joi.array().items(this.VintageItems()), + + meta: Joi.object().pattern(/\S/, Joi.any()), + + fetchLimitOptions: Joi.boolean(), + }); + } + + static GetSchemesSuccess() { + return Joi.object({ + userId: Joi.string().allow(""), + + lenders: Joi.array().items(undefined).required(), + + __headers: Joi.any(), + }); + } + + /* + Enum: PageType + Used By: Customer + */ + static PageType() { + return Joi.string().valid( + "external", + + "login", + + "home", + + "transactions", + + "transactionDetails", + + "rewards", + + "referAndEarn", + + "profile", + + "setupAutopay", + + "updateEmail", + + "reportIssue", + + "creditScore", + + "autoPay", + + "helpCenter", + + "kycInit", + + "accessDigilocker", + + "liveliness", + + "lenderOnboard", + + "lender", + + "kycDocs", + + "kycSelfie", + + "kycStatus", + + "kycError", + + "kycDigilockerResponse", + + "kycInitResponse", + + "repayment", + + "netBankingRepayment", + + "upiRepayment", + + "sanctionLetter", + + "kfs" + ); + } + + static DisbursalRequest() { + return Joi.object({ + fingerprint: Joi.string().allow(""), + + chargeToken: Joi.string().allow("").required(), + + loanTypeId: Joi.number(), + + emiTenure: Joi.number(), + + isDownpaymentRequired: Joi.boolean(), + + downpaymentAmount: Joi.number(), + + loanAmount: Joi.number(), + }); + } + + static WorkflowUser() { + return Joi.object({ + mobile: Joi.string().allow(""), + }); + } + + static EligiblePlansRequest() { + return Joi.object({ + chargeToken: Joi.string().allow(""), + }); + } + + static EligiblePlans() { + return Joi.object({ + name: Joi.string().allow(""), + + displayName: Joi.string().allow(""), + + description: Joi.string().allow(""), + + brokenInterest: Joi.number(), + + noOfEmi: Joi.number(), + + emiAmount: Joi.number(), + + processingFee: Joi.number(), + + installmentInterestRate: Joi.number(), + }); + } + + static EligiblePlansResponse() { + return Joi.object({ + eligiblePlans: Joi.array().items(this.EligiblePlans()), + + __headers: Joi.any(), + }); + } + + static DisbursalResponse() { + return Joi.object({ + transactionId: Joi.string().allow(""), + + status: Joi.string().allow(""), + + message: Joi.string().allow(""), + + __headers: Joi.any(), + }); + } + + static OrderStatus() { + return Joi.object({ + orderId: Joi.string().allow("").required(), + + transactionId: Joi.string().allow(""), + + status: Joi.string().allow("").required(), + + message: Joi.string().allow("").required(), + + __headers: Joi.any(), + }); + } + + static DisbursalStatusRequest() { + return Joi.object({ + fingerprint: Joi.string().allow(""), + + transactionId: Joi.string().allow("").required(), + }); + } + + static Transactions() { + return Joi.object({ + id: Joi.string().allow("").required(), + + userId: Joi.string().allow("").required(), + + partnerId: Joi.string().allow(""), + + partner: Joi.string().allow(""), + + partnerLogo: Joi.string().allow(""), + + status: Joi.string().allow("").required(), + + type: Joi.string().allow(""), + + remark: Joi.string().allow(""), + + amount: Joi.number().required(), + + loanAccountNumber: Joi.string().allow(""), + + kfs: Joi.string().allow(""), + + utr: Joi.string().allow(""), + + sanctionLetter: Joi.string().allow(""), + + orderId: Joi.string().allow(""), + + refundId: Joi.string().allow(""), + + createdAt: Joi.string().allow("").required(), + + lenderId: Joi.string().allow(""), + + lenderName: Joi.string().allow(""), + + lenderLogo: Joi.string().allow(""), + + loanType: Joi.string().allow(""), + + repaymentTransactionId: Joi.string().allow(""), + + nextDueDate: Joi.string().allow(""), + + paidPercent: Joi.number(), + + lenderDetail: this.LenderDetail(), + + emis: Joi.array().items(this.Emi()), + }); + } + + static LenderDetail() { + return Joi.object({ + id: Joi.string().allow(""), + + name: Joi.string().allow(""), + + imageUrl: Joi.string().allow(""), + + slug: Joi.string().allow(""), + + active: Joi.boolean(), + + b2b: Joi.boolean(), + + b2c: Joi.boolean(), + + theme: this.Theme(), + + createdAt: Joi.string().allow(""), + + updatedAt: Joi.string().allow(""), + + deletedAt: Joi.string().allow(""), + }); + } + + static TransactionResponse() { + return Joi.object({ + filters: Joi.array().items(this.Filters()).required(), + + page: this.PageResponse().required(), + + transactions: Joi.array().items(this.Transactions()).required(), + }); + } + + static MerchantTransactions() { + return Joi.object({ + outstandingAmount: Joi.string().allow(""), + }); + } + + static MerchantTransactionSummary() { + return Joi.object({ + merchantOutstandingSummary: this.MerchantTransactions(), + }); + } + + static GetReconciliationFileResponse() { + return Joi.object({ + files: Joi.array().items(this.ReconFile()).required(), + }); + } + + static ReconFile() { + return Joi.object({ + base64: Joi.string().allow("").required(), + + name: Joi.string().allow("").required(), + }); + } + + static UploadReconciliationFileRequest() { + return Joi.object({ + base64File: Joi.string().allow("").required(), + + format: Joi.string().allow(""), + + lenderId: Joi.string().allow(""), + }); + } + + static UploadReconciliationFileResponse() { + return Joi.object({ + success: Joi.boolean(), + }); + } + + static TransactionCount() { + return Joi.object({ + totalTransactions: Joi.string().allow(""), + }); + } + + static RefundCount() { + return Joi.object({ + refundTransactions: Joi.string().allow(""), + }); + } + + static OrganizationTransactionsCount() { + return Joi.object({ + count: Joi.number(), + }); + } + + static OrganizationTransactionsSum() { + return Joi.object({ + sum: Joi.number(), + }); + } + + static UniqueCustomersInOrg() { + return Joi.object({ + count: Joi.number(), + }); + } + + static TransactionAmount() { + return Joi.object({ + totalTransactionAmount: Joi.string().allow(""), + }); + } + + static SchemaForOneDayTotal() { + return Joi.object({ + orgId: Joi.string().allow(""), + + createdAt: Joi.string().allow(""), + + count: Joi.number(), + + sum: Joi.string().allow(""), + + refund: Joi.string().allow(""), + + difference: Joi.string().allow(""), + }); + } + + static SumofOneDayTransactions() { + return Joi.object({ + dayTotal: Joi.array().items(this.SchemaForOneDayTotal()), + }); + } + + static AverageTransaction() { + return Joi.object({ + average: Joi.number(), + }); + } + + static AllTransactionsResponse() { + return Joi.object({ + id: Joi.string().allow(""), + + userId: Joi.string().allow(""), + + partnerId: Joi.string().allow(""), + + status: Joi.string().allow(""), + + type: Joi.string().allow(""), + + remark: Joi.string().allow(""), + + amount: Joi.number(), + + loanAccountNumber: Joi.string().allow(""), + + createdAt: Joi.string().allow(""), + }); + } + + static TotalRefund() { + return Joi.object({ + totalRefund: Joi.string().allow(""), + }); + } + + static TotalRepayment() { + return Joi.object({ + totalRepayment: Joi.string().allow(""), + }); + } + + static TotalOverDue() { + return Joi.object({ + totalDue: Joi.string().allow(""), + }); + } + + static TotalLoansDisbursed() { + return Joi.object({ + totalLoansDisbursed: Joi.string().allow(""), + }); + } + + static OrganizationTransactionResponse() { + return Joi.object({ + filters: Joi.array().items(this.TrFilters()).required(), + + page: this.TrPageResponse().required(), + + transactions: Joi.array().items(this.OrgTransactions()).required(), + }); + } + + static TrFilters() { + return Joi.object({ + key: this.TrFilterKeys(), + + values: Joi.array().items(this.TrFilterValues()), + }); + } + + static TrPageResponse() { + return Joi.object({ + type: Joi.string().allow("").required(), + + current: Joi.number().required(), + + hasPrevious: Joi.boolean().required(), + + hasNext: Joi.boolean().required(), + + size: Joi.number().required(), + + itemTotal: Joi.number().required(), + }); + } + + static OrgTransactions() { + return Joi.object({ + id: Joi.string().allow("").required(), + + userId: Joi.string().allow("").required(), + + userName: Joi.string().allow(""), + + partnerId: Joi.string().allow(""), + + partner: Joi.string().allow(""), + + partnerLogo: Joi.string().allow(""), + + status: Joi.string().allow("").required(), + + type: Joi.string().allow(""), + + remark: Joi.string().allow(""), + + amount: Joi.number().required(), + + orderId: Joi.string().allow(""), + + loanAccountNumber: Joi.string().allow(""), + + kfs: Joi.string().allow(""), + + sanctionLetter: Joi.string().allow(""), + + createdAt: Joi.string().allow("").required(), + }); + } + + static TrFilterKeys() { + return Joi.object({ + display: Joi.string().allow(""), + + name: Joi.string().allow(""), + + kind: Joi.string().allow(""), + }); + } + + static TrFilterValues() { + return Joi.object({ + display: Joi.string().allow(""), + + isSelected: Joi.boolean(), + + value: Joi.string().allow(""), + }); + } + + static KfsRequest() { + return Joi.object({ + loanTypeId: Joi.number(), + + chargeToken: Joi.string().allow(""), + }); + } + + static KfsResponse() { + return Joi.object({ + kfsTable: Joi.string().allow(""), + }); + } + + static LenderTransactionState() { + return Joi.object({ + id: Joi.string().allow(""), + + stepIndex: Joi.number(), + + lenderId: Joi.string().allow(""), + + workflowId: Joi.string().allow(""), + + workflowName: Joi.string().allow(""), + + parentStateId: Joi.string().allow(""), + + workflowUrl: Joi.string().allow(""), + + isInternal: Joi.boolean(), + + active: Joi.boolean(), + + ttl: Joi.number(), + + name: Joi.string().allow(""), + + type: Joi.string().allow(""), + + inputData: Joi.any(), + + createdAt: Joi.string().allow(""), + + updatedAt: Joi.string().allow(""), + + deletedAt: Joi.string().allow(""), + }); + } + + static TransactionStateResponse() { + return Joi.object({ + transactionState: Joi.array().items(this.LenderTransactionState()), + }); + } + + static Theme() { + return Joi.object({ + logoUrl: Joi.string().allow(""), + + iconUrl: Joi.string().allow(""), + + landscapeBgUrl: Joi.string().allow(""), + + portraitBgUrl: Joi.string().allow(""), + + shortName: Joi.string().allow(""), + }); + } + + static Emi() { + return Joi.object({ + id: Joi.string().allow(""), + + userId: Joi.string().allow(""), + + installmentno: Joi.number(), + + loanAccountNumber: Joi.string().allow(""), + + amount: Joi.number(), + + dueDate: Joi.string().allow(""), + + referenceTransactionId: Joi.string().allow(""), + + remark: Joi.string().allow(""), + + createdAt: Joi.string().allow(""), + + updatedAt: Joi.string().allow(""), + + entityId: Joi.string().allow(""), + + paid: Joi.boolean(), + + overdue: Joi.boolean(), + + repaymentDate: Joi.string().allow(""), + }); + } + + static MetricPivots() { + return Joi.object({ + date: Joi.string().allow(""), + + sum: Joi.number(), + }); + } + + static TransactionMetricSubResponse() { + return Joi.object({ + total: Joi.string().allow(""), + + pivots: Joi.array().items(this.MetricPivots()), + + title: Joi.string().allow(""), + + description: Joi.string().allow(""), + + valueFormat: Joi.string().allow(""), + + logo: Joi.string().allow(""), + }); + } + + static TransactionMetrics() { + return Joi.object({ + totalDisbursement: this.TransactionMetricSubResponse(), + + totalOverdue: this.TransactionMetricSubResponse(), + + totalRepayment: this.TransactionMetricSubResponse(), + }); + } + + static LenderCustomerTransactionMetricsFilters() { + return Joi.object({ + type: Joi.string().allow("").required(), + + display: Joi.string().allow("").required(), + + value: Joi.array().items(Joi.string().allow("")).required(), + + isSelected: Joi.boolean(), + + isActive: Joi.boolean().required(), + }); + } + + static LenderCustomerTransactionMetrics() { + return Joi.object({ + metrics: this.TransactionMetrics(), + + filters: Joi.array().items( + this.LenderCustomerTransactionMetricsFilters() + ), + + sort: Joi.array().items(this.LenderCustomerTransactionMetricsFilters()), + }); + } + + static LenderCustomerTransactionMetricsResponse() { + return Joi.object({ + data: Joi.any(), + }); + } + + static LenderCustomerTransactionMetricsRequest() { + return Joi.object({ + filters: Joi.array().items( + this.LenderCustomerTransactionMetricsFilters() + ), + + sort: Joi.array().items(this.LenderCustomerTransactionMetricsFilters()), + + startDate: Joi.string().allow(""), + + endDate: Joi.string().allow(""), + + merchantId: Joi.string().allow(""), + + lenderId: Joi.string().allow(""), + + pivotPoints: Joi.number(), + }); + } + + static LenderTheme() { + return Joi.object({ + logoUrl: Joi.string().allow("").required(), + + iconUrl: Joi.string().allow("").required(), + + landscapeBgUrl: Joi.string().allow("").required(), + + portraitBgUrl: Joi.string().allow("").required(), + + shortName: Joi.string().allow("").required(), + }); + } + + static Lender() { + return Joi.object({ + id: Joi.string().allow(""), + + name: Joi.string().allow(""), + + active: Joi.boolean(), + + imageUrl: Joi.string().allow(""), + + slug: Joi.string().allow(""), + + theme: this.LenderTheme(), + + b2b: Joi.boolean(), + + b2c: Joi.boolean(), + + merchantConfigSchema: Joi.string().allow(""), + + createdAt: Joi.string().allow(""), + + updatedAt: Joi.string().allow(""), + + approvedLimit: Joi.number(), + + deletedAt: Joi.string().allow(""), + + meta: Joi.any(), + + metaSchema: Joi.any(), + }); + } + + static UserLender() { + return Joi.object({ + id: Joi.string().allow("").required(), + + userId: Joi.string().allow("").required(), + + lenderId: Joi.string().allow("").required(), + + active: Joi.boolean(), + + status: Joi.string().allow("").required(), + + createdAt: Joi.string().allow("").required(), + + updatedAt: Joi.string().allow("").required(), + + deletedAt: Joi.string().allow(""), + + approvedLimit: Joi.number().required(), + + entityId: Joi.string().allow(""), + + entityMapId: Joi.string().allow(""), + }); + } + + static SourceCreditReport() { + return Joi.object({ + id: Joi.string().allow("").required(), + + userId: Joi.string().allow("").required(), + + pan: Joi.string().allow("").required(), + + name: Joi.string().allow("").required(), + + mobile: Joi.string().allow("").required(), + + bureau: Joi.string().allow("").required(), + + score: Joi.string().allow("").required(), + + report: Joi.string().allow("").required(), + + createdAt: Joi.string().allow(""), + }); + } + + static Document() { + return Joi.object({ + id: Joi.string().allow("").required(), + + userId: Joi.string().allow("").required(), + + imageUrl: Joi.string().allow("").required(), + + number: Joi.string().allow("").required(), + + detail: Joi.any().required(), + + valid: Joi.boolean().required(), + + createdAt: Joi.string().allow("").required(), + + updatedAt: Joi.string().allow("").required(), + + deletedAt: Joi.string().allow(""), + + entityId: Joi.string().allow(""), + }); + } + + static UserKycDetail() { + return Joi.object({ + id: Joi.string().allow("").required(), + + userId: Joi.string().allow("").required(), + + status: Joi.string().allow("").required(), + + type: Joi.string().allow("").required(), + + remark: Joi.string().allow("").required(), + + profileType: Joi.string().allow("").required(), + + active: Joi.boolean().required(), + + expiryDate: Joi.string().allow(""), + + createdAt: Joi.string().allow(""), + + updatedAt: Joi.string().allow(""), + + deletedAt: Joi.string().allow(""), + + lenderId: Joi.string().allow("").required(), + + lender: this.Lender(), + + entityMapId: Joi.string().allow(""), + + entityId: Joi.string().allow(""), + }); + } + + static Form() { + return Joi.object({ + id: Joi.string().allow(""), + + name: Joi.string().allow(""), + + title: Joi.string().allow(""), + + subtitle: Joi.string().allow(""), + + action: Joi.string().allow(""), + + form: Joi.any(), + + uiSchema: Joi.any(), + + workflowId: Joi.string().allow(""), + }); + } + + static LenderKycStepMap() { + return Joi.object({ + id: Joi.string().allow(""), + + step: Joi.string().allow("").required(), + + stepIndex: Joi.number().required(), + + lenderId: Joi.string().allow("").required(), + + active: Joi.boolean().required(), + + rules: Joi.any().required(), + + profileType: Joi.string().allow("").required(), + + createdAt: Joi.string().allow(""), + + updatedAt: Joi.string().allow(""), + + deletedAt: Joi.string().allow(""), + + name: Joi.string().allow("").required(), + + description: Joi.string().allow("").required(), + + iconUrl: Joi.string().allow("").required(), + + isInteractive: Joi.boolean().required(), + + formId: Joi.string().allow(""), + + merchantId: Joi.string().allow(""), + + form: this.Form().required(), + + docSchema: Joi.any().required(), + }); + } + + static UserKycLenderStepMap() { + return Joi.object({ + id: Joi.string().allow("").required(), + + userId: Joi.string().allow("").required(), + + lenderKycStepMapId: Joi.string().allow("").required(), + + userKycDetailId: Joi.string().allow("").required(), + + lenderId: Joi.string().allow("").required(), + + ruleState: Joi.any().required(), + + active: Joi.boolean().required(), + + status: Joi.string().allow("").required(), + + documentId: Joi.string().allow(""), + + createdAt: Joi.string().allow("").required(), + + updatedAt: Joi.string().allow("").required(), + + deletedAt: Joi.string().allow(""), + + lenderKycStepMap: this.LenderKycStepMap(), + + entityMapId: Joi.string().allow(""), + + entityId: Joi.string().allow(""), + + updatedBy: Joi.string().allow(""), + }); + } + + static ProofOfIdentity() { + return Joi.object({ + dob: Joi.string().allow("").required(), + + hashedEmail: Joi.string().allow("").required(), + + gender: Joi.string().allow("").required(), + + hashedMobileNumber: Joi.string().allow("").required(), + + name: Joi.string().allow("").required(), + }); + } + + static ProofOfAddress() { + return Joi.object({ + careOf: Joi.string().allow("").required(), + + country: Joi.string().allow("").required(), + + district: Joi.string().allow("").required(), + + house: Joi.string().allow("").required(), + + landmark: Joi.string().allow("").required(), + + locality: Joi.string().allow("").required(), + + pincode: Joi.string().allow("").required(), + + postOffice: Joi.string().allow("").required(), + + state: Joi.string().allow("").required(), + + street: Joi.string().allow("").required(), + + subDistrict: Joi.string().allow("").required(), + + vtc: Joi.string().allow("").required(), + }); + } + + static EAadhaarData() { + return Joi.object({ + aadhaarReferenceNumber: Joi.string().allow("").required(), + + aadhaarUid: Joi.string().allow("").required(), + + image: Joi.string().allow("").required(), + + proofOfIdentity: this.ProofOfIdentity().required(), + + proofOfAddress: this.ProofOfAddress().required(), + + xml: Joi.string().allow(""), + + pdf: Joi.string().allow(""), + + address: Joi.string().allow(""), + }); + } + + static Consent() { + return Joi.object({ + text: Joi.string().allow("").required(), + + type: Joi.string().allow("").required(), + }); + } + + static ValidatePanRequest() { + return Joi.object({ + pan: Joi.string().allow("").required(), + + consents: Joi.array().items(this.Consent()).required(), + }); + } + + static BankDetails() { + return Joi.object({ + accountType: Joi.string().allow("").required(), + + bankName: Joi.string().allow("").required(), + + ifsc: Joi.string().allow("").required(), + + accountNumber: Joi.string().allow("").required(), + + accountHolderName: Joi.string().allow("").required(), + }); + } + + static DocumentData() { + return Joi.object({ + selfie: Joi.string().allow(""), + + video: Joi.string().allow(""), + + digilockerCode: Joi.string().allow(""), + + bankDetails: this.BankDetails(), + }); + } + + static ConfirmPanRequest() { + return Joi.object({ + pan: Joi.string().allow("").required(), + + name: Joi.string().allow("").required(), + + entity: Joi.string().allow(""), + + merchantId: Joi.string().allow(""), + }); + } + + static LivelinessDetails() { + return Joi.object({ + selfie: Joi.string().allow("").required(), + + video: Joi.string().allow("").required(), + }); + } + + static UploadDocumentRequest() { + return Joi.object({ + user: Joi.any(), + + documentData: Joi.any(), + + lenderSlug: Joi.string().allow("").required(), + + kycStep: Joi.string().allow("").required(), + + merchantId: Joi.string().allow(""), + + entityMapId: Joi.string().allow(""), + }); + } + + static UploadDocumentRequestV1() { + return Joi.object({ + kycStep: Joi.string().allow("").required(), + + entityMapId: Joi.string().allow("").required(), + + documentData: Joi.any().required(), + }); + } + + static UploadDocumentRequestV3() { + return Joi.object({ + kycStep: Joi.string().allow("").required(), + + entityMapId: Joi.string().allow("").required(), + + documentData: Joi.any().required(), + }); + } + + static AadhaarRequest() { + return Joi.object({ + digilockerCode: Joi.string().allow(""), + }); + } + + static UploadAadhaarRequest() { + return Joi.object({ + documentData: this.AadhaarRequest(), + + user: Joi.any(), + + lenderSlug: Joi.string().allow("").required(), + + kycStep: Joi.string().allow("").required(), + + merchantId: Joi.string().allow(""), + + entityMapId: Joi.string().allow(""), + }); + } + + static UploadLivelinessRequest() { + return Joi.object({ + documentData: this.LivelinessDetails(), + + user: Joi.any(), + + lenderSlug: Joi.string().allow("").required(), + + kycStep: Joi.string().allow("").required(), + + merchantId: Joi.string().allow(""), + + entityMapId: Joi.string().allow(""), + }); + } + + static UploadAadhaarRequestV1() { + return Joi.object({ + documentData: this.AadhaarRequest().required(), + + kycStep: Joi.string().allow("").required(), + + entityMapId: Joi.string().allow("").required(), + }); + } + + static UploadLivelinessRequestV1() { + return Joi.object({ + documentData: this.LivelinessDetails().required(), + + kycStep: Joi.string().allow("").required(), + + entityMapId: Joi.string().allow("").required(), + }); + } + + static UploadAadhaarRequestV2() { + return Joi.object({ + documentData: this.AadhaarRequest(), + + user: Joi.any(), + + lenderSlug: Joi.string().allow("").required(), + + kycStep: Joi.string().allow("").required(), + + merchantId: Joi.string().allow(""), + + entityMapId: Joi.string().allow(""), + }); + } + + static UploadLivelinessRequestV2() { + return Joi.object({ + documentData: this.LivelinessDetails(), + + user: Joi.any(), + + lenderSlug: Joi.string().allow("").required(), + + kycStep: Joi.string().allow("").required(), + + merchantId: Joi.string().allow(""), + + entityMapId: Joi.string().allow(""), + }); + } + + static UploadAadhaarRequestV3() { + return Joi.object({ + documentData: this.AadhaarRequest().required(), + + kycStep: Joi.string().allow("").required(), + + entityMapId: Joi.string().allow("").required(), + }); + } + + static UploadLivelinessRequestV3() { + return Joi.object({ + documentData: this.LivelinessDetails().required(), + + kycStep: Joi.string().allow("").required(), + + entityMapId: Joi.string().allow("").required(), + }); + } + + static UploadBankDetailsRequest() { + return Joi.object({ + documentData: this.BankDetails(), + + user: Joi.any(), + + lenderSlug: Joi.string().allow("").required(), + + kycStep: Joi.string().allow("").required(), + + merchantId: Joi.string().allow(""), + + entityMapId: Joi.string().allow(""), + }); + } + + static InitiateKycRequest() { + return Joi.object({ + kycType: Joi.string().allow("").required(), + + kycId: Joi.string().allow(""), + + merchantId: Joi.string().allow(""), + }); + } + + static InitiateKycRequestV1() { + return Joi.object({ + entityMapId: Joi.string().allow("").required(), + + kycType: Joi.string().allow("").required(), + + kycId: Joi.string().allow(""), + + merchantId: Joi.string().allow(""), + }); + } + + static LenderOnboardRequest() { + return Joi.object({ + ack: Joi.string().allow(""), + + data: Joi.any().required(), + + entityMapId: Joi.string().allow(""), + + merchantId: Joi.string().allow(""), + }); + } + + static UpdateLenderStatusRequest() { + return Joi.object({ + status: Joi.string().allow("").required(), + + payload: Joi.any().required(), + + data: Joi.any().required(), + + action: Joi.boolean().required(), + }); + } + + static UpdateProfileRequest() { + return Joi.object({ + firstName: Joi.string().allow(""), + + lastName: Joi.string().allow(""), + + gender: Joi.string().allow(""), + + dob: Joi.string().allow(""), + + userId: Joi.string().allow("").required(), + + isOnboarded: Joi.boolean(), + + address: Joi.string().allow(""), + }); + } + + static UpdateEntityRequest() { + return Joi.object({ + name: Joi.string().allow(""), + + gender: Joi.string().allow(""), + + dob: Joi.string().allow(""), + + isDefault: Joi.boolean(), + + address: this.ProofOfAddress(), + }); + } + + static CreateKycStepsRequest() { + return Joi.object({ + data: Joi.any().required(), + }); + } + + static CreateLenderPgConfigRequest() { + return Joi.object({ + mid: Joi.string().allow("").required(), + + clientId: Joi.string().allow("").required(), + + secret: Joi.string().allow("").required(), + + active: Joi.boolean().required(), + + pgId: Joi.string().allow("").required(), + + lenderId: Joi.string().allow("").required(), + }); + } + + static CreateLenderStateRequest() { + return Joi.object({ + data: Joi.any().required(), + }); + } + + static UpdateLenderRequest() { + return Joi.object({ + data: Joi.any().required(), + + lenderId: Joi.string().allow("").required(), + }); + } + + static OtherPolicyFilters() { + return Joi.object({ + orderBy: Joi.array().items(Joi.any()), + }); + } + + static GetPolicyFilters() { + return Joi.object({ + policyType: Joi.string().allow(""), + + lenderIds: Joi.array().items(Joi.any()), + + merchantIds: Joi.array().items(Joi.any()), + + orderBy: Joi.array().items(Joi.any()), + }); + } + + static GetPolicyFilters2() { + return Joi.object({ + breType: Joi.string().allow(""), + + lenderId: Joi.array().items(Joi.any()), + + merchantId: Joi.array().items(Joi.any()), + + loanType: Joi.string().allow(""), + + journeyType: Joi.string().allow(""), + + subType: Joi.string().allow(""), + }); + } + + static MerchantConfigRequest() { + return Joi.object({ + id: Joi.string().allow("").required(), + + merchantConfigSchema: Joi.any().required(), + }); + } + + static PanDetails() { + return Joi.object({ + name: Joi.string().allow("").required(), + + idNumber: Joi.string().allow("").required(), + }); + } + + static AvailableLendersRequest() { + return Joi.object({ + chargeToken: Joi.string().allow("").required(), + }); + } + + static InitialData() { + return Joi.object({ + userId: Joi.string().allow("").required(), + + entityId: Joi.string().allow("").required(), + }); + } + + static ExecutePolicyRequest() { + return Joi.object({ + policyFilters: this.GetPolicyFilters(), + + initialData: this.InitialData().required(), + }); + } + + static ExecutePolicyRequest2() { + return Joi.object({ + policyFilters: this.GetPolicyFilters2(), + + initialData: this.InitialData().required(), + }); + } + + static RegisterGstRequest() { + return Joi.object({ + gstTin: Joi.string().allow("").required(), + }); + } + + static PopulateFormRequest() { + return Joi.object({ + form: Joi.any().required(), + + lenderId: Joi.string().allow(""), + + merchantId: Joi.string().allow(""), + }); + } + + static ValidateFormFieldRequest() { + return Joi.object({ + workflowName: Joi.string().allow("").required(), + + userId: Joi.string().allow(""), + + entityId: Joi.string().allow(""), + + entityMapId: Joi.string().allow(""), + + lenderId: Joi.string().allow(""), + + merchantId: Joi.string().allow(""), + + fields: Joi.any().required(), + }); + } + + static MerchantMetricFilter() { + return Joi.object({ + type: Joi.string().allow("").required(), + + display: Joi.string().allow("").required(), + + value: Joi.array().items(Joi.any()).required(), + + isSelected: Joi.boolean(), + + isActive: Joi.boolean(), + }); + } + + static LenderCustomerMetricsRequest() { + return Joi.object({ + sort: Joi.array().items(this.MerchantMetricFilter()), + + filters: Joi.array().items(this.MerchantMetricFilter()), + + merchantId: Joi.string().allow(""), + + lenderId: Joi.string().allow(""), + + pivotPoints: Joi.number(), + }); + } + + static StonewallCustomer() { + return Joi.object({ + mobile: Joi.string().allow(""), + + uid: Joi.string().allow(""), + }); + } + + static GetLimitRequest() { + return Joi.object({ + lenderSlugs: Joi.array().items(Joi.any()), + + onlyDefaultLender: Joi.boolean(), + + customer: this.StonewallCustomer().required(), + }); + } + + static DocumentObject() { + return Joi.object({ + id: Joi.string().allow(""), + + userId: Joi.string().allow(""), + + name: Joi.string().allow(""), + + imageUrl: Joi.string().allow(""), + + number: Joi.string().allow("").required(), + + detail: Joi.any().required(), + + valid: Joi.boolean(), + + entityId: Joi.string().allow(""), + }); + } + + static ManualKycRequest() { + return Joi.object({ + remark: Joi.any().required(), + + status: Joi.string().allow("").required(), + + stepId: Joi.string().allow("").required(), + + entityMapId: Joi.string().allow("").required(), + + documentData: this.DocumentObject(), + }); + } + + static RetriggerLenderOnboardRequest() { + return Joi.object({ + stepId: Joi.string().allow("").required(), + + data: Joi.any().required(), + }); + } + + static EntityMapDto() { + return Joi.object({ + id: Joi.string().allow("").required(), + + merchantId: Joi.string().allow(""), + + status: Joi.string().allow(""), + + lenderId: Joi.string().allow("").required(), + + limit: Joi.number(), + + creditType: Joi.string().allow(""), + + userId: Joi.string().allow("").required(), + + entityId: Joi.string().allow("").required(), + }); + } + + static EntityDto() { + return Joi.object({ + id: Joi.string().allow("").required(), + + type: Joi.string().allow(""), + + address: Joi.string().allow(""), + + name: Joi.string().allow(""), + + gender: Joi.string().allow(""), + + dob: Joi.string().allow(""), + + userId: Joi.string().allow("").required(), + }); + } + + static FindDocResponse() { + return Joi.object({ + status: Joi.string().allow("").required(), + + info: Joi.string().allow("").required(), + + number: Joi.string().allow("").required(), + + details: Joi.any(), + + name: Joi.string().allow(""), + }); + } + + static LenderKycStatus() { + return Joi.object({ + status: Joi.string().allow("").required(), + + lenderId: Joi.string().allow(""), + + lenderName: Joi.string().allow(""), + + kycType: Joi.string().allow(""), + }); + } + + static StateResponeDto() { + return Joi.object({ + step: this.UserKycLenderStepMap().required(), + + isStepCompleted: Joi.boolean().required(), + }); + } + + static KycStateMachineDto() { + return Joi.object({ + kycResult: this.UserKycDetail().required(), + + action: this.UserKycLenderStepMap(), + }); + } + + static InitiateKycDto() { + return Joi.object({ + kycType: Joi.string().allow("").required(), + + lenderId: Joi.string().allow("").required(), + + user: Joi.any().required(), + + kycId: Joi.string().allow(""), + + entityRelation: this.EntityMapDto(), + }); + } + + static LenderOnboardDto() { + return Joi.object({ + lender: this.Lender(), + + user: Joi.any().required(), + + userLenderDetail: this.UserLender(), + + payload: this.LenderOnboardRequest().required(), + + entityRelation: this.EntityMapDto(), + + ipAddress: Joi.string().allow("").required(), + + overrideTtl: Joi.boolean(), + }); + } + + static StepDetails() { + return Joi.object({ + name: Joi.string().allow(""), + + description: Joi.string().allow(""), + + iconUrl: Joi.string().allow(""), + + status: Joi.string().allow("").required(), + + step: Joi.string().allow("").required(), + + order: Joi.number().required(), + }); + } + + static OnboardStatusDto() { + return Joi.object({ + onboardStep: Joi.string().allow("").required(), + + onboardingId: Joi.string().allow("").required(), + + status: Joi.string().allow("").required(), + + action: Joi.string().allow("").required(), + + actionStatus: Joi.string().allow("").required(), + + lender: this.Lender().required(), + + navigation: Joi.string().allow(""), + + approvedLimit: Joi.number().required(), + + proposedLimit: Joi.number().required(), + + actionData: Joi.any(), + + steps: Joi.array().items(this.StepDetails()), + + entityId: Joi.string().allow("").required(), + + entityMapId: Joi.string().allow("").required(), + + actionIsForm: Joi.boolean().required(), + + actionForm: this.Form(), + }); + } + + static LenderFilters() { + return Joi.object({ + includeStatus: Joi.array().items(Joi.any()), + + excludeStatus: Joi.array().items(Joi.any()), + + allowDisabledLender: Joi.any(), + }); + } + + static Policy() { + return Joi.object({ + id: Joi.string().allow(""), + + name: Joi.string().allow(""), + + url: Joi.string().allow(""), + + data: Joi.any(), + + version: Joi.string().allow(""), + + active: Joi.boolean(), + + type: Joi.any(), + + index: Joi.number(), + + lenderId: Joi.string().allow(""), + + merchantId: Joi.string().allow(""), + + workflowId: Joi.string().allow(""), + + schemaRef: Joi.array().items(Joi.any()), + + masterVariableRef: Joi.array().items(Joi.any()), + + customVariable: Joi.any(), + + subType: Joi.string().allow(""), + + createdAt: Joi.any(), + + updatedAt: Joi.any(), + + deletedAt: Joi.any(), + }); + } + + static GetKycDocsResponse() { + return Joi.object({ + documents: Joi.array().items(this.FindDocResponse()).required(), + }); + } + + static OrganizationLogosObject() { + return Joi.object({ + id: Joi.string().allow("").required(), + + name: Joi.string().allow("").required(), + + logo: Joi.string().allow("").required(), + + active: Joi.boolean().required(), + }); + } + + static MetricSubTypes() { + return Joi.object({ + date: Joi.string().allow("").required(), + + count: Joi.string().allow(""), + + sum: Joi.string().allow(""), + }); + } + + static MetricTypes() { + return Joi.object({ + pivots: Joi.array().items(this.MetricSubTypes()).required(), + + total: Joi.string().allow(""), + + description: Joi.string().allow("").required(), + + title: Joi.string().allow("").required(), + + valueFormat: Joi.string().allow("").required(), + + logo: Joi.string().allow("").required(), + }); + } + + static BreApprovedUsersResponse() { + return Joi.object({ + data: this.MetricTypes().required(), + }); + } + + static Metrics() { + return Joi.object({ + lenderApprovedUsers: this.MetricTypes().required(), + + breApprovedUsers: this.MetricTypes().required(), + + totalCreditLine: this.MetricTypes().required(), + }); + } + + static MetricData() { + return Joi.object({ + metrics: this.Metrics().required(), + + filters: Joi.array().items(this.MerchantMetricFilter()).required(), + + sort: Joi.array().items(this.MerchantMetricFilter()).required(), + }); + } + + static ApprovedLenders() { + return Joi.object({ + status: Joi.string().allow("").required(), + + lenders: Joi.array().items(this.BreOutput()).required(), + }); + } + + static BreResultStatus() { + return Joi.object({ + status: Joi.string().allow("").required(), + + approvedLenders: Joi.array().items(this.BreOutput()), + }); + } + + static GetAllUserLendersByEnityId() { + return Joi.object({ + entityId: Joi.string().allow("").required(), + + entityMapId: Joi.string().allow("").required(), + + userId: Joi.string().allow("").required(), + + status: Joi.string().allow("").required(), + + lender: this.Lender().required(), + + partnerId: Joi.string().allow(""), + }); + } + + static LenderState() { + return Joi.object({ + id: Joi.string().allow(""), + + name: Joi.string().allow("").required(), + + lenderId: Joi.string().allow("").required(), + + index: Joi.number().required(), + + workflowName: Joi.string().allow("").required(), + + workflowUrl: Joi.string().allow(""), + + active: Joi.boolean().required(), + + createdAt: Joi.string().allow(""), + + updatedAt: Joi.string().allow(""), + + deletedAt: Joi.string().allow(""), + + lender: this.Lender(), + + parentStateId: Joi.string().allow(""), + + ttl: Joi.number().required(), + + displayName: Joi.string().allow(""), + + description: Joi.string().allow(""), + + iconUrl: Joi.string().allow(""), + + isInteractive: Joi.boolean().required(), + + schema: Joi.any(), + }); + } + + static UserLenderState() { + return Joi.object({ + id: Joi.string().allow("").required(), + + lenderStateId: Joi.string().allow("").required(), + + lenderId: Joi.string().allow("").required(), + + userId: Joi.string().allow("").required(), + + status: Joi.string().allow("").required(), + + userLenderId: Joi.string().allow("").required(), + + remark: Joi.string().allow("").required(), + + active: Joi.boolean().required(), + + lenderState: this.LenderState(), + + data: Joi.any(), + + createdAt: Joi.string().allow(""), + + updatedAt: Joi.string().allow(""), + + deletedAt: Joi.string().allow(""), + + entityId: Joi.string().allow(""), + + entityMapId: Joi.string().allow(""), + + updatedBy: Joi.string().allow(""), + }); + } + + static LenderConfig() { + return Joi.object({ + id: Joi.string().allow(""), + + baseUrl: Joi.string().allow("").required(), + + accessToken: Joi.string().allow(""), + + secret: Joi.string().allow(""), + + data: Joi.any().required(), + + lenderId: Joi.string().allow("").required(), + + active: Joi.boolean(), + + createdAt: Joi.string().allow(""), + + updatedAt: Joi.string().allow(""), + + deletedAt: Joi.string().allow(""), + }); + } + + static Pg() { + return Joi.object({ + id: Joi.string().allow("").required(), + + name: Joi.string().allow("").required(), + + active: Joi.boolean().required(), + }); + } + + static LenderPgConfig() { + return Joi.object({ + id: Joi.string().allow(""), + + mid: Joi.string().allow("").required(), + + clientId: Joi.string().allow("").required(), + + secret: Joi.string().allow("").required(), + + lenderId: Joi.string().allow("").required(), + + pgId: Joi.string().allow("").required(), + + active: Joi.boolean().required(), + }); + } + + static FileUploadResponse() { + return Joi.object({ + fileId: Joi.string().allow("").required(), + + name: Joi.string().allow("").required(), + + path: Joi.string().allow("").required(), + + format: Joi.string().allow("").required(), + + size: Joi.number().required(), + + access: Joi.string().allow("").required(), + + tags: Joi.string().allow("").required(), + + metadata: Joi.string().allow("").required(), + + url: Joi.string().allow("").required(), + + thumbnail: Joi.string().allow("").required(), + }); + } + + static PresignedUrl() { + return Joi.object({ + url: Joi.string().allow("").required(), + + fields: Joi.any().required(), + }); + } + + static PresignedUrlV2() { + return Joi.object({ + url: Joi.string().allow("").required(), + + fields: Joi.any().required(), + }); + } + + static LenderDocument() { + return Joi.object({ + id: Joi.string().allow(""), + + lenderId: Joi.string().allow(""), + + type: Joi.string().allow(""), + + document: Joi.any(), + + active: Joi.boolean(), + + createdAt: Joi.string().allow(""), + + updatedAt: Joi.string().allow(""), + + deletedAt: Joi.string().allow(""), + }); + } + + static KycStatusResponse() { + return Joi.object({ + isKycInitiated: Joi.boolean().required(), + + userId: Joi.string().allow("").required(), + + kycStatuses: Joi.array().items(this.LenderKycStatus()).required(), + }); + } + + static WorkflowResponse() { + return Joi.object({ + data: Joi.any(), + }); + } + + static InitiateKycResponse() { + return Joi.object({ + kycResult: this.UserKycDetail().required(), + + action: this.Action().required(), + }); + } + + static UploadDocResponse() { + return Joi.object({ + status: Joi.string().allow("").required(), + + data: Joi.any(), + + remark: Joi.string().allow(""), + + kycResult: this.UserKycDetail().required(), + + action: this.Action().required(), + }); + } + + static LenderOnboardResponse() { + return Joi.object({ + result: this.UserLender().required(), + + action: this.UserLenderState().required(), + + data: Joi.any().required(), + }); + } + + static OnboardingStatusResponse() { + return Joi.object({ + onboardStatuses: Joi.array().items(this.OnboardStatusDto()).required(), + }); + } + + static SignedUrlResponse() { + return Joi.object({ + signedUrl: this.PresignedUrl().required(), + + fileUrl: Joi.string().allow("").required(), + }); + } + + static SignedUrlV2Response() { + return Joi.object({ + signedUrl: this.PresignedUrlV2().required(), + + fileUrl: Joi.string().allow("").required(), + }); + } + + static PresignedUrlV3() { + return Joi.object({ + signedUrl: Joi.string().allow("").required(), + + provider: Joi.any().required(), + }); + } + + static SignedUrlV3Response() { + return Joi.object({ + signedDetails: this.PresignedUrlV3().required(), + + fileUrl: Joi.string().allow("").required(), + }); + } + + static DigilockerLinkResponse() { + return Joi.object({ + authorizationUrl: Joi.string().allow("").required(), + }); + } + + static GetDocumentsResponse() { + return Joi.object({ + documents: Joi.array().items(this.FindDocResponse()).required(), + }); + } + + static ApprovedLendersTransaction() { + return Joi.object({ + name: Joi.string().allow("").required(), + + slug: Joi.string().allow("").required(), + + imageUrl: Joi.string().allow("").required(), + + status: Joi.string().allow("").required(), + + active: Joi.boolean().required(), + + proposedLimit: Joi.number().required(), + + createdAt: Joi.any().required(), + + updatedAt: Joi.any().required(), + + deletedAt: Joi.any(), + + isDefault: Joi.boolean(), + + __headers: Joi.any(), + }); + } + + static ApprovedPossibleLenders() { + return Joi.object({ + limit: Joi.number().required(), + + name: Joi.string().allow("").required(), + + slug: Joi.string().allow("").required(), + + active: Joi.boolean().required(), + + id: Joi.string().allow("").required(), + + theme: this.LenderTheme(), + }); + } + + static AvailableLenders() { + return Joi.object({ + approvedLenders: Joi.array() + .items(this.ApprovedPossibleLenders()) + .required(), + + possibleLenders: Joi.array() + .items(this.ApprovedPossibleLenders()) + .required(), + }); + } + + static CreditLimit() { + return Joi.object({ + availableLimit: Joi.number().required(), + + approvedLimit: Joi.number().required(), + }); + } + + static CreditLimitResponse() { + return Joi.object({ + status: Joi.string().allow("").required(), + + message: Joi.string().allow("").required(), + + action: Joi.boolean().required(), + + credit: this.CreditLimit().required(), + }); + } + + static LenderPgConfigResponse() { + return Joi.object({ + id: Joi.string().allow("").required(), + + mid: Joi.string().allow("").required(), + + clientId: Joi.string().allow("").required(), + + secret: Joi.string().allow("").required(), + + lenderId: Joi.string().allow("").required(), + + pgId: Joi.string().allow("").required(), + + active: Joi.boolean().required(), + + pgName: Joi.string().allow("").required(), + + pgActive: Joi.boolean().required(), + }); + } + + static GetLendersResponse() { + return Joi.object({ + data: Joi.array().items(this.Lender()).required(), + }); + } + + static LenderConfigurationResponse() { + return Joi.object({ + lender: this.Lender().required(), + + lenderPgConfig: this.LenderPgConfig().required(), + + lenderConfig: this.LenderConfig().required(), + + lenderState: Joi.array().items(this.LenderState()).required(), + + lenderKycStepMap: Joi.array().items(this.LenderKycStepMap()).required(), + }); + } + + static UpsertLenderResponse() { + return Joi.object({ + data: Joi.any().required(), + }); + } + + static UpsertLenderConfigResponse() { + return Joi.object({ + data: Joi.any().required(), + }); + } + + static CreateKycStepsSchema() { + return Joi.object({ + data: Joi.array().items(this.LenderKycStepMap()).required(), + }); + } + + static CreatePaymentGatewaySchema() { + return Joi.object({ + data: Joi.array().items(this.LenderPgConfig()).required(), + }); + } + + static CreateLenderStateSchema() { + return Joi.object({ + data: Joi.array().items(this.LenderState()).required(), + }); + } + + static GetAllPaymentGatewaysSchema() { + return Joi.object({ + data: Joi.array().items(this.Pg()).required(), + }); + } + + static PolicyResponse() { + return Joi.object({ + policies: Joi.array().items(this.Policy()).required(), + }); + } + + static CreditCheckBreResponse() { + return Joi.object({ + newLenderAssigned: Joi.boolean().required(), + + breStatus: Joi.string().allow("").required(), + }); + } + + static MerchantConfigResponse() { + return Joi.object({ + id: Joi.string().allow("").required(), + + merhantConfigSchema: Joi.string().allow("").required(), + }); + } + + static UserLenderByIdAndStatusResponse() { + return Joi.object({ + id: Joi.string().allow("").required(), + + userId: Joi.string().allow("").required(), + + lenderId: Joi.string().allow("").required(), + + active: Joi.boolean(), + + status: Joi.string().allow("").required(), + + createdAt: Joi.string().allow("").required(), + + updatedAt: Joi.string().allow("").required(), + + deletedAt: Joi.string().allow(""), + + approvedLimit: Joi.number().required(), + + slug: Joi.string().allow(""), + + theme: this.LenderTheme(), + + name: Joi.any(), + }); + } + + static IntgrAvailableCreditLimit() { + return Joi.object({ + limit: Joi.number().required(), + + lenderName: Joi.string().allow("").required(), + + slug: Joi.string().allow("").required(), + + isDefault: Joi.boolean().required(), + + logoUrl: Joi.string().allow("").required(), + }); + } + + static IngtrAvailableLimit() { + return Joi.object({ + available: Joi.array().items(this.IntgrAvailableCreditLimit()).required(), + }); + } + + static IntgrCreditLimit() { + return Joi.object({ + limit: this.IngtrAvailableLimit().required(), + + __headers: Joi.any(), + }); + } + + static PossibleLendersInternal() { + return Joi.object({ + limit: Joi.boolean().required(), + + lenderName: Joi.string().allow("").required(), + + slug: Joi.string().allow("").required(), + + isDefault: Joi.boolean().required(), + + logo: Joi.string().allow("").required(), + + lenderId: Joi.string().allow("").required(), + }); + } + + static PossibleLendersInternalResponse() { + return Joi.object({ + lenders: Joi.array().items(this.PossibleLendersInternal()).required(), + }); + } + + static GetTotalKycResponse() { + return Joi.object({ + totalKyc: Joi.string().allow("").required(), + }); + } + + static GetTotalKycCompletedUsersResponse() { + return Joi.object({ + totalKycCompletedUsers: Joi.string().allow("").required(), + }); + } + + static GetTotalPendingUsersResponse() { + return Joi.object({ + totalPendingKyc: Joi.string().allow("").required(), + }); + } + + static GetTotalCreditProvidedResponse() { + return Joi.object({ + totalCreditLimit: Joi.string().allow("").required(), + }); + } + + static MetaSchemaResponse() { + return Joi.object({ + title: Joi.string().allow("").required(), + + name: Joi.string().allow("").required(), + + required: Joi.array().items(Joi.string().allow("")).required(), + + type: Joi.string().allow("").required(), + + properties: Joi.any().required(), + }); + } + + static MetaSchema() { + return Joi.object({ + metaSchema: this.MetaSchemaResponse().required(), + }); + } + + static AddMetaSchema() { + return Joi.object({ + lenderSlug: Joi.string().allow("").required(), + + merchantId: Joi.string().allow("").required(), + + schema: Joi.any().required(), + }); + } + + static AddMetaSchemaRequest() { + return Joi.object({ + merchantId: Joi.string().allow("").required(), + + schema: Joi.any().required(), + }); + } + + static ValidatePanResponse() { + return Joi.object({ + panName: Joi.string().allow("").required(), + + isPanValid: Joi.string().allow("").required(), + + pan: Joi.string().allow("").required(), + + isProprietor: Joi.boolean().required(), + + panType: Joi.string().allow("").required(), + + errorCode: Joi.string().allow(""), + + status: Joi.string().allow(""), + + errorMessage: Joi.string().allow(""), + }); + } + + static ConfirmPanResonse() { + return Joi.object({ + status: Joi.string().allow("").required(), + + statusCode: Joi.string().allow("").required(), + + message: Joi.string().allow("").required(), + }); + } + + static LenderCountResponse() { + return Joi.object({ + active: Joi.number().required(), + + inActive: Joi.number().required(), + }); + } + + static OnboardStepsDto() { + return Joi.object({ + steps: Joi.array().items(this.StepDetails()).required(), + + lender: this.Lender().required(), + }); + } + + static OnboardStepsResponse() { + return Joi.object({ + stepDetails: Joi.array().items(this.OnboardStepsDto()).required(), + }); + } + + static LenderDocumentResponse() { + return Joi.object({ + data: this.LenderDocument().required(), + }); + } + + static GetUserLendersResponse() { + return Joi.object({ + data: Joi.array().items(this.UserLender()).required(), + }); + } + + static CreditReportResponse() { + return Joi.object({ + data: this.SourceCreditReport().required(), + }); + } + + static KycDetailsReponse() { + return Joi.object({ + data: this.UserKycLenderStepMap().required(), + }); + } + + static GetDocumentByIdResponse() { + return Joi.object({ + data: this.Document().required(), + }); + } + + static GetAllFormsResponse() { + return Joi.object({ + data: Joi.any().required(), + }); + } + + static UpsertFormResponse() { + return Joi.object({ + data: Joi.any().required(), + }); + } + + static GstDetails() { + return Joi.object({ + gstTin: Joi.string().allow("").required(), + + businessName: Joi.string().allow("").required(), + }); + } + + static GstDetailsResponse() { + return Joi.object({ + gstDetails: Joi.array().items(this.GstDetails()).required(), + }); + } + + static RegisterGstResponse() { + return Joi.object({ + gstDocDetails: this.Document().required(), + + status: Joi.string().allow("").required(), + }); + } + + static PopulateFormResponse() { + return Joi.object({ + form: Joi.any().required(), + }); + } + + static ValidateFormFieldResponse() { + return Joi.object({ + status: Joi.string().allow("").required(), + + message: Joi.string().allow("").required(), + + data: Joi.any().required(), + }); + } + + static LenderCustomerMetricsResponse() { + return Joi.object({ + status: Joi.string().allow("").required(), + + message: Joi.string().allow("").required(), + + data: this.MetricData().required(), + }); + } + + static ManualKycResponse() { + return Joi.object({ + message: Joi.string().allow("").required(), + + step: this.UserKycLenderStepMap().required(), + }); + } + + static BreOutput() { + return Joi.object({ + id: Joi.string().allow("").required(), + + userId: Joi.string().allow("").required(), + + entityId: Joi.string().allow("").required(), + + lenderId: Joi.string().allow(""), + + merchantId: Joi.string().allow(""), + + policyName: Joi.string().allow("").required(), + + category: Joi.string().allow("").required(), + + type: Joi.string().allow("").required(), + + output: Joi.any().required(), + + status: Joi.string().allow("").required(), + + createdAt: Joi.string().allow("").required(), + + updatedAt: Joi.string().allow("").required(), + + deletedAt: Joi.string().allow("").required(), + }); + } + + static CustomerKycDetailsReponse() { + return Joi.object({ + data: this.UserKycLenderStepMap().required(), + }); + } +} + +module.exports = {}; diff --git a/sdk/platform/PlatformClient.d.ts b/sdk/platform/PlatformClient.d.ts new file mode 100644 index 0000000..20784a0 --- /dev/null +++ b/sdk/platform/PlatformClient.d.ts @@ -0,0 +1,4766 @@ +export = PlatformClient; +declare class PlatformClient { + constructor(config: any); + config: any; + customer: Customer; + credit: Credit; + multiKyc: MultiKyc; + application(applicationId: any): PlatformApplicationClient; + setExtraHeaders(header: any): void; +} +declare namespace PlatformClient { + export { UserSchema, count, FilterByDate, LenderCount, LenderSchema, TotalUsersPerLender, TotalUsersPerLenderData, TotalUserByLender, UsersByLender, ErrorResponse, EditProfileRequest, VerifyOtpRequest, SendMobileOtpRequest, ReSendMobileOtpRequest, SendOtpRequest, ApplicationUser, SendOtpResponse, EmailUpdate, UserUpdateRequest, LenderUpdateRequest, ProfileEditSuccess, LoginSuccess, VerifyOtpSuccess, LogoutSuccess, OtpSuccess, SessionListSuccess, VerifyMobileOTPSuccess, Location, OrderAddress, CustomerObject, Order, OrderUid, CustomerMeta, Device, VerifyCustomer, CreateTransaction, ResendPaymentRequest, VerifyCustomerSuccess, CreateTransactionSuccess, SupportDocuments, CreateTicketResponse, CreateTicket, InitiateTransactions, GetMobileFromToken, GetDataFromToken, MerchantDetails, InitiateTransactionsSuccess, RetrieveMobileFromToken, CreateDashboardTemplateRequest, TemplateSections, TemplateComponent, PartnerApplications, Offerings, Banners, Tips, DashboardTemplateResponse, SectionSchema, PartnerApplicationsResponse, OfferingsResponse, BannersResponse, TipsSection, TipsResponse, TipsCategories, ActionSchema, UpdateDashboardTemplateRequest, UpdateTemplateSections, UpdateTemplateComponent, UpdatePartnerApplications, UpdateOfferings, UpdateBanners, UpdateTips, NavigationsMobileResponse, TabsSchema, PageSchema, ProfileSectionSchema, ProfileNavigationSchema, SendPNSRegisterRequest, PNSRegisterResponse, FaqResponse, CategorySchema, QuestionSchema, SupportCategories, SupportCategoriesResponse, SanctionLetterResponse, KfsDocumentResponse, UserWhiteListedResponse, UserConsentRequest, Consents, UserConsentRequestV2, UserConsentResponse, UserKycSteps, CreateKycStepRequest, RemoveKycStepRequest, KycUpdateMessage, MobileFromLinkingRequest, MobileFromLinkingResponse, SessionFromLinkingRequest, SessionFromLinkingResponse, LinkAccount, LinkAccountSuccess, UnlinkAccount, UnlinkAccountSuccess, Refund, Translation, FilterKeys, FilterValues, Filters, PageResponse, UserResponse, UserDetailRequest, UserConsents, CreditScoreSchema, CreditLimitSchema, Screen, UserStateSchema, GetAccessTokenResponse, RefreshTokenResponse, RefreshTokenRequest, Items, RefundStatusList, RefundStatus, CustomerMetricsPivots, CustomerMetricsSubResponse, CustomerMetricsAnalytics, CustomerMetricsFilters, CustomerMetrics, CustomerMetricsResponse, CustomerMetricsRequest, SourceAnalyticsRequest, LenderResponse, CreditLimitObject, BusinessDetails, DocumentItems, VintageItems, EligibilitySuccess, CheckEligibilityRequest, GetSchemesSuccess, DisbursalRequest, WorkflowUser, EligiblePlansRequest, EligiblePlans, EligiblePlansResponse, DisbursalResponse, OrderStatus, DisbursalStatusRequest, Transactions, LenderDetail, TransactionResponse, MerchantTransactions, MerchantTransactionSummary, GetReconciliationFileResponse, ReconFile, UploadReconciliationFileRequest, UploadReconciliationFileResponse, TransactionCount, RefundCount, OrganizationTransactionsCount, OrganizationTransactionsSum, UniqueCustomersInOrg, TransactionAmount, SchemaForOneDayTotal, SumofOneDayTransactions, AverageTransaction, AllTransactionsResponse, TotalRefund, TotalRepayment, TotalOverDue, TotalLoansDisbursed, OrganizationTransactionResponse, TrFilters, TrPageResponse, OrgTransactions, TrFilterKeys, TrFilterValues, KfsRequest, KfsResponse, LenderTransactionState, TransactionStateResponse, Theme, Emi, MetricPivots, TransactionMetricSubResponse, TransactionMetrics, LenderCustomerTransactionMetricsFilters, LenderCustomerTransactionMetrics, LenderCustomerTransactionMetricsResponse, LenderCustomerTransactionMetricsRequest, LenderTheme, Lender, UserLender, SourceCreditReport, Document, UserKycDetail, Form, LenderKycStepMap, UserKycLenderStepMap, ProofOfIdentity, ProofOfAddress, EAadhaarData, Consent, ValidatePanRequest, BankDetails, DocumentData, ConfirmPanRequest, LivelinessDetails, UploadDocumentRequest, UploadDocumentRequestV1, UploadDocumentRequestV3, AadhaarRequest, UploadAadhaarRequest, UploadLivelinessRequest, UploadAadhaarRequestV1, UploadLivelinessRequestV1, UploadAadhaarRequestV2, UploadLivelinessRequestV2, UploadAadhaarRequestV3, UploadLivelinessRequestV3, UploadBankDetailsRequest, InitiateKycRequest, InitiateKycRequestV1, LenderOnboardRequest, UpdateLenderStatusRequest, UpdateProfileRequest, UpdateEntityRequest, CreateKycStepsRequest, CreateLenderPgConfigRequest, CreateLenderStateRequest, UpdateLenderRequest, OtherPolicyFilters, GetPolicyFilters, GetPolicyFilters2, MerchantConfigRequest, PanDetails, AvailableLendersRequest, InitialData, ExecutePolicyRequest, ExecutePolicyRequest2, RegisterGstRequest, PopulateFormRequest, ValidateFormFieldRequest, MerchantMetricFilter, LenderCustomerMetricsRequest, StonewallCustomer, GetLimitRequest, DocumentObject, ManualKycRequest, RetriggerLenderOnboardRequest, EntityMapDto, EntityDto, FindDocResponse, LenderKycStatus, StateResponeDto, KycStateMachineDto, InitiateKycDto, LenderOnboardDto, StepDetails, OnboardStatusDto, LenderFilters, Policy, GetKycDocsResponse, OrganizationLogosObject, MetricSubTypes, MetricTypes, BreApprovedUsersResponse, Metrics, MetricData, ApprovedLenders, BreResultStatus, GetAllUserLendersByEnityId, LenderState, UserLenderState, LenderConfig, Pg, LenderPgConfig, FileUploadResponse, PresignedUrl, PresignedUrlV2, LenderDocument, KycStatusResponse, WorkflowResponse, InitiateKycResponse, UploadDocResponse, LenderOnboardResponse, OnboardingStatusResponse, SignedUrlResponse, SignedUrlV2Response, PresignedUrlV3, SignedUrlV3Response, DigilockerLinkResponse, GetDocumentsResponse, ApprovedLendersTransaction, ApprovedPossibleLenders, AvailableLenders, CreditLimit, CreditLimitResponse, LenderPgConfigResponse, GetLendersResponse, LenderConfigurationResponse, UpsertLenderResponse, UpsertLenderConfigResponse, CreateKycStepsSchema, CreatePaymentGatewaySchema, CreateLenderStateSchema, GetAllPaymentGatewaysSchema, PolicyResponse, CreditCheckBreResponse, MerchantConfigResponse, UserLenderByIdAndStatusResponse, IntgrAvailableCreditLimit, IngtrAvailableLimit, IntgrCreditLimit, PossibleLendersInternal, PossibleLendersInternalResponse, GetTotalKycResponse, GetTotalKycCompletedUsersResponse, GetTotalPendingUsersResponse, GetTotalCreditProvidedResponse, MetaSchemaResponse, MetaSchema, AddMetaSchema, AddMetaSchemaRequest, ValidatePanResponse, ConfirmPanResonse, LenderCountResponse, OnboardStepsDto, OnboardStepsResponse, LenderDocumentResponse, GetUserLendersResponse, CreditReportResponse, KycDetailsReponse, GetDocumentByIdResponse, GetAllFormsResponse, UpsertFormResponse, GstDetails, GstDetailsResponse, RegisterGstResponse, PopulateFormResponse, ValidateFormFieldResponse, LenderCustomerMetricsResponse, ManualKycResponse, BreOutput, CustomerKycDetailsReponse }; +} +/** + * @typedef UserSchema + * @property {string} [id] + * @property {string} [firstName] + * @property {string} [lastName] + * @property {string} [countryCode] + * @property {string} [mobile] + * @property {string} [email] + * @property {string} [gender] + * @property {string} [dob] + * @property {boolean} [active] + * @property {string} [profilePicUrl] + * @property {boolean} [isEmailVerified] + * @property {string} [createdAt] + * @property {string} [updatedAt] + * @property {string} [deletedAt] + */ +/** + * @typedef count + * @property {string} [totalUsers] + */ +/** + * @typedef FilterByDate + * @property {string} [startDate] + * @property {string} [endDate] + */ +/** + * @typedef LenderCount + * @property {string} [totalLenders] + */ +/** + * @typedef LenderSchema + * @property {string} [id] + * @property {string} [name] + * @property {boolean} [active] + * @property {string} [createdAt] + * @property {string} [updatedAt] + * @property {string} [deletedAt] + */ +/** + * @typedef TotalUsersPerLender + * @property {Filters[]} filters + * @property {PageResponse} page + * @property {TotalUsersPerLenderData[]} lenderList + */ +/** + * @typedef TotalUsersPerLenderData + * @property {string} [id] + * @property {string} [name] + * @property {boolean} [active] + * @property {string} [createdAt] + * @property {string} [updatedAt] + * @property {string} [deletedAt] + * @property {string} [totalUsers] + */ +/** + * @typedef TotalUserByLender + * @property {string} [name] + * @property {string} [count] + */ +/** + * @typedef UsersByLender + * @property {string} [firstName] + * @property {string} [lastName] + * @property {string} [mobile] + * @property {string} [email] + * @property {string} [name] + */ +/** + * @typedef ErrorResponse + * @property {string} [message] + * @property {string} [info] + * @property {string} [code] + * @property {string} [requestId] + * @property {Object} [meta] + */ +/** + * @typedef EditProfileRequest + * @property {string} [firstName] + * @property {string} [lastName] + * @property {string} [countryCode] + * @property {string} [mobile] + * @property {string} [email] + * @property {string} [gender] + * @property {string} [dob] + * @property {string} [registrationToken] + */ +/** + * @typedef VerifyOtpRequest + * @property {string} requestId + * @property {string} otp + * @property {string} [captchaCode] + * @property {string} [androidHash] + * @property {string} [referralCode] + * @property {string} [onboardingToken] + */ +/** + * @typedef SendMobileOtpRequest + * @property {string} countryCode + * @property {string} mobile + * @property {string} [captchaCode] + * @property {string} [androidHash] + * @property {string} [force] + */ +/** + * @typedef ReSendMobileOtpRequest + * @property {string} [captchaCode] + * @property {string} token + * @property {string} [androidHash] + */ +/** + * @typedef SendOtpRequest + * @property {string} [countryCode] + * @property {string} [captchaCode] + * @property {string} [mobile] + */ +/** + * @typedef ApplicationUser + * @property {UserSchema} [user] + */ +/** + * @typedef SendOtpResponse + * @property {number} [resendTimer] + * @property {string} [resendToken] + * @property {boolean} [success] + * @property {string} [requestId] + * @property {string} [message] + * @property {string} [mobile] + * @property {string} [countryCode] + * @property {string} [email] + * @property {string} [resendEmailToken] + * @property {string} [registerToken] + * @property {boolean} [verifyEmailOtp] + * @property {boolean} [verifyMobileOtp] + * @property {boolean} [userExists] + */ +/** + * @typedef EmailUpdate + * @property {string} [email] + */ +/** + * @typedef UserUpdateRequest + * @property {Object} [firstName] + * @property {Object} [lastName] + * @property {string} countryCode + * @property {string} mobile + * @property {Object} [email] + * @property {Object} [gender] + * @property {Object} [dob] + * @property {boolean} [active] + * @property {Object} [profilePictureUrl] + * @property {boolean} [isEmailVerified] + */ +/** + * @typedef LenderUpdateRequest + * @property {string} id + * @property {string} [name] + * @property {boolean} [active] + */ +/** + * @typedef ProfileEditSuccess + * @property {UserSchema} [user] + * @property {string} [registerToken] + * @property {string} [resendEmailToken] + * @property {boolean} [userExists] + * @property {boolean} [verifyEmailLink] + * @property {boolean} [verifyEmailOtp] + * @property {boolean} [verifyMobileOtp] + * @property {string} [email] + * @property {string} [requestId] + * @property {string} [countryCode] + * @property {string} [mobile] + * @property {boolean} [success] + * @property {string} [message] + * @property {number} [resendTimer] + * @property {string} [resendToken] + */ +/** + * @typedef LoginSuccess + * @property {UserSchema} [user] + * @property {string} [requestId] + * @property {string} [registerToken] + */ +/** + * @typedef VerifyOtpSuccess + * @property {UserSchema} [user] + * @property {boolean} [userExists] + * @property {boolean} [isNew] + */ +/** + * @typedef LogoutSuccess + * @property {boolean} [logout] + */ +/** + * @typedef OtpSuccess + * @property {number} [resendTimer] + * @property {string} [resendToken] + * @property {string} [registerToken] + * @property {boolean} [success] + * @property {string} [requestId] + * @property {string} [message] + * @property {string} [mobile] + * @property {boolean} [isNew] + * @property {string} [countryCode] + * @property {number} [otpLength] + */ +/** + * @typedef SessionListSuccess + * @property {string[]} [sessions] + */ +/** + * @typedef VerifyMobileOTPSuccess + * @property {UserSchema} [user] + */ +/** + * @typedef Location + * @property {number} [latitude] + * @property {number} [longitude] + */ +/** + * @typedef OrderAddress + * @property {string} [line1] + * @property {string} [line2] + * @property {string} [city] + * @property {string} [state] + * @property {string} [country] + * @property {string} [pincode] + * @property {string} [type] + * @property {Location} [geoLocation] + */ +/** + * @typedef CustomerObject + * @property {string} [countryCode] + * @property {string} mobile + * @property {string} uid + * @property {string} [email] + * @property {string} [firstname] + * @property {string} [middleName] + * @property {string} [lastName] + */ +/** + * @typedef Order + * @property {number} valueInPaise + * @property {string} uid + * @property {number} [emiTenure] + * @property {Items[]} [items] + * @property {OrderAddress} [shippingAddress] + * @property {OrderAddress} [billingAddress] + */ +/** + * @typedef OrderUid + * @property {number} [valueInPaise] + * @property {string} uid + * @property {Items[]} [items] + * @property {OrderAddress} [shippingAddress] + * @property {OrderAddress} [billingAddress] + */ +/** + * @typedef CustomerMeta + * @property {string} ip + * @property {string} appVersion + * @property {string} [appIdentifier] + * @property {string} [customerUserAgent] + * @property {string} deviceId + */ +/** + * @typedef Device + * @property {string} ipAddress + * @property {string} userAgent + * @property {number} [latitude] + * @property {number} [longitude] + */ +/** + * @typedef VerifyCustomer + * @property {CustomerObject} customer + * @property {Order} order + * @property {Device} device + * @property {Object} [meta] + * @property {boolean} [fetchLimitOptions] + */ +/** + * @typedef CreateTransaction + * @property {boolean} [autoCapture] + * @property {string} redirectUrl + * @property {CustomerObject} customer + * @property {Order} order + * @property {Device} device + * @property {Object} [meta] + */ +/** + * @typedef ResendPaymentRequest + * @property {boolean} [autoCapture] + * @property {string} [redirectUrl] + * @property {CustomerObject} customer + * @property {OrderUid} order + */ +/** + * @typedef VerifyCustomerSuccess + * @property {string} [status] + * @property {string} [userStatus] + * @property {string} [message] + * @property {Object} [__headers] + */ +/** + * @typedef CreateTransactionSuccess + * @property {string} [chargeToken] + * @property {string} [redirectUrl] + * @property {string} message + * @property {string} [transactionId] + * @property {string} [status] + * @property {string} [userStatus] + * @property {Object} [__headers] + */ +/** + * @typedef SupportDocuments + * @property {string} [fileName] + * @property {string} [fileUrl] + */ +/** + * @typedef CreateTicketResponse + * @property {string} [serviceRequestId] + * @property {string} [message] + */ +/** + * @typedef CreateTicket + * @property {string} category + * @property {string} [transactionId] + * @property {string} description + * @property {SupportDocuments[]} [documents] + */ +/** + * @typedef InitiateTransactions + * @property {string} token + */ +/** + * @typedef GetMobileFromToken + * @property {string} token + */ +/** + * @typedef GetDataFromToken + * @property {string} token + */ +/** + * @typedef MerchantDetails + * @property {string} [name] + * @property {string} [website] + * @property {string} [logo] + */ +/** + * @typedef InitiateTransactionsSuccess + * @property {string} chargeToken + * @property {string} [session] + * @property {string} [expiry] + * @property {string} [hash] + * @property {Order} [order] + * @property {boolean} [isAsp] + * @property {MerchantDetails} [merchant] + */ +/** + * @typedef RetrieveMobileFromToken + * @property {string} countryCode + * @property {string} mobile + */ +/** + * @typedef CreateDashboardTemplateRequest + * @property {string} name + * @property {string} version + * @property {boolean} [isDefault] + * @property {TemplateSections[]} sections + */ +/** + * @typedef TemplateSections + * @property {number} sequence + * @property {boolean} isAvailableInMobile + * @property {boolean} isAvailableInDesktop + * @property {TemplateComponent} component + */ +/** + * @typedef TemplateComponent + * @property {string} name + * @property {string} description + * @property {boolean} [isAvailableInDesktop] + * @property {PartnerApplications[]} [partnerApplications] + * @property {Banners[]} [banners] + * @property {Tips[]} [tips] + */ +/** + * @typedef PartnerApplications + * @property {string} name + * @property {string} [description] + * @property {string} [urlPath] + * @property {string} [urlTarget] + * @property {string} imageUrl + * @property {number} [sequence] + */ +/** + * @typedef Offerings + * @property {string} name + * @property {string} [description] + * @property {string} [urlPath] + * @property {string} [urlTarget] + * @property {string} imageUrl + * @property {number} [sequence] + * @property {string[]} gradient + */ +/** + * @typedef Banners + * @property {string} imageUrl + * @property {ActionSchema} [action] + */ +/** + * @typedef Tips + * @property {string} [name] + * @property {string} [description] + * @property {string} urlPath + * @property {string} [urlTarget] + * @property {string} [imageUrl] + * @property {number} [sequence] + */ +/** + * @typedef DashboardTemplateResponse + * @property {string} [id] + * @property {string} [name] + * @property {string} [version] + * @property {boolean} [active] + * @property {SectionSchema[]} sections + */ +/** + * @typedef SectionSchema + * @property {string} type + * @property {string} [title] + * @property {string} [description] + * @property {PartnerApplicationsResponse[]} [partners] + * @property {BannersResponse[]} [banners] + * @property {TipsResponse[]} [tips] + */ +/** + * @typedef PartnerApplicationsResponse + * @property {string} [id] + * @property {string} name + * @property {string} [description] + * @property {ActionSchema} action + * @property {string} imageUrl + */ +/** + * @typedef OfferingsResponse + * @property {string} [id] + * @property {string} name + * @property {string} [description] + * @property {ActionSchema} action + * @property {string} imageUrl + * @property {string[]} gradient + */ +/** + * @typedef BannersResponse + * @property {ActionSchema} [action] + * @property {string} imageUrl + */ +/** + * @typedef TipsSection + * @property {TipsResponse[]} [tips] + * @property {TipsCategories[]} [categories] + * @property {ActionSchema} [action] + */ +/** + * @typedef TipsResponse + * @property {string} [name] + * @property {string} [category] + * @property {string} [description] + * @property {ActionSchema} action + * @property {string} [imageUrl] + */ +/** + * @typedef TipsCategories + * @property {string} id + * @property {string} title + */ +/** + * @typedef ActionSchema + * @property {string} [type] + * @property {PageSchema} [page] + * @property {PageSchema} [popup] + */ +/** + * @typedef UpdateDashboardTemplateRequest + * @property {string} id + * @property {string} [name] + * @property {string} [version] + * @property {boolean} [isDefault] + * @property {boolean} [active] + * @property {UpdateTemplateSections[]} [sections] + */ +/** + * @typedef UpdateTemplateSections + * @property {string} id + * @property {number} [sequence] + * @property {boolean} [isAvailableInMobile] + * @property {boolean} [isAvailableInDesktop] + * @property {boolean} [active] + * @property {UpdateTemplateComponent} [component] + */ +/** + * @typedef UpdateTemplateComponent + * @property {string} id + * @property {string} [name] + * @property {string} [description] + * @property {boolean} [isAvailableInDesktop] + * @property {boolean} [active] + * @property {UpdatePartnerApplications[]} [partners] + * @property {UpdateBanners[]} [banners] + * @property {UpdateTips[]} [tips] + */ +/** + * @typedef UpdatePartnerApplications + * @property {string} id + * @property {string} [name] + * @property {string} [description] + * @property {Object} [action] + * @property {string} [imageUrl] + * @property {number} [sequence] + * @property {boolean} [active] + */ +/** + * @typedef UpdateOfferings + * @property {string} id + * @property {string} [name] + * @property {string} [description] + * @property {string} [urlPath] + * @property {string} [urlTarget] + * @property {string} [imageUrl] + * @property {number} [sequence] + * @property {string[]} [gradient] + */ +/** + * @typedef UpdateBanners + * @property {string} id + * @property {string} [imageUrl] + * @property {Object} [action] + * @property {number} [sequence] + * @property {boolean} [active] + */ +/** + * @typedef UpdateTips + * @property {string} id + * @property {string} [name] + * @property {string} [description] + * @property {string} [imageUrl] + * @property {Object} [action] + * @property {number} [sequence] + * @property {boolean} [active] + */ +/** + * @typedef NavigationsMobileResponse + * @property {TabsSchema[]} tabs + * @property {ProfileSectionSchema[]} profileSections + */ +/** + * @typedef TabsSchema + * @property {string} title + * @property {PageSchema} page + * @property {string} icon + * @property {string} activeIcon + * @property {boolean} active + */ +/** + * @typedef PageSchema + * @property {string} [link] + * @property {PageType} [type] + * @property {Object} [params] + * @property {Object} [query] + */ +/** + * @typedef ProfileSectionSchema + * @property {string} title + * @property {ProfileNavigationSchema[]} navigations + * @property {boolean} active + */ +/** + * @typedef ProfileNavigationSchema + * @property {string} title + * @property {string} [description] + * @property {string} icon + * @property {string} type + * @property {ActionSchema} [action] + * @property {boolean} [active] + */ +/** + * @typedef SendPNSRegisterRequest + * @property {string} deviceId + * @property {string} deviceType + * @property {string} token + */ +/** + * @typedef PNSRegisterResponse + * @property {boolean} [status] + * @property {string} [message] + */ +/** + * @typedef FaqResponse + * @property {CategorySchema[]} [categories] + */ +/** + * @typedef CategorySchema + * @property {string} uid + * @property {string} [title] + * @property {string} [description] + * @property {string} [logo] + * @property {QuestionSchema[]} [questions] + */ +/** + * @typedef QuestionSchema + * @property {string} uid + * @property {string} [title] + * @property {string} [description] + * @property {number} [displayOrder] + * @property {boolean} [canRaiseRequest] + */ +/** + * @typedef SupportCategories + * @property {string} [kind] + * @property {string} [display] + */ +/** + * @typedef SupportCategoriesResponse + * @property {SupportCategories[]} [categories] + */ +/** + * @typedef SanctionLetterResponse + * @property {string} sanctionedLetterFileUrl + */ +/** + * @typedef KfsDocumentResponse + * @property {string} kfsFileUrl + */ +/** + * @typedef UserWhiteListedResponse + * @property {string} [status] + */ +/** + * @typedef UserConsentRequest + * @property {string[]} [consents] + */ +/** + * @typedef Consents + * @property {string} [type] + * @property {string} [text] + */ +/** + * @typedef UserConsentRequestV2 + * @property {Consents[]} [consents] + */ +/** + * @typedef UserConsentResponse + * @property {boolean} [success] + */ +/** + * @typedef UserKycSteps + * @property {string} [id] + * @property {string} [index] + * @property {string} [name] + * @property {Object} [rules] + * @property {boolean} [active] + * @property {string} [createdAt] + * @property {string} [updatedAt] + * @property {string} [deletedAt] + */ +/** + * @typedef CreateKycStepRequest + * @property {string} name + * @property {string} index + * @property {boolean} active + * @property {Object} [rules] + */ +/** + * @typedef RemoveKycStepRequest + * @property {string} [name] + * @property {string} index + * @property {boolean} [active] + * @property {Object} [rules] + */ +/** + * @typedef KycUpdateMessage + * @property {string} [message] + */ +/** + * @typedef MobileFromLinkingRequest + * @property {string} token + */ +/** + * @typedef MobileFromLinkingResponse + * @property {string} countryCode + * @property {string} mobile + */ +/** + * @typedef SessionFromLinkingRequest + * @property {string} token + */ +/** + * @typedef SessionFromLinkingResponse + * @property {string} session + * @property {number} expiry + */ +/** + * @typedef LinkAccount + * @property {CustomerObject} customer + * @property {string} redirectUrl + * @property {Device} device + */ +/** + * @typedef LinkAccountSuccess + * @property {string} [redirectUrl] + * @property {number} [statusCode] + * @property {string} [status] + * @property {string} [message] + * @property {string} [errorCode] + * @property {Object} [__headers] + */ +/** + * @typedef UnlinkAccount + * @property {CustomerObject} customer + * @property {Device} device + */ +/** + * @typedef UnlinkAccountSuccess + * @property {string} status + * @property {string} message + * @property {number} statusCode + * @property {string} [userStatus] + * @property {string} [errorCode] + * @property {Object} [__headers] + */ +/** + * @typedef Refund + * @property {string} [fingerprint] + * @property {CustomerObject} customer + * @property {Items[]} [refundItems] + * @property {string} orderId + * @property {string} refundId + * @property {number} refundAmount + */ +/** + * @typedef Translation + * @property {Object} [content] + */ +/** + * @typedef FilterKeys + * @property {string} [display] + * @property {string} [name] + * @property {string} [kind] + */ +/** + * @typedef FilterValues + * @property {string} [display] + * @property {boolean} [isSelected] + * @property {string} [value] + */ +/** + * @typedef Filters + * @property {FilterKeys} [key] + * @property {FilterValues[]} [values] + */ +/** + * @typedef PageResponse + * @property {string} type + * @property {number} current + * @property {boolean} hasPrevious + * @property {boolean} hasNext + * @property {number} size + * @property {number} itemTotal + */ +/** + * @typedef UserResponse + * @property {Filters[]} filters + * @property {PageResponse} page + * @property {UserSchema[]} listOfUsers + */ +/** + * @typedef UserDetailRequest + * @property {string} id + */ +/** + * @typedef UserConsents + * @property {string} [id] + * @property {string} [userId] + * @property {string} [ipAddress] + * @property {string} [text] + * @property {string} [createdAt] + * @property {string} [updatedAt] + * @property {string} [deletedAt] + */ +/** + * @typedef CreditScoreSchema + * @property {string} [id] + * @property {string} [userId] + * @property {number} [cibil] + * @property {string} [finbox] + * @property {string} [systemAwarded] + * @property {boolean} [isActive] + * @property {string} [deletedAt] + * @property {string} [updatedAt] + * @property {string} [createdAt] + */ +/** + * @typedef CreditLimitSchema + * @property {string} [id] + * @property {string} [userId] + * @property {string} [creditLimit] + * @property {string} [createdAt] + * @property {string} [updatedAt] + * @property {string} [deletedAt] + */ +/** + * @typedef Screen + * @property {string} [screenType] + * @property {string} [name] + * @property {string} [link] + */ +/** + * @typedef UserStateSchema + * @property {Screen} [screen] + */ +/** + * @typedef GetAccessTokenResponse + * @property {boolean} [success] + * @property {string} [accessToken] + * @property {string} [refreshToken] + * @property {string} [tokenExpireAt] + * @property {string} [tokenExpiryIn] + * @property {string} [refreshTokenExpiryAt] + * @property {string} [refreshTokenExpiryIn] + * @property {string[]} [scope] + * @property {Object} [__headers] + */ +/** + * @typedef RefreshTokenResponse + * @property {boolean} [success] + * @property {string} [accessToken] + * @property {string} [tokenExpireAt] + * @property {string} [tokenExpiryIn] + * @property {Object} [__headers] + */ +/** + * @typedef RefreshTokenRequest + * @property {string} token + */ +/** + * @typedef Items + * @property {string} [category] + * @property {string} [sku] + * @property {number} [rate] + * @property {number} [quantity] + */ +/** + * @typedef RefundStatusList + * @property {string} [id] + * @property {Items[]} [orderItems] + * @property {number} [amount] + * @property {string} [status] + * @property {string} [createdAt] + * @property {string} [processedDate] + */ +/** + * @typedef RefundStatus + * @property {string} [orderId] + * @property {string} [userId] + * @property {string} [merchantId] + * @property {string} [lenderId] + * @property {string} [loanAccountNumber] + * @property {RefundStatusList[]} [refund] + * @property {Object} [__headers] + */ +/** + * @typedef CustomerMetricsPivots + * @property {string} [date] + * @property {number} [sum] + */ +/** + * @typedef CustomerMetricsSubResponse + * @property {string} [total] + * @property {CustomerMetricsPivots[]} [pivots] + * @property {string} [title] + * @property {string} [description] + * @property {string} [valueFormat] + * @property {string} [logo] + */ +/** + * @typedef CustomerMetricsAnalytics + * @property {CustomerMetricsSubResponse} [totalCustomers] + * @property {CustomerMetricsSubResponse} [source] + */ +/** + * @typedef CustomerMetricsFilters + * @property {string} type + * @property {string} display + * @property {string[]} value + * @property {boolean} [isSelected] + * @property {boolean} isActive + */ +/** + * @typedef CustomerMetrics + * @property {CustomerMetricsAnalytics} [metrics] + * @property {CustomerMetricsFilters[]} [filters] + * @property {CustomerMetricsFilters[]} [sort] + */ +/** + * @typedef CustomerMetricsResponse + * @property {CustomerMetrics} [data] + */ +/** + * @typedef CustomerMetricsRequest + * @property {CustomerMetricsFilters[]} [filters] + * @property {CustomerMetricsFilters[]} [sort] + * @property {string} [merchantId] + * @property {string} [lenderId] + * @property {number} [pivotPoints] + */ +/** + * @typedef SourceAnalyticsRequest + * @property {CustomerMetricsFilters[]} [filters] + */ +/** + * @typedef LenderResponse + * @property {string} [slug] + * @property {string} [name] + * @property {string} [logo] + */ +/** + * @typedef CreditLimitObject + * @property {number} [availableLimit] + * @property {number} [possibleLimit] + * @property {LenderResponse} [lender] + */ +/** + * @typedef BusinessDetails + * @property {string} category + * @property {string} [shopName] + * @property {string} legalName + * @property {string} [address] + * @property {string} [type] + * @property {string} [pincode] + */ +/** + * @typedef DocumentItems + * @property {string} [number] + * @property {string} [category] + * @property {string} [type] + * @property {string} [name] + * @property {string} [issuedOn] + * @property {string} [issuedAt] + * @property {string} [issuedBy] + * @property {string} [expiryOn] + */ +/** + * @typedef VintageItems + * @property {number} month + * @property {number} year + * @property {number} totalTransactions + * @property {number} totalTransactionAmount + * @property {number} [totalCancellations] + * @property {number} [totalCancellationAmount] + */ +/** + * @typedef EligibilitySuccess + * @property {string} [status] + * @property {string} [message] + * @property {string} [redirectUrl] + * @property {string} [callbackUrl] + * @property {CreditLimitObject[]} [creditLimits] + * @property {Object} [__headers] + */ +/** + * @typedef CheckEligibilityRequest + * @property {CustomerObject} customer + * @property {Order} [order] + * @property {BusinessDetails} [businessDetails] + * @property {DocumentItems[]} [documents] + * @property {Device} device + * @property {VintageItems[]} [vintage] + * @property {Object} [meta] + * @property {boolean} [fetchLimitOptions] + */ +/** + * @typedef GetSchemesSuccess + * @property {string} [userId] + * @property {undefined[]} lenders + * @property {Object} [__headers] + */ +/** + * @typedef DisbursalRequest + * @property {string} [fingerprint] + * @property {string} chargeToken + * @property {number} [loanTypeId] + * @property {number} [emiTenure] + * @property {boolean} [isDownpaymentRequired] + * @property {number} [downpaymentAmount] + * @property {number} [loanAmount] + */ +/** + * @typedef WorkflowUser + * @property {string} [mobile] + */ +/** + * @typedef EligiblePlansRequest + * @property {string} [chargeToken] + */ +/** + * @typedef EligiblePlans + * @property {string} [name] + * @property {string} [displayName] + * @property {string} [description] + * @property {number} [brokenInterest] + * @property {number} [noOfEmi] + * @property {number} [emiAmount] + * @property {number} [processingFee] + * @property {number} [installmentInterestRate] + */ +/** + * @typedef EligiblePlansResponse + * @property {EligiblePlans[]} [eligiblePlans] + * @property {Object} [__headers] + */ +/** + * @typedef DisbursalResponse + * @property {string} [transactionId] + * @property {string} [status] + * @property {string} [message] + * @property {Object} [__headers] + */ +/** + * @typedef OrderStatus + * @property {string} orderId + * @property {string} [transactionId] + * @property {string} status + * @property {string} message + * @property {Object} [__headers] + */ +/** + * @typedef DisbursalStatusRequest + * @property {string} [fingerprint] + * @property {string} transactionId + */ +/** + * @typedef Transactions + * @property {string} id + * @property {string} userId + * @property {string} [partnerId] + * @property {string} [partner] + * @property {string} [partnerLogo] + * @property {string} status + * @property {string} [type] + * @property {string} [remark] + * @property {number} amount + * @property {string} [loanAccountNumber] + * @property {string} [kfs] + * @property {string} [utr] + * @property {string} [sanctionLetter] + * @property {string} [orderId] + * @property {string} [refundId] + * @property {string} createdAt + * @property {string} [lenderId] + * @property {string} [lenderName] + * @property {string} [lenderLogo] + * @property {string} [loanType] + * @property {string} [repaymentTransactionId] + * @property {string} [nextDueDate] + * @property {number} [paidPercent] + * @property {LenderDetail} [lenderDetail] + * @property {Emi[]} [emis] + */ +/** + * @typedef LenderDetail + * @property {string} [id] + * @property {string} [name] + * @property {string} [imageUrl] + * @property {string} [slug] + * @property {boolean} [active] + * @property {boolean} [b2b] + * @property {boolean} [b2c] + * @property {Theme} [theme] + * @property {string} [createdAt] + * @property {string} [updatedAt] + * @property {string} [deletedAt] + */ +/** + * @typedef TransactionResponse + * @property {Filters[]} filters + * @property {PageResponse} page + * @property {Transactions[]} transactions + */ +/** + * @typedef MerchantTransactions + * @property {string} [outstandingAmount] + */ +/** + * @typedef MerchantTransactionSummary + * @property {MerchantTransactions} [merchantOutstandingSummary] + */ +/** + * @typedef GetReconciliationFileResponse + * @property {ReconFile[]} files + */ +/** + * @typedef ReconFile + * @property {string} base64 + * @property {string} name + */ +/** + * @typedef UploadReconciliationFileRequest + * @property {string} base64File + * @property {string} [format] + * @property {string} [lenderId] + */ +/** + * @typedef UploadReconciliationFileResponse + * @property {boolean} [success] + */ +/** + * @typedef TransactionCount + * @property {string} [totalTransactions] + */ +/** + * @typedef RefundCount + * @property {string} [refundTransactions] + */ +/** + * @typedef OrganizationTransactionsCount + * @property {number} [count] + */ +/** + * @typedef OrganizationTransactionsSum + * @property {number} [sum] + */ +/** + * @typedef UniqueCustomersInOrg + * @property {number} [count] + */ +/** + * @typedef TransactionAmount + * @property {string} [totalTransactionAmount] + */ +/** + * @typedef SchemaForOneDayTotal + * @property {string} [orgId] + * @property {string} [createdAt] + * @property {number} [count] + * @property {string} [sum] + * @property {string} [refund] + * @property {string} [difference] + */ +/** + * @typedef SumofOneDayTransactions + * @property {SchemaForOneDayTotal[]} [dayTotal] + */ +/** + * @typedef AverageTransaction + * @property {number} [average] + */ +/** + * @typedef AllTransactionsResponse + * @property {string} [id] + * @property {string} [userId] + * @property {string} [partnerId] + * @property {string} [status] + * @property {string} [type] + * @property {string} [remark] + * @property {number} [amount] + * @property {string} [loanAccountNumber] + * @property {string} [createdAt] + */ +/** + * @typedef TotalRefund + * @property {string} [totalRefund] + */ +/** + * @typedef TotalRepayment + * @property {string} [totalRepayment] + */ +/** + * @typedef TotalOverDue + * @property {string} [totalDue] + */ +/** + * @typedef TotalLoansDisbursed + * @property {string} [totalLoansDisbursed] + */ +/** + * @typedef OrganizationTransactionResponse + * @property {TrFilters[]} filters + * @property {TrPageResponse} page + * @property {OrgTransactions[]} transactions + */ +/** + * @typedef TrFilters + * @property {TrFilterKeys} [key] + * @property {TrFilterValues[]} [values] + */ +/** + * @typedef TrPageResponse + * @property {string} type + * @property {number} current + * @property {boolean} hasPrevious + * @property {boolean} hasNext + * @property {number} size + * @property {number} itemTotal + */ +/** + * @typedef OrgTransactions + * @property {string} id + * @property {string} userId + * @property {string} [userName] + * @property {string} [partnerId] + * @property {string} [partner] + * @property {string} [partnerLogo] + * @property {string} status + * @property {string} [type] + * @property {string} [remark] + * @property {number} amount + * @property {string} [orderId] + * @property {string} [loanAccountNumber] + * @property {string} [kfs] + * @property {string} [sanctionLetter] + * @property {string} createdAt + */ +/** + * @typedef TrFilterKeys + * @property {string} [display] + * @property {string} [name] + * @property {string} [kind] + */ +/** + * @typedef TrFilterValues + * @property {string} [display] + * @property {boolean} [isSelected] + * @property {string} [value] + */ +/** + * @typedef KfsRequest + * @property {number} [loanTypeId] + * @property {string} [chargeToken] + */ +/** + * @typedef KfsResponse + * @property {string} [kfsTable] + */ +/** + * @typedef LenderTransactionState + * @property {string} [id] + * @property {number} [stepIndex] + * @property {string} [lenderId] + * @property {string} [workflowId] + * @property {string} [workflowName] + * @property {string} [parentStateId] + * @property {string} [workflowUrl] + * @property {boolean} [isInternal] + * @property {boolean} [active] + * @property {number} [ttl] + * @property {string} [name] + * @property {string} [type] + * @property {Object} [inputData] + * @property {string} [createdAt] + * @property {string} [updatedAt] + * @property {string} [deletedAt] + */ +/** + * @typedef TransactionStateResponse + * @property {LenderTransactionState[]} [transactionState] + */ +/** + * @typedef Theme + * @property {string} [logoUrl] + * @property {string} [iconUrl] + * @property {string} [landscapeBgUrl] + * @property {string} [portraitBgUrl] + * @property {string} [shortName] + */ +/** + * @typedef Emi + * @property {string} [id] + * @property {string} [userId] + * @property {number} [installmentno] + * @property {string} [loanAccountNumber] + * @property {number} [amount] + * @property {string} [dueDate] + * @property {string} [referenceTransactionId] + * @property {string} [remark] + * @property {string} [createdAt] + * @property {string} [updatedAt] + * @property {string} [entityId] + * @property {boolean} [paid] + * @property {boolean} [overdue] + * @property {string} [repaymentDate] + */ +/** + * @typedef MetricPivots + * @property {string} [date] + * @property {number} [sum] + */ +/** + * @typedef TransactionMetricSubResponse + * @property {string} [total] + * @property {MetricPivots[]} [pivots] + * @property {string} [title] + * @property {string} [description] + * @property {string} [valueFormat] + * @property {string} [logo] + */ +/** + * @typedef TransactionMetrics + * @property {TransactionMetricSubResponse} [totalDisbursement] + * @property {TransactionMetricSubResponse} [totalOverdue] + * @property {TransactionMetricSubResponse} [totalRepayment] + */ +/** + * @typedef LenderCustomerTransactionMetricsFilters + * @property {string} type + * @property {string} display + * @property {string[]} value + * @property {boolean} [isSelected] + * @property {boolean} isActive + */ +/** + * @typedef LenderCustomerTransactionMetrics + * @property {TransactionMetrics} [metrics] + * @property {LenderCustomerTransactionMetricsFilters[]} [filters] + * @property {LenderCustomerTransactionMetricsFilters[]} [sort] + */ +/** + * @typedef LenderCustomerTransactionMetricsResponse + * @property {Object} [data] + */ +/** + * @typedef LenderCustomerTransactionMetricsRequest + * @property {LenderCustomerTransactionMetricsFilters[]} [filters] + * @property {LenderCustomerTransactionMetricsFilters[]} [sort] + * @property {string} [startDate] + * @property {string} [endDate] + * @property {string} [merchantId] + * @property {string} [lenderId] + * @property {number} [pivotPoints] + */ +/** + * @typedef LenderTheme + * @property {string} logoUrl + * @property {string} iconUrl + * @property {string} landscapeBgUrl + * @property {string} portraitBgUrl + * @property {string} shortName + */ +/** + * @typedef Lender + * @property {string} [id] + * @property {string} [name] + * @property {boolean} [active] + * @property {string} [imageUrl] + * @property {string} [slug] + * @property {LenderTheme} [theme] + * @property {boolean} [b2b] + * @property {boolean} [b2c] + * @property {string} [merchantConfigSchema] + * @property {string} [createdAt] + * @property {string} [updatedAt] + * @property {number} [approvedLimit] + * @property {string} [deletedAt] + * @property {Object} [meta] + * @property {Object} [metaSchema] + */ +/** + * @typedef UserLender + * @property {string} id + * @property {string} userId + * @property {string} lenderId + * @property {boolean} [active] + * @property {string} status + * @property {string} createdAt + * @property {string} updatedAt + * @property {string} [deletedAt] + * @property {number} approvedLimit + * @property {string} [entityId] + * @property {string} [entityMapId] + */ +/** + * @typedef SourceCreditReport + * @property {string} id + * @property {string} userId + * @property {string} pan + * @property {string} name + * @property {string} mobile + * @property {string} bureau + * @property {string} score + * @property {string} report + * @property {string} [createdAt] + */ +/** + * @typedef Document + * @property {string} id + * @property {string} userId + * @property {string} imageUrl + * @property {string} number + * @property {Object} detail + * @property {boolean} valid + * @property {string} createdAt + * @property {string} updatedAt + * @property {string} [deletedAt] + * @property {string} [entityId] + */ +/** + * @typedef UserKycDetail + * @property {string} id + * @property {string} userId + * @property {string} status + * @property {string} type + * @property {string} remark + * @property {string} profileType + * @property {boolean} active + * @property {string} [expiryDate] + * @property {string} [createdAt] + * @property {string} [updatedAt] + * @property {string} [deletedAt] + * @property {string} lenderId + * @property {Lender} [lender] + * @property {string} [entityMapId] + * @property {string} [entityId] + */ +/** + * @typedef Form + * @property {string} [id] + * @property {string} [name] + * @property {string} [title] + * @property {string} [subtitle] + * @property {string} [action] + * @property {Object} [form] + * @property {Object} [uiSchema] + * @property {string} [workflowId] + */ +/** + * @typedef LenderKycStepMap + * @property {string} [id] + * @property {string} step + * @property {number} stepIndex + * @property {string} lenderId + * @property {boolean} active + * @property {Object} rules + * @property {string} profileType + * @property {string} [createdAt] + * @property {string} [updatedAt] + * @property {string} [deletedAt] + * @property {string} name + * @property {string} description + * @property {string} iconUrl + * @property {boolean} isInteractive + * @property {string} [formId] + * @property {string} [merchantId] + * @property {Form} form + * @property {Object} docSchema + */ +/** + * @typedef UserKycLenderStepMap + * @property {string} id + * @property {string} userId + * @property {string} lenderKycStepMapId + * @property {string} userKycDetailId + * @property {string} lenderId + * @property {Object} ruleState + * @property {boolean} active + * @property {string} status + * @property {string} [documentId] + * @property {string} createdAt + * @property {string} updatedAt + * @property {string} [deletedAt] + * @property {LenderKycStepMap} [lenderKycStepMap] + * @property {string} [entityMapId] + * @property {string} [entityId] + * @property {string} [updatedBy] + */ +/** + * @typedef ProofOfIdentity + * @property {string} dob + * @property {string} hashedEmail + * @property {string} gender + * @property {string} hashedMobileNumber + * @property {string} name + */ +/** + * @typedef ProofOfAddress + * @property {string} careOf + * @property {string} country + * @property {string} district + * @property {string} house + * @property {string} landmark + * @property {string} locality + * @property {string} pincode + * @property {string} postOffice + * @property {string} state + * @property {string} street + * @property {string} subDistrict + * @property {string} vtc + */ +/** + * @typedef EAadhaarData + * @property {string} aadhaarReferenceNumber + * @property {string} aadhaarUid + * @property {string} image + * @property {ProofOfIdentity} proofOfIdentity + * @property {ProofOfAddress} proofOfAddress + * @property {string} [xml] + * @property {string} [pdf] + * @property {string} [address] + */ +/** + * @typedef Consent + * @property {string} text + * @property {string} type + */ +/** + * @typedef ValidatePanRequest + * @property {string} pan + * @property {Consent[]} consents + */ +/** + * @typedef BankDetails + * @property {string} accountType + * @property {string} bankName + * @property {string} ifsc + * @property {string} accountNumber + * @property {string} accountHolderName + */ +/** + * @typedef DocumentData + * @property {string} [selfie] + * @property {string} [video] + * @property {string} [digilockerCode] + * @property {BankDetails} [bankDetails] + */ +/** + * @typedef ConfirmPanRequest + * @property {string} pan + * @property {string} name + * @property {string} [entity] + * @property {string} [merchantId] + */ +/** + * @typedef LivelinessDetails + * @property {string} selfie + * @property {string} video + */ +/** + * @typedef UploadDocumentRequest + * @property {Object} [user] + * @property {Object} [documentData] + * @property {string} lenderSlug + * @property {string} kycStep + * @property {string} [merchantId] + * @property {string} [entityMapId] + */ +/** + * @typedef UploadDocumentRequestV1 + * @property {string} kycStep + * @property {string} entityMapId + * @property {Object} documentData + */ +/** + * @typedef UploadDocumentRequestV3 + * @property {string} kycStep + * @property {string} entityMapId + * @property {Object} documentData + */ +/** + * @typedef AadhaarRequest + * @property {string} [digilockerCode] + */ +/** + * @typedef UploadAadhaarRequest + * @property {AadhaarRequest} [documentData] + * @property {Object} [user] + * @property {string} lenderSlug + * @property {string} kycStep + * @property {string} [merchantId] + * @property {string} [entityMapId] + */ +/** + * @typedef UploadLivelinessRequest + * @property {LivelinessDetails} [documentData] + * @property {Object} [user] + * @property {string} lenderSlug + * @property {string} kycStep + * @property {string} [merchantId] + * @property {string} [entityMapId] + */ +/** + * @typedef UploadAadhaarRequestV1 + * @property {AadhaarRequest} documentData + * @property {string} kycStep + * @property {string} entityMapId + */ +/** + * @typedef UploadLivelinessRequestV1 + * @property {LivelinessDetails} documentData + * @property {string} kycStep + * @property {string} entityMapId + */ +/** + * @typedef UploadAadhaarRequestV2 + * @property {AadhaarRequest} [documentData] + * @property {Object} [user] + * @property {string} lenderSlug + * @property {string} kycStep + * @property {string} [merchantId] + * @property {string} [entityMapId] + */ +/** + * @typedef UploadLivelinessRequestV2 + * @property {LivelinessDetails} [documentData] + * @property {Object} [user] + * @property {string} lenderSlug + * @property {string} kycStep + * @property {string} [merchantId] + * @property {string} [entityMapId] + */ +/** + * @typedef UploadAadhaarRequestV3 + * @property {AadhaarRequest} documentData + * @property {string} kycStep + * @property {string} entityMapId + */ +/** + * @typedef UploadLivelinessRequestV3 + * @property {LivelinessDetails} documentData + * @property {string} kycStep + * @property {string} entityMapId + */ +/** + * @typedef UploadBankDetailsRequest + * @property {BankDetails} [documentData] + * @property {Object} [user] + * @property {string} lenderSlug + * @property {string} kycStep + * @property {string} [merchantId] + * @property {string} [entityMapId] + */ +/** + * @typedef InitiateKycRequest + * @property {string} kycType + * @property {string} [kycId] + * @property {string} [merchantId] + */ +/** + * @typedef InitiateKycRequestV1 + * @property {string} entityMapId + * @property {string} kycType + * @property {string} [kycId] + * @property {string} [merchantId] + */ +/** + * @typedef LenderOnboardRequest + * @property {string} [ack] + * @property {Object} data + * @property {string} [entityMapId] + * @property {string} [merchantId] + */ +/** + * @typedef UpdateLenderStatusRequest + * @property {string} status + * @property {Object} payload + * @property {Object} data + * @property {boolean} action + */ +/** + * @typedef UpdateProfileRequest + * @property {string} [firstName] + * @property {string} [lastName] + * @property {string} [gender] + * @property {string} [dob] + * @property {string} userId + * @property {boolean} [isOnboarded] + * @property {string} [address] + */ +/** + * @typedef UpdateEntityRequest + * @property {string} [name] + * @property {string} [gender] + * @property {string} [dob] + * @property {boolean} [isDefault] + * @property {ProofOfAddress} [address] + */ +/** + * @typedef CreateKycStepsRequest + * @property {Object} data + */ +/** + * @typedef CreateLenderPgConfigRequest + * @property {string} mid + * @property {string} clientId + * @property {string} secret + * @property {boolean} active + * @property {string} pgId + * @property {string} lenderId + */ +/** + * @typedef CreateLenderStateRequest + * @property {Object} data + */ +/** + * @typedef UpdateLenderRequest + * @property {Object} data + * @property {string} lenderId + */ +/** + * @typedef OtherPolicyFilters + * @property {Object[]} [orderBy] + */ +/** + * @typedef GetPolicyFilters + * @property {string} [policyType] + * @property {Object[]} [lenderIds] + * @property {Object[]} [merchantIds] + * @property {Object[]} [orderBy] + */ +/** + * @typedef GetPolicyFilters2 + * @property {string} [breType] + * @property {Object[]} [lenderId] + * @property {Object[]} [merchantId] + * @property {string} [loanType] + * @property {string} [journeyType] + * @property {string} [subType] + */ +/** + * @typedef MerchantConfigRequest + * @property {string} id + * @property {Object} merchantConfigSchema + */ +/** + * @typedef PanDetails + * @property {string} name + * @property {string} idNumber + */ +/** + * @typedef AvailableLendersRequest + * @property {string} chargeToken + */ +/** + * @typedef InitialData + * @property {string} userId + * @property {string} entityId + */ +/** + * @typedef ExecutePolicyRequest + * @property {GetPolicyFilters} [policyFilters] + * @property {InitialData} initialData + */ +/** + * @typedef ExecutePolicyRequest2 + * @property {GetPolicyFilters2} [policyFilters] + * @property {InitialData} initialData + */ +/** + * @typedef RegisterGstRequest + * @property {string} gstTin + */ +/** + * @typedef PopulateFormRequest + * @property {Object} form + * @property {string} [lenderId] + * @property {string} [merchantId] + */ +/** + * @typedef ValidateFormFieldRequest + * @property {string} workflowName + * @property {string} [userId] + * @property {string} [entityId] + * @property {string} [entityMapId] + * @property {string} [lenderId] + * @property {string} [merchantId] + * @property {Object} fields + */ +/** + * @typedef MerchantMetricFilter + * @property {string} type + * @property {string} display + * @property {Object[]} value + * @property {boolean} [isSelected] + * @property {boolean} [isActive] + */ +/** + * @typedef LenderCustomerMetricsRequest + * @property {MerchantMetricFilter[]} [sort] + * @property {MerchantMetricFilter[]} [filters] + * @property {string} [merchantId] + * @property {string} [lenderId] + * @property {number} [pivotPoints] + */ +/** + * @typedef StonewallCustomer + * @property {string} [mobile] + * @property {string} [uid] + */ +/** + * @typedef GetLimitRequest + * @property {Object[]} [lenderSlugs] + * @property {boolean} [onlyDefaultLender] + * @property {StonewallCustomer} customer + */ +/** + * @typedef DocumentObject + * @property {string} [id] + * @property {string} [userId] + * @property {string} [name] + * @property {string} [imageUrl] + * @property {string} number + * @property {Object} detail + * @property {boolean} [valid] + * @property {string} [entityId] + */ +/** + * @typedef ManualKycRequest + * @property {Object} remark + * @property {string} status + * @property {string} stepId + * @property {string} entityMapId + * @property {DocumentObject} [documentData] + */ +/** + * @typedef RetriggerLenderOnboardRequest + * @property {string} stepId + * @property {Object} data + */ +/** + * @typedef EntityMapDto + * @property {string} id + * @property {string} [merchantId] + * @property {string} [status] + * @property {string} lenderId + * @property {number} [limit] + * @property {string} [creditType] + * @property {string} userId + * @property {string} entityId + */ +/** + * @typedef EntityDto + * @property {string} id + * @property {string} [type] + * @property {string} [address] + * @property {string} [name] + * @property {string} [gender] + * @property {string} [dob] + * @property {string} userId + */ +/** + * @typedef FindDocResponse + * @property {string} status + * @property {string} info + * @property {string} number + * @property {Object} [details] + * @property {string} [name] + */ +/** + * @typedef LenderKycStatus + * @property {string} status + * @property {string} [lenderId] + * @property {string} [lenderName] + * @property {string} [kycType] + */ +/** + * @typedef StateResponeDto + * @property {UserKycLenderStepMap} step + * @property {boolean} isStepCompleted + */ +/** + * @typedef KycStateMachineDto + * @property {UserKycDetail} kycResult + * @property {UserKycLenderStepMap} [action] + */ +/** + * @typedef InitiateKycDto + * @property {string} kycType + * @property {string} lenderId + * @property {Object} user + * @property {string} [kycId] + * @property {EntityMapDto} [entityRelation] + */ +/** + * @typedef LenderOnboardDto + * @property {Lender} [lender] + * @property {Object} user + * @property {UserLender} [userLenderDetail] + * @property {LenderOnboardRequest} payload + * @property {EntityMapDto} [entityRelation] + * @property {string} ipAddress + * @property {boolean} [overrideTtl] + */ +/** + * @typedef StepDetails + * @property {string} [name] + * @property {string} [description] + * @property {string} [iconUrl] + * @property {string} status + * @property {string} step + * @property {number} order + */ +/** + * @typedef OnboardStatusDto + * @property {string} onboardStep + * @property {string} onboardingId + * @property {string} status + * @property {string} action + * @property {string} actionStatus + * @property {Lender} lender + * @property {string} [navigation] + * @property {number} approvedLimit + * @property {number} proposedLimit + * @property {Object} [actionData] + * @property {StepDetails[]} [steps] + * @property {string} entityId + * @property {string} entityMapId + * @property {boolean} actionIsForm + * @property {Form} [actionForm] + */ +/** + * @typedef LenderFilters + * @property {Object[]} [includeStatus] + * @property {Object[]} [excludeStatus] + * @property {Object} [allowDisabledLender] + */ +/** + * @typedef Policy + * @property {string} [id] + * @property {string} [name] + * @property {string} [url] + * @property {Object} [data] + * @property {string} [version] + * @property {boolean} [active] + * @property {Object} [type] + * @property {number} [index] + * @property {string} [lenderId] + * @property {string} [merchantId] + * @property {string} [workflowId] + * @property {Object[]} [schemaRef] + * @property {Object[]} [masterVariableRef] + * @property {Object} [customVariable] + * @property {string} [subType] + * @property {Object} [createdAt] + * @property {Object} [updatedAt] + * @property {Object} [deletedAt] + */ +/** + * @typedef GetKycDocsResponse + * @property {FindDocResponse[]} documents + */ +/** + * @typedef OrganizationLogosObject + * @property {string} id + * @property {string} name + * @property {string} logo + * @property {boolean} active + */ +/** + * @typedef MetricSubTypes + * @property {string} date + * @property {string} [count] + * @property {string} [sum] + */ +/** + * @typedef MetricTypes + * @property {MetricSubTypes[]} pivots + * @property {string} [total] + * @property {string} description + * @property {string} title + * @property {string} valueFormat + * @property {string} logo + */ +/** + * @typedef BreApprovedUsersResponse + * @property {MetricTypes} data + */ +/** + * @typedef Metrics + * @property {MetricTypes} lenderApprovedUsers + * @property {MetricTypes} breApprovedUsers + * @property {MetricTypes} totalCreditLine + */ +/** + * @typedef MetricData + * @property {Metrics} metrics + * @property {MerchantMetricFilter[]} filters + * @property {MerchantMetricFilter[]} sort + */ +/** + * @typedef ApprovedLenders + * @property {string} status + * @property {BreOutput[]} lenders + */ +/** + * @typedef BreResultStatus + * @property {string} status + * @property {BreOutput[]} [approvedLenders] + */ +/** + * @typedef GetAllUserLendersByEnityId + * @property {string} entityId + * @property {string} entityMapId + * @property {string} userId + * @property {string} status + * @property {Lender} lender + * @property {string} [partnerId] + */ +/** + * @typedef LenderState + * @property {string} [id] + * @property {string} name + * @property {string} lenderId + * @property {number} index + * @property {string} workflowName + * @property {string} [workflowUrl] + * @property {boolean} active + * @property {string} [createdAt] + * @property {string} [updatedAt] + * @property {string} [deletedAt] + * @property {Lender} [lender] + * @property {string} [parentStateId] + * @property {number} ttl + * @property {string} [displayName] + * @property {string} [description] + * @property {string} [iconUrl] + * @property {boolean} isInteractive + * @property {Object} [schema] + */ +/** + * @typedef UserLenderState + * @property {string} id + * @property {string} lenderStateId + * @property {string} lenderId + * @property {string} userId + * @property {string} status + * @property {string} userLenderId + * @property {string} remark + * @property {boolean} active + * @property {LenderState} [lenderState] + * @property {Object} [data] + * @property {string} [createdAt] + * @property {string} [updatedAt] + * @property {string} [deletedAt] + * @property {string} [entityId] + * @property {string} [entityMapId] + * @property {string} [updatedBy] + */ +/** + * @typedef LenderConfig + * @property {string} [id] + * @property {string} baseUrl + * @property {string} [accessToken] + * @property {string} [secret] + * @property {Object} data + * @property {string} lenderId + * @property {boolean} [active] + * @property {string} [createdAt] + * @property {string} [updatedAt] + * @property {string} [deletedAt] + */ +/** + * @typedef Pg + * @property {string} id + * @property {string} name + * @property {boolean} active + */ +/** + * @typedef LenderPgConfig + * @property {string} [id] + * @property {string} mid + * @property {string} clientId + * @property {string} secret + * @property {string} lenderId + * @property {string} pgId + * @property {boolean} active + */ +/** + * @typedef FileUploadResponse + * @property {string} fileId + * @property {string} name + * @property {string} path + * @property {string} format + * @property {number} size + * @property {string} access + * @property {string} tags + * @property {string} metadata + * @property {string} url + * @property {string} thumbnail + */ +/** + * @typedef PresignedUrl + * @property {string} url + * @property {Object} fields + */ +/** + * @typedef PresignedUrlV2 + * @property {string} url + * @property {Object} fields + */ +/** + * @typedef LenderDocument + * @property {string} [id] + * @property {string} [lenderId] + * @property {string} [type] + * @property {Object} [document] + * @property {boolean} [active] + * @property {string} [createdAt] + * @property {string} [updatedAt] + * @property {string} [deletedAt] + */ +/** + * @typedef KycStatusResponse + * @property {boolean} isKycInitiated + * @property {string} userId + * @property {LenderKycStatus[]} kycStatuses + */ +/** + * @typedef WorkflowResponse + * @property {Object} [data] + */ +/** + * @typedef InitiateKycResponse + * @property {UserKycDetail} kycResult + * @property {Action} action + */ +/** + * @typedef UploadDocResponse + * @property {string} status + * @property {Object} [data] + * @property {string} [remark] + * @property {UserKycDetail} kycResult + * @property {Action} action + */ +/** + * @typedef LenderOnboardResponse + * @property {UserLender} result + * @property {UserLenderState} action + * @property {Object} data + */ +/** + * @typedef OnboardingStatusResponse + * @property {OnboardStatusDto[]} onboardStatuses + */ +/** + * @typedef SignedUrlResponse + * @property {PresignedUrl} signedUrl + * @property {string} fileUrl + */ +/** + * @typedef SignedUrlV2Response + * @property {PresignedUrlV2} signedUrl + * @property {string} fileUrl + */ +/** + * @typedef PresignedUrlV3 + * @property {string} signedUrl + * @property {Object} provider + */ +/** + * @typedef SignedUrlV3Response + * @property {PresignedUrlV3} signedDetails + * @property {string} fileUrl + */ +/** + * @typedef DigilockerLinkResponse + * @property {string} authorizationUrl + */ +/** + * @typedef GetDocumentsResponse + * @property {FindDocResponse[]} documents + */ +/** + * @typedef ApprovedLendersTransaction + * @property {string} name + * @property {string} slug + * @property {string} imageUrl + * @property {string} status + * @property {boolean} active + * @property {number} proposedLimit + * @property {Object} createdAt + * @property {Object} updatedAt + * @property {Object} [deletedAt] + * @property {boolean} [isDefault] + * @property {Object} [__headers] + */ +/** + * @typedef ApprovedPossibleLenders + * @property {number} limit + * @property {string} name + * @property {string} slug + * @property {boolean} active + * @property {string} id + * @property {LenderTheme} [theme] + */ +/** + * @typedef AvailableLenders + * @property {ApprovedPossibleLenders[]} approvedLenders + * @property {ApprovedPossibleLenders[]} possibleLenders + */ +/** + * @typedef CreditLimit + * @property {number} availableLimit + * @property {number} approvedLimit + */ +/** + * @typedef CreditLimitResponse + * @property {string} status + * @property {string} message + * @property {boolean} action + * @property {CreditLimit} credit + */ +/** + * @typedef LenderPgConfigResponse + * @property {string} id + * @property {string} mid + * @property {string} clientId + * @property {string} secret + * @property {string} lenderId + * @property {string} pgId + * @property {boolean} active + * @property {string} pgName + * @property {boolean} pgActive + */ +/** + * @typedef GetLendersResponse + * @property {Lender[]} data + */ +/** + * @typedef LenderConfigurationResponse + * @property {Lender} lender + * @property {LenderPgConfig} lenderPgConfig + * @property {LenderConfig} lenderConfig + * @property {LenderState[]} lenderState + * @property {LenderKycStepMap[]} lenderKycStepMap + */ +/** + * @typedef UpsertLenderResponse + * @property {Object} data + */ +/** + * @typedef UpsertLenderConfigResponse + * @property {Object} data + */ +/** + * @typedef CreateKycStepsSchema + * @property {LenderKycStepMap[]} data + */ +/** + * @typedef CreatePaymentGatewaySchema + * @property {LenderPgConfig[]} data + */ +/** + * @typedef CreateLenderStateSchema + * @property {LenderState[]} data + */ +/** + * @typedef GetAllPaymentGatewaysSchema + * @property {Pg[]} data + */ +/** + * @typedef PolicyResponse + * @property {Policy[]} policies + */ +/** + * @typedef CreditCheckBreResponse + * @property {boolean} newLenderAssigned + * @property {string} breStatus + */ +/** + * @typedef MerchantConfigResponse + * @property {string} id + * @property {string} merhantConfigSchema + */ +/** + * @typedef UserLenderByIdAndStatusResponse + * @property {string} id + * @property {string} userId + * @property {string} lenderId + * @property {boolean} [active] + * @property {string} status + * @property {string} createdAt + * @property {string} updatedAt + * @property {string} [deletedAt] + * @property {number} approvedLimit + * @property {string} [slug] + * @property {LenderTheme} [theme] + * @property {Object} [name] + */ +/** + * @typedef IntgrAvailableCreditLimit + * @property {number} limit + * @property {string} lenderName + * @property {string} slug + * @property {boolean} isDefault + * @property {string} logoUrl + */ +/** + * @typedef IngtrAvailableLimit + * @property {IntgrAvailableCreditLimit[]} available + */ +/** + * @typedef IntgrCreditLimit + * @property {IngtrAvailableLimit} limit + * @property {Object} [__headers] + */ +/** + * @typedef PossibleLendersInternal + * @property {boolean} limit + * @property {string} lenderName + * @property {string} slug + * @property {boolean} isDefault + * @property {string} logo + * @property {string} lenderId + */ +/** + * @typedef PossibleLendersInternalResponse + * @property {PossibleLendersInternal[]} lenders + */ +/** + * @typedef GetTotalKycResponse + * @property {string} totalKyc + */ +/** + * @typedef GetTotalKycCompletedUsersResponse + * @property {string} totalKycCompletedUsers + */ +/** + * @typedef GetTotalPendingUsersResponse + * @property {string} totalPendingKyc + */ +/** + * @typedef GetTotalCreditProvidedResponse + * @property {string} totalCreditLimit + */ +/** + * @typedef MetaSchemaResponse + * @property {string} title + * @property {string} name + * @property {string[]} required + * @property {string} type + * @property {Object} properties + */ +/** + * @typedef MetaSchema + * @property {MetaSchemaResponse} metaSchema + */ +/** + * @typedef AddMetaSchema + * @property {string} lenderSlug + * @property {string} merchantId + * @property {Object} schema + */ +/** + * @typedef AddMetaSchemaRequest + * @property {string} merchantId + * @property {Object} schema + */ +/** + * @typedef ValidatePanResponse + * @property {string} panName + * @property {string} isPanValid + * @property {string} pan + * @property {boolean} isProprietor + * @property {string} panType + * @property {string} [errorCode] + * @property {string} [status] + * @property {string} [errorMessage] + */ +/** + * @typedef ConfirmPanResonse + * @property {string} status + * @property {string} statusCode + * @property {string} message + */ +/** + * @typedef LenderCountResponse + * @property {number} active + * @property {number} inActive + */ +/** + * @typedef OnboardStepsDto + * @property {StepDetails[]} steps + * @property {Lender} lender + */ +/** + * @typedef OnboardStepsResponse + * @property {OnboardStepsDto[]} stepDetails + */ +/** + * @typedef LenderDocumentResponse + * @property {LenderDocument} data + */ +/** + * @typedef GetUserLendersResponse + * @property {UserLender[]} data + */ +/** + * @typedef CreditReportResponse + * @property {SourceCreditReport} data + */ +/** + * @typedef KycDetailsReponse + * @property {UserKycLenderStepMap} data + */ +/** + * @typedef GetDocumentByIdResponse + * @property {Document} data + */ +/** + * @typedef GetAllFormsResponse + * @property {Object} data + */ +/** + * @typedef UpsertFormResponse + * @property {Object} data + */ +/** + * @typedef GstDetails + * @property {string} gstTin + * @property {string} businessName + */ +/** + * @typedef GstDetailsResponse + * @property {GstDetails[]} gstDetails + */ +/** + * @typedef RegisterGstResponse + * @property {Document} gstDocDetails + * @property {string} status + */ +/** + * @typedef PopulateFormResponse + * @property {Object} form + */ +/** + * @typedef ValidateFormFieldResponse + * @property {string} status + * @property {string} message + * @property {Object} data + */ +/** + * @typedef LenderCustomerMetricsResponse + * @property {string} status + * @property {string} message + * @property {MetricData} data + */ +/** + * @typedef ManualKycResponse + * @property {string} message + * @property {UserKycLenderStepMap} step + */ +/** + * @typedef BreOutput + * @property {string} id + * @property {string} userId + * @property {string} entityId + * @property {string} [lenderId] + * @property {string} [merchantId] + * @property {string} policyName + * @property {string} category + * @property {string} type + * @property {Object} output + * @property {string} status + * @property {string} createdAt + * @property {string} updatedAt + * @property {string} deletedAt + */ +/** + * @typedef CustomerKycDetailsReponse + * @property {UserKycLenderStepMap} data + */ +declare class Customer { + constructor(config: any); + config: any; + /** + * @param {Object} arg - Arg object. + * @param {String} session - Session of the user + * @param {string} arg.organizationId - This is organizationId + * @param {VerifyCustomer} arg.body + * @summary: Verify Customer + * @description: Use this API to verify the customer based on mobile number and countryCode. + */ + verify({ disbursalRequest, session }?: any): Promise; + /** + * @param {Object} arg - Arg object. + * @param {String} session - Session of the user + * @param {string} arg.organizationId - This is organizationId + * @param {ResendPaymentRequest} arg.body + * @summary: Resend Payment Request + * @description: Use this API to resend payment request to user + */ + resendPaymentRequest({ disbursalRequest, session }?: any): Promise; + /** + * @param {Object} arg - Arg object. + * @param {String} session - Session of the user + * @param {string} arg.organizationId - This is organizationId + * @param {CreateTransaction} arg.body + * @summary: Create Order + * @description: Use this API to create transaction for user + */ + createOrder({ disbursalRequest, session }?: any): Promise; + /** + * @param {Object} arg - Arg object. + * @param {String} session - Session of the user + * @param {string} arg.organizationId - This is organizationId + * @param {LinkAccount} arg.body + * @summary: Link account + * @description: Use this API to link account with merchant + */ + link({ disbursalRequest, session }?: any): Promise; + /** + * @param {Object} arg - Arg object. + * @param {String} session - Session of the user + * @param {string} arg.organizationId - This is organizationId + * @param {UnlinkAccount} arg.body + * @summary: Unlink account + * @description: Use this API to unlink account from merchant + */ + unlink({ disbursalRequest, session }?: any): Promise; + /** + * @param {Object} arg - Arg object. + * @param {String} session - Session of the user + * @param {string} arg.organizationId - This is organizationId + * @summary: Get Access Token + * @description: Use this API to get access token + */ + getAccessToken({}?: any): Promise; + /** + * @param {Object} arg - Arg object. + * @param {String} session - Session of the user + * @param {string} arg.organizationId - This is organizationId + * @param {RefreshTokenRequest} arg.body + * @summary: Renew Access Token + * @description: Use this API to renew access token + */ + renewAccessToken({ disbursalRequest, session }?: any): Promise; + /** + * @param {Object} arg - Arg object. + * @param {String} session - Session of the user + * @param {string} arg.organizationId - This is organizationId + * @param {Refund} arg.body + * @summary: Refund customer order amount + * @description: Use this API to verify the refund customer order amount + */ + refund({ disbursalRequest, session }?: any): Promise; + /** + * @param {Object} arg - Arg object. + * @param {String} session - Session of the user + * @param {string} arg.organizationId - This is organizationId + * @param {string} [arg.refundId] - This is the refundId + * @param {string} [arg.orderId] - This is the order ID + * @summary: Refund status + * @description: Use this API to fetch the refund status + */ + refundStatus({ refundId, orderId, session }?: any): Promise; + /** + * @param {Object} arg - Arg object. + * @param {String} session - Session of the user + * @param {string} arg.organizationId - This is organizationId + * @param {VerifyCustomer} arg.body + * @summary: Fetch schemes + * @description: Use this API to fetch available schemes for user order. + */ + getSchemes({ disbursalRequest, session }?: any): Promise; + /** + * @param {Object} arg - Arg object. + * @param {String} session - Session of the user + * @param {string} arg.organizationId - This is organizationId + * @param {CheckEligibilityRequest} arg.body + * @summary: Check Credit Eligibility + * @description: Use this API to pre approve by checking the customer's credit eligibility based on mobile number and countryCode and vintage data of monthly transactions. + */ + checkEligibility({ disbursalRequest, session }?: any): Promise; +} +declare class Credit { + constructor(config: any); + config: any; + /** + * @param {Object} arg - Arg object. + * @param {String} session - Session of the user + * @param {string} arg.organizationId - This is organization id + * @param {DisbursalRequest} arg.body + * @summary: Disburse the credit + * @description: Use this API to disburse the credit. + */ + disburse({ disbursalRequest, session }?: any): Promise; + /** + * @param {Object} arg - Arg object. + * @param {String} session - Session of the user + * @param {string} arg.organizationId - This is organization ID + * @param {string} arg.orderId - This is order ID + * @summary: check status of the order + * @description: Use this API to check status the order. + */ + getOrderStatus({ orderId, session }?: any): Promise; + /** + * @param {Object} arg - Arg object. + * @param {String} session - Session of the user + * @param {string} arg.organizationId - This is organization id + * @param {string} arg.lenderSlug - This is lender slug + * @param {EligiblePlansRequest} arg.body + * @summary: Get eligible plans + * @description: Use this API to Get eligible plans. + */ + getEligiblePlans({ lenderSlug, disbursalRequest, session }?: any): Promise; +} +declare class MultiKyc { + constructor(config: any); + config: any; + /** + * @param {Object} arg - Arg object. + * @param {String} session - Session of the user + * @param {Object} arg.organizationId - + * @summary: Approved lenders + * @description: + */ + approvedLenders({}?: any): Promise; + /** + * @param {Object} arg - Arg object. + * @param {String} session - Session of the user + * @param {string} arg.organizationId - + * @param {GetLimitRequest} arg.body + * @summary: Get limit + * @description: + */ + getLimit({ disbursalRequest, session }?: any): Promise; +} +import PlatformApplicationClient = require("./PlatformApplicationClient"); +type UserSchema = { + id?: string; + firstName?: string; + lastName?: string; + countryCode?: string; + mobile?: string; + email?: string; + gender?: string; + dob?: string; + active?: boolean; + profilePicUrl?: string; + isEmailVerified?: boolean; + createdAt?: string; + updatedAt?: string; + deletedAt?: string; +}; +type count = { + totalUsers?: string; +}; +type FilterByDate = { + startDate?: string; + endDate?: string; +}; +type LenderCount = { + totalLenders?: string; +}; +type LenderSchema = { + id?: string; + name?: string; + active?: boolean; + createdAt?: string; + updatedAt?: string; + deletedAt?: string; +}; +type TotalUsersPerLender = { + filters: Filters[]; + page: PageResponse; + lenderList: TotalUsersPerLenderData[]; +}; +type TotalUsersPerLenderData = { + id?: string; + name?: string; + active?: boolean; + createdAt?: string; + updatedAt?: string; + deletedAt?: string; + totalUsers?: string; +}; +type TotalUserByLender = { + name?: string; + count?: string; +}; +type UsersByLender = { + firstName?: string; + lastName?: string; + mobile?: string; + email?: string; + name?: string; +}; +type ErrorResponse = { + message?: string; + info?: string; + code?: string; + requestId?: string; + meta?: any; +}; +type EditProfileRequest = { + firstName?: string; + lastName?: string; + countryCode?: string; + mobile?: string; + email?: string; + gender?: string; + dob?: string; + registrationToken?: string; +}; +type VerifyOtpRequest = { + requestId: string; + otp: string; + captchaCode?: string; + androidHash?: string; + referralCode?: string; + onboardingToken?: string; +}; +type SendMobileOtpRequest = { + countryCode: string; + mobile: string; + captchaCode?: string; + androidHash?: string; + force?: string; +}; +type ReSendMobileOtpRequest = { + captchaCode?: string; + token: string; + androidHash?: string; +}; +type SendOtpRequest = { + countryCode?: string; + captchaCode?: string; + mobile?: string; +}; +type ApplicationUser = { + user?: UserSchema; +}; +type SendOtpResponse = { + resendTimer?: number; + resendToken?: string; + success?: boolean; + requestId?: string; + message?: string; + mobile?: string; + countryCode?: string; + email?: string; + resendEmailToken?: string; + registerToken?: string; + verifyEmailOtp?: boolean; + verifyMobileOtp?: boolean; + userExists?: boolean; +}; +type EmailUpdate = { + email?: string; +}; +type UserUpdateRequest = { + firstName?: any; + lastName?: any; + countryCode: string; + mobile: string; + email?: any; + gender?: any; + dob?: any; + active?: boolean; + profilePictureUrl?: any; + isEmailVerified?: boolean; +}; +type LenderUpdateRequest = { + id: string; + name?: string; + active?: boolean; +}; +type ProfileEditSuccess = { + user?: UserSchema; + registerToken?: string; + resendEmailToken?: string; + userExists?: boolean; + verifyEmailLink?: boolean; + verifyEmailOtp?: boolean; + verifyMobileOtp?: boolean; + email?: string; + requestId?: string; + countryCode?: string; + mobile?: string; + success?: boolean; + message?: string; + resendTimer?: number; + resendToken?: string; +}; +type LoginSuccess = { + user?: UserSchema; + requestId?: string; + registerToken?: string; +}; +type VerifyOtpSuccess = { + user?: UserSchema; + userExists?: boolean; + isNew?: boolean; +}; +type LogoutSuccess = { + logout?: boolean; +}; +type OtpSuccess = { + resendTimer?: number; + resendToken?: string; + registerToken?: string; + success?: boolean; + requestId?: string; + message?: string; + mobile?: string; + isNew?: boolean; + countryCode?: string; + otpLength?: number; +}; +type SessionListSuccess = { + sessions?: string[]; +}; +type VerifyMobileOTPSuccess = { + user?: UserSchema; +}; +type Location = { + latitude?: number; + longitude?: number; +}; +type OrderAddress = { + line1?: string; + line2?: string; + city?: string; + state?: string; + country?: string; + pincode?: string; + type?: string; + geoLocation?: Location; +}; +type CustomerObject = { + countryCode?: string; + mobile: string; + uid: string; + email?: string; + firstname?: string; + middleName?: string; + lastName?: string; +}; +type Order = { + valueInPaise: number; + uid: string; + emiTenure?: number; + items?: Items[]; + shippingAddress?: OrderAddress; + billingAddress?: OrderAddress; +}; +type OrderUid = { + valueInPaise?: number; + uid: string; + items?: Items[]; + shippingAddress?: OrderAddress; + billingAddress?: OrderAddress; +}; +type CustomerMeta = { + ip: string; + appVersion: string; + appIdentifier?: string; + customerUserAgent?: string; + deviceId: string; +}; +type Device = { + ipAddress: string; + userAgent: string; + latitude?: number; + longitude?: number; +}; +type VerifyCustomer = { + customer: CustomerObject; + order: Order; + device: Device; + meta?: any; + fetchLimitOptions?: boolean; +}; +type CreateTransaction = { + autoCapture?: boolean; + redirectUrl: string; + customer: CustomerObject; + order: Order; + device: Device; + meta?: any; +}; +type ResendPaymentRequest = { + autoCapture?: boolean; + redirectUrl?: string; + customer: CustomerObject; + order: OrderUid; +}; +type VerifyCustomerSuccess = { + status?: string; + userStatus?: string; + message?: string; + __headers?: any; +}; +type CreateTransactionSuccess = { + chargeToken?: string; + redirectUrl?: string; + message: string; + transactionId?: string; + status?: string; + userStatus?: string; + __headers?: any; +}; +type SupportDocuments = { + fileName?: string; + fileUrl?: string; +}; +type CreateTicketResponse = { + serviceRequestId?: string; + message?: string; +}; +type CreateTicket = { + category: string; + transactionId?: string; + description: string; + documents?: SupportDocuments[]; +}; +type InitiateTransactions = { + token: string; +}; +type GetMobileFromToken = { + token: string; +}; +type GetDataFromToken = { + token: string; +}; +type MerchantDetails = { + name?: string; + website?: string; + logo?: string; +}; +type InitiateTransactionsSuccess = { + chargeToken: string; + session?: string; + expiry?: string; + hash?: string; + order?: Order; + isAsp?: boolean; + merchant?: MerchantDetails; +}; +type RetrieveMobileFromToken = { + countryCode: string; + mobile: string; +}; +type CreateDashboardTemplateRequest = { + name: string; + version: string; + isDefault?: boolean; + sections: TemplateSections[]; +}; +type TemplateSections = { + sequence: number; + isAvailableInMobile: boolean; + isAvailableInDesktop: boolean; + component: TemplateComponent; +}; +type TemplateComponent = { + name: string; + description: string; + isAvailableInDesktop?: boolean; + partnerApplications?: PartnerApplications[]; + banners?: Banners[]; + tips?: Tips[]; +}; +type PartnerApplications = { + name: string; + description?: string; + urlPath?: string; + urlTarget?: string; + imageUrl: string; + sequence?: number; +}; +type Offerings = { + name: string; + description?: string; + urlPath?: string; + urlTarget?: string; + imageUrl: string; + sequence?: number; + gradient: string[]; +}; +type Banners = { + imageUrl: string; + action?: ActionSchema; +}; +type Tips = { + name?: string; + description?: string; + urlPath: string; + urlTarget?: string; + imageUrl?: string; + sequence?: number; +}; +type DashboardTemplateResponse = { + id?: string; + name?: string; + version?: string; + active?: boolean; + sections: SectionSchema[]; +}; +type SectionSchema = { + type: string; + title?: string; + description?: string; + partners?: PartnerApplicationsResponse[]; + banners?: BannersResponse[]; + tips?: TipsResponse[]; +}; +type PartnerApplicationsResponse = { + id?: string; + name: string; + description?: string; + action: ActionSchema; + imageUrl: string; +}; +type OfferingsResponse = { + id?: string; + name: string; + description?: string; + action: ActionSchema; + imageUrl: string; + gradient: string[]; +}; +type BannersResponse = { + action?: ActionSchema; + imageUrl: string; +}; +type TipsSection = { + tips?: TipsResponse[]; + categories?: TipsCategories[]; + action?: ActionSchema; +}; +type TipsResponse = { + name?: string; + category?: string; + description?: string; + action: ActionSchema; + imageUrl?: string; +}; +type TipsCategories = { + id: string; + title: string; +}; +type ActionSchema = { + type?: string; + page?: PageSchema; + popup?: PageSchema; +}; +type UpdateDashboardTemplateRequest = { + id: string; + name?: string; + version?: string; + isDefault?: boolean; + active?: boolean; + sections?: UpdateTemplateSections[]; +}; +type UpdateTemplateSections = { + id: string; + sequence?: number; + isAvailableInMobile?: boolean; + isAvailableInDesktop?: boolean; + active?: boolean; + component?: UpdateTemplateComponent; +}; +type UpdateTemplateComponent = { + id: string; + name?: string; + description?: string; + isAvailableInDesktop?: boolean; + active?: boolean; + partners?: UpdatePartnerApplications[]; + banners?: UpdateBanners[]; + tips?: UpdateTips[]; +}; +type UpdatePartnerApplications = { + id: string; + name?: string; + description?: string; + action?: any; + imageUrl?: string; + sequence?: number; + active?: boolean; +}; +type UpdateOfferings = { + id: string; + name?: string; + description?: string; + urlPath?: string; + urlTarget?: string; + imageUrl?: string; + sequence?: number; + gradient?: string[]; +}; +type UpdateBanners = { + id: string; + imageUrl?: string; + action?: any; + sequence?: number; + active?: boolean; +}; +type UpdateTips = { + id: string; + name?: string; + description?: string; + imageUrl?: string; + action?: any; + sequence?: number; + active?: boolean; +}; +type NavigationsMobileResponse = { + tabs: TabsSchema[]; + profileSections: ProfileSectionSchema[]; +}; +type TabsSchema = { + title: string; + page: PageSchema; + icon: string; + activeIcon: string; + active: boolean; +}; +type PageSchema = { + link?: string; + type?: any; + params?: any; + query?: any; +}; +type ProfileSectionSchema = { + title: string; + navigations: ProfileNavigationSchema[]; + active: boolean; +}; +type ProfileNavigationSchema = { + title: string; + description?: string; + icon: string; + type: string; + action?: ActionSchema; + active?: boolean; +}; +type SendPNSRegisterRequest = { + deviceId: string; + deviceType: string; + token: string; +}; +type PNSRegisterResponse = { + status?: boolean; + message?: string; +}; +type FaqResponse = { + categories?: CategorySchema[]; +}; +type CategorySchema = { + uid: string; + title?: string; + description?: string; + logo?: string; + questions?: QuestionSchema[]; +}; +type QuestionSchema = { + uid: string; + title?: string; + description?: string; + displayOrder?: number; + canRaiseRequest?: boolean; +}; +type SupportCategories = { + kind?: string; + display?: string; +}; +type SupportCategoriesResponse = { + categories?: SupportCategories[]; +}; +type SanctionLetterResponse = { + sanctionedLetterFileUrl: string; +}; +type KfsDocumentResponse = { + kfsFileUrl: string; +}; +type UserWhiteListedResponse = { + status?: string; +}; +type UserConsentRequest = { + consents?: string[]; +}; +type Consents = { + type?: string; + text?: string; +}; +type UserConsentRequestV2 = { + consents?: Consents[]; +}; +type UserConsentResponse = { + success?: boolean; +}; +type UserKycSteps = { + id?: string; + index?: string; + name?: string; + rules?: any; + active?: boolean; + createdAt?: string; + updatedAt?: string; + deletedAt?: string; +}; +type CreateKycStepRequest = { + name: string; + index: string; + active: boolean; + rules?: any; +}; +type RemoveKycStepRequest = { + name?: string; + index: string; + active?: boolean; + rules?: any; +}; +type KycUpdateMessage = { + message?: string; +}; +type MobileFromLinkingRequest = { + token: string; +}; +type MobileFromLinkingResponse = { + countryCode: string; + mobile: string; +}; +type SessionFromLinkingRequest = { + token: string; +}; +type SessionFromLinkingResponse = { + session: string; + expiry: number; +}; +type LinkAccount = { + customer: CustomerObject; + redirectUrl: string; + device: Device; +}; +type LinkAccountSuccess = { + redirectUrl?: string; + statusCode?: number; + status?: string; + message?: string; + errorCode?: string; + __headers?: any; +}; +type UnlinkAccount = { + customer: CustomerObject; + device: Device; +}; +type UnlinkAccountSuccess = { + status: string; + message: string; + statusCode: number; + userStatus?: string; + errorCode?: string; + __headers?: any; +}; +type Refund = { + fingerprint?: string; + customer: CustomerObject; + refundItems?: Items[]; + orderId: string; + refundId: string; + refundAmount: number; +}; +type Translation = { + content?: any; +}; +type FilterKeys = { + display?: string; + name?: string; + kind?: string; +}; +type FilterValues = { + display?: string; + isSelected?: boolean; + value?: string; +}; +type Filters = { + key?: FilterKeys; + values?: FilterValues[]; +}; +type PageResponse = { + type: string; + current: number; + hasPrevious: boolean; + hasNext: boolean; + size: number; + itemTotal: number; +}; +type UserResponse = { + filters: Filters[]; + page: PageResponse; + listOfUsers: UserSchema[]; +}; +type UserDetailRequest = { + id: string; +}; +type UserConsents = { + id?: string; + userId?: string; + ipAddress?: string; + text?: string; + createdAt?: string; + updatedAt?: string; + deletedAt?: string; +}; +type CreditScoreSchema = { + id?: string; + userId?: string; + cibil?: number; + finbox?: string; + systemAwarded?: string; + isActive?: boolean; + deletedAt?: string; + updatedAt?: string; + createdAt?: string; +}; +type CreditLimitSchema = { + id?: string; + userId?: string; + creditLimit?: string; + createdAt?: string; + updatedAt?: string; + deletedAt?: string; +}; +type Screen = { + screenType?: string; + name?: string; + link?: string; +}; +type UserStateSchema = { + screen?: Screen; +}; +type GetAccessTokenResponse = { + success?: boolean; + accessToken?: string; + refreshToken?: string; + tokenExpireAt?: string; + tokenExpiryIn?: string; + refreshTokenExpiryAt?: string; + refreshTokenExpiryIn?: string; + scope?: string[]; + __headers?: any; +}; +type RefreshTokenResponse = { + success?: boolean; + accessToken?: string; + tokenExpireAt?: string; + tokenExpiryIn?: string; + __headers?: any; +}; +type RefreshTokenRequest = { + token: string; +}; +type Items = { + category?: string; + sku?: string; + rate?: number; + quantity?: number; +}; +type RefundStatusList = { + id?: string; + orderItems?: Items[]; + amount?: number; + status?: string; + createdAt?: string; + processedDate?: string; +}; +type RefundStatus = { + orderId?: string; + userId?: string; + merchantId?: string; + lenderId?: string; + loanAccountNumber?: string; + refund?: RefundStatusList[]; + __headers?: any; +}; +type CustomerMetricsPivots = { + date?: string; + sum?: number; +}; +type CustomerMetricsSubResponse = { + total?: string; + pivots?: CustomerMetricsPivots[]; + title?: string; + description?: string; + valueFormat?: string; + logo?: string; +}; +type CustomerMetricsAnalytics = { + totalCustomers?: CustomerMetricsSubResponse; + source?: CustomerMetricsSubResponse; +}; +type CustomerMetricsFilters = { + type: string; + display: string; + value: string[]; + isSelected?: boolean; + isActive: boolean; +}; +type CustomerMetrics = { + metrics?: CustomerMetricsAnalytics; + filters?: CustomerMetricsFilters[]; + sort?: CustomerMetricsFilters[]; +}; +type CustomerMetricsResponse = { + data?: CustomerMetrics; +}; +type CustomerMetricsRequest = { + filters?: CustomerMetricsFilters[]; + sort?: CustomerMetricsFilters[]; + merchantId?: string; + lenderId?: string; + pivotPoints?: number; +}; +type SourceAnalyticsRequest = { + filters?: CustomerMetricsFilters[]; +}; +type LenderResponse = { + slug?: string; + name?: string; + logo?: string; +}; +type CreditLimitObject = { + availableLimit?: number; + possibleLimit?: number; + lender?: LenderResponse; +}; +type BusinessDetails = { + category: string; + shopName?: string; + legalName: string; + address?: string; + type?: string; + pincode?: string; +}; +type DocumentItems = { + number?: string; + category?: string; + type?: string; + name?: string; + issuedOn?: string; + issuedAt?: string; + issuedBy?: string; + expiryOn?: string; +}; +type VintageItems = { + month: number; + year: number; + totalTransactions: number; + totalTransactionAmount: number; + totalCancellations?: number; + totalCancellationAmount?: number; +}; +type EligibilitySuccess = { + status?: string; + message?: string; + redirectUrl?: string; + callbackUrl?: string; + creditLimits?: CreditLimitObject[]; + __headers?: any; +}; +type CheckEligibilityRequest = { + customer: CustomerObject; + order?: Order; + businessDetails?: BusinessDetails; + documents?: DocumentItems[]; + device: Device; + vintage?: VintageItems[]; + meta?: any; + fetchLimitOptions?: boolean; +}; +type GetSchemesSuccess = { + userId?: string; + lenders: undefined[]; + __headers?: any; +}; +type DisbursalRequest = { + fingerprint?: string; + chargeToken: string; + loanTypeId?: number; + emiTenure?: number; + isDownpaymentRequired?: boolean; + downpaymentAmount?: number; + loanAmount?: number; +}; +type WorkflowUser = { + mobile?: string; +}; +type EligiblePlansRequest = { + chargeToken?: string; +}; +type EligiblePlans = { + name?: string; + displayName?: string; + description?: string; + brokenInterest?: number; + noOfEmi?: number; + emiAmount?: number; + processingFee?: number; + installmentInterestRate?: number; +}; +type EligiblePlansResponse = { + eligiblePlans?: EligiblePlans[]; + __headers?: any; +}; +type DisbursalResponse = { + transactionId?: string; + status?: string; + message?: string; + __headers?: any; +}; +type OrderStatus = { + orderId: string; + transactionId?: string; + status: string; + message: string; + __headers?: any; +}; +type DisbursalStatusRequest = { + fingerprint?: string; + transactionId: string; +}; +type Transactions = { + id: string; + userId: string; + partnerId?: string; + partner?: string; + partnerLogo?: string; + status: string; + type?: string; + remark?: string; + amount: number; + loanAccountNumber?: string; + kfs?: string; + utr?: string; + sanctionLetter?: string; + orderId?: string; + refundId?: string; + createdAt: string; + lenderId?: string; + lenderName?: string; + lenderLogo?: string; + loanType?: string; + repaymentTransactionId?: string; + nextDueDate?: string; + paidPercent?: number; + lenderDetail?: LenderDetail; + emis?: Emi[]; +}; +type LenderDetail = { + id?: string; + name?: string; + imageUrl?: string; + slug?: string; + active?: boolean; + b2b?: boolean; + b2c?: boolean; + theme?: Theme; + createdAt?: string; + updatedAt?: string; + deletedAt?: string; +}; +type TransactionResponse = { + filters: Filters[]; + page: PageResponse; + transactions: Transactions[]; +}; +type MerchantTransactions = { + outstandingAmount?: string; +}; +type MerchantTransactionSummary = { + merchantOutstandingSummary?: MerchantTransactions; +}; +type GetReconciliationFileResponse = { + files: ReconFile[]; +}; +type ReconFile = { + base64: string; + name: string; +}; +type UploadReconciliationFileRequest = { + base64File: string; + format?: string; + lenderId?: string; +}; +type UploadReconciliationFileResponse = { + success?: boolean; +}; +type TransactionCount = { + totalTransactions?: string; +}; +type RefundCount = { + refundTransactions?: string; +}; +type OrganizationTransactionsCount = { + count?: number; +}; +type OrganizationTransactionsSum = { + sum?: number; +}; +type UniqueCustomersInOrg = { + count?: number; +}; +type TransactionAmount = { + totalTransactionAmount?: string; +}; +type SchemaForOneDayTotal = { + orgId?: string; + createdAt?: string; + count?: number; + sum?: string; + refund?: string; + difference?: string; +}; +type SumofOneDayTransactions = { + dayTotal?: SchemaForOneDayTotal[]; +}; +type AverageTransaction = { + average?: number; +}; +type AllTransactionsResponse = { + id?: string; + userId?: string; + partnerId?: string; + status?: string; + type?: string; + remark?: string; + amount?: number; + loanAccountNumber?: string; + createdAt?: string; +}; +type TotalRefund = { + totalRefund?: string; +}; +type TotalRepayment = { + totalRepayment?: string; +}; +type TotalOverDue = { + totalDue?: string; +}; +type TotalLoansDisbursed = { + totalLoansDisbursed?: string; +}; +type OrganizationTransactionResponse = { + filters: TrFilters[]; + page: TrPageResponse; + transactions: OrgTransactions[]; +}; +type TrFilters = { + key?: TrFilterKeys; + values?: TrFilterValues[]; +}; +type TrPageResponse = { + type: string; + current: number; + hasPrevious: boolean; + hasNext: boolean; + size: number; + itemTotal: number; +}; +type OrgTransactions = { + id: string; + userId: string; + userName?: string; + partnerId?: string; + partner?: string; + partnerLogo?: string; + status: string; + type?: string; + remark?: string; + amount: number; + orderId?: string; + loanAccountNumber?: string; + kfs?: string; + sanctionLetter?: string; + createdAt: string; +}; +type TrFilterKeys = { + display?: string; + name?: string; + kind?: string; +}; +type TrFilterValues = { + display?: string; + isSelected?: boolean; + value?: string; +}; +type KfsRequest = { + loanTypeId?: number; + chargeToken?: string; +}; +type KfsResponse = { + kfsTable?: string; +}; +type LenderTransactionState = { + id?: string; + stepIndex?: number; + lenderId?: string; + workflowId?: string; + workflowName?: string; + parentStateId?: string; + workflowUrl?: string; + isInternal?: boolean; + active?: boolean; + ttl?: number; + name?: string; + type?: string; + inputData?: any; + createdAt?: string; + updatedAt?: string; + deletedAt?: string; +}; +type TransactionStateResponse = { + transactionState?: LenderTransactionState[]; +}; +type Theme = { + logoUrl?: string; + iconUrl?: string; + landscapeBgUrl?: string; + portraitBgUrl?: string; + shortName?: string; +}; +type Emi = { + id?: string; + userId?: string; + installmentno?: number; + loanAccountNumber?: string; + amount?: number; + dueDate?: string; + referenceTransactionId?: string; + remark?: string; + createdAt?: string; + updatedAt?: string; + entityId?: string; + paid?: boolean; + overdue?: boolean; + repaymentDate?: string; +}; +type MetricPivots = { + date?: string; + sum?: number; +}; +type TransactionMetricSubResponse = { + total?: string; + pivots?: MetricPivots[]; + title?: string; + description?: string; + valueFormat?: string; + logo?: string; +}; +type TransactionMetrics = { + totalDisbursement?: TransactionMetricSubResponse; + totalOverdue?: TransactionMetricSubResponse; + totalRepayment?: TransactionMetricSubResponse; +}; +type LenderCustomerTransactionMetricsFilters = { + type: string; + display: string; + value: string[]; + isSelected?: boolean; + isActive: boolean; +}; +type LenderCustomerTransactionMetrics = { + metrics?: TransactionMetrics; + filters?: LenderCustomerTransactionMetricsFilters[]; + sort?: LenderCustomerTransactionMetricsFilters[]; +}; +type LenderCustomerTransactionMetricsResponse = { + data?: any; +}; +type LenderCustomerTransactionMetricsRequest = { + filters?: LenderCustomerTransactionMetricsFilters[]; + sort?: LenderCustomerTransactionMetricsFilters[]; + startDate?: string; + endDate?: string; + merchantId?: string; + lenderId?: string; + pivotPoints?: number; +}; +type LenderTheme = { + logoUrl: string; + iconUrl: string; + landscapeBgUrl: string; + portraitBgUrl: string; + shortName: string; +}; +type Lender = { + id?: string; + name?: string; + active?: boolean; + imageUrl?: string; + slug?: string; + theme?: LenderTheme; + b2b?: boolean; + b2c?: boolean; + merchantConfigSchema?: string; + createdAt?: string; + updatedAt?: string; + approvedLimit?: number; + deletedAt?: string; + meta?: any; + metaSchema?: any; +}; +type UserLender = { + id: string; + userId: string; + lenderId: string; + active?: boolean; + status: string; + createdAt: string; + updatedAt: string; + deletedAt?: string; + approvedLimit: number; + entityId?: string; + entityMapId?: string; +}; +type SourceCreditReport = { + id: string; + userId: string; + pan: string; + name: string; + mobile: string; + bureau: string; + score: string; + report: string; + createdAt?: string; +}; +type Document = { + id: string; + userId: string; + imageUrl: string; + number: string; + detail: any; + valid: boolean; + createdAt: string; + updatedAt: string; + deletedAt?: string; + entityId?: string; +}; +type UserKycDetail = { + id: string; + userId: string; + status: string; + type: string; + remark: string; + profileType: string; + active: boolean; + expiryDate?: string; + createdAt?: string; + updatedAt?: string; + deletedAt?: string; + lenderId: string; + lender?: Lender; + entityMapId?: string; + entityId?: string; +}; +type Form = { + id?: string; + name?: string; + title?: string; + subtitle?: string; + action?: string; + form?: any; + uiSchema?: any; + workflowId?: string; +}; +type LenderKycStepMap = { + id?: string; + step: string; + stepIndex: number; + lenderId: string; + active: boolean; + rules: any; + profileType: string; + createdAt?: string; + updatedAt?: string; + deletedAt?: string; + name: string; + description: string; + iconUrl: string; + isInteractive: boolean; + formId?: string; + merchantId?: string; + form: Form; + docSchema: any; +}; +type UserKycLenderStepMap = { + id: string; + userId: string; + lenderKycStepMapId: string; + userKycDetailId: string; + lenderId: string; + ruleState: any; + active: boolean; + status: string; + documentId?: string; + createdAt: string; + updatedAt: string; + deletedAt?: string; + lenderKycStepMap?: LenderKycStepMap; + entityMapId?: string; + entityId?: string; + updatedBy?: string; +}; +type ProofOfIdentity = { + dob: string; + hashedEmail: string; + gender: string; + hashedMobileNumber: string; + name: string; +}; +type ProofOfAddress = { + careOf: string; + country: string; + district: string; + house: string; + landmark: string; + locality: string; + pincode: string; + postOffice: string; + state: string; + street: string; + subDistrict: string; + vtc: string; +}; +type EAadhaarData = { + aadhaarReferenceNumber: string; + aadhaarUid: string; + image: string; + proofOfIdentity: ProofOfIdentity; + proofOfAddress: ProofOfAddress; + xml?: string; + pdf?: string; + address?: string; +}; +type Consent = { + text: string; + type: string; +}; +type ValidatePanRequest = { + pan: string; + consents: Consent[]; +}; +type BankDetails = { + accountType: string; + bankName: string; + ifsc: string; + accountNumber: string; + accountHolderName: string; +}; +type DocumentData = { + selfie?: string; + video?: string; + digilockerCode?: string; + bankDetails?: BankDetails; +}; +type ConfirmPanRequest = { + pan: string; + name: string; + entity?: string; + merchantId?: string; +}; +type LivelinessDetails = { + selfie: string; + video: string; +}; +type UploadDocumentRequest = { + user?: any; + documentData?: any; + lenderSlug: string; + kycStep: string; + merchantId?: string; + entityMapId?: string; +}; +type UploadDocumentRequestV1 = { + kycStep: string; + entityMapId: string; + documentData: any; +}; +type UploadDocumentRequestV3 = { + kycStep: string; + entityMapId: string; + documentData: any; +}; +type AadhaarRequest = { + digilockerCode?: string; +}; +type UploadAadhaarRequest = { + documentData?: AadhaarRequest; + user?: any; + lenderSlug: string; + kycStep: string; + merchantId?: string; + entityMapId?: string; +}; +type UploadLivelinessRequest = { + documentData?: LivelinessDetails; + user?: any; + lenderSlug: string; + kycStep: string; + merchantId?: string; + entityMapId?: string; +}; +type UploadAadhaarRequestV1 = { + documentData: AadhaarRequest; + kycStep: string; + entityMapId: string; +}; +type UploadLivelinessRequestV1 = { + documentData: LivelinessDetails; + kycStep: string; + entityMapId: string; +}; +type UploadAadhaarRequestV2 = { + documentData?: AadhaarRequest; + user?: any; + lenderSlug: string; + kycStep: string; + merchantId?: string; + entityMapId?: string; +}; +type UploadLivelinessRequestV2 = { + documentData?: LivelinessDetails; + user?: any; + lenderSlug: string; + kycStep: string; + merchantId?: string; + entityMapId?: string; +}; +type UploadAadhaarRequestV3 = { + documentData: AadhaarRequest; + kycStep: string; + entityMapId: string; +}; +type UploadLivelinessRequestV3 = { + documentData: LivelinessDetails; + kycStep: string; + entityMapId: string; +}; +type UploadBankDetailsRequest = { + documentData?: BankDetails; + user?: any; + lenderSlug: string; + kycStep: string; + merchantId?: string; + entityMapId?: string; +}; +type InitiateKycRequest = { + kycType: string; + kycId?: string; + merchantId?: string; +}; +type InitiateKycRequestV1 = { + entityMapId: string; + kycType: string; + kycId?: string; + merchantId?: string; +}; +type LenderOnboardRequest = { + ack?: string; + data: any; + entityMapId?: string; + merchantId?: string; +}; +type UpdateLenderStatusRequest = { + status: string; + payload: any; + data: any; + action: boolean; +}; +type UpdateProfileRequest = { + firstName?: string; + lastName?: string; + gender?: string; + dob?: string; + userId: string; + isOnboarded?: boolean; + address?: string; +}; +type UpdateEntityRequest = { + name?: string; + gender?: string; + dob?: string; + isDefault?: boolean; + address?: ProofOfAddress; +}; +type CreateKycStepsRequest = { + data: any; +}; +type CreateLenderPgConfigRequest = { + mid: string; + clientId: string; + secret: string; + active: boolean; + pgId: string; + lenderId: string; +}; +type CreateLenderStateRequest = { + data: any; +}; +type UpdateLenderRequest = { + data: any; + lenderId: string; +}; +type OtherPolicyFilters = { + orderBy?: any[]; +}; +type GetPolicyFilters = { + policyType?: string; + lenderIds?: any[]; + merchantIds?: any[]; + orderBy?: any[]; +}; +type GetPolicyFilters2 = { + breType?: string; + lenderId?: any[]; + merchantId?: any[]; + loanType?: string; + journeyType?: string; + subType?: string; +}; +type MerchantConfigRequest = { + id: string; + merchantConfigSchema: any; +}; +type PanDetails = { + name: string; + idNumber: string; +}; +type AvailableLendersRequest = { + chargeToken: string; +}; +type InitialData = { + userId: string; + entityId: string; +}; +type ExecutePolicyRequest = { + policyFilters?: GetPolicyFilters; + initialData: InitialData; +}; +type ExecutePolicyRequest2 = { + policyFilters?: GetPolicyFilters2; + initialData: InitialData; +}; +type RegisterGstRequest = { + gstTin: string; +}; +type PopulateFormRequest = { + form: any; + lenderId?: string; + merchantId?: string; +}; +type ValidateFormFieldRequest = { + workflowName: string; + userId?: string; + entityId?: string; + entityMapId?: string; + lenderId?: string; + merchantId?: string; + fields: any; +}; +type MerchantMetricFilter = { + type: string; + display: string; + value: any[]; + isSelected?: boolean; + isActive?: boolean; +}; +type LenderCustomerMetricsRequest = { + sort?: MerchantMetricFilter[]; + filters?: MerchantMetricFilter[]; + merchantId?: string; + lenderId?: string; + pivotPoints?: number; +}; +type StonewallCustomer = { + mobile?: string; + uid?: string; +}; +type GetLimitRequest = { + lenderSlugs?: any[]; + onlyDefaultLender?: boolean; + customer: StonewallCustomer; +}; +type DocumentObject = { + id?: string; + userId?: string; + name?: string; + imageUrl?: string; + number: string; + detail: any; + valid?: boolean; + entityId?: string; +}; +type ManualKycRequest = { + remark: any; + status: string; + stepId: string; + entityMapId: string; + documentData?: DocumentObject; +}; +type RetriggerLenderOnboardRequest = { + stepId: string; + data: any; +}; +type EntityMapDto = { + id: string; + merchantId?: string; + status?: string; + lenderId: string; + limit?: number; + creditType?: string; + userId: string; + entityId: string; +}; +type EntityDto = { + id: string; + type?: string; + address?: string; + name?: string; + gender?: string; + dob?: string; + userId: string; +}; +type FindDocResponse = { + status: string; + info: string; + number: string; + details?: any; + name?: string; +}; +type LenderKycStatus = { + status: string; + lenderId?: string; + lenderName?: string; + kycType?: string; +}; +type StateResponeDto = { + step: UserKycLenderStepMap; + isStepCompleted: boolean; +}; +type KycStateMachineDto = { + kycResult: UserKycDetail; + action?: UserKycLenderStepMap; +}; +type InitiateKycDto = { + kycType: string; + lenderId: string; + user: any; + kycId?: string; + entityRelation?: EntityMapDto; +}; +type LenderOnboardDto = { + lender?: Lender; + user: any; + userLenderDetail?: UserLender; + payload: LenderOnboardRequest; + entityRelation?: EntityMapDto; + ipAddress: string; + overrideTtl?: boolean; +}; +type StepDetails = { + name?: string; + description?: string; + iconUrl?: string; + status: string; + step: string; + order: number; +}; +type OnboardStatusDto = { + onboardStep: string; + onboardingId: string; + status: string; + action: string; + actionStatus: string; + lender: Lender; + navigation?: string; + approvedLimit: number; + proposedLimit: number; + actionData?: any; + steps?: StepDetails[]; + entityId: string; + entityMapId: string; + actionIsForm: boolean; + actionForm?: Form; +}; +type LenderFilters = { + includeStatus?: any[]; + excludeStatus?: any[]; + allowDisabledLender?: any; +}; +type Policy = { + id?: string; + name?: string; + url?: string; + data?: any; + version?: string; + active?: boolean; + type?: any; + index?: number; + lenderId?: string; + merchantId?: string; + workflowId?: string; + schemaRef?: any[]; + masterVariableRef?: any[]; + customVariable?: any; + subType?: string; + createdAt?: any; + updatedAt?: any; + deletedAt?: any; +}; +type GetKycDocsResponse = { + documents: FindDocResponse[]; +}; +type OrganizationLogosObject = { + id: string; + name: string; + logo: string; + active: boolean; +}; +type MetricSubTypes = { + date: string; + count?: string; + sum?: string; +}; +type MetricTypes = { + pivots: MetricSubTypes[]; + total?: string; + description: string; + title: string; + valueFormat: string; + logo: string; +}; +type BreApprovedUsersResponse = { + data: MetricTypes; +}; +type Metrics = { + lenderApprovedUsers: MetricTypes; + breApprovedUsers: MetricTypes; + totalCreditLine: MetricTypes; +}; +type MetricData = { + metrics: Metrics; + filters: MerchantMetricFilter[]; + sort: MerchantMetricFilter[]; +}; +type ApprovedLenders = { + status: string; + lenders: BreOutput[]; +}; +type BreResultStatus = { + status: string; + approvedLenders?: BreOutput[]; +}; +type GetAllUserLendersByEnityId = { + entityId: string; + entityMapId: string; + userId: string; + status: string; + lender: Lender; + partnerId?: string; +}; +type LenderState = { + id?: string; + name: string; + lenderId: string; + index: number; + workflowName: string; + workflowUrl?: string; + active: boolean; + createdAt?: string; + updatedAt?: string; + deletedAt?: string; + lender?: Lender; + parentStateId?: string; + ttl: number; + displayName?: string; + description?: string; + iconUrl?: string; + isInteractive: boolean; + schema?: any; +}; +type UserLenderState = { + id: string; + lenderStateId: string; + lenderId: string; + userId: string; + status: string; + userLenderId: string; + remark: string; + active: boolean; + lenderState?: LenderState; + data?: any; + createdAt?: string; + updatedAt?: string; + deletedAt?: string; + entityId?: string; + entityMapId?: string; + updatedBy?: string; +}; +type LenderConfig = { + id?: string; + baseUrl: string; + accessToken?: string; + secret?: string; + data: any; + lenderId: string; + active?: boolean; + createdAt?: string; + updatedAt?: string; + deletedAt?: string; +}; +type Pg = { + id: string; + name: string; + active: boolean; +}; +type LenderPgConfig = { + id?: string; + mid: string; + clientId: string; + secret: string; + lenderId: string; + pgId: string; + active: boolean; +}; +type FileUploadResponse = { + fileId: string; + name: string; + path: string; + format: string; + size: number; + access: string; + tags: string; + metadata: string; + url: string; + thumbnail: string; +}; +type PresignedUrl = { + url: string; + fields: any; +}; +type PresignedUrlV2 = { + url: string; + fields: any; +}; +type LenderDocument = { + id?: string; + lenderId?: string; + type?: string; + document?: any; + active?: boolean; + createdAt?: string; + updatedAt?: string; + deletedAt?: string; +}; +type KycStatusResponse = { + isKycInitiated: boolean; + userId: string; + kycStatuses: LenderKycStatus[]; +}; +type WorkflowResponse = { + data?: any; +}; +type InitiateKycResponse = { + kycResult: UserKycDetail; + action: any; +}; +type UploadDocResponse = { + status: string; + data?: any; + remark?: string; + kycResult: UserKycDetail; + action: any; +}; +type LenderOnboardResponse = { + result: UserLender; + action: UserLenderState; + data: any; +}; +type OnboardingStatusResponse = { + onboardStatuses: OnboardStatusDto[]; +}; +type SignedUrlResponse = { + signedUrl: PresignedUrl; + fileUrl: string; +}; +type SignedUrlV2Response = { + signedUrl: PresignedUrlV2; + fileUrl: string; +}; +type PresignedUrlV3 = { + signedUrl: string; + provider: any; +}; +type SignedUrlV3Response = { + signedDetails: PresignedUrlV3; + fileUrl: string; +}; +type DigilockerLinkResponse = { + authorizationUrl: string; +}; +type GetDocumentsResponse = { + documents: FindDocResponse[]; +}; +type ApprovedLendersTransaction = { + name: string; + slug: string; + imageUrl: string; + status: string; + active: boolean; + proposedLimit: number; + createdAt: any; + updatedAt: any; + deletedAt?: any; + isDefault?: boolean; + __headers?: any; +}; +type ApprovedPossibleLenders = { + limit: number; + name: string; + slug: string; + active: boolean; + id: string; + theme?: LenderTheme; +}; +type AvailableLenders = { + approvedLenders: ApprovedPossibleLenders[]; + possibleLenders: ApprovedPossibleLenders[]; +}; +type CreditLimit = { + availableLimit: number; + approvedLimit: number; +}; +type CreditLimitResponse = { + status: string; + message: string; + action: boolean; + credit: CreditLimit; +}; +type LenderPgConfigResponse = { + id: string; + mid: string; + clientId: string; + secret: string; + lenderId: string; + pgId: string; + active: boolean; + pgName: string; + pgActive: boolean; +}; +type GetLendersResponse = { + data: Lender[]; +}; +type LenderConfigurationResponse = { + lender: Lender; + lenderPgConfig: LenderPgConfig; + lenderConfig: LenderConfig; + lenderState: LenderState[]; + lenderKycStepMap: LenderKycStepMap[]; +}; +type UpsertLenderResponse = { + data: any; +}; +type UpsertLenderConfigResponse = { + data: any; +}; +type CreateKycStepsSchema = { + data: LenderKycStepMap[]; +}; +type CreatePaymentGatewaySchema = { + data: LenderPgConfig[]; +}; +type CreateLenderStateSchema = { + data: LenderState[]; +}; +type GetAllPaymentGatewaysSchema = { + data: Pg[]; +}; +type PolicyResponse = { + policies: Policy[]; +}; +type CreditCheckBreResponse = { + newLenderAssigned: boolean; + breStatus: string; +}; +type MerchantConfigResponse = { + id: string; + merhantConfigSchema: string; +}; +type UserLenderByIdAndStatusResponse = { + id: string; + userId: string; + lenderId: string; + active?: boolean; + status: string; + createdAt: string; + updatedAt: string; + deletedAt?: string; + approvedLimit: number; + slug?: string; + theme?: LenderTheme; + name?: any; +}; +type IntgrAvailableCreditLimit = { + limit: number; + lenderName: string; + slug: string; + isDefault: boolean; + logoUrl: string; +}; +type IngtrAvailableLimit = { + available: IntgrAvailableCreditLimit[]; +}; +type IntgrCreditLimit = { + limit: IngtrAvailableLimit; + __headers?: any; +}; +type PossibleLendersInternal = { + limit: boolean; + lenderName: string; + slug: string; + isDefault: boolean; + logo: string; + lenderId: string; +}; +type PossibleLendersInternalResponse = { + lenders: PossibleLendersInternal[]; +}; +type GetTotalKycResponse = { + totalKyc: string; +}; +type GetTotalKycCompletedUsersResponse = { + totalKycCompletedUsers: string; +}; +type GetTotalPendingUsersResponse = { + totalPendingKyc: string; +}; +type GetTotalCreditProvidedResponse = { + totalCreditLimit: string; +}; +type MetaSchemaResponse = { + title: string; + name: string; + required: string[]; + type: string; + properties: any; +}; +type MetaSchema = { + metaSchema: MetaSchemaResponse; +}; +type AddMetaSchema = { + lenderSlug: string; + merchantId: string; + schema: any; +}; +type AddMetaSchemaRequest = { + merchantId: string; + schema: any; +}; +type ValidatePanResponse = { + panName: string; + isPanValid: string; + pan: string; + isProprietor: boolean; + panType: string; + errorCode?: string; + status?: string; + errorMessage?: string; +}; +type ConfirmPanResonse = { + status: string; + statusCode: string; + message: string; +}; +type LenderCountResponse = { + active: number; + inActive: number; +}; +type OnboardStepsDto = { + steps: StepDetails[]; + lender: Lender; +}; +type OnboardStepsResponse = { + stepDetails: OnboardStepsDto[]; +}; +type LenderDocumentResponse = { + data: LenderDocument; +}; +type GetUserLendersResponse = { + data: UserLender[]; +}; +type CreditReportResponse = { + data: SourceCreditReport; +}; +type KycDetailsReponse = { + data: UserKycLenderStepMap; +}; +type GetDocumentByIdResponse = { + data: Document; +}; +type GetAllFormsResponse = { + data: any; +}; +type UpsertFormResponse = { + data: any; +}; +type GstDetails = { + gstTin: string; + businessName: string; +}; +type GstDetailsResponse = { + gstDetails: GstDetails[]; +}; +type RegisterGstResponse = { + gstDocDetails: Document; + status: string; +}; +type PopulateFormResponse = { + form: any; +}; +type ValidateFormFieldResponse = { + status: string; + message: string; + data: any; +}; +type LenderCustomerMetricsResponse = { + status: string; + message: string; + data: MetricData; +}; +type ManualKycResponse = { + message: string; + step: UserKycLenderStepMap; +}; +type BreOutput = { + id: string; + userId: string; + entityId: string; + lenderId?: string; + merchantId?: string; + policyName: string; + category: string; + type: string; + output: any; + status: string; + createdAt: string; + updatedAt: string; + deletedAt: string; +}; +type CustomerKycDetailsReponse = { + data: UserKycLenderStepMap; +}; diff --git a/sdk/platform/PlatformClient.js b/sdk/platform/PlatformClient.js new file mode 100644 index 0000000..48c5089 --- /dev/null +++ b/sdk/platform/PlatformClient.js @@ -0,0 +1,3361 @@ +const { + CustomerValidator, + CreditValidator, + MultiKycValidator, +} = require("./PlatformModels"); +const PlatformApplicationClient = require("./PlatformApplicationClient"); +const Paginator = require("../common/Paginator"); +const PlatformAPIClient = require("./PlatformAPIClient"); +const { FDKClientValidationError } = require("../common/FDKError"); + +class PlatformClient { + constructor(config) { + this.config = config; + this.customer = new Customer(config); + this.credit = new Credit(config); + this.multiKyc = new MultiKyc(config); + } + application(applicationId) { + if (typeof applicationId == "string") { + return new PlatformApplicationClient(applicationId, this.config); + } + throw new Error( + `Application Id should be of type string, ${typeof applicationId} provided` + ); + } + + setExtraHeaders(header) { + if (typeof header === "object") { + this.config.extraHeaders.push(header); + } else { + throw new FDKClientValidationError("Context value should be an object"); + } + } +} + +/** + * @typedef UserSchema + * @property {string} [id] + * @property {string} [firstName] + * @property {string} [lastName] + * @property {string} [countryCode] + * @property {string} [mobile] + * @property {string} [email] + * @property {string} [gender] + * @property {string} [dob] + * @property {boolean} [active] + * @property {string} [profilePicUrl] + * @property {boolean} [isEmailVerified] + * @property {string} [createdAt] + * @property {string} [updatedAt] + * @property {string} [deletedAt] + */ + +/** + * @typedef count + * @property {string} [totalUsers] + */ + +/** + * @typedef FilterByDate + * @property {string} [startDate] + * @property {string} [endDate] + */ + +/** + * @typedef LenderCount + * @property {string} [totalLenders] + */ + +/** + * @typedef LenderSchema + * @property {string} [id] + * @property {string} [name] + * @property {boolean} [active] + * @property {string} [createdAt] + * @property {string} [updatedAt] + * @property {string} [deletedAt] + */ + +/** + * @typedef TotalUsersPerLender + * @property {Filters[]} filters + * @property {PageResponse} page + * @property {TotalUsersPerLenderData[]} lenderList + */ + +/** + * @typedef TotalUsersPerLenderData + * @property {string} [id] + * @property {string} [name] + * @property {boolean} [active] + * @property {string} [createdAt] + * @property {string} [updatedAt] + * @property {string} [deletedAt] + * @property {string} [totalUsers] + */ + +/** + * @typedef TotalUserByLender + * @property {string} [name] + * @property {string} [count] + */ + +/** + * @typedef UsersByLender + * @property {string} [firstName] + * @property {string} [lastName] + * @property {string} [mobile] + * @property {string} [email] + * @property {string} [name] + */ + +/** + * @typedef ErrorResponse + * @property {string} [message] + * @property {string} [info] + * @property {string} [code] + * @property {string} [requestId] + * @property {Object} [meta] + */ + +/** + * @typedef EditProfileRequest + * @property {string} [firstName] + * @property {string} [lastName] + * @property {string} [countryCode] + * @property {string} [mobile] + * @property {string} [email] + * @property {string} [gender] + * @property {string} [dob] + * @property {string} [registrationToken] + */ + +/** + * @typedef VerifyOtpRequest + * @property {string} requestId + * @property {string} otp + * @property {string} [captchaCode] + * @property {string} [androidHash] + * @property {string} [referralCode] + * @property {string} [onboardingToken] + */ + +/** + * @typedef SendMobileOtpRequest + * @property {string} countryCode + * @property {string} mobile + * @property {string} [captchaCode] + * @property {string} [androidHash] + * @property {string} [force] + */ + +/** + * @typedef ReSendMobileOtpRequest + * @property {string} [captchaCode] + * @property {string} token + * @property {string} [androidHash] + */ + +/** + * @typedef SendOtpRequest + * @property {string} [countryCode] + * @property {string} [captchaCode] + * @property {string} [mobile] + */ + +/** + * @typedef ApplicationUser + * @property {UserSchema} [user] + */ + +/** + * @typedef SendOtpResponse + * @property {number} [resendTimer] + * @property {string} [resendToken] + * @property {boolean} [success] + * @property {string} [requestId] + * @property {string} [message] + * @property {string} [mobile] + * @property {string} [countryCode] + * @property {string} [email] + * @property {string} [resendEmailToken] + * @property {string} [registerToken] + * @property {boolean} [verifyEmailOtp] + * @property {boolean} [verifyMobileOtp] + * @property {boolean} [userExists] + */ + +/** + * @typedef EmailUpdate + * @property {string} [email] + */ + +/** + * @typedef UserUpdateRequest + * @property {Object} [firstName] + * @property {Object} [lastName] + * @property {string} countryCode + * @property {string} mobile + * @property {Object} [email] + * @property {Object} [gender] + * @property {Object} [dob] + * @property {boolean} [active] + * @property {Object} [profilePictureUrl] + * @property {boolean} [isEmailVerified] + */ + +/** + * @typedef LenderUpdateRequest + * @property {string} id + * @property {string} [name] + * @property {boolean} [active] + */ + +/** + * @typedef ProfileEditSuccess + * @property {UserSchema} [user] + * @property {string} [registerToken] + * @property {string} [resendEmailToken] + * @property {boolean} [userExists] + * @property {boolean} [verifyEmailLink] + * @property {boolean} [verifyEmailOtp] + * @property {boolean} [verifyMobileOtp] + * @property {string} [email] + * @property {string} [requestId] + * @property {string} [countryCode] + * @property {string} [mobile] + * @property {boolean} [success] + * @property {string} [message] + * @property {number} [resendTimer] + * @property {string} [resendToken] + */ + +/** + * @typedef LoginSuccess + * @property {UserSchema} [user] + * @property {string} [requestId] + * @property {string} [registerToken] + */ + +/** + * @typedef VerifyOtpSuccess + * @property {UserSchema} [user] + * @property {boolean} [userExists] + * @property {boolean} [isNew] + */ + +/** + * @typedef LogoutSuccess + * @property {boolean} [logout] + */ + +/** + * @typedef OtpSuccess + * @property {number} [resendTimer] + * @property {string} [resendToken] + * @property {string} [registerToken] + * @property {boolean} [success] + * @property {string} [requestId] + * @property {string} [message] + * @property {string} [mobile] + * @property {boolean} [isNew] + * @property {string} [countryCode] + * @property {number} [otpLength] + */ + +/** + * @typedef SessionListSuccess + * @property {string[]} [sessions] + */ + +/** + * @typedef VerifyMobileOTPSuccess + * @property {UserSchema} [user] + */ + +/** + * @typedef Location + * @property {number} [latitude] + * @property {number} [longitude] + */ + +/** + * @typedef OrderAddress + * @property {string} [line1] + * @property {string} [line2] + * @property {string} [city] + * @property {string} [state] + * @property {string} [country] + * @property {string} [pincode] + * @property {string} [type] + * @property {Location} [geoLocation] + */ + +/** + * @typedef CustomerObject + * @property {string} [countryCode] + * @property {string} mobile + * @property {string} uid + * @property {string} [email] + * @property {string} [firstname] + * @property {string} [middleName] + * @property {string} [lastName] + */ + +/** + * @typedef Order + * @property {number} valueInPaise + * @property {string} uid + * @property {number} [emiTenure] + * @property {Items[]} [items] + * @property {OrderAddress} [shippingAddress] + * @property {OrderAddress} [billingAddress] + */ + +/** + * @typedef OrderUid + * @property {number} [valueInPaise] + * @property {string} uid + * @property {Items[]} [items] + * @property {OrderAddress} [shippingAddress] + * @property {OrderAddress} [billingAddress] + */ + +/** + * @typedef CustomerMeta + * @property {string} ip + * @property {string} appVersion + * @property {string} [appIdentifier] + * @property {string} [customerUserAgent] + * @property {string} deviceId + */ + +/** + * @typedef Device + * @property {string} ipAddress + * @property {string} userAgent + * @property {number} [latitude] + * @property {number} [longitude] + */ + +/** + * @typedef VerifyCustomer + * @property {CustomerObject} customer + * @property {Order} order + * @property {Device} device + * @property {Object} [meta] + * @property {boolean} [fetchLimitOptions] + */ + +/** + * @typedef CreateTransaction + * @property {boolean} [autoCapture] + * @property {string} redirectUrl + * @property {CustomerObject} customer + * @property {Order} order + * @property {Device} device + * @property {Object} [meta] + */ + +/** + * @typedef ResendPaymentRequest + * @property {boolean} [autoCapture] + * @property {string} [redirectUrl] + * @property {CustomerObject} customer + * @property {OrderUid} order + */ + +/** + * @typedef VerifyCustomerSuccess + * @property {string} [status] + * @property {string} [userStatus] + * @property {string} [message] + * @property {Object} [__headers] + */ + +/** + * @typedef CreateTransactionSuccess + * @property {string} [chargeToken] + * @property {string} [redirectUrl] + * @property {string} message + * @property {string} [transactionId] + * @property {string} [status] + * @property {string} [userStatus] + * @property {Object} [__headers] + */ + +/** + * @typedef SupportDocuments + * @property {string} [fileName] + * @property {string} [fileUrl] + */ + +/** + * @typedef CreateTicketResponse + * @property {string} [serviceRequestId] + * @property {string} [message] + */ + +/** + * @typedef CreateTicket + * @property {string} category + * @property {string} [transactionId] + * @property {string} description + * @property {SupportDocuments[]} [documents] + */ + +/** + * @typedef InitiateTransactions + * @property {string} token + */ + +/** + * @typedef GetMobileFromToken + * @property {string} token + */ + +/** + * @typedef GetDataFromToken + * @property {string} token + */ + +/** + * @typedef MerchantDetails + * @property {string} [name] + * @property {string} [website] + * @property {string} [logo] + */ + +/** + * @typedef InitiateTransactionsSuccess + * @property {string} chargeToken + * @property {string} [session] + * @property {string} [expiry] + * @property {string} [hash] + * @property {Order} [order] + * @property {boolean} [isAsp] + * @property {MerchantDetails} [merchant] + */ + +/** + * @typedef RetrieveMobileFromToken + * @property {string} countryCode + * @property {string} mobile + */ + +/** + * @typedef CreateDashboardTemplateRequest + * @property {string} name + * @property {string} version + * @property {boolean} [isDefault] + * @property {TemplateSections[]} sections + */ + +/** + * @typedef TemplateSections + * @property {number} sequence + * @property {boolean} isAvailableInMobile + * @property {boolean} isAvailableInDesktop + * @property {TemplateComponent} component + */ + +/** + * @typedef TemplateComponent + * @property {string} name + * @property {string} description + * @property {boolean} [isAvailableInDesktop] + * @property {PartnerApplications[]} [partnerApplications] + * @property {Banners[]} [banners] + * @property {Tips[]} [tips] + */ + +/** + * @typedef PartnerApplications + * @property {string} name + * @property {string} [description] + * @property {string} [urlPath] + * @property {string} [urlTarget] + * @property {string} imageUrl + * @property {number} [sequence] + */ + +/** + * @typedef Offerings + * @property {string} name + * @property {string} [description] + * @property {string} [urlPath] + * @property {string} [urlTarget] + * @property {string} imageUrl + * @property {number} [sequence] + * @property {string[]} gradient + */ + +/** + * @typedef Banners + * @property {string} imageUrl + * @property {ActionSchema} [action] + */ + +/** + * @typedef Tips + * @property {string} [name] + * @property {string} [description] + * @property {string} urlPath + * @property {string} [urlTarget] + * @property {string} [imageUrl] + * @property {number} [sequence] + */ + +/** + * @typedef DashboardTemplateResponse + * @property {string} [id] + * @property {string} [name] + * @property {string} [version] + * @property {boolean} [active] + * @property {SectionSchema[]} sections + */ + +/** + * @typedef SectionSchema + * @property {string} type + * @property {string} [title] + * @property {string} [description] + * @property {PartnerApplicationsResponse[]} [partners] + * @property {BannersResponse[]} [banners] + * @property {TipsResponse[]} [tips] + */ + +/** + * @typedef PartnerApplicationsResponse + * @property {string} [id] + * @property {string} name + * @property {string} [description] + * @property {ActionSchema} action + * @property {string} imageUrl + */ + +/** + * @typedef OfferingsResponse + * @property {string} [id] + * @property {string} name + * @property {string} [description] + * @property {ActionSchema} action + * @property {string} imageUrl + * @property {string[]} gradient + */ + +/** + * @typedef BannersResponse + * @property {ActionSchema} [action] + * @property {string} imageUrl + */ + +/** + * @typedef TipsSection + * @property {TipsResponse[]} [tips] + * @property {TipsCategories[]} [categories] + * @property {ActionSchema} [action] + */ + +/** + * @typedef TipsResponse + * @property {string} [name] + * @property {string} [category] + * @property {string} [description] + * @property {ActionSchema} action + * @property {string} [imageUrl] + */ + +/** + * @typedef TipsCategories + * @property {string} id + * @property {string} title + */ + +/** + * @typedef ActionSchema + * @property {string} [type] + * @property {PageSchema} [page] + * @property {PageSchema} [popup] + */ + +/** + * @typedef UpdateDashboardTemplateRequest + * @property {string} id + * @property {string} [name] + * @property {string} [version] + * @property {boolean} [isDefault] + * @property {boolean} [active] + * @property {UpdateTemplateSections[]} [sections] + */ + +/** + * @typedef UpdateTemplateSections + * @property {string} id + * @property {number} [sequence] + * @property {boolean} [isAvailableInMobile] + * @property {boolean} [isAvailableInDesktop] + * @property {boolean} [active] + * @property {UpdateTemplateComponent} [component] + */ + +/** + * @typedef UpdateTemplateComponent + * @property {string} id + * @property {string} [name] + * @property {string} [description] + * @property {boolean} [isAvailableInDesktop] + * @property {boolean} [active] + * @property {UpdatePartnerApplications[]} [partners] + * @property {UpdateBanners[]} [banners] + * @property {UpdateTips[]} [tips] + */ + +/** + * @typedef UpdatePartnerApplications + * @property {string} id + * @property {string} [name] + * @property {string} [description] + * @property {Object} [action] + * @property {string} [imageUrl] + * @property {number} [sequence] + * @property {boolean} [active] + */ + +/** + * @typedef UpdateOfferings + * @property {string} id + * @property {string} [name] + * @property {string} [description] + * @property {string} [urlPath] + * @property {string} [urlTarget] + * @property {string} [imageUrl] + * @property {number} [sequence] + * @property {string[]} [gradient] + */ + +/** + * @typedef UpdateBanners + * @property {string} id + * @property {string} [imageUrl] + * @property {Object} [action] + * @property {number} [sequence] + * @property {boolean} [active] + */ + +/** + * @typedef UpdateTips + * @property {string} id + * @property {string} [name] + * @property {string} [description] + * @property {string} [imageUrl] + * @property {Object} [action] + * @property {number} [sequence] + * @property {boolean} [active] + */ + +/** + * @typedef NavigationsMobileResponse + * @property {TabsSchema[]} tabs + * @property {ProfileSectionSchema[]} profileSections + */ + +/** + * @typedef TabsSchema + * @property {string} title + * @property {PageSchema} page + * @property {string} icon + * @property {string} activeIcon + * @property {boolean} active + */ + +/** + * @typedef PageSchema + * @property {string} [link] + * @property {PageType} [type] + * @property {Object} [params] + * @property {Object} [query] + */ + +/** + * @typedef ProfileSectionSchema + * @property {string} title + * @property {ProfileNavigationSchema[]} navigations + * @property {boolean} active + */ + +/** + * @typedef ProfileNavigationSchema + * @property {string} title + * @property {string} [description] + * @property {string} icon + * @property {string} type + * @property {ActionSchema} [action] + * @property {boolean} [active] + */ + +/** + * @typedef SendPNSRegisterRequest + * @property {string} deviceId + * @property {string} deviceType + * @property {string} token + */ + +/** + * @typedef PNSRegisterResponse + * @property {boolean} [status] + * @property {string} [message] + */ + +/** + * @typedef FaqResponse + * @property {CategorySchema[]} [categories] + */ + +/** + * @typedef CategorySchema + * @property {string} uid + * @property {string} [title] + * @property {string} [description] + * @property {string} [logo] + * @property {QuestionSchema[]} [questions] + */ + +/** + * @typedef QuestionSchema + * @property {string} uid + * @property {string} [title] + * @property {string} [description] + * @property {number} [displayOrder] + * @property {boolean} [canRaiseRequest] + */ + +/** + * @typedef SupportCategories + * @property {string} [kind] + * @property {string} [display] + */ + +/** + * @typedef SupportCategoriesResponse + * @property {SupportCategories[]} [categories] + */ + +/** + * @typedef SanctionLetterResponse + * @property {string} sanctionedLetterFileUrl + */ + +/** + * @typedef KfsDocumentResponse + * @property {string} kfsFileUrl + */ + +/** + * @typedef UserWhiteListedResponse + * @property {string} [status] + */ + +/** + * @typedef UserConsentRequest + * @property {string[]} [consents] + */ + +/** + * @typedef Consents + * @property {string} [type] + * @property {string} [text] + */ + +/** + * @typedef UserConsentRequestV2 + * @property {Consents[]} [consents] + */ + +/** + * @typedef UserConsentResponse + * @property {boolean} [success] + */ + +/** + * @typedef UserKycSteps + * @property {string} [id] + * @property {string} [index] + * @property {string} [name] + * @property {Object} [rules] + * @property {boolean} [active] + * @property {string} [createdAt] + * @property {string} [updatedAt] + * @property {string} [deletedAt] + */ + +/** + * @typedef CreateKycStepRequest + * @property {string} name + * @property {string} index + * @property {boolean} active + * @property {Object} [rules] + */ + +/** + * @typedef RemoveKycStepRequest + * @property {string} [name] + * @property {string} index + * @property {boolean} [active] + * @property {Object} [rules] + */ + +/** + * @typedef KycUpdateMessage + * @property {string} [message] + */ + +/** + * @typedef MobileFromLinkingRequest + * @property {string} token + */ + +/** + * @typedef MobileFromLinkingResponse + * @property {string} countryCode + * @property {string} mobile + */ + +/** + * @typedef SessionFromLinkingRequest + * @property {string} token + */ + +/** + * @typedef SessionFromLinkingResponse + * @property {string} session + * @property {number} expiry + */ + +/** + * @typedef LinkAccount + * @property {CustomerObject} customer + * @property {string} redirectUrl + * @property {Device} device + */ + +/** + * @typedef LinkAccountSuccess + * @property {string} [redirectUrl] + * @property {number} [statusCode] + * @property {string} [status] + * @property {string} [message] + * @property {string} [errorCode] + * @property {Object} [__headers] + */ + +/** + * @typedef UnlinkAccount + * @property {CustomerObject} customer + * @property {Device} device + */ + +/** + * @typedef UnlinkAccountSuccess + * @property {string} status + * @property {string} message + * @property {number} statusCode + * @property {string} [userStatus] + * @property {string} [errorCode] + * @property {Object} [__headers] + */ + +/** + * @typedef Refund + * @property {string} [fingerprint] + * @property {CustomerObject} customer + * @property {Items[]} [refundItems] + * @property {string} orderId + * @property {string} refundId + * @property {number} refundAmount + */ + +/** + * @typedef Translation + * @property {Object} [content] + */ + +/** + * @typedef FilterKeys + * @property {string} [display] + * @property {string} [name] + * @property {string} [kind] + */ + +/** + * @typedef FilterValues + * @property {string} [display] + * @property {boolean} [isSelected] + * @property {string} [value] + */ + +/** + * @typedef Filters + * @property {FilterKeys} [key] + * @property {FilterValues[]} [values] + */ + +/** + * @typedef PageResponse + * @property {string} type + * @property {number} current + * @property {boolean} hasPrevious + * @property {boolean} hasNext + * @property {number} size + * @property {number} itemTotal + */ + +/** + * @typedef UserResponse + * @property {Filters[]} filters + * @property {PageResponse} page + * @property {UserSchema[]} listOfUsers + */ + +/** + * @typedef UserDetailRequest + * @property {string} id + */ + +/** + * @typedef UserConsents + * @property {string} [id] + * @property {string} [userId] + * @property {string} [ipAddress] + * @property {string} [text] + * @property {string} [createdAt] + * @property {string} [updatedAt] + * @property {string} [deletedAt] + */ + +/** + * @typedef CreditScoreSchema + * @property {string} [id] + * @property {string} [userId] + * @property {number} [cibil] + * @property {string} [finbox] + * @property {string} [systemAwarded] + * @property {boolean} [isActive] + * @property {string} [deletedAt] + * @property {string} [updatedAt] + * @property {string} [createdAt] + */ + +/** + * @typedef CreditLimitSchema + * @property {string} [id] + * @property {string} [userId] + * @property {string} [creditLimit] + * @property {string} [createdAt] + * @property {string} [updatedAt] + * @property {string} [deletedAt] + */ + +/** + * @typedef Screen + * @property {string} [screenType] + * @property {string} [name] + * @property {string} [link] + */ + +/** + * @typedef UserStateSchema + * @property {Screen} [screen] + */ + +/** + * @typedef GetAccessTokenResponse + * @property {boolean} [success] + * @property {string} [accessToken] + * @property {string} [refreshToken] + * @property {string} [tokenExpireAt] + * @property {string} [tokenExpiryIn] + * @property {string} [refreshTokenExpiryAt] + * @property {string} [refreshTokenExpiryIn] + * @property {string[]} [scope] + * @property {Object} [__headers] + */ + +/** + * @typedef RefreshTokenResponse + * @property {boolean} [success] + * @property {string} [accessToken] + * @property {string} [tokenExpireAt] + * @property {string} [tokenExpiryIn] + * @property {Object} [__headers] + */ + +/** + * @typedef RefreshTokenRequest + * @property {string} token + */ + +/** + * @typedef Items + * @property {string} [category] + * @property {string} [sku] + * @property {number} [rate] + * @property {number} [quantity] + */ + +/** + * @typedef RefundStatusList + * @property {string} [id] + * @property {Items[]} [orderItems] + * @property {number} [amount] + * @property {string} [status] + * @property {string} [createdAt] + * @property {string} [processedDate] + */ + +/** + * @typedef RefundStatus + * @property {string} [orderId] + * @property {string} [userId] + * @property {string} [merchantId] + * @property {string} [lenderId] + * @property {string} [loanAccountNumber] + * @property {RefundStatusList[]} [refund] + * @property {Object} [__headers] + */ + +/** + * @typedef CustomerMetricsPivots + * @property {string} [date] + * @property {number} [sum] + */ + +/** + * @typedef CustomerMetricsSubResponse + * @property {string} [total] + * @property {CustomerMetricsPivots[]} [pivots] + * @property {string} [title] + * @property {string} [description] + * @property {string} [valueFormat] + * @property {string} [logo] + */ + +/** + * @typedef CustomerMetricsAnalytics + * @property {CustomerMetricsSubResponse} [totalCustomers] + * @property {CustomerMetricsSubResponse} [source] + */ + +/** + * @typedef CustomerMetricsFilters + * @property {string} type + * @property {string} display + * @property {string[]} value + * @property {boolean} [isSelected] + * @property {boolean} isActive + */ + +/** + * @typedef CustomerMetrics + * @property {CustomerMetricsAnalytics} [metrics] + * @property {CustomerMetricsFilters[]} [filters] + * @property {CustomerMetricsFilters[]} [sort] + */ + +/** + * @typedef CustomerMetricsResponse + * @property {CustomerMetrics} [data] + */ + +/** + * @typedef CustomerMetricsRequest + * @property {CustomerMetricsFilters[]} [filters] + * @property {CustomerMetricsFilters[]} [sort] + * @property {string} [merchantId] + * @property {string} [lenderId] + * @property {number} [pivotPoints] + */ + +/** + * @typedef SourceAnalyticsRequest + * @property {CustomerMetricsFilters[]} [filters] + */ + +/** + * @typedef LenderResponse + * @property {string} [slug] + * @property {string} [name] + * @property {string} [logo] + */ + +/** + * @typedef CreditLimitObject + * @property {number} [availableLimit] + * @property {number} [possibleLimit] + * @property {LenderResponse} [lender] + */ + +/** + * @typedef BusinessDetails + * @property {string} category + * @property {string} [shopName] + * @property {string} legalName + * @property {string} [address] + * @property {string} [type] + * @property {string} [pincode] + */ + +/** + * @typedef DocumentItems + * @property {string} [number] + * @property {string} [category] + * @property {string} [type] + * @property {string} [name] + * @property {string} [issuedOn] + * @property {string} [issuedAt] + * @property {string} [issuedBy] + * @property {string} [expiryOn] + */ + +/** + * @typedef VintageItems + * @property {number} month + * @property {number} year + * @property {number} totalTransactions + * @property {number} totalTransactionAmount + * @property {number} [totalCancellations] + * @property {number} [totalCancellationAmount] + */ + +/** + * @typedef EligibilitySuccess + * @property {string} [status] + * @property {string} [message] + * @property {string} [redirectUrl] + * @property {string} [callbackUrl] + * @property {CreditLimitObject[]} [creditLimits] + * @property {Object} [__headers] + */ + +/** + * @typedef CheckEligibilityRequest + * @property {CustomerObject} customer + * @property {Order} [order] + * @property {BusinessDetails} [businessDetails] + * @property {DocumentItems[]} [documents] + * @property {Device} device + * @property {VintageItems[]} [vintage] + * @property {Object} [meta] + * @property {boolean} [fetchLimitOptions] + */ + +/** + * @typedef GetSchemesSuccess + * @property {string} [userId] + * @property {undefined[]} lenders + * @property {Object} [__headers] + */ + +/** + * @typedef DisbursalRequest + * @property {string} [fingerprint] + * @property {string} chargeToken + * @property {number} [loanTypeId] + * @property {number} [emiTenure] + * @property {boolean} [isDownpaymentRequired] + * @property {number} [downpaymentAmount] + * @property {number} [loanAmount] + */ + +/** + * @typedef WorkflowUser + * @property {string} [mobile] + */ + +/** + * @typedef EligiblePlansRequest + * @property {string} [chargeToken] + */ + +/** + * @typedef EligiblePlans + * @property {string} [name] + * @property {string} [displayName] + * @property {string} [description] + * @property {number} [brokenInterest] + * @property {number} [noOfEmi] + * @property {number} [emiAmount] + * @property {number} [processingFee] + * @property {number} [installmentInterestRate] + */ + +/** + * @typedef EligiblePlansResponse + * @property {EligiblePlans[]} [eligiblePlans] + * @property {Object} [__headers] + */ + +/** + * @typedef DisbursalResponse + * @property {string} [transactionId] + * @property {string} [status] + * @property {string} [message] + * @property {Object} [__headers] + */ + +/** + * @typedef OrderStatus + * @property {string} orderId + * @property {string} [transactionId] + * @property {string} status + * @property {string} message + * @property {Object} [__headers] + */ + +/** + * @typedef DisbursalStatusRequest + * @property {string} [fingerprint] + * @property {string} transactionId + */ + +/** + * @typedef Transactions + * @property {string} id + * @property {string} userId + * @property {string} [partnerId] + * @property {string} [partner] + * @property {string} [partnerLogo] + * @property {string} status + * @property {string} [type] + * @property {string} [remark] + * @property {number} amount + * @property {string} [loanAccountNumber] + * @property {string} [kfs] + * @property {string} [utr] + * @property {string} [sanctionLetter] + * @property {string} [orderId] + * @property {string} [refundId] + * @property {string} createdAt + * @property {string} [lenderId] + * @property {string} [lenderName] + * @property {string} [lenderLogo] + * @property {string} [loanType] + * @property {string} [repaymentTransactionId] + * @property {string} [nextDueDate] + * @property {number} [paidPercent] + * @property {LenderDetail} [lenderDetail] + * @property {Emi[]} [emis] + */ + +/** + * @typedef LenderDetail + * @property {string} [id] + * @property {string} [name] + * @property {string} [imageUrl] + * @property {string} [slug] + * @property {boolean} [active] + * @property {boolean} [b2b] + * @property {boolean} [b2c] + * @property {Theme} [theme] + * @property {string} [createdAt] + * @property {string} [updatedAt] + * @property {string} [deletedAt] + */ + +/** + * @typedef TransactionResponse + * @property {Filters[]} filters + * @property {PageResponse} page + * @property {Transactions[]} transactions + */ + +/** + * @typedef MerchantTransactions + * @property {string} [outstandingAmount] + */ + +/** + * @typedef MerchantTransactionSummary + * @property {MerchantTransactions} [merchantOutstandingSummary] + */ + +/** + * @typedef GetReconciliationFileResponse + * @property {ReconFile[]} files + */ + +/** + * @typedef ReconFile + * @property {string} base64 + * @property {string} name + */ + +/** + * @typedef UploadReconciliationFileRequest + * @property {string} base64File + * @property {string} [format] + * @property {string} [lenderId] + */ + +/** + * @typedef UploadReconciliationFileResponse + * @property {boolean} [success] + */ + +/** + * @typedef TransactionCount + * @property {string} [totalTransactions] + */ + +/** + * @typedef RefundCount + * @property {string} [refundTransactions] + */ + +/** + * @typedef OrganizationTransactionsCount + * @property {number} [count] + */ + +/** + * @typedef OrganizationTransactionsSum + * @property {number} [sum] + */ + +/** + * @typedef UniqueCustomersInOrg + * @property {number} [count] + */ + +/** + * @typedef TransactionAmount + * @property {string} [totalTransactionAmount] + */ + +/** + * @typedef SchemaForOneDayTotal + * @property {string} [orgId] + * @property {string} [createdAt] + * @property {number} [count] + * @property {string} [sum] + * @property {string} [refund] + * @property {string} [difference] + */ + +/** + * @typedef SumofOneDayTransactions + * @property {SchemaForOneDayTotal[]} [dayTotal] + */ + +/** + * @typedef AverageTransaction + * @property {number} [average] + */ + +/** + * @typedef AllTransactionsResponse + * @property {string} [id] + * @property {string} [userId] + * @property {string} [partnerId] + * @property {string} [status] + * @property {string} [type] + * @property {string} [remark] + * @property {number} [amount] + * @property {string} [loanAccountNumber] + * @property {string} [createdAt] + */ + +/** + * @typedef TotalRefund + * @property {string} [totalRefund] + */ + +/** + * @typedef TotalRepayment + * @property {string} [totalRepayment] + */ + +/** + * @typedef TotalOverDue + * @property {string} [totalDue] + */ + +/** + * @typedef TotalLoansDisbursed + * @property {string} [totalLoansDisbursed] + */ + +/** + * @typedef OrganizationTransactionResponse + * @property {TrFilters[]} filters + * @property {TrPageResponse} page + * @property {OrgTransactions[]} transactions + */ + +/** + * @typedef TrFilters + * @property {TrFilterKeys} [key] + * @property {TrFilterValues[]} [values] + */ + +/** + * @typedef TrPageResponse + * @property {string} type + * @property {number} current + * @property {boolean} hasPrevious + * @property {boolean} hasNext + * @property {number} size + * @property {number} itemTotal + */ + +/** + * @typedef OrgTransactions + * @property {string} id + * @property {string} userId + * @property {string} [userName] + * @property {string} [partnerId] + * @property {string} [partner] + * @property {string} [partnerLogo] + * @property {string} status + * @property {string} [type] + * @property {string} [remark] + * @property {number} amount + * @property {string} [orderId] + * @property {string} [loanAccountNumber] + * @property {string} [kfs] + * @property {string} [sanctionLetter] + * @property {string} createdAt + */ + +/** + * @typedef TrFilterKeys + * @property {string} [display] + * @property {string} [name] + * @property {string} [kind] + */ + +/** + * @typedef TrFilterValues + * @property {string} [display] + * @property {boolean} [isSelected] + * @property {string} [value] + */ + +/** + * @typedef KfsRequest + * @property {number} [loanTypeId] + * @property {string} [chargeToken] + */ + +/** + * @typedef KfsResponse + * @property {string} [kfsTable] + */ + +/** + * @typedef LenderTransactionState + * @property {string} [id] + * @property {number} [stepIndex] + * @property {string} [lenderId] + * @property {string} [workflowId] + * @property {string} [workflowName] + * @property {string} [parentStateId] + * @property {string} [workflowUrl] + * @property {boolean} [isInternal] + * @property {boolean} [active] + * @property {number} [ttl] + * @property {string} [name] + * @property {string} [type] + * @property {Object} [inputData] + * @property {string} [createdAt] + * @property {string} [updatedAt] + * @property {string} [deletedAt] + */ + +/** + * @typedef TransactionStateResponse + * @property {LenderTransactionState[]} [transactionState] + */ + +/** + * @typedef Theme + * @property {string} [logoUrl] + * @property {string} [iconUrl] + * @property {string} [landscapeBgUrl] + * @property {string} [portraitBgUrl] + * @property {string} [shortName] + */ + +/** + * @typedef Emi + * @property {string} [id] + * @property {string} [userId] + * @property {number} [installmentno] + * @property {string} [loanAccountNumber] + * @property {number} [amount] + * @property {string} [dueDate] + * @property {string} [referenceTransactionId] + * @property {string} [remark] + * @property {string} [createdAt] + * @property {string} [updatedAt] + * @property {string} [entityId] + * @property {boolean} [paid] + * @property {boolean} [overdue] + * @property {string} [repaymentDate] + */ + +/** + * @typedef MetricPivots + * @property {string} [date] + * @property {number} [sum] + */ + +/** + * @typedef TransactionMetricSubResponse + * @property {string} [total] + * @property {MetricPivots[]} [pivots] + * @property {string} [title] + * @property {string} [description] + * @property {string} [valueFormat] + * @property {string} [logo] + */ + +/** + * @typedef TransactionMetrics + * @property {TransactionMetricSubResponse} [totalDisbursement] + * @property {TransactionMetricSubResponse} [totalOverdue] + * @property {TransactionMetricSubResponse} [totalRepayment] + */ + +/** + * @typedef LenderCustomerTransactionMetricsFilters + * @property {string} type + * @property {string} display + * @property {string[]} value + * @property {boolean} [isSelected] + * @property {boolean} isActive + */ + +/** + * @typedef LenderCustomerTransactionMetrics + * @property {TransactionMetrics} [metrics] + * @property {LenderCustomerTransactionMetricsFilters[]} [filters] + * @property {LenderCustomerTransactionMetricsFilters[]} [sort] + */ + +/** + * @typedef LenderCustomerTransactionMetricsResponse + * @property {Object} [data] + */ + +/** + * @typedef LenderCustomerTransactionMetricsRequest + * @property {LenderCustomerTransactionMetricsFilters[]} [filters] + * @property {LenderCustomerTransactionMetricsFilters[]} [sort] + * @property {string} [startDate] + * @property {string} [endDate] + * @property {string} [merchantId] + * @property {string} [lenderId] + * @property {number} [pivotPoints] + */ + +/** + * @typedef LenderTheme + * @property {string} logoUrl + * @property {string} iconUrl + * @property {string} landscapeBgUrl + * @property {string} portraitBgUrl + * @property {string} shortName + */ + +/** + * @typedef Lender + * @property {string} [id] + * @property {string} [name] + * @property {boolean} [active] + * @property {string} [imageUrl] + * @property {string} [slug] + * @property {LenderTheme} [theme] + * @property {boolean} [b2b] + * @property {boolean} [b2c] + * @property {string} [merchantConfigSchema] + * @property {string} [createdAt] + * @property {string} [updatedAt] + * @property {number} [approvedLimit] + * @property {string} [deletedAt] + * @property {Object} [meta] + * @property {Object} [metaSchema] + */ + +/** + * @typedef UserLender + * @property {string} id + * @property {string} userId + * @property {string} lenderId + * @property {boolean} [active] + * @property {string} status + * @property {string} createdAt + * @property {string} updatedAt + * @property {string} [deletedAt] + * @property {number} approvedLimit + * @property {string} [entityId] + * @property {string} [entityMapId] + */ + +/** + * @typedef SourceCreditReport + * @property {string} id + * @property {string} userId + * @property {string} pan + * @property {string} name + * @property {string} mobile + * @property {string} bureau + * @property {string} score + * @property {string} report + * @property {string} [createdAt] + */ + +/** + * @typedef Document + * @property {string} id + * @property {string} userId + * @property {string} imageUrl + * @property {string} number + * @property {Object} detail + * @property {boolean} valid + * @property {string} createdAt + * @property {string} updatedAt + * @property {string} [deletedAt] + * @property {string} [entityId] + */ + +/** + * @typedef UserKycDetail + * @property {string} id + * @property {string} userId + * @property {string} status + * @property {string} type + * @property {string} remark + * @property {string} profileType + * @property {boolean} active + * @property {string} [expiryDate] + * @property {string} [createdAt] + * @property {string} [updatedAt] + * @property {string} [deletedAt] + * @property {string} lenderId + * @property {Lender} [lender] + * @property {string} [entityMapId] + * @property {string} [entityId] + */ + +/** + * @typedef Form + * @property {string} [id] + * @property {string} [name] + * @property {string} [title] + * @property {string} [subtitle] + * @property {string} [action] + * @property {Object} [form] + * @property {Object} [uiSchema] + * @property {string} [workflowId] + */ + +/** + * @typedef LenderKycStepMap + * @property {string} [id] + * @property {string} step + * @property {number} stepIndex + * @property {string} lenderId + * @property {boolean} active + * @property {Object} rules + * @property {string} profileType + * @property {string} [createdAt] + * @property {string} [updatedAt] + * @property {string} [deletedAt] + * @property {string} name + * @property {string} description + * @property {string} iconUrl + * @property {boolean} isInteractive + * @property {string} [formId] + * @property {string} [merchantId] + * @property {Form} form + * @property {Object} docSchema + */ + +/** + * @typedef UserKycLenderStepMap + * @property {string} id + * @property {string} userId + * @property {string} lenderKycStepMapId + * @property {string} userKycDetailId + * @property {string} lenderId + * @property {Object} ruleState + * @property {boolean} active + * @property {string} status + * @property {string} [documentId] + * @property {string} createdAt + * @property {string} updatedAt + * @property {string} [deletedAt] + * @property {LenderKycStepMap} [lenderKycStepMap] + * @property {string} [entityMapId] + * @property {string} [entityId] + * @property {string} [updatedBy] + */ + +/** + * @typedef ProofOfIdentity + * @property {string} dob + * @property {string} hashedEmail + * @property {string} gender + * @property {string} hashedMobileNumber + * @property {string} name + */ + +/** + * @typedef ProofOfAddress + * @property {string} careOf + * @property {string} country + * @property {string} district + * @property {string} house + * @property {string} landmark + * @property {string} locality + * @property {string} pincode + * @property {string} postOffice + * @property {string} state + * @property {string} street + * @property {string} subDistrict + * @property {string} vtc + */ + +/** + * @typedef EAadhaarData + * @property {string} aadhaarReferenceNumber + * @property {string} aadhaarUid + * @property {string} image + * @property {ProofOfIdentity} proofOfIdentity + * @property {ProofOfAddress} proofOfAddress + * @property {string} [xml] + * @property {string} [pdf] + * @property {string} [address] + */ + +/** + * @typedef Consent + * @property {string} text + * @property {string} type + */ + +/** + * @typedef ValidatePanRequest + * @property {string} pan + * @property {Consent[]} consents + */ + +/** + * @typedef BankDetails + * @property {string} accountType + * @property {string} bankName + * @property {string} ifsc + * @property {string} accountNumber + * @property {string} accountHolderName + */ + +/** + * @typedef DocumentData + * @property {string} [selfie] + * @property {string} [video] + * @property {string} [digilockerCode] + * @property {BankDetails} [bankDetails] + */ + +/** + * @typedef ConfirmPanRequest + * @property {string} pan + * @property {string} name + * @property {string} [entity] + * @property {string} [merchantId] + */ + +/** + * @typedef LivelinessDetails + * @property {string} selfie + * @property {string} video + */ + +/** + * @typedef UploadDocumentRequest + * @property {Object} [user] + * @property {Object} [documentData] + * @property {string} lenderSlug + * @property {string} kycStep + * @property {string} [merchantId] + * @property {string} [entityMapId] + */ + +/** + * @typedef UploadDocumentRequestV1 + * @property {string} kycStep + * @property {string} entityMapId + * @property {Object} documentData + */ + +/** + * @typedef UploadDocumentRequestV3 + * @property {string} kycStep + * @property {string} entityMapId + * @property {Object} documentData + */ + +/** + * @typedef AadhaarRequest + * @property {string} [digilockerCode] + */ + +/** + * @typedef UploadAadhaarRequest + * @property {AadhaarRequest} [documentData] + * @property {Object} [user] + * @property {string} lenderSlug + * @property {string} kycStep + * @property {string} [merchantId] + * @property {string} [entityMapId] + */ + +/** + * @typedef UploadLivelinessRequest + * @property {LivelinessDetails} [documentData] + * @property {Object} [user] + * @property {string} lenderSlug + * @property {string} kycStep + * @property {string} [merchantId] + * @property {string} [entityMapId] + */ + +/** + * @typedef UploadAadhaarRequestV1 + * @property {AadhaarRequest} documentData + * @property {string} kycStep + * @property {string} entityMapId + */ + +/** + * @typedef UploadLivelinessRequestV1 + * @property {LivelinessDetails} documentData + * @property {string} kycStep + * @property {string} entityMapId + */ + +/** + * @typedef UploadAadhaarRequestV2 + * @property {AadhaarRequest} [documentData] + * @property {Object} [user] + * @property {string} lenderSlug + * @property {string} kycStep + * @property {string} [merchantId] + * @property {string} [entityMapId] + */ + +/** + * @typedef UploadLivelinessRequestV2 + * @property {LivelinessDetails} [documentData] + * @property {Object} [user] + * @property {string} lenderSlug + * @property {string} kycStep + * @property {string} [merchantId] + * @property {string} [entityMapId] + */ + +/** + * @typedef UploadAadhaarRequestV3 + * @property {AadhaarRequest} documentData + * @property {string} kycStep + * @property {string} entityMapId + */ + +/** + * @typedef UploadLivelinessRequestV3 + * @property {LivelinessDetails} documentData + * @property {string} kycStep + * @property {string} entityMapId + */ + +/** + * @typedef UploadBankDetailsRequest + * @property {BankDetails} [documentData] + * @property {Object} [user] + * @property {string} lenderSlug + * @property {string} kycStep + * @property {string} [merchantId] + * @property {string} [entityMapId] + */ + +/** + * @typedef InitiateKycRequest + * @property {string} kycType + * @property {string} [kycId] + * @property {string} [merchantId] + */ + +/** + * @typedef InitiateKycRequestV1 + * @property {string} entityMapId + * @property {string} kycType + * @property {string} [kycId] + * @property {string} [merchantId] + */ + +/** + * @typedef LenderOnboardRequest + * @property {string} [ack] + * @property {Object} data + * @property {string} [entityMapId] + * @property {string} [merchantId] + */ + +/** + * @typedef UpdateLenderStatusRequest + * @property {string} status + * @property {Object} payload + * @property {Object} data + * @property {boolean} action + */ + +/** + * @typedef UpdateProfileRequest + * @property {string} [firstName] + * @property {string} [lastName] + * @property {string} [gender] + * @property {string} [dob] + * @property {string} userId + * @property {boolean} [isOnboarded] + * @property {string} [address] + */ + +/** + * @typedef UpdateEntityRequest + * @property {string} [name] + * @property {string} [gender] + * @property {string} [dob] + * @property {boolean} [isDefault] + * @property {ProofOfAddress} [address] + */ + +/** + * @typedef CreateKycStepsRequest + * @property {Object} data + */ + +/** + * @typedef CreateLenderPgConfigRequest + * @property {string} mid + * @property {string} clientId + * @property {string} secret + * @property {boolean} active + * @property {string} pgId + * @property {string} lenderId + */ + +/** + * @typedef CreateLenderStateRequest + * @property {Object} data + */ + +/** + * @typedef UpdateLenderRequest + * @property {Object} data + * @property {string} lenderId + */ + +/** + * @typedef OtherPolicyFilters + * @property {Object[]} [orderBy] + */ + +/** + * @typedef GetPolicyFilters + * @property {string} [policyType] + * @property {Object[]} [lenderIds] + * @property {Object[]} [merchantIds] + * @property {Object[]} [orderBy] + */ + +/** + * @typedef GetPolicyFilters2 + * @property {string} [breType] + * @property {Object[]} [lenderId] + * @property {Object[]} [merchantId] + * @property {string} [loanType] + * @property {string} [journeyType] + * @property {string} [subType] + */ + +/** + * @typedef MerchantConfigRequest + * @property {string} id + * @property {Object} merchantConfigSchema + */ + +/** + * @typedef PanDetails + * @property {string} name + * @property {string} idNumber + */ + +/** + * @typedef AvailableLendersRequest + * @property {string} chargeToken + */ + +/** + * @typedef InitialData + * @property {string} userId + * @property {string} entityId + */ + +/** + * @typedef ExecutePolicyRequest + * @property {GetPolicyFilters} [policyFilters] + * @property {InitialData} initialData + */ + +/** + * @typedef ExecutePolicyRequest2 + * @property {GetPolicyFilters2} [policyFilters] + * @property {InitialData} initialData + */ + +/** + * @typedef RegisterGstRequest + * @property {string} gstTin + */ + +/** + * @typedef PopulateFormRequest + * @property {Object} form + * @property {string} [lenderId] + * @property {string} [merchantId] + */ + +/** + * @typedef ValidateFormFieldRequest + * @property {string} workflowName + * @property {string} [userId] + * @property {string} [entityId] + * @property {string} [entityMapId] + * @property {string} [lenderId] + * @property {string} [merchantId] + * @property {Object} fields + */ + +/** + * @typedef MerchantMetricFilter + * @property {string} type + * @property {string} display + * @property {Object[]} value + * @property {boolean} [isSelected] + * @property {boolean} [isActive] + */ + +/** + * @typedef LenderCustomerMetricsRequest + * @property {MerchantMetricFilter[]} [sort] + * @property {MerchantMetricFilter[]} [filters] + * @property {string} [merchantId] + * @property {string} [lenderId] + * @property {number} [pivotPoints] + */ + +/** + * @typedef StonewallCustomer + * @property {string} [mobile] + * @property {string} [uid] + */ + +/** + * @typedef GetLimitRequest + * @property {Object[]} [lenderSlugs] + * @property {boolean} [onlyDefaultLender] + * @property {StonewallCustomer} customer + */ + +/** + * @typedef DocumentObject + * @property {string} [id] + * @property {string} [userId] + * @property {string} [name] + * @property {string} [imageUrl] + * @property {string} number + * @property {Object} detail + * @property {boolean} [valid] + * @property {string} [entityId] + */ + +/** + * @typedef ManualKycRequest + * @property {Object} remark + * @property {string} status + * @property {string} stepId + * @property {string} entityMapId + * @property {DocumentObject} [documentData] + */ + +/** + * @typedef RetriggerLenderOnboardRequest + * @property {string} stepId + * @property {Object} data + */ + +/** + * @typedef EntityMapDto + * @property {string} id + * @property {string} [merchantId] + * @property {string} [status] + * @property {string} lenderId + * @property {number} [limit] + * @property {string} [creditType] + * @property {string} userId + * @property {string} entityId + */ + +/** + * @typedef EntityDto + * @property {string} id + * @property {string} [type] + * @property {string} [address] + * @property {string} [name] + * @property {string} [gender] + * @property {string} [dob] + * @property {string} userId + */ + +/** + * @typedef FindDocResponse + * @property {string} status + * @property {string} info + * @property {string} number + * @property {Object} [details] + * @property {string} [name] + */ + +/** + * @typedef LenderKycStatus + * @property {string} status + * @property {string} [lenderId] + * @property {string} [lenderName] + * @property {string} [kycType] + */ + +/** + * @typedef StateResponeDto + * @property {UserKycLenderStepMap} step + * @property {boolean} isStepCompleted + */ + +/** + * @typedef KycStateMachineDto + * @property {UserKycDetail} kycResult + * @property {UserKycLenderStepMap} [action] + */ + +/** + * @typedef InitiateKycDto + * @property {string} kycType + * @property {string} lenderId + * @property {Object} user + * @property {string} [kycId] + * @property {EntityMapDto} [entityRelation] + */ + +/** + * @typedef LenderOnboardDto + * @property {Lender} [lender] + * @property {Object} user + * @property {UserLender} [userLenderDetail] + * @property {LenderOnboardRequest} payload + * @property {EntityMapDto} [entityRelation] + * @property {string} ipAddress + * @property {boolean} [overrideTtl] + */ + +/** + * @typedef StepDetails + * @property {string} [name] + * @property {string} [description] + * @property {string} [iconUrl] + * @property {string} status + * @property {string} step + * @property {number} order + */ + +/** + * @typedef OnboardStatusDto + * @property {string} onboardStep + * @property {string} onboardingId + * @property {string} status + * @property {string} action + * @property {string} actionStatus + * @property {Lender} lender + * @property {string} [navigation] + * @property {number} approvedLimit + * @property {number} proposedLimit + * @property {Object} [actionData] + * @property {StepDetails[]} [steps] + * @property {string} entityId + * @property {string} entityMapId + * @property {boolean} actionIsForm + * @property {Form} [actionForm] + */ + +/** + * @typedef LenderFilters + * @property {Object[]} [includeStatus] + * @property {Object[]} [excludeStatus] + * @property {Object} [allowDisabledLender] + */ + +/** + * @typedef Policy + * @property {string} [id] + * @property {string} [name] + * @property {string} [url] + * @property {Object} [data] + * @property {string} [version] + * @property {boolean} [active] + * @property {Object} [type] + * @property {number} [index] + * @property {string} [lenderId] + * @property {string} [merchantId] + * @property {string} [workflowId] + * @property {Object[]} [schemaRef] + * @property {Object[]} [masterVariableRef] + * @property {Object} [customVariable] + * @property {string} [subType] + * @property {Object} [createdAt] + * @property {Object} [updatedAt] + * @property {Object} [deletedAt] + */ + +/** + * @typedef GetKycDocsResponse + * @property {FindDocResponse[]} documents + */ + +/** + * @typedef OrganizationLogosObject + * @property {string} id + * @property {string} name + * @property {string} logo + * @property {boolean} active + */ + +/** + * @typedef MetricSubTypes + * @property {string} date + * @property {string} [count] + * @property {string} [sum] + */ + +/** + * @typedef MetricTypes + * @property {MetricSubTypes[]} pivots + * @property {string} [total] + * @property {string} description + * @property {string} title + * @property {string} valueFormat + * @property {string} logo + */ + +/** + * @typedef BreApprovedUsersResponse + * @property {MetricTypes} data + */ + +/** + * @typedef Metrics + * @property {MetricTypes} lenderApprovedUsers + * @property {MetricTypes} breApprovedUsers + * @property {MetricTypes} totalCreditLine + */ + +/** + * @typedef MetricData + * @property {Metrics} metrics + * @property {MerchantMetricFilter[]} filters + * @property {MerchantMetricFilter[]} sort + */ + +/** + * @typedef ApprovedLenders + * @property {string} status + * @property {BreOutput[]} lenders + */ + +/** + * @typedef BreResultStatus + * @property {string} status + * @property {BreOutput[]} [approvedLenders] + */ + +/** + * @typedef GetAllUserLendersByEnityId + * @property {string} entityId + * @property {string} entityMapId + * @property {string} userId + * @property {string} status + * @property {Lender} lender + * @property {string} [partnerId] + */ + +/** + * @typedef LenderState + * @property {string} [id] + * @property {string} name + * @property {string} lenderId + * @property {number} index + * @property {string} workflowName + * @property {string} [workflowUrl] + * @property {boolean} active + * @property {string} [createdAt] + * @property {string} [updatedAt] + * @property {string} [deletedAt] + * @property {Lender} [lender] + * @property {string} [parentStateId] + * @property {number} ttl + * @property {string} [displayName] + * @property {string} [description] + * @property {string} [iconUrl] + * @property {boolean} isInteractive + * @property {Object} [schema] + */ + +/** + * @typedef UserLenderState + * @property {string} id + * @property {string} lenderStateId + * @property {string} lenderId + * @property {string} userId + * @property {string} status + * @property {string} userLenderId + * @property {string} remark + * @property {boolean} active + * @property {LenderState} [lenderState] + * @property {Object} [data] + * @property {string} [createdAt] + * @property {string} [updatedAt] + * @property {string} [deletedAt] + * @property {string} [entityId] + * @property {string} [entityMapId] + * @property {string} [updatedBy] + */ + +/** + * @typedef LenderConfig + * @property {string} [id] + * @property {string} baseUrl + * @property {string} [accessToken] + * @property {string} [secret] + * @property {Object} data + * @property {string} lenderId + * @property {boolean} [active] + * @property {string} [createdAt] + * @property {string} [updatedAt] + * @property {string} [deletedAt] + */ + +/** + * @typedef Pg + * @property {string} id + * @property {string} name + * @property {boolean} active + */ + +/** + * @typedef LenderPgConfig + * @property {string} [id] + * @property {string} mid + * @property {string} clientId + * @property {string} secret + * @property {string} lenderId + * @property {string} pgId + * @property {boolean} active + */ + +/** + * @typedef FileUploadResponse + * @property {string} fileId + * @property {string} name + * @property {string} path + * @property {string} format + * @property {number} size + * @property {string} access + * @property {string} tags + * @property {string} metadata + * @property {string} url + * @property {string} thumbnail + */ + +/** + * @typedef PresignedUrl + * @property {string} url + * @property {Object} fields + */ + +/** + * @typedef PresignedUrlV2 + * @property {string} url + * @property {Object} fields + */ + +/** + * @typedef LenderDocument + * @property {string} [id] + * @property {string} [lenderId] + * @property {string} [type] + * @property {Object} [document] + * @property {boolean} [active] + * @property {string} [createdAt] + * @property {string} [updatedAt] + * @property {string} [deletedAt] + */ + +/** + * @typedef KycStatusResponse + * @property {boolean} isKycInitiated + * @property {string} userId + * @property {LenderKycStatus[]} kycStatuses + */ + +/** + * @typedef WorkflowResponse + * @property {Object} [data] + */ + +/** + * @typedef InitiateKycResponse + * @property {UserKycDetail} kycResult + * @property {Action} action + */ + +/** + * @typedef UploadDocResponse + * @property {string} status + * @property {Object} [data] + * @property {string} [remark] + * @property {UserKycDetail} kycResult + * @property {Action} action + */ + +/** + * @typedef LenderOnboardResponse + * @property {UserLender} result + * @property {UserLenderState} action + * @property {Object} data + */ + +/** + * @typedef OnboardingStatusResponse + * @property {OnboardStatusDto[]} onboardStatuses + */ + +/** + * @typedef SignedUrlResponse + * @property {PresignedUrl} signedUrl + * @property {string} fileUrl + */ + +/** + * @typedef SignedUrlV2Response + * @property {PresignedUrlV2} signedUrl + * @property {string} fileUrl + */ + +/** + * @typedef PresignedUrlV3 + * @property {string} signedUrl + * @property {Object} provider + */ + +/** + * @typedef SignedUrlV3Response + * @property {PresignedUrlV3} signedDetails + * @property {string} fileUrl + */ + +/** + * @typedef DigilockerLinkResponse + * @property {string} authorizationUrl + */ + +/** + * @typedef GetDocumentsResponse + * @property {FindDocResponse[]} documents + */ + +/** + * @typedef ApprovedLendersTransaction + * @property {string} name + * @property {string} slug + * @property {string} imageUrl + * @property {string} status + * @property {boolean} active + * @property {number} proposedLimit + * @property {Object} createdAt + * @property {Object} updatedAt + * @property {Object} [deletedAt] + * @property {boolean} [isDefault] + * @property {Object} [__headers] + */ + +/** + * @typedef ApprovedPossibleLenders + * @property {number} limit + * @property {string} name + * @property {string} slug + * @property {boolean} active + * @property {string} id + * @property {LenderTheme} [theme] + */ + +/** + * @typedef AvailableLenders + * @property {ApprovedPossibleLenders[]} approvedLenders + * @property {ApprovedPossibleLenders[]} possibleLenders + */ + +/** + * @typedef CreditLimit + * @property {number} availableLimit + * @property {number} approvedLimit + */ + +/** + * @typedef CreditLimitResponse + * @property {string} status + * @property {string} message + * @property {boolean} action + * @property {CreditLimit} credit + */ + +/** + * @typedef LenderPgConfigResponse + * @property {string} id + * @property {string} mid + * @property {string} clientId + * @property {string} secret + * @property {string} lenderId + * @property {string} pgId + * @property {boolean} active + * @property {string} pgName + * @property {boolean} pgActive + */ + +/** + * @typedef GetLendersResponse + * @property {Lender[]} data + */ + +/** + * @typedef LenderConfigurationResponse + * @property {Lender} lender + * @property {LenderPgConfig} lenderPgConfig + * @property {LenderConfig} lenderConfig + * @property {LenderState[]} lenderState + * @property {LenderKycStepMap[]} lenderKycStepMap + */ + +/** + * @typedef UpsertLenderResponse + * @property {Object} data + */ + +/** + * @typedef UpsertLenderConfigResponse + * @property {Object} data + */ + +/** + * @typedef CreateKycStepsSchema + * @property {LenderKycStepMap[]} data + */ + +/** + * @typedef CreatePaymentGatewaySchema + * @property {LenderPgConfig[]} data + */ + +/** + * @typedef CreateLenderStateSchema + * @property {LenderState[]} data + */ + +/** + * @typedef GetAllPaymentGatewaysSchema + * @property {Pg[]} data + */ + +/** + * @typedef PolicyResponse + * @property {Policy[]} policies + */ + +/** + * @typedef CreditCheckBreResponse + * @property {boolean} newLenderAssigned + * @property {string} breStatus + */ + +/** + * @typedef MerchantConfigResponse + * @property {string} id + * @property {string} merhantConfigSchema + */ + +/** + * @typedef UserLenderByIdAndStatusResponse + * @property {string} id + * @property {string} userId + * @property {string} lenderId + * @property {boolean} [active] + * @property {string} status + * @property {string} createdAt + * @property {string} updatedAt + * @property {string} [deletedAt] + * @property {number} approvedLimit + * @property {string} [slug] + * @property {LenderTheme} [theme] + * @property {Object} [name] + */ + +/** + * @typedef IntgrAvailableCreditLimit + * @property {number} limit + * @property {string} lenderName + * @property {string} slug + * @property {boolean} isDefault + * @property {string} logoUrl + */ + +/** + * @typedef IngtrAvailableLimit + * @property {IntgrAvailableCreditLimit[]} available + */ + +/** + * @typedef IntgrCreditLimit + * @property {IngtrAvailableLimit} limit + * @property {Object} [__headers] + */ + +/** + * @typedef PossibleLendersInternal + * @property {boolean} limit + * @property {string} lenderName + * @property {string} slug + * @property {boolean} isDefault + * @property {string} logo + * @property {string} lenderId + */ + +/** + * @typedef PossibleLendersInternalResponse + * @property {PossibleLendersInternal[]} lenders + */ + +/** + * @typedef GetTotalKycResponse + * @property {string} totalKyc + */ + +/** + * @typedef GetTotalKycCompletedUsersResponse + * @property {string} totalKycCompletedUsers + */ + +/** + * @typedef GetTotalPendingUsersResponse + * @property {string} totalPendingKyc + */ + +/** + * @typedef GetTotalCreditProvidedResponse + * @property {string} totalCreditLimit + */ + +/** + * @typedef MetaSchemaResponse + * @property {string} title + * @property {string} name + * @property {string[]} required + * @property {string} type + * @property {Object} properties + */ + +/** + * @typedef MetaSchema + * @property {MetaSchemaResponse} metaSchema + */ + +/** + * @typedef AddMetaSchema + * @property {string} lenderSlug + * @property {string} merchantId + * @property {Object} schema + */ + +/** + * @typedef AddMetaSchemaRequest + * @property {string} merchantId + * @property {Object} schema + */ + +/** + * @typedef ValidatePanResponse + * @property {string} panName + * @property {string} isPanValid + * @property {string} pan + * @property {boolean} isProprietor + * @property {string} panType + * @property {string} [errorCode] + * @property {string} [status] + * @property {string} [errorMessage] + */ + +/** + * @typedef ConfirmPanResonse + * @property {string} status + * @property {string} statusCode + * @property {string} message + */ + +/** + * @typedef LenderCountResponse + * @property {number} active + * @property {number} inActive + */ + +/** + * @typedef OnboardStepsDto + * @property {StepDetails[]} steps + * @property {Lender} lender + */ + +/** + * @typedef OnboardStepsResponse + * @property {OnboardStepsDto[]} stepDetails + */ + +/** + * @typedef LenderDocumentResponse + * @property {LenderDocument} data + */ + +/** + * @typedef GetUserLendersResponse + * @property {UserLender[]} data + */ + +/** + * @typedef CreditReportResponse + * @property {SourceCreditReport} data + */ + +/** + * @typedef KycDetailsReponse + * @property {UserKycLenderStepMap} data + */ + +/** + * @typedef GetDocumentByIdResponse + * @property {Document} data + */ + +/** + * @typedef GetAllFormsResponse + * @property {Object} data + */ + +/** + * @typedef UpsertFormResponse + * @property {Object} data + */ + +/** + * @typedef GstDetails + * @property {string} gstTin + * @property {string} businessName + */ + +/** + * @typedef GstDetailsResponse + * @property {GstDetails[]} gstDetails + */ + +/** + * @typedef RegisterGstResponse + * @property {Document} gstDocDetails + * @property {string} status + */ + +/** + * @typedef PopulateFormResponse + * @property {Object} form + */ + +/** + * @typedef ValidateFormFieldResponse + * @property {string} status + * @property {string} message + * @property {Object} data + */ + +/** + * @typedef LenderCustomerMetricsResponse + * @property {string} status + * @property {string} message + * @property {MetricData} data + */ + +/** + * @typedef ManualKycResponse + * @property {string} message + * @property {UserKycLenderStepMap} step + */ + +/** + * @typedef BreOutput + * @property {string} id + * @property {string} userId + * @property {string} entityId + * @property {string} [lenderId] + * @property {string} [merchantId] + * @property {string} policyName + * @property {string} category + * @property {string} type + * @property {Object} output + * @property {string} status + * @property {string} createdAt + * @property {string} updatedAt + * @property {string} deletedAt + */ + +/** + * @typedef CustomerKycDetailsReponse + * @property {UserKycLenderStepMap} data + */ + +class Customer { + constructor(config) { + this.config = config; + } + + /** + * @param {Object} arg - Arg object. + * @param {String} session - Session of the user + * @param {string} arg.organizationId - This is organizationId + * @param {VerifyCustomer} arg.body + * @summary: Verify Customer + * @description: Use this API to verify the customer based on mobile number and countryCode. + */ + verify({ disbursalRequest, session } = {}) { + const { error } = CustomerValidator.verify().validate( + { + disbursalRequest, + }, + { abortEarly: false } + ); + if (error) { + return Promise.reject(new FDKClientValidationError(error)); + } + + const query_params = {}; + + return PlatformAPIClient.execute( + this.config, + "post", + `/service/integration/user/authentication/${this.config.companyId}/validate-customer`, + query_params, + disbursalRequest, + session + ); + } + + /** + * @param {Object} arg - Arg object. + * @param {String} session - Session of the user + * @param {string} arg.organizationId - This is organizationId + * @param {ResendPaymentRequest} arg.body + * @summary: Resend Payment Request + * @description: Use this API to resend payment request to user + */ + resendPaymentRequest({ disbursalRequest, session } = {}) { + const { error } = CustomerValidator.resendPaymentRequest().validate( + { + disbursalRequest, + }, + { abortEarly: false } + ); + if (error) { + return Promise.reject(new FDKClientValidationError(error)); + } + + const query_params = {}; + + return PlatformAPIClient.execute( + this.config, + "post", + `/service/integration/user/authentication/${this.config.companyId}/transaction/resend`, + query_params, + disbursalRequest, + session + ); + } + + /** + * @param {Object} arg - Arg object. + * @param {String} session - Session of the user + * @param {string} arg.organizationId - This is organizationId + * @param {CreateTransaction} arg.body + * @summary: Create Order + * @description: Use this API to create transaction for user + */ + createOrder({ disbursalRequest, session } = {}) { + const { error } = CustomerValidator.createOrder().validate( + { + disbursalRequest, + }, + { abortEarly: false } + ); + if (error) { + return Promise.reject(new FDKClientValidationError(error)); + } + + const query_params = {}; + + return PlatformAPIClient.execute( + this.config, + "post", + `/service/integration/user/authentication/${this.config.companyId}/transaction`, + query_params, + disbursalRequest, + session + ); + } + + /** + * @param {Object} arg - Arg object. + * @param {String} session - Session of the user + * @param {string} arg.organizationId - This is organizationId + * @param {LinkAccount} arg.body + * @summary: Link account + * @description: Use this API to link account with merchant + */ + link({ disbursalRequest, session } = {}) { + const { error } = CustomerValidator.link().validate( + { + disbursalRequest, + }, + { abortEarly: false } + ); + if (error) { + return Promise.reject(new FDKClientValidationError(error)); + } + + const query_params = {}; + + return PlatformAPIClient.execute( + this.config, + "post", + `/service/integration/user/authentication/${this.config.companyId}/account/link`, + query_params, + disbursalRequest, + session + ); + } + + /** + * @param {Object} arg - Arg object. + * @param {String} session - Session of the user + * @param {string} arg.organizationId - This is organizationId + * @param {UnlinkAccount} arg.body + * @summary: Unlink account + * @description: Use this API to unlink account from merchant + */ + unlink({ disbursalRequest, session } = {}) { + const { error } = CustomerValidator.unlink().validate( + { + disbursalRequest, + }, + { abortEarly: false } + ); + if (error) { + return Promise.reject(new FDKClientValidationError(error)); + } + + const query_params = {}; + + return PlatformAPIClient.execute( + this.config, + "post", + `/service/integration/user/authentication/${this.config.companyId}/account/unlink`, + query_params, + disbursalRequest, + session + ); + } + + /** + * @param {Object} arg - Arg object. + * @param {String} session - Session of the user + * @param {string} arg.organizationId - This is organizationId + * @summary: Get Access Token + * @description: Use this API to get access token + */ + getAccessToken({} = {}) { + const { error } = CustomerValidator.getAccessToken().validate( + {}, + { abortEarly: false } + ); + if (error) { + return Promise.reject(new FDKClientValidationError(error)); + } + + const query_params = {}; + + return PlatformAPIClient.execute( + this.config, + "post", + `/service/integration/user/authentication/${this.config.companyId}/authorize`, + query_params, + undefined, + session + ); + } + + /** + * @param {Object} arg - Arg object. + * @param {String} session - Session of the user + * @param {string} arg.organizationId - This is organizationId + * @param {RefreshTokenRequest} arg.body + * @summary: Renew Access Token + * @description: Use this API to renew access token + */ + renewAccessToken({ disbursalRequest, session } = {}) { + const { error } = CustomerValidator.renewAccessToken().validate( + { + disbursalRequest, + }, + { abortEarly: false } + ); + if (error) { + return Promise.reject(new FDKClientValidationError(error)); + } + + const query_params = {}; + + return PlatformAPIClient.execute( + this.config, + "post", + `/service/integration/user/authentication/${this.config.companyId}/token`, + query_params, + disbursalRequest, + session + ); + } + + /** + * @param {Object} arg - Arg object. + * @param {String} session - Session of the user + * @param {string} arg.organizationId - This is organizationId + * @param {Refund} arg.body + * @summary: Refund customer order amount + * @description: Use this API to verify the refund customer order amount + */ + refund({ disbursalRequest, session } = {}) { + const { error } = CustomerValidator.refund().validate( + { + disbursalRequest, + }, + { abortEarly: false } + ); + if (error) { + return Promise.reject(new FDKClientValidationError(error)); + } + + const query_params = {}; + + return PlatformAPIClient.execute( + this.config, + "post", + `/service/integration/user/authentication/${this.config.companyId}/refund`, + query_params, + disbursalRequest, + session + ); + } + + /** + * @param {Object} arg - Arg object. + * @param {String} session - Session of the user + * @param {string} arg.organizationId - This is organizationId + * @param {string} [arg.refundId] - This is the refundId + * @param {string} [arg.orderId] - This is the order ID + * @summary: Refund status + * @description: Use this API to fetch the refund status + */ + refundStatus({ refundId, orderId, session } = {}) { + const { error } = CustomerValidator.refundStatus().validate( + { + refundId, + orderId, + }, + { abortEarly: false } + ); + if (error) { + return Promise.reject(new FDKClientValidationError(error)); + } + + const query_params = {}; + query_params["refundId"] = refundId; + query_params["orderId"] = orderId; + + return PlatformAPIClient.execute( + this.config, + "get", + `/service/integration/user/authentication/${this.config.companyId}/refund/status`, + query_params, + undefined, + session + ); + } + + /** + * @param {Object} arg - Arg object. + * @param {String} session - Session of the user + * @param {string} arg.organizationId - This is organizationId + * @param {VerifyCustomer} arg.body + * @summary: Fetch schemes + * @description: Use this API to fetch available schemes for user order. + */ + getSchemes({ disbursalRequest, session } = {}) { + const { error } = CustomerValidator.getSchemes().validate( + { + disbursalRequest, + }, + { abortEarly: false } + ); + if (error) { + return Promise.reject(new FDKClientValidationError(error)); + } + + const query_params = {}; + + return PlatformAPIClient.execute( + this.config, + "post", + `/service/integration/user/authentication/${this.config.companyId}/schemes`, + query_params, + disbursalRequest, + session + ); + } + + /** + * @param {Object} arg - Arg object. + * @param {String} session - Session of the user + * @param {string} arg.organizationId - This is organizationId + * @param {CheckEligibilityRequest} arg.body + * @summary: Check Credit Eligibility + * @description: Use this API to pre approve by checking the customer's credit eligibility based on mobile number and countryCode and vintage data of monthly transactions. + */ + checkEligibility({ disbursalRequest, session } = {}) { + const { error } = CustomerValidator.checkEligibility().validate( + { + disbursalRequest, + }, + { abortEarly: false } + ); + if (error) { + return Promise.reject(new FDKClientValidationError(error)); + } + + const query_params = {}; + + return PlatformAPIClient.execute( + this.config, + "post", + `/service/integration/user/authentication/${this.config.companyId}/eligibility`, + query_params, + disbursalRequest, + session + ); + } +} + +class Credit { + constructor(config) { + this.config = config; + } + + /** + * @param {Object} arg - Arg object. + * @param {String} session - Session of the user + * @param {string} arg.organizationId - This is organization id + * @param {DisbursalRequest} arg.body + * @summary: Disburse the credit + * @description: Use this API to disburse the credit. + */ + disburse({ disbursalRequest, session } = {}) { + const { error } = CreditValidator.disburse().validate( + { + disbursalRequest, + }, + { abortEarly: false } + ); + if (error) { + return Promise.reject(new FDKClientValidationError(error)); + } + + const query_params = {}; + + return PlatformAPIClient.execute( + this.config, + "post", + `/service/integration/credit/credit/${this.config.companyId}/disburse`, + query_params, + disbursalRequest, + session + ); + } + + /** + * @param {Object} arg - Arg object. + * @param {String} session - Session of the user + * @param {string} arg.organizationId - This is organization ID + * @param {string} arg.orderId - This is order ID + * @summary: check status of the order + * @description: Use this API to check status the order. + */ + getOrderStatus({ orderId, session } = {}) { + const { error } = CreditValidator.getOrderStatus().validate( + { + orderId, + }, + { abortEarly: false } + ); + if (error) { + return Promise.reject(new FDKClientValidationError(error)); + } + + const query_params = {}; + + return PlatformAPIClient.execute( + this.config, + "get", + `/service/integration/credit/credit/${this.config.companyId}/orders/${orderId}/status`, + query_params, + undefined, + session + ); + } + + /** + * @param {Object} arg - Arg object. + * @param {String} session - Session of the user + * @param {string} arg.organizationId - This is organization id + * @param {string} arg.lenderSlug - This is lender slug + * @param {EligiblePlansRequest} arg.body + * @summary: Get eligible plans + * @description: Use this API to Get eligible plans. + */ + getEligiblePlans({ lenderSlug, disbursalRequest, session } = {}) { + const { error } = CreditValidator.getEligiblePlans().validate( + { + lenderSlug, + disbursalRequest, + }, + { abortEarly: false } + ); + if (error) { + return Promise.reject(new FDKClientValidationError(error)); + } + + const query_params = {}; + + return PlatformAPIClient.execute( + this.config, + "post", + `/service/integration/credit/credit/${this.config.companyId}/${lenderSlug}/plans`, + query_params, + disbursalRequest, + session + ); + } +} + +class MultiKyc { + constructor(config) { + this.config = config; + } + + /** + * @param {Object} arg - Arg object. + * @param {String} session - Session of the user + * @param {Object} arg.organizationId - + * @summary: Approved lenders + * @description: + */ + approvedLenders({} = {}) { + const { error } = MultiKycValidator.approvedLenders().validate( + {}, + { abortEarly: false } + ); + if (error) { + return Promise.reject(new FDKClientValidationError(error)); + } + + const query_params = {}; + + return PlatformAPIClient.execute( + this.config, + "get", + `/service/integration/kyc-onboarding/bre/${this.config.companyId}/approved-lenders`, + query_params, + undefined, + session + ); + } + + /** + * @param {Object} arg - Arg object. + * @param {String} session - Session of the user + * @param {string} arg.organizationId - + * @param {GetLimitRequest} arg.body + * @summary: Get limit + * @description: + */ + getLimit({ disbursalRequest, session } = {}) { + const { error } = MultiKycValidator.getLimit().validate( + { + disbursalRequest, + }, + { abortEarly: false } + ); + if (error) { + return Promise.reject(new FDKClientValidationError(error)); + } + + const query_params = {}; + + return PlatformAPIClient.execute( + this.config, + "post", + `/service/integration/kyc-onboarding/credit/${this.config.companyId}/limit`, + query_params, + disbursalRequest, + session + ); + } +} + +module.exports = PlatformClient; diff --git a/sdk/platform/PlatformConfig.d.ts b/sdk/platform/PlatformConfig.d.ts new file mode 100644 index 0000000..85a3ca0 --- /dev/null +++ b/sdk/platform/PlatformConfig.d.ts @@ -0,0 +1,31 @@ +export = PlatformConfig; +declare class PlatformConfig { + /** + * @param {Object} config + * @param {string} config.companyId + * @param {string} config.domain + * @param {string} config.key + * @param {string} config.token + * @param {string} config.secret + * @param {boolean} config.useAutoRenewTimer + */ + constructor(config: { + companyId: string; + domain: string; + key: string; + token: string; + secret: string; + useAutoRenewTimer: boolean; + }); + companyId: string; + organizationId: any; + domain: string; + apiKey: string; + apiSecret: string; + topSecret: string; + useAutoRenewTimer: boolean; + oauthClient: OauthClient; + extraHeaders: any[]; + getAccessToken(): Promise; +} +import OauthClient = require("./OAuthClient"); diff --git a/sdk/platform/PlatformConfig.js b/sdk/platform/PlatformConfig.js new file mode 100644 index 0000000..2dd35c6 --- /dev/null +++ b/sdk/platform/PlatformConfig.js @@ -0,0 +1,30 @@ +const OauthClient = require("./OAuthClient"); +class PlatformConfig { + /** + * @param {Object} config + * @param {string} config.companyId + * @param {string} config.domain + * @param {string} config.key + * @param {string} config.token + * @param {string} config.secret + * @param {boolean} config.useAutoRenewTimer + */ + constructor(config) { + this.companyId = config.companyId; + this.organizationId = config.organizationId; + this.domain = config.domain || "https://api.potleex0.de"; + this.apiKey = config.key; + this.apiSecret = config.token; + this.topSecret = config.secret; + this.useAutoRenewTimer = + config.useAutoRenewTimer !== undefined ? config.useAutoRenewTimer : true; + this.oauthClient = new OauthClient(this); + this.extraHeaders = []; + } + async getAccessToken() { + let token = await this.oauthClient.getAccessToken(); + return token.access_token; + } +} + +module.exports = PlatformConfig; diff --git a/sdk/platform/PlatformModels.d.ts b/sdk/platform/PlatformModels.d.ts new file mode 100644 index 0000000..bc45502 --- /dev/null +++ b/sdk/platform/PlatformModels.d.ts @@ -0,0 +1,22 @@ +export class CustomerValidator { + static verify(): any; + static resendPaymentRequest(): any; + static createOrder(): any; + static link(): any; + static unlink(): any; + static getAccessToken(): any; + static renewAccessToken(): any; + static refund(): any; + static refundStatus(): any; + static getSchemes(): any; + static checkEligibility(): any; +} +export class CreditValidator { + static disburse(): any; + static getOrderStatus(): any; + static getEligiblePlans(): any; +} +export class MultiKycValidator { + static approvedLenders(): any; + static getLimit(): any; +} diff --git a/sdk/platform/PlatformModels.js b/sdk/platform/PlatformModels.js new file mode 100644 index 0000000..35b5061 --- /dev/null +++ b/sdk/platform/PlatformModels.js @@ -0,0 +1,4443 @@ +const Joi = require("joi"); +class Validator { + static UserSchema() { + return Joi.object({ + id: Joi.string().allow(""), + + firstName: Joi.string().allow(""), + + lastName: Joi.string().allow(""), + + countryCode: Joi.string().allow(""), + + mobile: Joi.string().allow(""), + + email: Joi.string().allow(""), + + gender: Joi.string().allow(""), + + dob: Joi.string().allow(""), + + active: Joi.boolean(), + + profilePicUrl: Joi.string().allow(""), + + isEmailVerified: Joi.boolean(), + + createdAt: Joi.string().allow(""), + + updatedAt: Joi.string().allow(""), + + deletedAt: Joi.string().allow(""), + }); + } + + static count() { + return Joi.object({ + totalUsers: Joi.string().allow(""), + }); + } + + static FilterByDate() { + return Joi.object({ + startDate: Joi.string().allow(""), + + endDate: Joi.string().allow(""), + }); + } + + static LenderCount() { + return Joi.object({ + totalLenders: Joi.string().allow(""), + }); + } + + static LenderSchema() { + return Joi.object({ + id: Joi.string().allow(""), + + name: Joi.string().allow(""), + + active: Joi.boolean(), + + createdAt: Joi.string().allow(""), + + updatedAt: Joi.string().allow(""), + + deletedAt: Joi.string().allow(""), + }); + } + + static TotalUsersPerLender() { + return Joi.object({ + filters: Joi.array().items(this.Filters()).required(), + + page: this.PageResponse().required(), + + lenderList: Joi.array().items(this.TotalUsersPerLenderData()).required(), + }); + } + + static TotalUsersPerLenderData() { + return Joi.object({ + id: Joi.string().allow(""), + + name: Joi.string().allow(""), + + active: Joi.boolean(), + + createdAt: Joi.string().allow(""), + + updatedAt: Joi.string().allow(""), + + deletedAt: Joi.string().allow(""), + + totalUsers: Joi.string().allow(""), + }); + } + + static TotalUserByLender() { + return Joi.object({ + name: Joi.string().allow(""), + + count: Joi.string().allow(""), + }); + } + + static UsersByLender() { + return Joi.object({ + firstName: Joi.string().allow(""), + + lastName: Joi.string().allow(""), + + mobile: Joi.string().allow(""), + + email: Joi.string().allow(""), + + name: Joi.string().allow(""), + }); + } + + static ErrorResponse() { + return Joi.object({ + message: Joi.string().allow(""), + + info: Joi.string().allow(""), + + code: Joi.string().allow(""), + + requestId: Joi.string().allow(""), + + meta: Joi.any(), + }); + } + + static EditProfileRequest() { + return Joi.object({ + firstName: Joi.string().allow(""), + + lastName: Joi.string().allow(""), + + countryCode: Joi.string().allow(""), + + mobile: Joi.string().allow(""), + + email: Joi.string().allow(""), + + gender: Joi.string().allow(""), + + dob: Joi.string().allow(""), + + registrationToken: Joi.string().allow(""), + }); + } + + static VerifyOtpRequest() { + return Joi.object({ + requestId: Joi.string().allow("").required(), + + otp: Joi.string().allow("").required(), + + captchaCode: Joi.string().allow(""), + + androidHash: Joi.string().allow(""), + + referralCode: Joi.string().allow(""), + + onboardingToken: Joi.string().allow(""), + }); + } + + static SendMobileOtpRequest() { + return Joi.object({ + countryCode: Joi.string().allow("").required(), + + mobile: Joi.string().allow("").required(), + + captchaCode: Joi.string().allow(""), + + androidHash: Joi.string().allow(""), + + force: Joi.string().allow(""), + }); + } + + static ReSendMobileOtpRequest() { + return Joi.object({ + captchaCode: Joi.string().allow(""), + + token: Joi.string().allow("").required(), + + androidHash: Joi.string().allow(""), + }); + } + + static SendOtpRequest() { + return Joi.object({ + countryCode: Joi.string().allow(""), + + captchaCode: Joi.string().allow(""), + + mobile: Joi.string().allow(""), + }); + } + + static ApplicationUser() { + return Joi.object({ + user: this.UserSchema(), + }); + } + + static SendOtpResponse() { + return Joi.object({ + resendTimer: Joi.number(), + + resendToken: Joi.string().allow(""), + + success: Joi.boolean(), + + requestId: Joi.string().allow(""), + + message: Joi.string().allow(""), + + mobile: Joi.string().allow(""), + + countryCode: Joi.string().allow(""), + + email: Joi.string().allow(""), + + resendEmailToken: Joi.string().allow(""), + + registerToken: Joi.string().allow(""), + + verifyEmailOtp: Joi.boolean(), + + verifyMobileOtp: Joi.boolean(), + + userExists: Joi.boolean(), + }); + } + + static EmailUpdate() { + return Joi.object({ + email: Joi.string().allow(""), + }); + } + + static UserUpdateRequest() { + return Joi.object({ + firstName: Joi.any(), + + lastName: Joi.any(), + + countryCode: Joi.string().allow("").required(), + + mobile: Joi.string().allow("").required(), + + email: Joi.any(), + + gender: Joi.any(), + + dob: Joi.any(), + + active: Joi.boolean(), + + profilePictureUrl: Joi.any(), + + isEmailVerified: Joi.boolean(), + }); + } + + static LenderUpdateRequest() { + return Joi.object({ + id: Joi.string().allow("").required(), + + name: Joi.string().allow(""), + + active: Joi.boolean(), + }); + } + + static ProfileEditSuccess() { + return Joi.object({ + user: this.UserSchema(), + + registerToken: Joi.string().allow(""), + + resendEmailToken: Joi.string().allow(""), + + userExists: Joi.boolean(), + + verifyEmailLink: Joi.boolean(), + + verifyEmailOtp: Joi.boolean(), + + verifyMobileOtp: Joi.boolean(), + + email: Joi.string().allow(""), + + requestId: Joi.string().allow(""), + + countryCode: Joi.string().allow(""), + + mobile: Joi.string().allow(""), + + success: Joi.boolean(), + + message: Joi.string().allow(""), + + resendTimer: Joi.number(), + + resendToken: Joi.string().allow(""), + }); + } + + static LoginSuccess() { + return Joi.object({ + user: this.UserSchema(), + + requestId: Joi.string().allow(""), + + registerToken: Joi.string().allow(""), + }); + } + + static VerifyOtpSuccess() { + return Joi.object({ + user: this.UserSchema(), + + userExists: Joi.boolean(), + + isNew: Joi.boolean(), + }); + } + + static LogoutSuccess() { + return Joi.object({ + logout: Joi.boolean(), + }); + } + + static OtpSuccess() { + return Joi.object({ + resendTimer: Joi.number(), + + resendToken: Joi.string().allow(""), + + registerToken: Joi.string().allow(""), + + success: Joi.boolean(), + + requestId: Joi.string().allow(""), + + message: Joi.string().allow(""), + + mobile: Joi.string().allow(""), + + isNew: Joi.boolean(), + + countryCode: Joi.string().allow(""), + + otpLength: Joi.number(), + }); + } + + static SessionListSuccess() { + return Joi.object({ + sessions: Joi.array().items(Joi.string().allow("")), + }); + } + + static VerifyMobileOTPSuccess() { + return Joi.object({ + user: this.UserSchema(), + }); + } + + static Location() { + return Joi.object({ + latitude: Joi.number(), + + longitude: Joi.number(), + }); + } + + static OrderAddress() { + return Joi.object({ + line1: Joi.string().allow(""), + + line2: Joi.string().allow(""), + + city: Joi.string().allow(""), + + state: Joi.string().allow(""), + + country: Joi.string().allow(""), + + pincode: Joi.string().allow(""), + + type: Joi.string().allow(""), + + geoLocation: this.Location(), + }); + } + + static CustomerObject() { + return Joi.object({ + countryCode: Joi.string().allow(""), + + mobile: Joi.string().allow("").required(), + + uid: Joi.string().allow("").required(), + + email: Joi.string().allow(""), + + firstname: Joi.string().allow(""), + + middleName: Joi.string().allow(""), + + lastName: Joi.string().allow(""), + }); + } + + static Order() { + return Joi.object({ + valueInPaise: Joi.number().required(), + + uid: Joi.string().allow("").required(), + + emiTenure: Joi.number(), + + items: Joi.array().items(this.Items()), + + shippingAddress: this.OrderAddress(), + + billingAddress: this.OrderAddress(), + }); + } + + static OrderUid() { + return Joi.object({ + valueInPaise: Joi.number(), + + uid: Joi.string().allow("").required(), + + items: Joi.array().items(this.Items()), + + shippingAddress: this.OrderAddress(), + + billingAddress: this.OrderAddress(), + }); + } + + static CustomerMeta() { + return Joi.object({ + ip: Joi.string().allow("").required(), + + appVersion: Joi.string().allow("").required(), + + appIdentifier: Joi.string().allow(""), + + customerUserAgent: Joi.string().allow(""), + + deviceId: Joi.string().allow("").required(), + }); + } + + static Device() { + return Joi.object({ + ipAddress: Joi.string().allow("").required(), + + userAgent: Joi.string().allow("").required(), + + latitude: Joi.number(), + + longitude: Joi.number(), + }); + } + + static VerifyCustomer() { + return Joi.object({ + customer: this.CustomerObject().required(), + + order: this.Order().required(), + + device: this.Device().required(), + + meta: Joi.any(), + + fetchLimitOptions: Joi.boolean(), + }); + } + + static CreateTransaction() { + return Joi.object({ + autoCapture: Joi.boolean(), + + redirectUrl: Joi.string().allow("").required(), + + customer: this.CustomerObject().required(), + + order: this.Order().required(), + + device: this.Device().required(), + + meta: Joi.any(), + }); + } + + static ResendPaymentRequest() { + return Joi.object({ + autoCapture: Joi.boolean(), + + redirectUrl: Joi.string().allow(""), + + customer: this.CustomerObject().required(), + + order: this.OrderUid().required(), + }); + } + + static VerifyCustomerSuccess() { + return Joi.object({ + status: Joi.string().allow(""), + + userStatus: Joi.string().allow(""), + + message: Joi.string().allow(""), + + __headers: Joi.any(), + }); + } + + static CreateTransactionSuccess() { + return Joi.object({ + chargeToken: Joi.string().allow(""), + + redirectUrl: Joi.string().allow(""), + + message: Joi.string().allow("").required(), + + transactionId: Joi.string().allow(""), + + status: Joi.string().allow(""), + + userStatus: Joi.string().allow(""), + + __headers: Joi.any(), + }); + } + + static SupportDocuments() { + return Joi.object({ + fileName: Joi.string().allow(""), + + fileUrl: Joi.string().allow(""), + }); + } + + static CreateTicketResponse() { + return Joi.object({ + serviceRequestId: Joi.string().allow(""), + + message: Joi.string().allow(""), + }); + } + + static CreateTicket() { + return Joi.object({ + category: Joi.string().allow("").required(), + + transactionId: Joi.string().allow(""), + + description: Joi.string().allow("").required(), + + documents: Joi.array().items(this.SupportDocuments()), + }); + } + + static InitiateTransactions() { + return Joi.object({ + token: Joi.string().allow("").required(), + }); + } + + static GetMobileFromToken() { + return Joi.object({ + token: Joi.string().allow("").required(), + }); + } + + static GetDataFromToken() { + return Joi.object({ + token: Joi.string().allow("").required(), + }); + } + + static MerchantDetails() { + return Joi.object({ + name: Joi.string().allow(""), + + website: Joi.string().allow(""), + + logo: Joi.string().allow(""), + }); + } + + static InitiateTransactionsSuccess() { + return Joi.object({ + chargeToken: Joi.string().allow("").required(), + + session: Joi.string().allow(""), + + expiry: Joi.string().allow(""), + + hash: Joi.string().allow(""), + + order: this.Order(), + + isAsp: Joi.boolean(), + + merchant: this.MerchantDetails(), + }); + } + + static RetrieveMobileFromToken() { + return Joi.object({ + countryCode: Joi.string().allow("").required(), + + mobile: Joi.string().allow("").required(), + }); + } + + static CreateDashboardTemplateRequest() { + return Joi.object({ + name: Joi.string().allow("").required(), + + version: Joi.string().allow("").required(), + + isDefault: Joi.boolean(), + + sections: Joi.array().items(this.TemplateSections()).required(), + }); + } + + static TemplateSections() { + return Joi.object({ + sequence: Joi.number().required(), + + isAvailableInMobile: Joi.boolean().required(), + + isAvailableInDesktop: Joi.boolean().required(), + + component: this.TemplateComponent().required(), + }); + } + + static TemplateComponent() { + return Joi.object({ + name: Joi.string().allow("").required(), + + description: Joi.string().allow("").required(), + + isAvailableInDesktop: Joi.boolean(), + + partnerApplications: Joi.array().items(this.PartnerApplications()), + + banners: Joi.array().items(this.Banners()), + + tips: Joi.array().items(this.Tips()), + }); + } + + static PartnerApplications() { + return Joi.object({ + name: Joi.string().allow("").required(), + + description: Joi.string().allow(""), + + urlPath: Joi.string().allow(""), + + urlTarget: Joi.string().allow(""), + + imageUrl: Joi.string().allow("").required(), + + sequence: Joi.number(), + }); + } + + static Offerings() { + return Joi.object({ + name: Joi.string().allow("").required(), + + description: Joi.string().allow(""), + + urlPath: Joi.string().allow(""), + + urlTarget: Joi.string().allow(""), + + imageUrl: Joi.string().allow("").required(), + + sequence: Joi.number(), + + gradient: Joi.array().items(Joi.string().allow("")).required(), + }); + } + + static Banners() { + return Joi.object({ + imageUrl: Joi.string().allow("").required(), + + action: this.ActionSchema(), + }); + } + + static Tips() { + return Joi.object({ + name: Joi.string().allow(""), + + description: Joi.string().allow(""), + + urlPath: Joi.string().allow("").required(), + + urlTarget: Joi.string().allow(""), + + imageUrl: Joi.string().allow(""), + + sequence: Joi.number(), + }); + } + + static DashboardTemplateResponse() { + return Joi.object({ + id: Joi.string().allow(""), + + name: Joi.string().allow(""), + + version: Joi.string().allow(""), + + active: Joi.boolean(), + + sections: Joi.array().items(this.SectionSchema()).required(), + }); + } + + static SectionSchema() { + return Joi.object({ + type: Joi.string().allow("").required(), + + title: Joi.string().allow(""), + + description: Joi.string().allow(""), + + partners: Joi.array().items(this.PartnerApplicationsResponse()), + + banners: Joi.array().items(this.BannersResponse()), + + tips: Joi.array().items(this.TipsResponse()), + }); + } + + static PartnerApplicationsResponse() { + return Joi.object({ + id: Joi.string().allow(""), + + name: Joi.string().allow("").required(), + + description: Joi.string().allow(""), + + action: this.ActionSchema().required(), + + imageUrl: Joi.string().allow("").required(), + }); + } + + static OfferingsResponse() { + return Joi.object({ + id: Joi.string().allow(""), + + name: Joi.string().allow("").required(), + + description: Joi.string().allow(""), + + action: this.ActionSchema().required(), + + imageUrl: Joi.string().allow("").required(), + + gradient: Joi.array().items(Joi.string().allow("")).required(), + }); + } + + static BannersResponse() { + return Joi.object({ + action: this.ActionSchema(), + + imageUrl: Joi.string().allow("").required(), + }); + } + + static TipsSection() { + return Joi.object({ + tips: Joi.array().items(this.TipsResponse()), + + categories: Joi.array().items(this.TipsCategories()), + + action: this.ActionSchema(), + }); + } + + static TipsResponse() { + return Joi.object({ + name: Joi.string().allow(""), + + category: Joi.string().allow(""), + + description: Joi.string().allow(""), + + action: this.ActionSchema().required(), + + imageUrl: Joi.string().allow(""), + }); + } + + static TipsCategories() { + return Joi.object({ + id: Joi.string().allow("").required(), + + title: Joi.string().allow("").required(), + }); + } + + static ActionSchema() { + return Joi.object({ + type: Joi.string().allow(""), + + page: this.PageSchema(), + + popup: this.PageSchema(), + }); + } + + static UpdateDashboardTemplateRequest() { + return Joi.object({ + id: Joi.string().allow("").required(), + + name: Joi.string().allow(""), + + version: Joi.string().allow(""), + + isDefault: Joi.boolean(), + + active: Joi.boolean(), + + sections: Joi.array().items(this.UpdateTemplateSections()), + }); + } + + static UpdateTemplateSections() { + return Joi.object({ + id: Joi.string().allow("").required(), + + sequence: Joi.number(), + + isAvailableInMobile: Joi.boolean(), + + isAvailableInDesktop: Joi.boolean(), + + active: Joi.boolean(), + + component: this.UpdateTemplateComponent(), + }); + } + + static UpdateTemplateComponent() { + return Joi.object({ + id: Joi.string().allow("").required(), + + name: Joi.string().allow(""), + + description: Joi.string().allow(""), + + isAvailableInDesktop: Joi.boolean(), + + active: Joi.boolean(), + + partners: Joi.array().items(this.UpdatePartnerApplications()), + + banners: Joi.array().items(this.UpdateBanners()), + + tips: Joi.array().items(this.UpdateTips()), + }); + } + + static UpdatePartnerApplications() { + return Joi.object({ + id: Joi.string().allow("").required(), + + name: Joi.string().allow(""), + + description: Joi.string().allow(""), + + action: Joi.any(), + + imageUrl: Joi.string().allow(""), + + sequence: Joi.number(), + + active: Joi.boolean(), + }); + } + + static UpdateOfferings() { + return Joi.object({ + id: Joi.string().allow("").required(), + + name: Joi.string().allow(""), + + description: Joi.string().allow(""), + + urlPath: Joi.string().allow(""), + + urlTarget: Joi.string().allow(""), + + imageUrl: Joi.string().allow(""), + + sequence: Joi.number(), + + gradient: Joi.array().items(Joi.string().allow("")), + }); + } + + static UpdateBanners() { + return Joi.object({ + id: Joi.string().allow("").required(), + + imageUrl: Joi.string().allow(""), + + action: Joi.any(), + + sequence: Joi.number(), + + active: Joi.boolean(), + }); + } + + static UpdateTips() { + return Joi.object({ + id: Joi.string().allow("").required(), + + name: Joi.string().allow(""), + + description: Joi.string().allow(""), + + imageUrl: Joi.string().allow(""), + + action: Joi.any(), + + sequence: Joi.number(), + + active: Joi.boolean(), + }); + } + + static NavigationsMobileResponse() { + return Joi.object({ + tabs: Joi.array().items(this.TabsSchema()).required(), + + profileSections: Joi.array() + .items(this.ProfileSectionSchema()) + .required(), + }); + } + + static TabsSchema() { + return Joi.object({ + title: Joi.string().allow("").required(), + + page: this.PageSchema().required(), + + icon: Joi.string().allow("").required(), + + activeIcon: Joi.string().allow("").required(), + + active: Joi.boolean().required(), + }); + } + + static PageSchema() { + return Joi.object({ + link: Joi.string().allow(""), + + type: this.PageType(), + + params: Joi.object().pattern( + /\S/, + Joi.array().items(Joi.string().allow("")) + ), + + query: Joi.object().pattern(/\S/, Joi.string().allow("")), + }); + } + + static ProfileSectionSchema() { + return Joi.object({ + title: Joi.string().allow("").required(), + + navigations: Joi.array().items(this.ProfileNavigationSchema()).required(), + + active: Joi.boolean().required(), + }); + } + + static ProfileNavigationSchema() { + return Joi.object({ + title: Joi.string().allow("").required(), + + description: Joi.string().allow(""), + + icon: Joi.string().allow("").required(), + + type: Joi.string().allow("").required(), + + action: this.ActionSchema(), + + active: Joi.boolean(), + }); + } + + static SendPNSRegisterRequest() { + return Joi.object({ + deviceId: Joi.string().allow("").required(), + + deviceType: Joi.string().allow("").required(), + + token: Joi.string().allow("").required(), + }); + } + + static PNSRegisterResponse() { + return Joi.object({ + status: Joi.boolean(), + + message: Joi.string().allow(""), + }); + } + + static FaqResponse() { + return Joi.object({ + categories: Joi.array().items(this.CategorySchema()), + }); + } + + static CategorySchema() { + return Joi.object({ + uid: Joi.string().allow("").required(), + + title: Joi.string().allow(""), + + description: Joi.string().allow(""), + + logo: Joi.string().allow(""), + + questions: Joi.array().items(this.QuestionSchema()), + }); + } + + static QuestionSchema() { + return Joi.object({ + uid: Joi.string().allow("").required(), + + title: Joi.string().allow(""), + + description: Joi.string().allow(""), + + displayOrder: Joi.number(), + + canRaiseRequest: Joi.boolean(), + }); + } + + static SupportCategories() { + return Joi.object({ + kind: Joi.string().allow(""), + + display: Joi.string().allow(""), + }); + } + + static SupportCategoriesResponse() { + return Joi.object({ + categories: Joi.array().items(this.SupportCategories()), + }); + } + + static SanctionLetterResponse() { + return Joi.object({ + sanctionedLetterFileUrl: Joi.string().allow("").required(), + }); + } + + static KfsDocumentResponse() { + return Joi.object({ + kfsFileUrl: Joi.string().allow("").required(), + }); + } + + static UserWhiteListedResponse() { + return Joi.object({ + status: Joi.string().allow(""), + }); + } + + static UserConsentRequest() { + return Joi.object({ + consents: Joi.array().items(Joi.string().allow("")), + }); + } + + static Consents() { + return Joi.object({ + type: Joi.string().allow(""), + + text: Joi.string().allow(""), + }); + } + + static UserConsentRequestV2() { + return Joi.object({ + consents: Joi.array().items(this.Consents()), + }); + } + + static UserConsentResponse() { + return Joi.object({ + success: Joi.boolean(), + }); + } + + static UserKycSteps() { + return Joi.object({ + id: Joi.string().allow(""), + + index: Joi.string().allow(""), + + name: Joi.string().allow(""), + + rules: Joi.any(), + + active: Joi.boolean(), + + createdAt: Joi.string().allow(""), + + updatedAt: Joi.string().allow(""), + + deletedAt: Joi.string().allow(""), + }); + } + + static CreateKycStepRequest() { + return Joi.object({ + name: Joi.string().allow("").required(), + + index: Joi.string().allow("").required(), + + active: Joi.boolean().required(), + + rules: Joi.any(), + }); + } + + static RemoveKycStepRequest() { + return Joi.object({ + name: Joi.string().allow(""), + + index: Joi.string().allow("").required(), + + active: Joi.boolean(), + + rules: Joi.any(), + }); + } + + static KycUpdateMessage() { + return Joi.object({ + message: Joi.string().allow(""), + }); + } + + static MobileFromLinkingRequest() { + return Joi.object({ + token: Joi.string().allow("").required(), + }); + } + + static MobileFromLinkingResponse() { + return Joi.object({ + countryCode: Joi.string().allow("").required(), + + mobile: Joi.string().allow("").required(), + }); + } + + static SessionFromLinkingRequest() { + return Joi.object({ + token: Joi.string().allow("").required(), + }); + } + + static SessionFromLinkingResponse() { + return Joi.object({ + session: Joi.string().allow("").required(), + + expiry: Joi.number().required(), + }); + } + + static LinkAccount() { + return Joi.object({ + customer: this.CustomerObject().required(), + + redirectUrl: Joi.string().allow("").required(), + + device: this.Device().required(), + }); + } + + static LinkAccountSuccess() { + return Joi.object({ + redirectUrl: Joi.string().allow(""), + + statusCode: Joi.number(), + + status: Joi.string().allow(""), + + message: Joi.string().allow(""), + + errorCode: Joi.string().allow(""), + + __headers: Joi.any(), + }); + } + + static UnlinkAccount() { + return Joi.object({ + customer: this.CustomerObject().required(), + + device: this.Device().required(), + }); + } + + static UnlinkAccountSuccess() { + return Joi.object({ + status: Joi.string().allow("").required(), + + message: Joi.string().allow("").required(), + + statusCode: Joi.number().required(), + + userStatus: Joi.string().allow(""), + + errorCode: Joi.string().allow(""), + + __headers: Joi.any(), + }); + } + + static Refund() { + return Joi.object({ + fingerprint: Joi.string().allow(""), + + customer: this.CustomerObject().required(), + + refundItems: Joi.array().items(this.Items()), + + orderId: Joi.string().allow("").required(), + + refundId: Joi.string().allow("").required(), + + refundAmount: Joi.number().required(), + }); + } + + static Translation() { + return Joi.object({ + content: Joi.any(), + }); + } + + static FilterKeys() { + return Joi.object({ + display: Joi.string().allow(""), + + name: Joi.string().allow(""), + + kind: Joi.string().allow(""), + }); + } + + static FilterValues() { + return Joi.object({ + display: Joi.string().allow(""), + + isSelected: Joi.boolean(), + + value: Joi.string().allow(""), + }); + } + + static Filters() { + return Joi.object({ + key: this.FilterKeys(), + + values: Joi.array().items(this.FilterValues()), + }); + } + + static PageResponse() { + return Joi.object({ + type: Joi.string().allow("").required(), + + current: Joi.number().required(), + + hasPrevious: Joi.boolean().required(), + + hasNext: Joi.boolean().required(), + + size: Joi.number().required(), + + itemTotal: Joi.number().required(), + }); + } + + static UserResponse() { + return Joi.object({ + filters: Joi.array().items(this.Filters()).required(), + + page: this.PageResponse().required(), + + listOfUsers: Joi.array().items(this.UserSchema()).required(), + }); + } + + static UserDetailRequest() { + return Joi.object({ + id: Joi.string().allow("").required(), + }); + } + + static UserConsents() { + return Joi.object({ + id: Joi.string().allow(""), + + userId: Joi.string().allow(""), + + ipAddress: Joi.string().allow(""), + + text: Joi.string().allow(""), + + createdAt: Joi.string().allow(""), + + updatedAt: Joi.string().allow(""), + + deletedAt: Joi.string().allow(""), + }); + } + + static CreditScoreSchema() { + return Joi.object({ + id: Joi.string().allow(""), + + userId: Joi.string().allow(""), + + cibil: Joi.number(), + + finbox: Joi.string().allow(""), + + systemAwarded: Joi.string().allow(""), + + isActive: Joi.boolean(), + + deletedAt: Joi.string().allow(""), + + updatedAt: Joi.string().allow(""), + + createdAt: Joi.string().allow(""), + }); + } + + static CreditLimitSchema() { + return Joi.object({ + id: Joi.string().allow(""), + + userId: Joi.string().allow(""), + + creditLimit: Joi.string().allow(""), + + createdAt: Joi.string().allow(""), + + updatedAt: Joi.string().allow(""), + + deletedAt: Joi.string().allow(""), + }); + } + + static Screen() { + return Joi.object({ + screenType: Joi.string().allow(""), + + name: Joi.string().allow(""), + + link: Joi.string().allow(""), + }); + } + + static UserStateSchema() { + return Joi.object({ + screen: this.Screen(), + }); + } + + static GetAccessTokenResponse() { + return Joi.object({ + success: Joi.boolean(), + + accessToken: Joi.string().allow(""), + + refreshToken: Joi.string().allow(""), + + tokenExpireAt: Joi.string().allow(""), + + tokenExpiryIn: Joi.string().allow(""), + + refreshTokenExpiryAt: Joi.string().allow(""), + + refreshTokenExpiryIn: Joi.string().allow(""), + + scope: Joi.array().items(Joi.string().allow("")), + + __headers: Joi.any(), + }); + } + + static RefreshTokenResponse() { + return Joi.object({ + success: Joi.boolean(), + + accessToken: Joi.string().allow(""), + + tokenExpireAt: Joi.string().allow(""), + + tokenExpiryIn: Joi.string().allow(""), + + __headers: Joi.any(), + }); + } + + static RefreshTokenRequest() { + return Joi.object({ + token: Joi.string().allow("").required(), + }); + } + + static Items() { + return Joi.object({ + category: Joi.string().allow(""), + + sku: Joi.string().allow(""), + + rate: Joi.number(), + + quantity: Joi.number(), + }); + } + + static RefundStatusList() { + return Joi.object({ + id: Joi.string().allow(""), + + orderItems: Joi.array().items(this.Items()), + + amount: Joi.number(), + + status: Joi.string().allow(""), + + createdAt: Joi.string().allow(""), + + processedDate: Joi.string().allow(""), + }); + } + + static RefundStatus() { + return Joi.object({ + orderId: Joi.string().allow(""), + + userId: Joi.string().allow(""), + + merchantId: Joi.string().allow(""), + + lenderId: Joi.string().allow(""), + + loanAccountNumber: Joi.string().allow(""), + + refund: Joi.array().items(this.RefundStatusList()), + + __headers: Joi.any(), + }); + } + + static CustomerMetricsPivots() { + return Joi.object({ + date: Joi.string().allow(""), + + sum: Joi.number(), + }); + } + + static CustomerMetricsSubResponse() { + return Joi.object({ + total: Joi.string().allow(""), + + pivots: Joi.array().items(this.CustomerMetricsPivots()), + + title: Joi.string().allow(""), + + description: Joi.string().allow(""), + + valueFormat: Joi.string().allow(""), + + logo: Joi.string().allow(""), + }); + } + + static CustomerMetricsAnalytics() { + return Joi.object({ + totalCustomers: this.CustomerMetricsSubResponse(), + + source: this.CustomerMetricsSubResponse(), + }); + } + + static CustomerMetricsFilters() { + return Joi.object({ + type: Joi.string().allow("").required(), + + display: Joi.string().allow("").required(), + + value: Joi.array().items(Joi.string().allow("")).required(), + + isSelected: Joi.boolean(), + + isActive: Joi.boolean().required(), + }); + } + + static CustomerMetrics() { + return Joi.object({ + metrics: this.CustomerMetricsAnalytics(), + + filters: Joi.array().items(this.CustomerMetricsFilters()), + + sort: Joi.array().items(this.CustomerMetricsFilters()), + }); + } + + static CustomerMetricsResponse() { + return Joi.object({ + data: this.CustomerMetrics(), + }); + } + + static CustomerMetricsRequest() { + return Joi.object({ + filters: Joi.array().items(this.CustomerMetricsFilters()), + + sort: Joi.array().items(this.CustomerMetricsFilters()), + + merchantId: Joi.string().allow(""), + + lenderId: Joi.string().allow(""), + + pivotPoints: Joi.number(), + }); + } + + static SourceAnalyticsRequest() { + return Joi.object({ + filters: Joi.array().items(this.CustomerMetricsFilters()), + }); + } + + static LenderResponse() { + return Joi.object({ + slug: Joi.string().allow(""), + + name: Joi.string().allow(""), + + logo: Joi.string().allow(""), + }); + } + + static CreditLimitObject() { + return Joi.object({ + availableLimit: Joi.number(), + + possibleLimit: Joi.number(), + + lender: this.LenderResponse(), + }); + } + + static BusinessDetails() { + return Joi.object({ + category: Joi.string().allow("").required(), + + shopName: Joi.string().allow(""), + + legalName: Joi.string().allow("").required(), + + address: Joi.string().allow(""), + + type: Joi.string().allow(""), + + pincode: Joi.string().allow(""), + }); + } + + static DocumentItems() { + return Joi.object({ + number: Joi.string().allow(""), + + category: Joi.string().allow(""), + + type: Joi.string().allow(""), + + name: Joi.string().allow(""), + + issuedOn: Joi.string().allow(""), + + issuedAt: Joi.string().allow(""), + + issuedBy: Joi.string().allow(""), + + expiryOn: Joi.string().allow(""), + }); + } + + static VintageItems() { + return Joi.object({ + month: Joi.number().required(), + + year: Joi.number().required(), + + totalTransactions: Joi.number().required(), + + totalTransactionAmount: Joi.number().required(), + + totalCancellations: Joi.number(), + + totalCancellationAmount: Joi.number(), + }); + } + + static EligibilitySuccess() { + return Joi.object({ + status: Joi.string().allow(""), + + message: Joi.string().allow(""), + + redirectUrl: Joi.string().allow(""), + + callbackUrl: Joi.string().allow(""), + + creditLimits: Joi.array().items(this.CreditLimitObject()), + + __headers: Joi.any(), + }); + } + + static CheckEligibilityRequest() { + return Joi.object({ + customer: this.CustomerObject().required(), + + order: this.Order(), + + businessDetails: this.BusinessDetails(), + + documents: Joi.array().items(this.DocumentItems()), + + device: this.Device().required(), + + vintage: Joi.array().items(this.VintageItems()), + + meta: Joi.object().pattern(/\S/, Joi.any()), + + fetchLimitOptions: Joi.boolean(), + }); + } + + static GetSchemesSuccess() { + return Joi.object({ + userId: Joi.string().allow(""), + + lenders: Joi.array().items(undefined).required(), + + __headers: Joi.any(), + }); + } + + /* + Enum: PageType + Used By: Customer + */ + static PageType() { + return Joi.string().valid( + "external", + + "login", + + "home", + + "transactions", + + "transactionDetails", + + "rewards", + + "referAndEarn", + + "profile", + + "setupAutopay", + + "updateEmail", + + "reportIssue", + + "creditScore", + + "autoPay", + + "helpCenter", + + "kycInit", + + "accessDigilocker", + + "liveliness", + + "lenderOnboard", + + "lender", + + "kycDocs", + + "kycSelfie", + + "kycStatus", + + "kycError", + + "kycDigilockerResponse", + + "kycInitResponse", + + "repayment", + + "netBankingRepayment", + + "upiRepayment", + + "sanctionLetter", + + "kfs" + ); + } + + static DisbursalRequest() { + return Joi.object({ + fingerprint: Joi.string().allow(""), + + chargeToken: Joi.string().allow("").required(), + + loanTypeId: Joi.number(), + + emiTenure: Joi.number(), + + isDownpaymentRequired: Joi.boolean(), + + downpaymentAmount: Joi.number(), + + loanAmount: Joi.number(), + }); + } + + static WorkflowUser() { + return Joi.object({ + mobile: Joi.string().allow(""), + }); + } + + static EligiblePlansRequest() { + return Joi.object({ + chargeToken: Joi.string().allow(""), + }); + } + + static EligiblePlans() { + return Joi.object({ + name: Joi.string().allow(""), + + displayName: Joi.string().allow(""), + + description: Joi.string().allow(""), + + brokenInterest: Joi.number(), + + noOfEmi: Joi.number(), + + emiAmount: Joi.number(), + + processingFee: Joi.number(), + + installmentInterestRate: Joi.number(), + }); + } + + static EligiblePlansResponse() { + return Joi.object({ + eligiblePlans: Joi.array().items(this.EligiblePlans()), + + __headers: Joi.any(), + }); + } + + static DisbursalResponse() { + return Joi.object({ + transactionId: Joi.string().allow(""), + + status: Joi.string().allow(""), + + message: Joi.string().allow(""), + + __headers: Joi.any(), + }); + } + + static OrderStatus() { + return Joi.object({ + orderId: Joi.string().allow("").required(), + + transactionId: Joi.string().allow(""), + + status: Joi.string().allow("").required(), + + message: Joi.string().allow("").required(), + + __headers: Joi.any(), + }); + } + + static DisbursalStatusRequest() { + return Joi.object({ + fingerprint: Joi.string().allow(""), + + transactionId: Joi.string().allow("").required(), + }); + } + + static Transactions() { + return Joi.object({ + id: Joi.string().allow("").required(), + + userId: Joi.string().allow("").required(), + + partnerId: Joi.string().allow(""), + + partner: Joi.string().allow(""), + + partnerLogo: Joi.string().allow(""), + + status: Joi.string().allow("").required(), + + type: Joi.string().allow(""), + + remark: Joi.string().allow(""), + + amount: Joi.number().required(), + + loanAccountNumber: Joi.string().allow(""), + + kfs: Joi.string().allow(""), + + utr: Joi.string().allow(""), + + sanctionLetter: Joi.string().allow(""), + + orderId: Joi.string().allow(""), + + refundId: Joi.string().allow(""), + + createdAt: Joi.string().allow("").required(), + + lenderId: Joi.string().allow(""), + + lenderName: Joi.string().allow(""), + + lenderLogo: Joi.string().allow(""), + + loanType: Joi.string().allow(""), + + repaymentTransactionId: Joi.string().allow(""), + + nextDueDate: Joi.string().allow(""), + + paidPercent: Joi.number(), + + lenderDetail: this.LenderDetail(), + + emis: Joi.array().items(this.Emi()), + }); + } + + static LenderDetail() { + return Joi.object({ + id: Joi.string().allow(""), + + name: Joi.string().allow(""), + + imageUrl: Joi.string().allow(""), + + slug: Joi.string().allow(""), + + active: Joi.boolean(), + + b2b: Joi.boolean(), + + b2c: Joi.boolean(), + + theme: this.Theme(), + + createdAt: Joi.string().allow(""), + + updatedAt: Joi.string().allow(""), + + deletedAt: Joi.string().allow(""), + }); + } + + static TransactionResponse() { + return Joi.object({ + filters: Joi.array().items(this.Filters()).required(), + + page: this.PageResponse().required(), + + transactions: Joi.array().items(this.Transactions()).required(), + }); + } + + static MerchantTransactions() { + return Joi.object({ + outstandingAmount: Joi.string().allow(""), + }); + } + + static MerchantTransactionSummary() { + return Joi.object({ + merchantOutstandingSummary: this.MerchantTransactions(), + }); + } + + static GetReconciliationFileResponse() { + return Joi.object({ + files: Joi.array().items(this.ReconFile()).required(), + }); + } + + static ReconFile() { + return Joi.object({ + base64: Joi.string().allow("").required(), + + name: Joi.string().allow("").required(), + }); + } + + static UploadReconciliationFileRequest() { + return Joi.object({ + base64File: Joi.string().allow("").required(), + + format: Joi.string().allow(""), + + lenderId: Joi.string().allow(""), + }); + } + + static UploadReconciliationFileResponse() { + return Joi.object({ + success: Joi.boolean(), + }); + } + + static TransactionCount() { + return Joi.object({ + totalTransactions: Joi.string().allow(""), + }); + } + + static RefundCount() { + return Joi.object({ + refundTransactions: Joi.string().allow(""), + }); + } + + static OrganizationTransactionsCount() { + return Joi.object({ + count: Joi.number(), + }); + } + + static OrganizationTransactionsSum() { + return Joi.object({ + sum: Joi.number(), + }); + } + + static UniqueCustomersInOrg() { + return Joi.object({ + count: Joi.number(), + }); + } + + static TransactionAmount() { + return Joi.object({ + totalTransactionAmount: Joi.string().allow(""), + }); + } + + static SchemaForOneDayTotal() { + return Joi.object({ + orgId: Joi.string().allow(""), + + createdAt: Joi.string().allow(""), + + count: Joi.number(), + + sum: Joi.string().allow(""), + + refund: Joi.string().allow(""), + + difference: Joi.string().allow(""), + }); + } + + static SumofOneDayTransactions() { + return Joi.object({ + dayTotal: Joi.array().items(this.SchemaForOneDayTotal()), + }); + } + + static AverageTransaction() { + return Joi.object({ + average: Joi.number(), + }); + } + + static AllTransactionsResponse() { + return Joi.object({ + id: Joi.string().allow(""), + + userId: Joi.string().allow(""), + + partnerId: Joi.string().allow(""), + + status: Joi.string().allow(""), + + type: Joi.string().allow(""), + + remark: Joi.string().allow(""), + + amount: Joi.number(), + + loanAccountNumber: Joi.string().allow(""), + + createdAt: Joi.string().allow(""), + }); + } + + static TotalRefund() { + return Joi.object({ + totalRefund: Joi.string().allow(""), + }); + } + + static TotalRepayment() { + return Joi.object({ + totalRepayment: Joi.string().allow(""), + }); + } + + static TotalOverDue() { + return Joi.object({ + totalDue: Joi.string().allow(""), + }); + } + + static TotalLoansDisbursed() { + return Joi.object({ + totalLoansDisbursed: Joi.string().allow(""), + }); + } + + static OrganizationTransactionResponse() { + return Joi.object({ + filters: Joi.array().items(this.TrFilters()).required(), + + page: this.TrPageResponse().required(), + + transactions: Joi.array().items(this.OrgTransactions()).required(), + }); + } + + static TrFilters() { + return Joi.object({ + key: this.TrFilterKeys(), + + values: Joi.array().items(this.TrFilterValues()), + }); + } + + static TrPageResponse() { + return Joi.object({ + type: Joi.string().allow("").required(), + + current: Joi.number().required(), + + hasPrevious: Joi.boolean().required(), + + hasNext: Joi.boolean().required(), + + size: Joi.number().required(), + + itemTotal: Joi.number().required(), + }); + } + + static OrgTransactions() { + return Joi.object({ + id: Joi.string().allow("").required(), + + userId: Joi.string().allow("").required(), + + userName: Joi.string().allow(""), + + partnerId: Joi.string().allow(""), + + partner: Joi.string().allow(""), + + partnerLogo: Joi.string().allow(""), + + status: Joi.string().allow("").required(), + + type: Joi.string().allow(""), + + remark: Joi.string().allow(""), + + amount: Joi.number().required(), + + orderId: Joi.string().allow(""), + + loanAccountNumber: Joi.string().allow(""), + + kfs: Joi.string().allow(""), + + sanctionLetter: Joi.string().allow(""), + + createdAt: Joi.string().allow("").required(), + }); + } + + static TrFilterKeys() { + return Joi.object({ + display: Joi.string().allow(""), + + name: Joi.string().allow(""), + + kind: Joi.string().allow(""), + }); + } + + static TrFilterValues() { + return Joi.object({ + display: Joi.string().allow(""), + + isSelected: Joi.boolean(), + + value: Joi.string().allow(""), + }); + } + + static KfsRequest() { + return Joi.object({ + loanTypeId: Joi.number(), + + chargeToken: Joi.string().allow(""), + }); + } + + static KfsResponse() { + return Joi.object({ + kfsTable: Joi.string().allow(""), + }); + } + + static LenderTransactionState() { + return Joi.object({ + id: Joi.string().allow(""), + + stepIndex: Joi.number(), + + lenderId: Joi.string().allow(""), + + workflowId: Joi.string().allow(""), + + workflowName: Joi.string().allow(""), + + parentStateId: Joi.string().allow(""), + + workflowUrl: Joi.string().allow(""), + + isInternal: Joi.boolean(), + + active: Joi.boolean(), + + ttl: Joi.number(), + + name: Joi.string().allow(""), + + type: Joi.string().allow(""), + + inputData: Joi.any(), + + createdAt: Joi.string().allow(""), + + updatedAt: Joi.string().allow(""), + + deletedAt: Joi.string().allow(""), + }); + } + + static TransactionStateResponse() { + return Joi.object({ + transactionState: Joi.array().items(this.LenderTransactionState()), + }); + } + + static Theme() { + return Joi.object({ + logoUrl: Joi.string().allow(""), + + iconUrl: Joi.string().allow(""), + + landscapeBgUrl: Joi.string().allow(""), + + portraitBgUrl: Joi.string().allow(""), + + shortName: Joi.string().allow(""), + }); + } + + static Emi() { + return Joi.object({ + id: Joi.string().allow(""), + + userId: Joi.string().allow(""), + + installmentno: Joi.number(), + + loanAccountNumber: Joi.string().allow(""), + + amount: Joi.number(), + + dueDate: Joi.string().allow(""), + + referenceTransactionId: Joi.string().allow(""), + + remark: Joi.string().allow(""), + + createdAt: Joi.string().allow(""), + + updatedAt: Joi.string().allow(""), + + entityId: Joi.string().allow(""), + + paid: Joi.boolean(), + + overdue: Joi.boolean(), + + repaymentDate: Joi.string().allow(""), + }); + } + + static MetricPivots() { + return Joi.object({ + date: Joi.string().allow(""), + + sum: Joi.number(), + }); + } + + static TransactionMetricSubResponse() { + return Joi.object({ + total: Joi.string().allow(""), + + pivots: Joi.array().items(this.MetricPivots()), + + title: Joi.string().allow(""), + + description: Joi.string().allow(""), + + valueFormat: Joi.string().allow(""), + + logo: Joi.string().allow(""), + }); + } + + static TransactionMetrics() { + return Joi.object({ + totalDisbursement: this.TransactionMetricSubResponse(), + + totalOverdue: this.TransactionMetricSubResponse(), + + totalRepayment: this.TransactionMetricSubResponse(), + }); + } + + static LenderCustomerTransactionMetricsFilters() { + return Joi.object({ + type: Joi.string().allow("").required(), + + display: Joi.string().allow("").required(), + + value: Joi.array().items(Joi.string().allow("")).required(), + + isSelected: Joi.boolean(), + + isActive: Joi.boolean().required(), + }); + } + + static LenderCustomerTransactionMetrics() { + return Joi.object({ + metrics: this.TransactionMetrics(), + + filters: Joi.array().items( + this.LenderCustomerTransactionMetricsFilters() + ), + + sort: Joi.array().items(this.LenderCustomerTransactionMetricsFilters()), + }); + } + + static LenderCustomerTransactionMetricsResponse() { + return Joi.object({ + data: Joi.any(), + }); + } + + static LenderCustomerTransactionMetricsRequest() { + return Joi.object({ + filters: Joi.array().items( + this.LenderCustomerTransactionMetricsFilters() + ), + + sort: Joi.array().items(this.LenderCustomerTransactionMetricsFilters()), + + startDate: Joi.string().allow(""), + + endDate: Joi.string().allow(""), + + merchantId: Joi.string().allow(""), + + lenderId: Joi.string().allow(""), + + pivotPoints: Joi.number(), + }); + } + + static LenderTheme() { + return Joi.object({ + logoUrl: Joi.string().allow("").required(), + + iconUrl: Joi.string().allow("").required(), + + landscapeBgUrl: Joi.string().allow("").required(), + + portraitBgUrl: Joi.string().allow("").required(), + + shortName: Joi.string().allow("").required(), + }); + } + + static Lender() { + return Joi.object({ + id: Joi.string().allow(""), + + name: Joi.string().allow(""), + + active: Joi.boolean(), + + imageUrl: Joi.string().allow(""), + + slug: Joi.string().allow(""), + + theme: this.LenderTheme(), + + b2b: Joi.boolean(), + + b2c: Joi.boolean(), + + merchantConfigSchema: Joi.string().allow(""), + + createdAt: Joi.string().allow(""), + + updatedAt: Joi.string().allow(""), + + approvedLimit: Joi.number(), + + deletedAt: Joi.string().allow(""), + + meta: Joi.any(), + + metaSchema: Joi.any(), + }); + } + + static UserLender() { + return Joi.object({ + id: Joi.string().allow("").required(), + + userId: Joi.string().allow("").required(), + + lenderId: Joi.string().allow("").required(), + + active: Joi.boolean(), + + status: Joi.string().allow("").required(), + + createdAt: Joi.string().allow("").required(), + + updatedAt: Joi.string().allow("").required(), + + deletedAt: Joi.string().allow(""), + + approvedLimit: Joi.number().required(), + + entityId: Joi.string().allow(""), + + entityMapId: Joi.string().allow(""), + }); + } + + static SourceCreditReport() { + return Joi.object({ + id: Joi.string().allow("").required(), + + userId: Joi.string().allow("").required(), + + pan: Joi.string().allow("").required(), + + name: Joi.string().allow("").required(), + + mobile: Joi.string().allow("").required(), + + bureau: Joi.string().allow("").required(), + + score: Joi.string().allow("").required(), + + report: Joi.string().allow("").required(), + + createdAt: Joi.string().allow(""), + }); + } + + static Document() { + return Joi.object({ + id: Joi.string().allow("").required(), + + userId: Joi.string().allow("").required(), + + imageUrl: Joi.string().allow("").required(), + + number: Joi.string().allow("").required(), + + detail: Joi.any().required(), + + valid: Joi.boolean().required(), + + createdAt: Joi.string().allow("").required(), + + updatedAt: Joi.string().allow("").required(), + + deletedAt: Joi.string().allow(""), + + entityId: Joi.string().allow(""), + }); + } + + static UserKycDetail() { + return Joi.object({ + id: Joi.string().allow("").required(), + + userId: Joi.string().allow("").required(), + + status: Joi.string().allow("").required(), + + type: Joi.string().allow("").required(), + + remark: Joi.string().allow("").required(), + + profileType: Joi.string().allow("").required(), + + active: Joi.boolean().required(), + + expiryDate: Joi.string().allow(""), + + createdAt: Joi.string().allow(""), + + updatedAt: Joi.string().allow(""), + + deletedAt: Joi.string().allow(""), + + lenderId: Joi.string().allow("").required(), + + lender: this.Lender(), + + entityMapId: Joi.string().allow(""), + + entityId: Joi.string().allow(""), + }); + } + + static Form() { + return Joi.object({ + id: Joi.string().allow(""), + + name: Joi.string().allow(""), + + title: Joi.string().allow(""), + + subtitle: Joi.string().allow(""), + + action: Joi.string().allow(""), + + form: Joi.any(), + + uiSchema: Joi.any(), + + workflowId: Joi.string().allow(""), + }); + } + + static LenderKycStepMap() { + return Joi.object({ + id: Joi.string().allow(""), + + step: Joi.string().allow("").required(), + + stepIndex: Joi.number().required(), + + lenderId: Joi.string().allow("").required(), + + active: Joi.boolean().required(), + + rules: Joi.any().required(), + + profileType: Joi.string().allow("").required(), + + createdAt: Joi.string().allow(""), + + updatedAt: Joi.string().allow(""), + + deletedAt: Joi.string().allow(""), + + name: Joi.string().allow("").required(), + + description: Joi.string().allow("").required(), + + iconUrl: Joi.string().allow("").required(), + + isInteractive: Joi.boolean().required(), + + formId: Joi.string().allow(""), + + merchantId: Joi.string().allow(""), + + form: this.Form().required(), + + docSchema: Joi.any().required(), + }); + } + + static UserKycLenderStepMap() { + return Joi.object({ + id: Joi.string().allow("").required(), + + userId: Joi.string().allow("").required(), + + lenderKycStepMapId: Joi.string().allow("").required(), + + userKycDetailId: Joi.string().allow("").required(), + + lenderId: Joi.string().allow("").required(), + + ruleState: Joi.any().required(), + + active: Joi.boolean().required(), + + status: Joi.string().allow("").required(), + + documentId: Joi.string().allow(""), + + createdAt: Joi.string().allow("").required(), + + updatedAt: Joi.string().allow("").required(), + + deletedAt: Joi.string().allow(""), + + lenderKycStepMap: this.LenderKycStepMap(), + + entityMapId: Joi.string().allow(""), + + entityId: Joi.string().allow(""), + + updatedBy: Joi.string().allow(""), + }); + } + + static ProofOfIdentity() { + return Joi.object({ + dob: Joi.string().allow("").required(), + + hashedEmail: Joi.string().allow("").required(), + + gender: Joi.string().allow("").required(), + + hashedMobileNumber: Joi.string().allow("").required(), + + name: Joi.string().allow("").required(), + }); + } + + static ProofOfAddress() { + return Joi.object({ + careOf: Joi.string().allow("").required(), + + country: Joi.string().allow("").required(), + + district: Joi.string().allow("").required(), + + house: Joi.string().allow("").required(), + + landmark: Joi.string().allow("").required(), + + locality: Joi.string().allow("").required(), + + pincode: Joi.string().allow("").required(), + + postOffice: Joi.string().allow("").required(), + + state: Joi.string().allow("").required(), + + street: Joi.string().allow("").required(), + + subDistrict: Joi.string().allow("").required(), + + vtc: Joi.string().allow("").required(), + }); + } + + static EAadhaarData() { + return Joi.object({ + aadhaarReferenceNumber: Joi.string().allow("").required(), + + aadhaarUid: Joi.string().allow("").required(), + + image: Joi.string().allow("").required(), + + proofOfIdentity: this.ProofOfIdentity().required(), + + proofOfAddress: this.ProofOfAddress().required(), + + xml: Joi.string().allow(""), + + pdf: Joi.string().allow(""), + + address: Joi.string().allow(""), + }); + } + + static Consent() { + return Joi.object({ + text: Joi.string().allow("").required(), + + type: Joi.string().allow("").required(), + }); + } + + static ValidatePanRequest() { + return Joi.object({ + pan: Joi.string().allow("").required(), + + consents: Joi.array().items(this.Consent()).required(), + }); + } + + static BankDetails() { + return Joi.object({ + accountType: Joi.string().allow("").required(), + + bankName: Joi.string().allow("").required(), + + ifsc: Joi.string().allow("").required(), + + accountNumber: Joi.string().allow("").required(), + + accountHolderName: Joi.string().allow("").required(), + }); + } + + static DocumentData() { + return Joi.object({ + selfie: Joi.string().allow(""), + + video: Joi.string().allow(""), + + digilockerCode: Joi.string().allow(""), + + bankDetails: this.BankDetails(), + }); + } + + static ConfirmPanRequest() { + return Joi.object({ + pan: Joi.string().allow("").required(), + + name: Joi.string().allow("").required(), + + entity: Joi.string().allow(""), + + merchantId: Joi.string().allow(""), + }); + } + + static LivelinessDetails() { + return Joi.object({ + selfie: Joi.string().allow("").required(), + + video: Joi.string().allow("").required(), + }); + } + + static UploadDocumentRequest() { + return Joi.object({ + user: Joi.any(), + + documentData: Joi.any(), + + lenderSlug: Joi.string().allow("").required(), + + kycStep: Joi.string().allow("").required(), + + merchantId: Joi.string().allow(""), + + entityMapId: Joi.string().allow(""), + }); + } + + static UploadDocumentRequestV1() { + return Joi.object({ + kycStep: Joi.string().allow("").required(), + + entityMapId: Joi.string().allow("").required(), + + documentData: Joi.any().required(), + }); + } + + static UploadDocumentRequestV3() { + return Joi.object({ + kycStep: Joi.string().allow("").required(), + + entityMapId: Joi.string().allow("").required(), + + documentData: Joi.any().required(), + }); + } + + static AadhaarRequest() { + return Joi.object({ + digilockerCode: Joi.string().allow(""), + }); + } + + static UploadAadhaarRequest() { + return Joi.object({ + documentData: this.AadhaarRequest(), + + user: Joi.any(), + + lenderSlug: Joi.string().allow("").required(), + + kycStep: Joi.string().allow("").required(), + + merchantId: Joi.string().allow(""), + + entityMapId: Joi.string().allow(""), + }); + } + + static UploadLivelinessRequest() { + return Joi.object({ + documentData: this.LivelinessDetails(), + + user: Joi.any(), + + lenderSlug: Joi.string().allow("").required(), + + kycStep: Joi.string().allow("").required(), + + merchantId: Joi.string().allow(""), + + entityMapId: Joi.string().allow(""), + }); + } + + static UploadAadhaarRequestV1() { + return Joi.object({ + documentData: this.AadhaarRequest().required(), + + kycStep: Joi.string().allow("").required(), + + entityMapId: Joi.string().allow("").required(), + }); + } + + static UploadLivelinessRequestV1() { + return Joi.object({ + documentData: this.LivelinessDetails().required(), + + kycStep: Joi.string().allow("").required(), + + entityMapId: Joi.string().allow("").required(), + }); + } + + static UploadAadhaarRequestV2() { + return Joi.object({ + documentData: this.AadhaarRequest(), + + user: Joi.any(), + + lenderSlug: Joi.string().allow("").required(), + + kycStep: Joi.string().allow("").required(), + + merchantId: Joi.string().allow(""), + + entityMapId: Joi.string().allow(""), + }); + } + + static UploadLivelinessRequestV2() { + return Joi.object({ + documentData: this.LivelinessDetails(), + + user: Joi.any(), + + lenderSlug: Joi.string().allow("").required(), + + kycStep: Joi.string().allow("").required(), + + merchantId: Joi.string().allow(""), + + entityMapId: Joi.string().allow(""), + }); + } + + static UploadAadhaarRequestV3() { + return Joi.object({ + documentData: this.AadhaarRequest().required(), + + kycStep: Joi.string().allow("").required(), + + entityMapId: Joi.string().allow("").required(), + }); + } + + static UploadLivelinessRequestV3() { + return Joi.object({ + documentData: this.LivelinessDetails().required(), + + kycStep: Joi.string().allow("").required(), + + entityMapId: Joi.string().allow("").required(), + }); + } + + static UploadBankDetailsRequest() { + return Joi.object({ + documentData: this.BankDetails(), + + user: Joi.any(), + + lenderSlug: Joi.string().allow("").required(), + + kycStep: Joi.string().allow("").required(), + + merchantId: Joi.string().allow(""), + + entityMapId: Joi.string().allow(""), + }); + } + + static InitiateKycRequest() { + return Joi.object({ + kycType: Joi.string().allow("").required(), + + kycId: Joi.string().allow(""), + + merchantId: Joi.string().allow(""), + }); + } + + static InitiateKycRequestV1() { + return Joi.object({ + entityMapId: Joi.string().allow("").required(), + + kycType: Joi.string().allow("").required(), + + kycId: Joi.string().allow(""), + + merchantId: Joi.string().allow(""), + }); + } + + static LenderOnboardRequest() { + return Joi.object({ + ack: Joi.string().allow(""), + + data: Joi.any().required(), + + entityMapId: Joi.string().allow(""), + + merchantId: Joi.string().allow(""), + }); + } + + static UpdateLenderStatusRequest() { + return Joi.object({ + status: Joi.string().allow("").required(), + + payload: Joi.any().required(), + + data: Joi.any().required(), + + action: Joi.boolean().required(), + }); + } + + static UpdateProfileRequest() { + return Joi.object({ + firstName: Joi.string().allow(""), + + lastName: Joi.string().allow(""), + + gender: Joi.string().allow(""), + + dob: Joi.string().allow(""), + + userId: Joi.string().allow("").required(), + + isOnboarded: Joi.boolean(), + + address: Joi.string().allow(""), + }); + } + + static UpdateEntityRequest() { + return Joi.object({ + name: Joi.string().allow(""), + + gender: Joi.string().allow(""), + + dob: Joi.string().allow(""), + + isDefault: Joi.boolean(), + + address: this.ProofOfAddress(), + }); + } + + static CreateKycStepsRequest() { + return Joi.object({ + data: Joi.any().required(), + }); + } + + static CreateLenderPgConfigRequest() { + return Joi.object({ + mid: Joi.string().allow("").required(), + + clientId: Joi.string().allow("").required(), + + secret: Joi.string().allow("").required(), + + active: Joi.boolean().required(), + + pgId: Joi.string().allow("").required(), + + lenderId: Joi.string().allow("").required(), + }); + } + + static CreateLenderStateRequest() { + return Joi.object({ + data: Joi.any().required(), + }); + } + + static UpdateLenderRequest() { + return Joi.object({ + data: Joi.any().required(), + + lenderId: Joi.string().allow("").required(), + }); + } + + static OtherPolicyFilters() { + return Joi.object({ + orderBy: Joi.array().items(Joi.any()), + }); + } + + static GetPolicyFilters() { + return Joi.object({ + policyType: Joi.string().allow(""), + + lenderIds: Joi.array().items(Joi.any()), + + merchantIds: Joi.array().items(Joi.any()), + + orderBy: Joi.array().items(Joi.any()), + }); + } + + static GetPolicyFilters2() { + return Joi.object({ + breType: Joi.string().allow(""), + + lenderId: Joi.array().items(Joi.any()), + + merchantId: Joi.array().items(Joi.any()), + + loanType: Joi.string().allow(""), + + journeyType: Joi.string().allow(""), + + subType: Joi.string().allow(""), + }); + } + + static MerchantConfigRequest() { + return Joi.object({ + id: Joi.string().allow("").required(), + + merchantConfigSchema: Joi.any().required(), + }); + } + + static PanDetails() { + return Joi.object({ + name: Joi.string().allow("").required(), + + idNumber: Joi.string().allow("").required(), + }); + } + + static AvailableLendersRequest() { + return Joi.object({ + chargeToken: Joi.string().allow("").required(), + }); + } + + static InitialData() { + return Joi.object({ + userId: Joi.string().allow("").required(), + + entityId: Joi.string().allow("").required(), + }); + } + + static ExecutePolicyRequest() { + return Joi.object({ + policyFilters: this.GetPolicyFilters(), + + initialData: this.InitialData().required(), + }); + } + + static ExecutePolicyRequest2() { + return Joi.object({ + policyFilters: this.GetPolicyFilters2(), + + initialData: this.InitialData().required(), + }); + } + + static RegisterGstRequest() { + return Joi.object({ + gstTin: Joi.string().allow("").required(), + }); + } + + static PopulateFormRequest() { + return Joi.object({ + form: Joi.any().required(), + + lenderId: Joi.string().allow(""), + + merchantId: Joi.string().allow(""), + }); + } + + static ValidateFormFieldRequest() { + return Joi.object({ + workflowName: Joi.string().allow("").required(), + + userId: Joi.string().allow(""), + + entityId: Joi.string().allow(""), + + entityMapId: Joi.string().allow(""), + + lenderId: Joi.string().allow(""), + + merchantId: Joi.string().allow(""), + + fields: Joi.any().required(), + }); + } + + static MerchantMetricFilter() { + return Joi.object({ + type: Joi.string().allow("").required(), + + display: Joi.string().allow("").required(), + + value: Joi.array().items(Joi.any()).required(), + + isSelected: Joi.boolean(), + + isActive: Joi.boolean(), + }); + } + + static LenderCustomerMetricsRequest() { + return Joi.object({ + sort: Joi.array().items(this.MerchantMetricFilter()), + + filters: Joi.array().items(this.MerchantMetricFilter()), + + merchantId: Joi.string().allow(""), + + lenderId: Joi.string().allow(""), + + pivotPoints: Joi.number(), + }); + } + + static StonewallCustomer() { + return Joi.object({ + mobile: Joi.string().allow(""), + + uid: Joi.string().allow(""), + }); + } + + static GetLimitRequest() { + return Joi.object({ + lenderSlugs: Joi.array().items(Joi.any()), + + onlyDefaultLender: Joi.boolean(), + + customer: this.StonewallCustomer().required(), + }); + } + + static DocumentObject() { + return Joi.object({ + id: Joi.string().allow(""), + + userId: Joi.string().allow(""), + + name: Joi.string().allow(""), + + imageUrl: Joi.string().allow(""), + + number: Joi.string().allow("").required(), + + detail: Joi.any().required(), + + valid: Joi.boolean(), + + entityId: Joi.string().allow(""), + }); + } + + static ManualKycRequest() { + return Joi.object({ + remark: Joi.any().required(), + + status: Joi.string().allow("").required(), + + stepId: Joi.string().allow("").required(), + + entityMapId: Joi.string().allow("").required(), + + documentData: this.DocumentObject(), + }); + } + + static RetriggerLenderOnboardRequest() { + return Joi.object({ + stepId: Joi.string().allow("").required(), + + data: Joi.any().required(), + }); + } + + static EntityMapDto() { + return Joi.object({ + id: Joi.string().allow("").required(), + + merchantId: Joi.string().allow(""), + + status: Joi.string().allow(""), + + lenderId: Joi.string().allow("").required(), + + limit: Joi.number(), + + creditType: Joi.string().allow(""), + + userId: Joi.string().allow("").required(), + + entityId: Joi.string().allow("").required(), + }); + } + + static EntityDto() { + return Joi.object({ + id: Joi.string().allow("").required(), + + type: Joi.string().allow(""), + + address: Joi.string().allow(""), + + name: Joi.string().allow(""), + + gender: Joi.string().allow(""), + + dob: Joi.string().allow(""), + + userId: Joi.string().allow("").required(), + }); + } + + static FindDocResponse() { + return Joi.object({ + status: Joi.string().allow("").required(), + + info: Joi.string().allow("").required(), + + number: Joi.string().allow("").required(), + + details: Joi.any(), + + name: Joi.string().allow(""), + }); + } + + static LenderKycStatus() { + return Joi.object({ + status: Joi.string().allow("").required(), + + lenderId: Joi.string().allow(""), + + lenderName: Joi.string().allow(""), + + kycType: Joi.string().allow(""), + }); + } + + static StateResponeDto() { + return Joi.object({ + step: this.UserKycLenderStepMap().required(), + + isStepCompleted: Joi.boolean().required(), + }); + } + + static KycStateMachineDto() { + return Joi.object({ + kycResult: this.UserKycDetail().required(), + + action: this.UserKycLenderStepMap(), + }); + } + + static InitiateKycDto() { + return Joi.object({ + kycType: Joi.string().allow("").required(), + + lenderId: Joi.string().allow("").required(), + + user: Joi.any().required(), + + kycId: Joi.string().allow(""), + + entityRelation: this.EntityMapDto(), + }); + } + + static LenderOnboardDto() { + return Joi.object({ + lender: this.Lender(), + + user: Joi.any().required(), + + userLenderDetail: this.UserLender(), + + payload: this.LenderOnboardRequest().required(), + + entityRelation: this.EntityMapDto(), + + ipAddress: Joi.string().allow("").required(), + + overrideTtl: Joi.boolean(), + }); + } + + static StepDetails() { + return Joi.object({ + name: Joi.string().allow(""), + + description: Joi.string().allow(""), + + iconUrl: Joi.string().allow(""), + + status: Joi.string().allow("").required(), + + step: Joi.string().allow("").required(), + + order: Joi.number().required(), + }); + } + + static OnboardStatusDto() { + return Joi.object({ + onboardStep: Joi.string().allow("").required(), + + onboardingId: Joi.string().allow("").required(), + + status: Joi.string().allow("").required(), + + action: Joi.string().allow("").required(), + + actionStatus: Joi.string().allow("").required(), + + lender: this.Lender().required(), + + navigation: Joi.string().allow(""), + + approvedLimit: Joi.number().required(), + + proposedLimit: Joi.number().required(), + + actionData: Joi.any(), + + steps: Joi.array().items(this.StepDetails()), + + entityId: Joi.string().allow("").required(), + + entityMapId: Joi.string().allow("").required(), + + actionIsForm: Joi.boolean().required(), + + actionForm: this.Form(), + }); + } + + static LenderFilters() { + return Joi.object({ + includeStatus: Joi.array().items(Joi.any()), + + excludeStatus: Joi.array().items(Joi.any()), + + allowDisabledLender: Joi.any(), + }); + } + + static Policy() { + return Joi.object({ + id: Joi.string().allow(""), + + name: Joi.string().allow(""), + + url: Joi.string().allow(""), + + data: Joi.any(), + + version: Joi.string().allow(""), + + active: Joi.boolean(), + + type: Joi.any(), + + index: Joi.number(), + + lenderId: Joi.string().allow(""), + + merchantId: Joi.string().allow(""), + + workflowId: Joi.string().allow(""), + + schemaRef: Joi.array().items(Joi.any()), + + masterVariableRef: Joi.array().items(Joi.any()), + + customVariable: Joi.any(), + + subType: Joi.string().allow(""), + + createdAt: Joi.any(), + + updatedAt: Joi.any(), + + deletedAt: Joi.any(), + }); + } + + static GetKycDocsResponse() { + return Joi.object({ + documents: Joi.array().items(this.FindDocResponse()).required(), + }); + } + + static OrganizationLogosObject() { + return Joi.object({ + id: Joi.string().allow("").required(), + + name: Joi.string().allow("").required(), + + logo: Joi.string().allow("").required(), + + active: Joi.boolean().required(), + }); + } + + static MetricSubTypes() { + return Joi.object({ + date: Joi.string().allow("").required(), + + count: Joi.string().allow(""), + + sum: Joi.string().allow(""), + }); + } + + static MetricTypes() { + return Joi.object({ + pivots: Joi.array().items(this.MetricSubTypes()).required(), + + total: Joi.string().allow(""), + + description: Joi.string().allow("").required(), + + title: Joi.string().allow("").required(), + + valueFormat: Joi.string().allow("").required(), + + logo: Joi.string().allow("").required(), + }); + } + + static BreApprovedUsersResponse() { + return Joi.object({ + data: this.MetricTypes().required(), + }); + } + + static Metrics() { + return Joi.object({ + lenderApprovedUsers: this.MetricTypes().required(), + + breApprovedUsers: this.MetricTypes().required(), + + totalCreditLine: this.MetricTypes().required(), + }); + } + + static MetricData() { + return Joi.object({ + metrics: this.Metrics().required(), + + filters: Joi.array().items(this.MerchantMetricFilter()).required(), + + sort: Joi.array().items(this.MerchantMetricFilter()).required(), + }); + } + + static ApprovedLenders() { + return Joi.object({ + status: Joi.string().allow("").required(), + + lenders: Joi.array().items(this.BreOutput()).required(), + }); + } + + static BreResultStatus() { + return Joi.object({ + status: Joi.string().allow("").required(), + + approvedLenders: Joi.array().items(this.BreOutput()), + }); + } + + static GetAllUserLendersByEnityId() { + return Joi.object({ + entityId: Joi.string().allow("").required(), + + entityMapId: Joi.string().allow("").required(), + + userId: Joi.string().allow("").required(), + + status: Joi.string().allow("").required(), + + lender: this.Lender().required(), + + partnerId: Joi.string().allow(""), + }); + } + + static LenderState() { + return Joi.object({ + id: Joi.string().allow(""), + + name: Joi.string().allow("").required(), + + lenderId: Joi.string().allow("").required(), + + index: Joi.number().required(), + + workflowName: Joi.string().allow("").required(), + + workflowUrl: Joi.string().allow(""), + + active: Joi.boolean().required(), + + createdAt: Joi.string().allow(""), + + updatedAt: Joi.string().allow(""), + + deletedAt: Joi.string().allow(""), + + lender: this.Lender(), + + parentStateId: Joi.string().allow(""), + + ttl: Joi.number().required(), + + displayName: Joi.string().allow(""), + + description: Joi.string().allow(""), + + iconUrl: Joi.string().allow(""), + + isInteractive: Joi.boolean().required(), + + schema: Joi.any(), + }); + } + + static UserLenderState() { + return Joi.object({ + id: Joi.string().allow("").required(), + + lenderStateId: Joi.string().allow("").required(), + + lenderId: Joi.string().allow("").required(), + + userId: Joi.string().allow("").required(), + + status: Joi.string().allow("").required(), + + userLenderId: Joi.string().allow("").required(), + + remark: Joi.string().allow("").required(), + + active: Joi.boolean().required(), + + lenderState: this.LenderState(), + + data: Joi.any(), + + createdAt: Joi.string().allow(""), + + updatedAt: Joi.string().allow(""), + + deletedAt: Joi.string().allow(""), + + entityId: Joi.string().allow(""), + + entityMapId: Joi.string().allow(""), + + updatedBy: Joi.string().allow(""), + }); + } + + static LenderConfig() { + return Joi.object({ + id: Joi.string().allow(""), + + baseUrl: Joi.string().allow("").required(), + + accessToken: Joi.string().allow(""), + + secret: Joi.string().allow(""), + + data: Joi.any().required(), + + lenderId: Joi.string().allow("").required(), + + active: Joi.boolean(), + + createdAt: Joi.string().allow(""), + + updatedAt: Joi.string().allow(""), + + deletedAt: Joi.string().allow(""), + }); + } + + static Pg() { + return Joi.object({ + id: Joi.string().allow("").required(), + + name: Joi.string().allow("").required(), + + active: Joi.boolean().required(), + }); + } + + static LenderPgConfig() { + return Joi.object({ + id: Joi.string().allow(""), + + mid: Joi.string().allow("").required(), + + clientId: Joi.string().allow("").required(), + + secret: Joi.string().allow("").required(), + + lenderId: Joi.string().allow("").required(), + + pgId: Joi.string().allow("").required(), + + active: Joi.boolean().required(), + }); + } + + static FileUploadResponse() { + return Joi.object({ + fileId: Joi.string().allow("").required(), + + name: Joi.string().allow("").required(), + + path: Joi.string().allow("").required(), + + format: Joi.string().allow("").required(), + + size: Joi.number().required(), + + access: Joi.string().allow("").required(), + + tags: Joi.string().allow("").required(), + + metadata: Joi.string().allow("").required(), + + url: Joi.string().allow("").required(), + + thumbnail: Joi.string().allow("").required(), + }); + } + + static PresignedUrl() { + return Joi.object({ + url: Joi.string().allow("").required(), + + fields: Joi.any().required(), + }); + } + + static PresignedUrlV2() { + return Joi.object({ + url: Joi.string().allow("").required(), + + fields: Joi.any().required(), + }); + } + + static LenderDocument() { + return Joi.object({ + id: Joi.string().allow(""), + + lenderId: Joi.string().allow(""), + + type: Joi.string().allow(""), + + document: Joi.any(), + + active: Joi.boolean(), + + createdAt: Joi.string().allow(""), + + updatedAt: Joi.string().allow(""), + + deletedAt: Joi.string().allow(""), + }); + } + + static KycStatusResponse() { + return Joi.object({ + isKycInitiated: Joi.boolean().required(), + + userId: Joi.string().allow("").required(), + + kycStatuses: Joi.array().items(this.LenderKycStatus()).required(), + }); + } + + static WorkflowResponse() { + return Joi.object({ + data: Joi.any(), + }); + } + + static InitiateKycResponse() { + return Joi.object({ + kycResult: this.UserKycDetail().required(), + + action: this.Action().required(), + }); + } + + static UploadDocResponse() { + return Joi.object({ + status: Joi.string().allow("").required(), + + data: Joi.any(), + + remark: Joi.string().allow(""), + + kycResult: this.UserKycDetail().required(), + + action: this.Action().required(), + }); + } + + static LenderOnboardResponse() { + return Joi.object({ + result: this.UserLender().required(), + + action: this.UserLenderState().required(), + + data: Joi.any().required(), + }); + } + + static OnboardingStatusResponse() { + return Joi.object({ + onboardStatuses: Joi.array().items(this.OnboardStatusDto()).required(), + }); + } + + static SignedUrlResponse() { + return Joi.object({ + signedUrl: this.PresignedUrl().required(), + + fileUrl: Joi.string().allow("").required(), + }); + } + + static SignedUrlV2Response() { + return Joi.object({ + signedUrl: this.PresignedUrlV2().required(), + + fileUrl: Joi.string().allow("").required(), + }); + } + + static PresignedUrlV3() { + return Joi.object({ + signedUrl: Joi.string().allow("").required(), + + provider: Joi.any().required(), + }); + } + + static SignedUrlV3Response() { + return Joi.object({ + signedDetails: this.PresignedUrlV3().required(), + + fileUrl: Joi.string().allow("").required(), + }); + } + + static DigilockerLinkResponse() { + return Joi.object({ + authorizationUrl: Joi.string().allow("").required(), + }); + } + + static GetDocumentsResponse() { + return Joi.object({ + documents: Joi.array().items(this.FindDocResponse()).required(), + }); + } + + static ApprovedLendersTransaction() { + return Joi.object({ + name: Joi.string().allow("").required(), + + slug: Joi.string().allow("").required(), + + imageUrl: Joi.string().allow("").required(), + + status: Joi.string().allow("").required(), + + active: Joi.boolean().required(), + + proposedLimit: Joi.number().required(), + + createdAt: Joi.any().required(), + + updatedAt: Joi.any().required(), + + deletedAt: Joi.any(), + + isDefault: Joi.boolean(), + + __headers: Joi.any(), + }); + } + + static ApprovedPossibleLenders() { + return Joi.object({ + limit: Joi.number().required(), + + name: Joi.string().allow("").required(), + + slug: Joi.string().allow("").required(), + + active: Joi.boolean().required(), + + id: Joi.string().allow("").required(), + + theme: this.LenderTheme(), + }); + } + + static AvailableLenders() { + return Joi.object({ + approvedLenders: Joi.array() + .items(this.ApprovedPossibleLenders()) + .required(), + + possibleLenders: Joi.array() + .items(this.ApprovedPossibleLenders()) + .required(), + }); + } + + static CreditLimit() { + return Joi.object({ + availableLimit: Joi.number().required(), + + approvedLimit: Joi.number().required(), + }); + } + + static CreditLimitResponse() { + return Joi.object({ + status: Joi.string().allow("").required(), + + message: Joi.string().allow("").required(), + + action: Joi.boolean().required(), + + credit: this.CreditLimit().required(), + }); + } + + static LenderPgConfigResponse() { + return Joi.object({ + id: Joi.string().allow("").required(), + + mid: Joi.string().allow("").required(), + + clientId: Joi.string().allow("").required(), + + secret: Joi.string().allow("").required(), + + lenderId: Joi.string().allow("").required(), + + pgId: Joi.string().allow("").required(), + + active: Joi.boolean().required(), + + pgName: Joi.string().allow("").required(), + + pgActive: Joi.boolean().required(), + }); + } + + static GetLendersResponse() { + return Joi.object({ + data: Joi.array().items(this.Lender()).required(), + }); + } + + static LenderConfigurationResponse() { + return Joi.object({ + lender: this.Lender().required(), + + lenderPgConfig: this.LenderPgConfig().required(), + + lenderConfig: this.LenderConfig().required(), + + lenderState: Joi.array().items(this.LenderState()).required(), + + lenderKycStepMap: Joi.array().items(this.LenderKycStepMap()).required(), + }); + } + + static UpsertLenderResponse() { + return Joi.object({ + data: Joi.any().required(), + }); + } + + static UpsertLenderConfigResponse() { + return Joi.object({ + data: Joi.any().required(), + }); + } + + static CreateKycStepsSchema() { + return Joi.object({ + data: Joi.array().items(this.LenderKycStepMap()).required(), + }); + } + + static CreatePaymentGatewaySchema() { + return Joi.object({ + data: Joi.array().items(this.LenderPgConfig()).required(), + }); + } + + static CreateLenderStateSchema() { + return Joi.object({ + data: Joi.array().items(this.LenderState()).required(), + }); + } + + static GetAllPaymentGatewaysSchema() { + return Joi.object({ + data: Joi.array().items(this.Pg()).required(), + }); + } + + static PolicyResponse() { + return Joi.object({ + policies: Joi.array().items(this.Policy()).required(), + }); + } + + static CreditCheckBreResponse() { + return Joi.object({ + newLenderAssigned: Joi.boolean().required(), + + breStatus: Joi.string().allow("").required(), + }); + } + + static MerchantConfigResponse() { + return Joi.object({ + id: Joi.string().allow("").required(), + + merhantConfigSchema: Joi.string().allow("").required(), + }); + } + + static UserLenderByIdAndStatusResponse() { + return Joi.object({ + id: Joi.string().allow("").required(), + + userId: Joi.string().allow("").required(), + + lenderId: Joi.string().allow("").required(), + + active: Joi.boolean(), + + status: Joi.string().allow("").required(), + + createdAt: Joi.string().allow("").required(), + + updatedAt: Joi.string().allow("").required(), + + deletedAt: Joi.string().allow(""), + + approvedLimit: Joi.number().required(), + + slug: Joi.string().allow(""), + + theme: this.LenderTheme(), + + name: Joi.any(), + }); + } + + static IntgrAvailableCreditLimit() { + return Joi.object({ + limit: Joi.number().required(), + + lenderName: Joi.string().allow("").required(), + + slug: Joi.string().allow("").required(), + + isDefault: Joi.boolean().required(), + + logoUrl: Joi.string().allow("").required(), + }); + } + + static IngtrAvailableLimit() { + return Joi.object({ + available: Joi.array().items(this.IntgrAvailableCreditLimit()).required(), + }); + } + + static IntgrCreditLimit() { + return Joi.object({ + limit: this.IngtrAvailableLimit().required(), + + __headers: Joi.any(), + }); + } + + static PossibleLendersInternal() { + return Joi.object({ + limit: Joi.boolean().required(), + + lenderName: Joi.string().allow("").required(), + + slug: Joi.string().allow("").required(), + + isDefault: Joi.boolean().required(), + + logo: Joi.string().allow("").required(), + + lenderId: Joi.string().allow("").required(), + }); + } + + static PossibleLendersInternalResponse() { + return Joi.object({ + lenders: Joi.array().items(this.PossibleLendersInternal()).required(), + }); + } + + static GetTotalKycResponse() { + return Joi.object({ + totalKyc: Joi.string().allow("").required(), + }); + } + + static GetTotalKycCompletedUsersResponse() { + return Joi.object({ + totalKycCompletedUsers: Joi.string().allow("").required(), + }); + } + + static GetTotalPendingUsersResponse() { + return Joi.object({ + totalPendingKyc: Joi.string().allow("").required(), + }); + } + + static GetTotalCreditProvidedResponse() { + return Joi.object({ + totalCreditLimit: Joi.string().allow("").required(), + }); + } + + static MetaSchemaResponse() { + return Joi.object({ + title: Joi.string().allow("").required(), + + name: Joi.string().allow("").required(), + + required: Joi.array().items(Joi.string().allow("")).required(), + + type: Joi.string().allow("").required(), + + properties: Joi.any().required(), + }); + } + + static MetaSchema() { + return Joi.object({ + metaSchema: this.MetaSchemaResponse().required(), + }); + } + + static AddMetaSchema() { + return Joi.object({ + lenderSlug: Joi.string().allow("").required(), + + merchantId: Joi.string().allow("").required(), + + schema: Joi.any().required(), + }); + } + + static AddMetaSchemaRequest() { + return Joi.object({ + merchantId: Joi.string().allow("").required(), + + schema: Joi.any().required(), + }); + } + + static ValidatePanResponse() { + return Joi.object({ + panName: Joi.string().allow("").required(), + + isPanValid: Joi.string().allow("").required(), + + pan: Joi.string().allow("").required(), + + isProprietor: Joi.boolean().required(), + + panType: Joi.string().allow("").required(), + + errorCode: Joi.string().allow(""), + + status: Joi.string().allow(""), + + errorMessage: Joi.string().allow(""), + }); + } + + static ConfirmPanResonse() { + return Joi.object({ + status: Joi.string().allow("").required(), + + statusCode: Joi.string().allow("").required(), + + message: Joi.string().allow("").required(), + }); + } + + static LenderCountResponse() { + return Joi.object({ + active: Joi.number().required(), + + inActive: Joi.number().required(), + }); + } + + static OnboardStepsDto() { + return Joi.object({ + steps: Joi.array().items(this.StepDetails()).required(), + + lender: this.Lender().required(), + }); + } + + static OnboardStepsResponse() { + return Joi.object({ + stepDetails: Joi.array().items(this.OnboardStepsDto()).required(), + }); + } + + static LenderDocumentResponse() { + return Joi.object({ + data: this.LenderDocument().required(), + }); + } + + static GetUserLendersResponse() { + return Joi.object({ + data: Joi.array().items(this.UserLender()).required(), + }); + } + + static CreditReportResponse() { + return Joi.object({ + data: this.SourceCreditReport().required(), + }); + } + + static KycDetailsReponse() { + return Joi.object({ + data: this.UserKycLenderStepMap().required(), + }); + } + + static GetDocumentByIdResponse() { + return Joi.object({ + data: this.Document().required(), + }); + } + + static GetAllFormsResponse() { + return Joi.object({ + data: Joi.any().required(), + }); + } + + static UpsertFormResponse() { + return Joi.object({ + data: Joi.any().required(), + }); + } + + static GstDetails() { + return Joi.object({ + gstTin: Joi.string().allow("").required(), + + businessName: Joi.string().allow("").required(), + }); + } + + static GstDetailsResponse() { + return Joi.object({ + gstDetails: Joi.array().items(this.GstDetails()).required(), + }); + } + + static RegisterGstResponse() { + return Joi.object({ + gstDocDetails: this.Document().required(), + + status: Joi.string().allow("").required(), + }); + } + + static PopulateFormResponse() { + return Joi.object({ + form: Joi.any().required(), + }); + } + + static ValidateFormFieldResponse() { + return Joi.object({ + status: Joi.string().allow("").required(), + + message: Joi.string().allow("").required(), + + data: Joi.any().required(), + }); + } + + static LenderCustomerMetricsResponse() { + return Joi.object({ + status: Joi.string().allow("").required(), + + message: Joi.string().allow("").required(), + + data: this.MetricData().required(), + }); + } + + static ManualKycResponse() { + return Joi.object({ + message: Joi.string().allow("").required(), + + step: this.UserKycLenderStepMap().required(), + }); + } + + static BreOutput() { + return Joi.object({ + id: Joi.string().allow("").required(), + + userId: Joi.string().allow("").required(), + + entityId: Joi.string().allow("").required(), + + lenderId: Joi.string().allow(""), + + merchantId: Joi.string().allow(""), + + policyName: Joi.string().allow("").required(), + + category: Joi.string().allow("").required(), + + type: Joi.string().allow("").required(), + + output: Joi.any().required(), + + status: Joi.string().allow("").required(), + + createdAt: Joi.string().allow("").required(), + + updatedAt: Joi.string().allow("").required(), + + deletedAt: Joi.string().allow("").required(), + }); + } + + static CustomerKycDetailsReponse() { + return Joi.object({ + data: this.UserKycLenderStepMap().required(), + }); + } +} + +class CustomerValidator { + static verify() { + return Joi.object({ + disbursalRequest: Validator.VerifyCustomer().required(), + }).required(); + } + + static resendPaymentRequest() { + return Joi.object({ + disbursalRequest: Validator.ResendPaymentRequest().required(), + }).required(); + } + + static createOrder() { + return Joi.object({ + disbursalRequest: Validator.CreateTransaction().required(), + }).required(); + } + + static link() { + return Joi.object({ + disbursalRequest: Validator.LinkAccount().required(), + }).required(); + } + + static unlink() { + return Joi.object({ + disbursalRequest: Validator.UnlinkAccount().required(), + }).required(); + } + + static getAccessToken() { + return Joi.object({}).required(); + } + + static renewAccessToken() { + return Joi.object({ + disbursalRequest: Validator.RefreshTokenRequest().required(), + }).required(); + } + + static refund() { + return Joi.object({ + disbursalRequest: Validator.Refund().required(), + }).required(); + } + + static refundStatus() { + return Joi.object({ + refundId: Joi.string().allow(""), + orderId: Joi.string().allow(""), + }).required(); + } + + static getSchemes() { + return Joi.object({ + disbursalRequest: Validator.VerifyCustomer().required(), + }).required(); + } + + static checkEligibility() { + return Joi.object({ + disbursalRequest: Validator.CheckEligibilityRequest().required(), + }).required(); + } +} + +class CreditValidator { + static disburse() { + return Joi.object({ + disbursalRequest: Validator.DisbursalRequest().required(), + }).required(); + } + + static getOrderStatus() { + return Joi.object({ + orderId: Joi.string().allow("").required(), + }).required(); + } + + static getEligiblePlans() { + return Joi.object({ + lenderSlug: Joi.string().allow("").required(), + disbursalRequest: Validator.EligiblePlansRequest().required(), + }).required(); + } +} + +class MultiKycValidator { + static approvedLenders() { + return Joi.object({}).required(); + } + + static getLimit() { + return Joi.object({ + disbursalRequest: Validator.GetLimitRequest().required(), + }).required(); + } +} + +module.exports = { + CustomerValidator, + CreditValidator, + MultiKycValidator, +}; diff --git a/sdk/platform/index.d.ts b/sdk/platform/index.d.ts new file mode 100644 index 0000000..5db4e68 --- /dev/null +++ b/sdk/platform/index.d.ts @@ -0,0 +1,2 @@ +export const PlatformConfig: typeof import("./PlatformConfig"); +export const PlatformClient: typeof import("./PlatformClient"); diff --git a/sdk/platform/index.js b/sdk/platform/index.js new file mode 100644 index 0000000..5b37cb6 --- /dev/null +++ b/sdk/platform/index.js @@ -0,0 +1,4 @@ +module.exports = { + PlatformConfig: require("./PlatformConfig"), + PlatformClient: require("./PlatformClient"), +}; diff --git a/tests/helpers/cookie.helper.js b/tests/helpers/cookie.helper.js new file mode 100644 index 0000000..673d0c4 --- /dev/null +++ b/tests/helpers/cookie.helper.js @@ -0,0 +1,31 @@ +const { FdkAxios } = require("../../index.js"); +const cookie = {}; + +function setupCookieInterceptor() { + FdkAxios.interceptors.request.handlers.push({ + fulfilled: function (response) { + if (cookie[response.baseURL]) { + console.log("setting up cookies"); + response.headers["cookie"] = cookie[response.baseURL]; + } + return response; + }, + rejected: function (err) { + return Promise.reject(err); + }, + }); + FdkAxios.interceptors.response.handlers.unshift({ + fulfilled: function (response) { + if (response && response.headers && response.headers["set-cookie"]) { + cookie[response.config.baseURL] = response.headers["set-cookie"].join( + " ; " + ); + } + return response; + }, + rejected: function (err) { + return Promise.reject(err); + }, + }); +} +module.exports = setupCookieInterceptor; diff --git a/tests/helpers/oauth.helper.js b/tests/helpers/oauth.helper.js new file mode 100644 index 0000000..ac2575d --- /dev/null +++ b/tests/helpers/oauth.helper.js @@ -0,0 +1,43 @@ +const { FdkAxios } = require("../../index.js"); +const setupCookieInterceptor = require("./cookie.helper"); + +async function setAccesstoken(platformConfig) { + setupCookieInterceptor(); + await loginUser(platformConfig); + let reqData = { + grant_type: "client_credentials", + client_id: platformConfig.apiKey, + client_secret: platformConfig.apiSecret, + }; + + let url = `${platformConfig.domain}/service/panel/authentication/v1.0/company/${platformConfig.companyId}/oauth/token`; + const rawRequest = { + method: "post", + url: url, + data: reqData, + headers: { + "Content-Type": "application/json", + }, + }; + return FdkAxios.request(rawRequest); +} + +async function loginUser(platformConfig) { + const skywarpURL = `${platformConfig.domain}/service/panel/authentication/v1.0/auth/login/password`; + const userData = { + username: process.env.APP_USERNAME, + password: process.env.PASSWORD, + "g-recaptcha-response": "_skip_", + }; + const rawRequest = { + method: "post", + url: skywarpURL, + data: userData, + headers: { + "Content-Type": "application/json", + }, + }; + return FdkAxios.request(rawRequest); +} + +module.exports = setAccesstoken;