joopjs 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +678 -0
- package/README.md +583 -0
- package/dist/a11y.service-C-DQQfgO.d.mts +143 -0
- package/dist/a11y.service-CauEJrJe.d.ts +143 -0
- package/dist/adapters-B6slG6hQ.d.mts +84 -0
- package/dist/adapters-B6slG6hQ.d.ts +84 -0
- package/dist/aes.service-CkoupAww.d.mts +95 -0
- package/dist/aes.service-CkoupAww.d.ts +95 -0
- package/dist/ai/index.d.mts +99 -0
- package/dist/ai/index.d.ts +99 -0
- package/dist/ai/index.js +307 -0
- package/dist/ai/index.js.map +1 -0
- package/dist/ai/index.mjs +304 -0
- package/dist/ai/index.mjs.map +1 -0
- package/dist/analytics/index.d.mts +42 -0
- package/dist/analytics/index.d.ts +42 -0
- package/dist/analytics/index.js +139 -0
- package/dist/analytics/index.js.map +1 -0
- package/dist/analytics/index.mjs +136 -0
- package/dist/analytics/index.mjs.map +1 -0
- package/dist/angular/index.d.mts +148 -0
- package/dist/angular/index.d.ts +148 -0
- package/dist/angular/index.js +122 -0
- package/dist/angular/index.js.map +1 -0
- package/dist/angular/index.mjs +101 -0
- package/dist/angular/index.mjs.map +1 -0
- package/dist/api/index.d.mts +128 -0
- package/dist/api/index.d.ts +128 -0
- package/dist/api/index.js +1358 -0
- package/dist/api/index.js.map +1 -0
- package/dist/api/index.mjs +1332 -0
- package/dist/api/index.mjs.map +1 -0
- package/dist/auth/index.d.mts +105 -0
- package/dist/auth/index.d.ts +105 -0
- package/dist/auth/index.js +989 -0
- package/dist/auth/index.js.map +1 -0
- package/dist/auth/index.mjs +979 -0
- package/dist/auth/index.mjs.map +1 -0
- package/dist/auth.service-DNVB-L4U.d.mts +16 -0
- package/dist/auth.service-PjUUSUIt.d.ts +16 -0
- package/dist/banking/index.d.mts +1530 -0
- package/dist/banking/index.d.ts +1530 -0
- package/dist/banking/index.js +4739 -0
- package/dist/banking/index.js.map +1 -0
- package/dist/banking/index.mjs +4661 -0
- package/dist/banking/index.mjs.map +1 -0
- package/dist/cache/index.d.mts +40 -0
- package/dist/cache/index.d.ts +40 -0
- package/dist/cache/index.js +174 -0
- package/dist/cache/index.js.map +1 -0
- package/dist/cache/index.mjs +172 -0
- package/dist/cache/index.mjs.map +1 -0
- package/dist/client-profile.service-BuPeXVp5.d.mts +28 -0
- package/dist/client-profile.service-D5bRRYQp.d.ts +28 -0
- package/dist/config.models-Cqg04fAQ.d.mts +84 -0
- package/dist/config.models-Cqg04fAQ.d.ts +84 -0
- package/dist/config.service-CrCvI-JS.d.ts +31 -0
- package/dist/config.service-Cz4QQLlf.d.mts +31 -0
- package/dist/core/index.d.mts +4 -0
- package/dist/core/index.d.ts +4 -0
- package/dist/core/index.js +631 -0
- package/dist/core/index.js.map +1 -0
- package/dist/core/index.mjs +619 -0
- package/dist/core/index.mjs.map +1 -0
- package/dist/crypto-utils-DriNhLdx.d.mts +30 -0
- package/dist/crypto-utils-DriNhLdx.d.ts +30 -0
- package/dist/data-storage.service-DT6xaTxE.d.ts +51 -0
- package/dist/data-storage.service-LvhGRCmw.d.mts +51 -0
- package/dist/deeplink/index.d.mts +39 -0
- package/dist/deeplink/index.d.ts +39 -0
- package/dist/deeplink/index.js +268 -0
- package/dist/deeplink/index.js.map +1 -0
- package/dist/deeplink/index.mjs +265 -0
- package/dist/deeplink/index.mjs.map +1 -0
- package/dist/deeplink.service-Ctd5u243.d.mts +35 -0
- package/dist/deeplink.service-uUuTnY9_.d.ts +35 -0
- package/dist/dev/index.d.mts +20 -0
- package/dist/dev/index.d.ts +20 -0
- package/dist/dev/index.js +51 -0
- package/dist/dev/index.js.map +1 -0
- package/dist/dev/index.mjs +49 -0
- package/dist/dev/index.mjs.map +1 -0
- package/dist/device/index.d.mts +108 -0
- package/dist/device/index.d.ts +108 -0
- package/dist/device/index.js +960 -0
- package/dist/device/index.js.map +1 -0
- package/dist/device/index.mjs +951 -0
- package/dist/device/index.mjs.map +1 -0
- package/dist/differential-privacy-BcAv1G80.d.mts +210 -0
- package/dist/differential-privacy-C8mAUjZr.d.ts +210 -0
- package/dist/encryption/index.d.mts +75 -0
- package/dist/encryption/index.d.ts +75 -0
- package/dist/encryption/index.js +605 -0
- package/dist/encryption/index.js.map +1 -0
- package/dist/encryption/index.mjs +598 -0
- package/dist/encryption/index.mjs.map +1 -0
- package/dist/form-validator-3tkmzr_o.d.mts +72 -0
- package/dist/form-validator-3tkmzr_o.d.ts +72 -0
- package/dist/forms/index.d.mts +59 -0
- package/dist/forms/index.d.ts +59 -0
- package/dist/forms/index.js +446 -0
- package/dist/forms/index.js.map +1 -0
- package/dist/forms/index.mjs +442 -0
- package/dist/forms/index.mjs.map +1 -0
- package/dist/i18n/index.d.mts +37 -0
- package/dist/i18n/index.d.ts +37 -0
- package/dist/i18n/index.js +147 -0
- package/dist/i18n/index.js.map +1 -0
- package/dist/i18n/index.mjs +145 -0
- package/dist/i18n/index.mjs.map +1 -0
- package/dist/idempotency.service-_6LqhivP.d.mts +372 -0
- package/dist/idempotency.service-eOKoISRD.d.ts +372 -0
- package/dist/index-B_ksKpS1.d.mts +202 -0
- package/dist/index-CqDKWTUP.d.mts +28 -0
- package/dist/index-CqDKWTUP.d.ts +28 -0
- package/dist/index-DFqEoX_l.d.ts +202 -0
- package/dist/index-Dz0gOur2.d.mts +36 -0
- package/dist/index-Dz0gOur2.d.ts +36 -0
- package/dist/index.d.mts +1336 -0
- package/dist/index.d.ts +1336 -0
- package/dist/index.js +19464 -0
- package/dist/index.js.map +1 -0
- package/dist/index.mjs +19155 -0
- package/dist/index.mjs.map +1 -0
- package/dist/india/index.d.mts +75 -0
- package/dist/india/index.d.ts +75 -0
- package/dist/india/index.js +325 -0
- package/dist/india/index.js.map +1 -0
- package/dist/india/index.mjs +303 -0
- package/dist/india/index.mjs.map +1 -0
- package/dist/joop-Bx7Iwj5p.d.mts +155 -0
- package/dist/joop-CA3DMeOO.d.ts +155 -0
- package/dist/native-bridge/index.d.mts +27 -0
- package/dist/native-bridge/index.d.ts +27 -0
- package/dist/native-bridge/index.js +98 -0
- package/dist/native-bridge/index.js.map +1 -0
- package/dist/native-bridge/index.mjs +96 -0
- package/dist/native-bridge/index.mjs.map +1 -0
- package/dist/network/index.d.mts +85 -0
- package/dist/network/index.d.ts +85 -0
- package/dist/network/index.js +454 -0
- package/dist/network/index.js.map +1 -0
- package/dist/network/index.mjs +451 -0
- package/dist/network/index.mjs.map +1 -0
- package/dist/network-monitor-BIwPSXme.d.mts +179 -0
- package/dist/network-monitor-Bqp2hvZr.d.ts +179 -0
- package/dist/notification.service-Dm4fvfZf.d.mts +25 -0
- package/dist/notification.service-tEMKatWJ.d.ts +25 -0
- package/dist/observability/index.d.mts +179 -0
- package/dist/observability/index.d.ts +179 -0
- package/dist/observability/index.js +559 -0
- package/dist/observability/index.js.map +1 -0
- package/dist/observability/index.mjs +552 -0
- package/dist/observability/index.mjs.map +1 -0
- package/dist/oidc-client-DIJcClmB.d.mts +190 -0
- package/dist/oidc-client-DxhyE59t.d.ts +190 -0
- package/dist/platform/index.d.mts +73 -0
- package/dist/platform/index.d.ts +73 -0
- package/dist/platform/index.js +127 -0
- package/dist/platform/index.js.map +1 -0
- package/dist/platform/index.mjs +125 -0
- package/dist/platform/index.mjs.map +1 -0
- package/dist/pwa/index.d.mts +31 -0
- package/dist/pwa/index.d.ts +31 -0
- package/dist/pwa/index.js +247 -0
- package/dist/pwa/index.js.map +1 -0
- package/dist/pwa/index.mjs +244 -0
- package/dist/pwa/index.mjs.map +1 -0
- package/dist/react/index.d.mts +133 -0
- package/dist/react/index.d.ts +133 -0
- package/dist/react/index.js +632 -0
- package/dist/react/index.js.map +1 -0
- package/dist/react/index.mjs +630 -0
- package/dist/react/index.mjs.map +1 -0
- package/dist/router/index.d.mts +39 -0
- package/dist/router/index.d.ts +39 -0
- package/dist/router/index.js +168 -0
- package/dist/router/index.js.map +1 -0
- package/dist/router/index.mjs +166 -0
- package/dist/router/index.mjs.map +1 -0
- package/dist/security/index.d.mts +206 -0
- package/dist/security/index.d.ts +206 -0
- package/dist/security/index.js +1297 -0
- package/dist/security/index.js.map +1 -0
- package/dist/security/index.mjs +1285 -0
- package/dist/security/index.mjs.map +1 -0
- package/dist/session/index.d.mts +115 -0
- package/dist/session/index.d.ts +115 -0
- package/dist/session/index.js +297 -0
- package/dist/session/index.js.map +1 -0
- package/dist/session/index.mjs +292 -0
- package/dist/session/index.mjs.map +1 -0
- package/dist/state/index.d.mts +43 -0
- package/dist/state/index.d.ts +43 -0
- package/dist/state/index.js +156 -0
- package/dist/state/index.js.map +1 -0
- package/dist/state/index.mjs +152 -0
- package/dist/state/index.mjs.map +1 -0
- package/dist/statement-parser-BHQtXwCM.d.ts +260 -0
- package/dist/statement-parser-C2qNmb49.d.mts +260 -0
- package/dist/storage/index.d.mts +40 -0
- package/dist/storage/index.d.ts +40 -0
- package/dist/storage/index.js +256 -0
- package/dist/storage/index.js.map +1 -0
- package/dist/storage/index.mjs +252 -0
- package/dist/storage/index.mjs.map +1 -0
- package/dist/sync/index.d.mts +69 -0
- package/dist/sync/index.d.ts +69 -0
- package/dist/sync/index.js +330 -0
- package/dist/sync/index.js.map +1 -0
- package/dist/sync/index.mjs +323 -0
- package/dist/sync/index.mjs.map +1 -0
- package/dist/sync-engine-DCIMRG5s.d.ts +61 -0
- package/dist/sync-engine-DZqyKHkK.d.mts +61 -0
- package/dist/theme/index.d.mts +53 -0
- package/dist/theme/index.d.ts +53 -0
- package/dist/theme/index.js +169 -0
- package/dist/theme/index.js.map +1 -0
- package/dist/theme/index.mjs +167 -0
- package/dist/theme/index.mjs.map +1 -0
- package/dist/ui/index.d.mts +66 -0
- package/dist/ui/index.d.ts +66 -0
- package/dist/ui/index.js +811 -0
- package/dist/ui/index.js.map +1 -0
- package/dist/ui/index.mjs +803 -0
- package/dist/ui/index.mjs.map +1 -0
- package/dist/utilities/index.d.mts +199 -0
- package/dist/utilities/index.d.ts +199 -0
- package/dist/utilities/index.js +1991 -0
- package/dist/utilities/index.js.map +1 -0
- package/dist/utilities/index.mjs +1923 -0
- package/dist/utilities/index.mjs.map +1 -0
- package/dist/validation/index.d.mts +60 -0
- package/dist/validation/index.d.ts +60 -0
- package/dist/validation/index.js +460 -0
- package/dist/validation/index.js.map +1 -0
- package/dist/validation/index.mjs +455 -0
- package/dist/validation/index.mjs.map +1 -0
- package/dist/vue/index.d.mts +135 -0
- package/dist/vue/index.d.ts +135 -0
- package/dist/vue/index.js +621 -0
- package/dist/vue/index.js.map +1 -0
- package/dist/vue/index.mjs +619 -0
- package/dist/vue/index.mjs.map +1 -0
- package/dist/watermark.service-Detur5tq.d.ts +235 -0
- package/dist/watermark.service-QNegMeQZ.d.mts +235 -0
- package/dist/workers/index.d.mts +42 -0
- package/dist/workers/index.d.ts +42 -0
- package/dist/workers/index.js +359 -0
- package/dist/workers/index.js.map +1 -0
- package/dist/workers/index.mjs +356 -0
- package/dist/workers/index.mjs.map +1 -0
- package/dist/workflow/index.d.mts +99 -0
- package/dist/workflow/index.d.ts +99 -0
- package/dist/workflow/index.js +282 -0
- package/dist/workflow/index.js.map +1 -0
- package/dist/workflow/index.mjs +279 -0
- package/dist/workflow/index.mjs.map +1 -0
- package/package.json +226 -0
package/dist/index.d.mts
ADDED
|
@@ -0,0 +1,1336 @@
|
|
|
1
|
+
export { J as JoopInstance, c as createJoop } from './joop-Bx7Iwj5p.mjs';
|
|
2
|
+
export { JoopCapabilities, JoopPlatform, JoopPlatformConfig, JoopPlatformType } from './platform/index.mjs';
|
|
3
|
+
export { J as JoopAppState, f as JoopBiometricAdapter, k as JoopCompressionAdapter, l as JoopCompressionFormat, m as JoopCryptoAdapter, c as JoopEffectiveType, e as JoopKeyVaultAdapter, i as JoopLifecycleAdapter, j as JoopNetworkAdapter, a as JoopNetworkState, b as JoopNetworkType, n as JoopPlatformAdapterConfig, g as JoopPushAdapter, h as JoopPushPayload, d as JoopStorageAdapter, o as JoopWorkerAdapter } from './adapters-B6slG6hQ.mjs';
|
|
4
|
+
import { J as JoopObservable, a as JoopBehaviorSubject, b as JoopSubject } from './index-Dz0gOur2.mjs';
|
|
5
|
+
export { L as Listener, U as Unsubscribe } from './index-Dz0gOur2.mjs';
|
|
6
|
+
export { a as JoopApp, J as JoopConfig, f as JoopLanguage, d as JoopLocalization, e as JoopLoggerConfig, g as JoopLoggerTypeConfig, h as JoopOpenBankingConfig, i as JoopPaymentGatewayConfig, c as JoopSession, b as JoopTimeout } from './config.models-Cqg04fAQ.mjs';
|
|
7
|
+
export { b as JoopAesService, J as JoopGcmService, d as JoopHttpOptions, c as JoopRequestOptions, a as JoopRsaService } from './aes.service-CkoupAww.mjs';
|
|
8
|
+
export { b as JoopCircuitBreaker, k as JoopCircuitBreakerConfig, l as JoopCircuitBreakerOpenError, m as JoopCircuitBreakerRegistry, n as JoopCircuitBreakerState, o as JoopCircuitBreakerStats, p as JoopCircuitState, q as JoopCsvOptions, r as JoopDownloadOptions, s as JoopEncryptionError, t as JoopError, u as JoopErrorButton, v as JoopErrorInterceptor, w as JoopErrorType, h as JoopExportService, x as JoopFetchOptions, f as JoopFileSaverService, J as JoopHttpClient, y as JoopHttpError, z as JoopIdempotencyConfig, j as JoopIdempotencyService, a as JoopInterceptorPipeline, A as JoopLoadingState, B as JoopMappedComponent, C as JoopMappedResponse, c as JoopOfflineQueue, D as JoopPollConfig, d as JoopPollingService, E as JoopRawResponse, F as JoopRawResponse6, G as JoopRequest, H as JoopRequestInterceptor, e as JoopRequestService, I as JoopResponse, K as JoopResponseInterceptor, g as JoopResponseMapper, L as JoopWebhookOptions, M as JoopWebhookProvider, i as JoopWebhookVerifier, N as isHttpError } from './idempotency.service-_6LqhivP.mjs';
|
|
9
|
+
export { g as JoopConsentCategory, f as JoopConsentService, h as JoopConsentState, i as JoopEnvironmentName, j as JoopEnvironmentProfile, b as JoopEnvironmentService, d as JoopFeatureFlagService, k as JoopFlagContext, l as JoopFlagDefinition, m as JoopHealthCheck, n as JoopHealthCheckResult, c as JoopHealthService, o as JoopLogEntry, J as JoopLogger, p as JoopLoggerOptions, q as JoopPlugin, a as JoopPluginService, e as JoopRateLimiter, r as JoopTokenBucket, s as JoopTokenBucketConfig, t as logger } from './index-B_ksKpS1.mjs';
|
|
10
|
+
export { a as JoopHttpMethod, b as JoopLogLevel, J as JoopScopeType } from './index-CqDKWTUP.mjs';
|
|
11
|
+
export { J as JoopConfigService, c as configService } from './config.service-Cz4QQLlf.mjs';
|
|
12
|
+
export { J as JoopDataStorage, a as JoopScopeMapService } from './data-storage.service-LvhGRCmw.mjs';
|
|
13
|
+
export { JoopIdbConfig, JoopIdbStoreSchema, JoopIndexedDbService } from './storage/index.mjs';
|
|
14
|
+
export { JoopAntiTamperService, JoopCertPin, JoopCertPinningService, JoopClipboardEntry, JoopClipboardEvent, JoopPinValidationResult, JoopPinViolation, JoopRequestSigningConfig, JoopRequestSigningService, JoopScreenSecurityConfig, JoopScreenSecurityEvent, JoopScreenSecurityService, JoopSecureClipboard, JoopSecureClipboardConfig, JoopSecureStorage, JoopSecureStorageConfig, JoopSignedPayload, JoopTamperCheck, JoopTamperReport, JoopTamperSeverity, JoopTamperType } from './security/index.mjs';
|
|
15
|
+
export { e as JoopAnomalyEvent, J as JoopBehavioralBiometrics, f as JoopBiometricProfile, g as JoopBiometricScore, d as JoopDifferentialPrivacy, h as JoopPIIFinding, i as JoopPIIPattern, b as JoopPIIScanner, j as JoopRiskContext, a as JoopRiskEngine, k as JoopRiskFactor, l as JoopRiskScore, c as JoopSecretSharing, m as JoopShare } from './differential-privacy-BcAv1G80.mjs';
|
|
16
|
+
export { J as JoopAuthService } from './auth.service-DNVB-L4U.mjs';
|
|
17
|
+
export { c as JoopBiometricService, f as JoopLoginOptions, g as JoopMfaChallenge, d as JoopMfaService, h as JoopMfaTotpSetup, i as JoopMfaVerifyResult, e as JoopOIDCClient, j as JoopOIDCConfig, k as JoopOIDCMetadata, l as JoopOIDCTokens, b as JoopOtpService, m as JoopPKCEParams, a as JoopPKCEService, n as JoopTokenPayload, J as JoopTokenService } from './oidc-client-DIJcClmB.mjs';
|
|
18
|
+
export { J as JoopClientProfile, c as clientProfile } from './client-profile.service-BuPeXVp5.mjs';
|
|
19
|
+
export { JoopHttpClientExtended, JoopParallelResult, JoopRequestQueue, JoopRequestQueueConfig, JoopRetryConfig, baseUrlInterceptor, bearerAuthInterceptor, cacheRequestInterceptor, cacheResponseInterceptor, clearCache, correlationInterceptor, loggingRequestInterceptor, loggingResponseInterceptor, retryErrorInterceptor, withRetry } from './api/index.mjs';
|
|
20
|
+
export { JoopE2EPayload, JoopE2EService, JoopRsaKeyPair, JoopX25519Service } from './encryption/index.mjs';
|
|
21
|
+
export { J as JoopCryptoUtils, a as JoopPasswordHash } from './crypto-utils-DriNhLdx.mjs';
|
|
22
|
+
export { JoopConcurrentSessionEvent, JoopConcurrentSessionService, JoopIdleConfig, JoopIdleService, JoopIdleState, JoopMultiTabSync, JoopSessionEvent, JoopSessionTimeoutService, JoopTabEvent, JoopTabEventType } from './session/index.mjs';
|
|
23
|
+
export { JoopAccountType, JoopBeneficiary, JoopBeneficiaryService, JoopBeneficiaryType, JoopBeneficiaryValidation, JoopBill, JoopBillPayment, JoopBillPaymentService, JoopBillPaymentStatus, JoopBillPaymentSummary, JoopBillStatus, JoopBiller, JoopBillerCategory, JoopBitcoinParams, JoopCardControls, JoopCardInfo, JoopCardManagementService, JoopCardNetwork, JoopCardSpendingLimits, JoopCardStatus, JoopCardTransactionCheck, JoopCardType, JoopChequeLeaf, JoopChequeStatus, JoopChequebook, JoopChequebookService, JoopChequebookStats, JoopClaimStatus, JoopCurrencyFormatOptions, JoopDigitalWalletService, JoopDispute, JoopDisputeEvidence, JoopDisputeReason, JoopDisputeService, JoopDisputeStats, JoopDisputeStatus, JoopEthereumParams, JoopExecutionStatus, JoopForwardSettlement, JoopForwardStatus, JoopForwardType, JoopFxExposure, JoopFxForward, JoopFxForwardService, JoopInstallment, JoopInsuranceClaim, JoopInsurancePolicy, JoopInsuranceService, JoopInsuranceType, JoopJournalEntry, JoopJournalLine, JoopLedgerAccount, JoopLedgerService, JoopLimit, JoopLimitCheckResult, JoopLimitManagementService, JoopLimitScope, JoopLimitType, JoopLoanAccount, JoopLoanAccountStatus, JoopLoanPayment, JoopLoanServicingService, JoopLoanStatement, JoopManagedCard, JoopManagedCardNetwork, JoopMandate, JoopMandateExecution, JoopMandateExecutionStatus, JoopMandateFrequency, JoopMandateService, JoopMandateStatus, JoopMandateType, JoopNotification, JoopNotificationCenterService, JoopNotificationPriority, JoopNotificationSummary, JoopNotificationType, JoopPayToParams, JoopPaymentExecution, JoopPaymentUri, JoopPaymentUriScheme, JoopPaymentUriService, JoopPolicyStatus, JoopPremiumFrequency, JoopPremiumPayment, JoopReconItem, JoopReconItemSource, JoopReconMatch, JoopReconMatchStatus, JoopReconSession, JoopReconSummary, JoopReconciliationService, JoopRecurrenceFrequency, JoopRemittance, JoopRemittanceChannel, JoopRemittanceQuote, JoopRemittanceService, JoopRemittanceStatus, JoopRepaymentStatus, JoopScheduledPayment, JoopScheduledPaymentService, JoopScheduledPaymentStatus, JoopSepaParams, JoopSplitBalance, JoopSplitExpense, JoopSplitMethod, JoopSplitParticipant, JoopSplitParticipantStatus, JoopSplitPaymentService, JoopSplitSettlement, JoopSplitStatus, JoopStandingOrder, JoopStandingOrderExecution, JoopStandingOrderFrequency, JoopStandingOrderService, JoopStandingOrderStatus, JoopStatement, JoopStatementEntry, JoopStatementFormat, JoopStatementGeneratorService, JoopStatementOptions, JoopStatementTransaction, JoopTransactionRef, JoopTransactionType, JoopTransferResult, JoopTrialBalance, JoopTrialBalanceRow, JoopUpiParams, JoopUsageRecord, JoopUsageSummary, JoopVirtualAccount, JoopVirtualAccountPurpose, JoopVirtualAccountService, JoopVirtualAccountStatus, JoopVirtualCredit, JoopWallet, JoopWalletStatus, JoopWalletTransaction, JoopWalletTxnType, clampAmount, convertCurrency, formatAmount, formatCard, formatCardNumber, formatCurrency, formatIban, formatMyKad, fromMinorUnits, generateBatchId, generateReferenceNumber, generateTransactionId, getCardInfo, getCardNetwork, getCurrencySymbol, getIbanCountry, getSupportedIbanCountries, isCardExpired, isValidAmount, isValidTransactionId, luhnCheckDigit, maskAccountNumber, maskCard, maskEmail, maskIban, maskInterleaved, maskKeepMiddle, maskKeepSeparators, maskMyKad, maskName, maskNric, maskPattern, maskPhone, maskRange, maskShowFirst, maskShowLast, parseCurrencyString, parseIban, parseTransactionId, roundAmount, safeAdd, safeDivide, safeMultiply, safeSubtract, sumAmounts, toMinorUnits, validateCvv, validateIban, validateLuhn, validateMyKad, validateNric } from './banking/index.mjs';
|
|
24
|
+
export { e as JoopCsvStatementConfig, f as JoopFraudConfig, a as JoopFraudDetection, g as JoopFraudLevel, h as JoopFraudResult, i as JoopFraudSignalResult, j as JoopOBAccount, k as JoopOBAccountType, l as JoopOBConsentRequest, m as JoopOBConsentStatus, n as JoopOBCredentials, o as JoopOBPaymentRequest, p as JoopOBPaymentStatus, q as JoopOBTransaction, b as JoopOpenBankingClient, c as JoopPaymentOrchestrator, r as JoopPaymentOrchestratorConfig, s as JoopPaymentRequest, t as JoopPaymentSession, u as JoopPaymentStep, v as JoopReceiptData, J as JoopReceiptService, d as JoopStatementParser, w as JoopStatementResult, x as JoopThreeDsResult, y as JoopTransactionSignal, z as JoopTxnType } from './statement-parser-C2qNmb49.mjs';
|
|
25
|
+
export { JoopAuditAction, JoopAuditEntry, JoopAuditListener, JoopAuditLog, JoopCorrelationService, JoopErrorHandler, JoopErrorReport, JoopErrorReporter, JoopPerfMark, JoopPerformanceService, JoopRecordedEvent, JoopSessionRecord, JoopSessionRecorder, JoopSessionRecorderOptions, JoopVitalUpdate, JoopVitalsSnapshot, JoopWebVitals } from './observability/index.mjs';
|
|
26
|
+
export { e as JoopAppLifecycle, f as JoopAuthenticateOptions, c as JoopBiometricAuth, g as JoopBiometricConfig, b as JoopDeviceFingerprintService, h as JoopDeviceInfo, i as JoopEnrollResult, a as JoopKeyVault, j as JoopKeyVaultConfig, k as JoopLifecycleConfig, J as JoopNetworkMonitor, l as JoopNetworkMonitorConfig, m as JoopPushConfig, n as JoopPushPermission, d as JoopPushService, o as JoopPushSubscriptionInfo } from './network-monitor-BIwPSXme.mjs';
|
|
27
|
+
export { JoopBrowserInfo, JoopCardForm, JoopCardScanResult, JoopCardScanner, JoopCardScannerConfig, JoopClientInfo, JoopClientInfoConfig, JoopClientInfoService, JoopDeviceKind, JoopOsInfo } from './device/index.mjs';
|
|
28
|
+
export { JoopMockRoute, JoopMockService } from './dev/index.mjs';
|
|
29
|
+
export { JoopTheme, JoopThemeColor, JoopThemeInfo, JoopThemePalette, JoopThemeService } from './theme/index.mjs';
|
|
30
|
+
export { JoopDirection, JoopI18nService, JoopLanguageDetail, JoopTranslations } from './i18n/index.mjs';
|
|
31
|
+
export { d as JoopA11yService, a as JoopAlertService, e as JoopAlertType, f as JoopAriaLivePoliteness, g as JoopDialogButton, h as JoopDialogOptions, i as JoopFocusTrapOptions, j as JoopInlineAlert, k as JoopLoaderConfig, J as JoopLoaderService, l as JoopPageState, b as JoopPaginationService, c as JoopPrintService, m as JoopToastOptions } from './a11y.service-C-DQQfgO.mjs';
|
|
32
|
+
export { JoopBankingKeyboard, JoopBankingKeyboardConfig, JoopBankingKeyboardOptions, JoopKeyboardMode, JoopVirtualRange, JoopVirtualScroll, JoopVirtualScrollOptions } from './ui/index.mjs';
|
|
33
|
+
export { JoopNativeBridgeService, JoopNativeMessage } from './native-bridge/index.mjs';
|
|
34
|
+
export { a as JoopDeeplinkData, J as JoopDeeplinkService } from './deeplink.service-Ctd5u243.mjs';
|
|
35
|
+
export { JoopDeeplinkRouter, JoopRouteHandler, JoopRouteParams } from './deeplink/index.mjs';
|
|
36
|
+
export { JoopCacheOptions, JoopCacheService } from './cache/index.mjs';
|
|
37
|
+
export { JoopSSEConfig, JoopSSEMessage, JoopSSEState, JoopStreamingService, JoopWebSocketService, JoopWsConfig, JoopWsMessage, JoopWsState } from './network/index.mjs';
|
|
38
|
+
export { JoopAnalyticsAdapter, JoopAnalyticsEvent, JoopAnalyticsService, consoleAnalyticsAdapter } from './analytics/index.mjs';
|
|
39
|
+
export { J as JoopFormValidator, a as JoopPasswordStrength, b as JoopValidationResult } from './form-validator-3tkmzr_o.mjs';
|
|
40
|
+
export { JoopPasswordRule, JoopPasswordRuleSet, JoopPasswordRulesValidator, JoopPasswordValidationResult, passwordRuleSets, passwordRules } from './validation/index.mjs';
|
|
41
|
+
export { JoopOtpTimer, JoopOtpTimerConfig, JoopOtpTimerState, JoopSsoConfig, JoopSsoExchangeRequest, JoopSsoService, JoopSsoToken } from './auth/index.mjs';
|
|
42
|
+
export { JoopBarcodeOptions, JoopCategoryAgg, JoopChartBucket, JoopHijriDate, JoopQrDecoder, JoopQrEcLevel, JoopQrOptions, JoopQrScanResult, JoopQrScanner, JoopQrScannerConfig, JoopTimeInterval, JoopWeekend, addBusinessDays, aggregateByCategory, bucketByTime, bufferToHex, buildFormData, buildQueryString, cumulative, daysBetween, deepClone, detectTrend, escapeHtml, flattenObj, flattenObject, formatDate, formatHijri, fromHijri, generateBarcodeDataUrl, generateCode128, generateCode39, generateEan13, generatePaymentQr, generateQr, generateQrDataUrl, generateTotpUri, getBusinessDaysBetween, getDeviceInfo, getRandomNum, isAlphanumeric, isBrowser, isBusinessDay, isDateInRange, isPlainObject, isSSR, isValidEmail, isValidPhone, isValidUrl, movingSum, normalize, objectToQueryString, parseDate, percentChange, randomString, removeTrailingSlash, rollingAverage, sanitizeFileName, sanitizeInput, sparklinePoints, sparklineSvg, stringToHex, stripHtml, stripSqlKeywords, timeAgo, toHijri, truncate, urlEncode, validateEan13 } from './utilities/index.mjs';
|
|
43
|
+
export { J as JoopClipboardService, f as JoopCompressOptions, g as JoopGeoOptions, h as JoopGeoPosition, c as JoopGeoService, i as JoopImageInfo, a as JoopImageService, j as JoopImageValidation, k as JoopMediaConstraints, l as JoopMediaRecorder, d as JoopMediaService, m as JoopPdfLineOptions, n as JoopPdfOptions, b as JoopPdfService, o as JoopPdfTableColumn, p as JoopPdfTextOptions, q as JoopReceiptLine, r as JoopRecorderOptions, s as JoopWatermarkOptions, e as JoopWatermarkService, t as clipboard } from './watermark.service-QNegMeQZ.mjs';
|
|
44
|
+
export { a as JoopNotificationOptions, b as JoopNotificationPermission, J as JoopNotificationService } from './notification.service-Dm4fvfZf.mjs';
|
|
45
|
+
export { JoopField, JoopFieldConfig, JoopFieldState, JoopForm, JoopFormBuilder, JoopFormState } from './forms/index.mjs';
|
|
46
|
+
export { JoopRoute, JoopRouteGuard, JoopRouterService } from './router/index.mjs';
|
|
47
|
+
export { JoopServiceWorkerService } from './pwa/index.mjs';
|
|
48
|
+
export { JoopAiClient, JoopAiConfig, JoopAiMessage, JoopAiProvider, JoopAiStreamOptions, JoopAiUsage, JoopToolCall, JoopToolDefinition, JoopToolParameter, JoopToolRegistry, JoopToolResult } from './ai/index.mjs';
|
|
49
|
+
export { JoopCompressionService, JoopWorkerPool, JoopWorkerPoolConfig } from './workers/index.mjs';
|
|
50
|
+
export { JoopAction, JoopReducer, JoopStore, JoopStoreConfig, createSlice, createStore } from './state/index.mjs';
|
|
51
|
+
export { a as JoopMutation, b as JoopSyncConfig, c as JoopSyncConflict, J as JoopSyncEngine, d as JoopSyncStatus } from './sync-engine-DZqyKHkK.mjs';
|
|
52
|
+
export { CRDTCounter, CRDTRegister, CRDTSet, CRDTText, mergeCRDT } from './sync/index.mjs';
|
|
53
|
+
export { JoopMachineConfig, JoopStateConfig, JoopStateMachine, JoopStateTransition, JoopTransition, JoopWorkflowDefinition, JoopWorkflowEngine, JoopWorkflowResult, JoopWorkflowRun, JoopWorkflowStep } from './workflow/index.mjs';
|
|
54
|
+
|
|
55
|
+
interface JoopEncryptedResponse {
|
|
56
|
+
screenId?: string;
|
|
57
|
+
encrypted?: boolean;
|
|
58
|
+
encryptedData?: string;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
declare const DEFAULT_REQUEST_TIMEOUT = 30000;
|
|
62
|
+
declare const DEFAULT_SESSION_TIMEOUT = 300000;
|
|
63
|
+
declare const DEFAULT_SESSION_WAIT_TIMEOUT = 60000;
|
|
64
|
+
declare const PAGE_TOKEN_KEY = "pageToken";
|
|
65
|
+
declare const DECRYPTION_FAILED = "Response decryption failed";
|
|
66
|
+
declare const SESSION_STORAGE_KEY = "joopSession";
|
|
67
|
+
|
|
68
|
+
type JoopBudgetPeriod = 'daily' | 'weekly' | 'monthly';
|
|
69
|
+
interface JoopBudgetCategory {
|
|
70
|
+
category: string;
|
|
71
|
+
limitAmount: number;
|
|
72
|
+
period: JoopBudgetPeriod;
|
|
73
|
+
currency?: string;
|
|
74
|
+
color?: string;
|
|
75
|
+
}
|
|
76
|
+
interface JoopBudgetEntry {
|
|
77
|
+
id: string;
|
|
78
|
+
category: string;
|
|
79
|
+
amount: number;
|
|
80
|
+
date: number;
|
|
81
|
+
description?: string;
|
|
82
|
+
}
|
|
83
|
+
interface JoopBudgetStatus {
|
|
84
|
+
category: string;
|
|
85
|
+
limitAmount: number;
|
|
86
|
+
spentAmount: number;
|
|
87
|
+
remainingAmount: number;
|
|
88
|
+
percentUsed: number;
|
|
89
|
+
isOverBudget: boolean;
|
|
90
|
+
isNearLimit: boolean;
|
|
91
|
+
period: JoopBudgetPeriod;
|
|
92
|
+
currency: string;
|
|
93
|
+
}
|
|
94
|
+
interface JoopBudgetSummary {
|
|
95
|
+
totalLimit: number;
|
|
96
|
+
totalSpent: number;
|
|
97
|
+
totalRemaining: number;
|
|
98
|
+
overBudgetCount: number;
|
|
99
|
+
nearLimitCount: number;
|
|
100
|
+
currency: string;
|
|
101
|
+
}
|
|
102
|
+
declare class JoopBudgetService {
|
|
103
|
+
private _categories;
|
|
104
|
+
private _entries;
|
|
105
|
+
private _alertThreshold;
|
|
106
|
+
private _alertHandlers;
|
|
107
|
+
private _status$;
|
|
108
|
+
setBudget(budget: JoopBudgetCategory): void;
|
|
109
|
+
removeBudget(category: string): void;
|
|
110
|
+
getBudget(category: string): JoopBudgetCategory | undefined;
|
|
111
|
+
getAllBudgets(): JoopBudgetCategory[];
|
|
112
|
+
addSpending(entry: Omit<JoopBudgetEntry, 'id'>): JoopBudgetEntry;
|
|
113
|
+
removeSpending(id: string): void;
|
|
114
|
+
getSpending(category?: string): JoopBudgetEntry[];
|
|
115
|
+
getStatus(category: string, asOf?: Date): JoopBudgetStatus | null;
|
|
116
|
+
getAllStatus(asOf?: Date): JoopBudgetStatus[];
|
|
117
|
+
getOverBudget(asOf?: Date): JoopBudgetStatus[];
|
|
118
|
+
getNearLimit(asOf?: Date): JoopBudgetStatus[];
|
|
119
|
+
getSummary(asOf?: Date): JoopBudgetSummary;
|
|
120
|
+
setAlertThreshold(threshold: number): void;
|
|
121
|
+
getAlertThreshold(): number;
|
|
122
|
+
onAlert(handler: (status: JoopBudgetStatus) => void): () => void;
|
|
123
|
+
status$(): JoopObservable<JoopBudgetStatus>;
|
|
124
|
+
reset(category?: string): void;
|
|
125
|
+
private _computeStatus;
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
type JoopGoalStatus = 'active' | 'completed' | 'paused' | 'cancelled';
|
|
129
|
+
type JoopAutoDebitFrequency = 'daily' | 'weekly' | 'monthly';
|
|
130
|
+
interface JoopSavingsGoal {
|
|
131
|
+
id: string;
|
|
132
|
+
name: string;
|
|
133
|
+
targetAmount: number;
|
|
134
|
+
currentAmount: number;
|
|
135
|
+
currency: string;
|
|
136
|
+
targetDate?: number;
|
|
137
|
+
autoDebitAmount?: number;
|
|
138
|
+
autoDebitFrequency?: JoopAutoDebitFrequency;
|
|
139
|
+
icon?: string;
|
|
140
|
+
notes?: string;
|
|
141
|
+
createdAt: number;
|
|
142
|
+
completedAt?: number;
|
|
143
|
+
status: JoopGoalStatus;
|
|
144
|
+
}
|
|
145
|
+
interface JoopSavingsTransaction {
|
|
146
|
+
id: string;
|
|
147
|
+
goalId: string;
|
|
148
|
+
amount: number;
|
|
149
|
+
type: 'deposit' | 'withdrawal';
|
|
150
|
+
note?: string;
|
|
151
|
+
date: number;
|
|
152
|
+
}
|
|
153
|
+
interface JoopSavingsProgress {
|
|
154
|
+
goal: JoopSavingsGoal;
|
|
155
|
+
progressPercent: number;
|
|
156
|
+
remainingAmount: number;
|
|
157
|
+
daysRemaining: number | null;
|
|
158
|
+
isOnTrack: boolean;
|
|
159
|
+
projectedCompletionDate: number | null;
|
|
160
|
+
requiredMonthlyAmount: number | null;
|
|
161
|
+
dailyTargetAmount: number | null;
|
|
162
|
+
}
|
|
163
|
+
declare class JoopSavingsGoalService {
|
|
164
|
+
private _goals;
|
|
165
|
+
private _transactions;
|
|
166
|
+
private _completedHandlers;
|
|
167
|
+
private _goals$;
|
|
168
|
+
create(data: Omit<JoopSavingsGoal, 'id' | 'createdAt' | 'status' | 'currentAmount'> & {
|
|
169
|
+
currentAmount?: number;
|
|
170
|
+
}): JoopSavingsGoal;
|
|
171
|
+
update(id: string, patch: Partial<Omit<JoopSavingsGoal, 'id' | 'createdAt'>>): JoopSavingsGoal;
|
|
172
|
+
delete(id: string): void;
|
|
173
|
+
get(id: string): JoopSavingsGoal | undefined;
|
|
174
|
+
getAll(): JoopSavingsGoal[];
|
|
175
|
+
getActive(): JoopSavingsGoal[];
|
|
176
|
+
getCompleted(): JoopSavingsGoal[];
|
|
177
|
+
deposit(id: string, amount: number, note?: string): JoopSavingsGoal;
|
|
178
|
+
withdraw(id: string, amount: number, note?: string): JoopSavingsGoal;
|
|
179
|
+
getTransactions(goalId: string): JoopSavingsTransaction[];
|
|
180
|
+
getProgress(id: string, asOf?: number): JoopSavingsProgress | null;
|
|
181
|
+
getAllProgress(asOf?: number): JoopSavingsProgress[];
|
|
182
|
+
complete(id: string): void;
|
|
183
|
+
pause(id: string): void;
|
|
184
|
+
resume(id: string): void;
|
|
185
|
+
cancel(id: string): void;
|
|
186
|
+
totalSaved(): number;
|
|
187
|
+
totalTarget(): number;
|
|
188
|
+
overallProgress(): number;
|
|
189
|
+
onGoalCompleted(handler: (goal: JoopSavingsGoal) => void): () => void;
|
|
190
|
+
goals$(): JoopObservable<JoopSavingsGoal[]>;
|
|
191
|
+
private _get;
|
|
192
|
+
private _emit;
|
|
193
|
+
private _computeProgress;
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
interface JoopExchangeRate {
|
|
197
|
+
from: string;
|
|
198
|
+
to: string;
|
|
199
|
+
rate: number;
|
|
200
|
+
timestamp: number;
|
|
201
|
+
source?: string;
|
|
202
|
+
}
|
|
203
|
+
interface JoopConversionResult {
|
|
204
|
+
from: string;
|
|
205
|
+
to: string;
|
|
206
|
+
amount: number;
|
|
207
|
+
convertedAmount: number;
|
|
208
|
+
rate: number;
|
|
209
|
+
inverseRate: number;
|
|
210
|
+
spread: number;
|
|
211
|
+
fee: number;
|
|
212
|
+
grossAmount: number;
|
|
213
|
+
netAmount: number;
|
|
214
|
+
timestamp: number;
|
|
215
|
+
}
|
|
216
|
+
interface JoopExchangeRateProvider {
|
|
217
|
+
name: string;
|
|
218
|
+
fetch(base: string, targets: string[]): Promise<Record<string, number>>;
|
|
219
|
+
}
|
|
220
|
+
declare class JoopCurrencyExchangeService {
|
|
221
|
+
private _rates;
|
|
222
|
+
private _history;
|
|
223
|
+
private _provider;
|
|
224
|
+
private _rates$;
|
|
225
|
+
setProvider(provider: JoopExchangeRateProvider): void;
|
|
226
|
+
setRate(from: string, to: string, rate: number, source?: string): void;
|
|
227
|
+
setRates(rates: JoopExchangeRate[]): void;
|
|
228
|
+
fetchRates(base: string, targets?: string[]): Promise<void>;
|
|
229
|
+
getRate(from: string, to: string): number | null;
|
|
230
|
+
getRateEntry(from: string, to: string): JoopExchangeRate | null;
|
|
231
|
+
convert(amount: number, from: string, to: string, spreadPercent?: number, fixedFee?: number): JoopConversionResult;
|
|
232
|
+
getHistory(from: string, to: string): JoopExchangeRate[];
|
|
233
|
+
getSupportedCurrencies(): string[];
|
|
234
|
+
isSupported(currency: string): boolean;
|
|
235
|
+
getAllRates(): JoopExchangeRate[];
|
|
236
|
+
rates$(): JoopObservable<JoopExchangeRate[]>;
|
|
237
|
+
private _pushHistory;
|
|
238
|
+
private _emitRates;
|
|
239
|
+
}
|
|
240
|
+
|
|
241
|
+
type JoopCreditScoreRating = 'excellent' | 'good' | 'fair' | 'poor' | 'bad';
|
|
242
|
+
type JoopLoanType = 'personal' | 'mortgage' | 'auto' | 'student' | 'business';
|
|
243
|
+
interface JoopLoanApplicant {
|
|
244
|
+
grossMonthlyIncome: number;
|
|
245
|
+
netMonthlyIncome: number;
|
|
246
|
+
monthlyDebts: number;
|
|
247
|
+
creditScore: number;
|
|
248
|
+
employmentMonths: number;
|
|
249
|
+
assets?: number;
|
|
250
|
+
currency?: string;
|
|
251
|
+
}
|
|
252
|
+
interface JoopLoanParams {
|
|
253
|
+
requestedAmount: number;
|
|
254
|
+
interestRatePercent: number;
|
|
255
|
+
termMonths: number;
|
|
256
|
+
loanType?: JoopLoanType;
|
|
257
|
+
currency?: string;
|
|
258
|
+
}
|
|
259
|
+
interface JoopEmiBreakdown {
|
|
260
|
+
emi: number;
|
|
261
|
+
totalPayment: number;
|
|
262
|
+
totalInterest: number;
|
|
263
|
+
principal: number;
|
|
264
|
+
interestRatePercent: number;
|
|
265
|
+
termMonths: number;
|
|
266
|
+
schedule: JoopEmiScheduleEntry$1[];
|
|
267
|
+
}
|
|
268
|
+
interface JoopEmiScheduleEntry$1 {
|
|
269
|
+
month: number;
|
|
270
|
+
emi: number;
|
|
271
|
+
principal: number;
|
|
272
|
+
interest: number;
|
|
273
|
+
remainingBalance: number;
|
|
274
|
+
}
|
|
275
|
+
interface JoopLoanEligibilityResult {
|
|
276
|
+
isEligible: boolean;
|
|
277
|
+
reasons: string[];
|
|
278
|
+
dtiRatio: number;
|
|
279
|
+
maxEligibleAmount: number;
|
|
280
|
+
repaymentCapacity: number;
|
|
281
|
+
creditRating: JoopCreditScoreRating;
|
|
282
|
+
requestedEmi?: number;
|
|
283
|
+
emiBreakdown?: JoopEmiBreakdown;
|
|
284
|
+
currency: string;
|
|
285
|
+
}
|
|
286
|
+
interface JoopLoanProduct {
|
|
287
|
+
name: string;
|
|
288
|
+
type: JoopLoanType;
|
|
289
|
+
minAmount: number;
|
|
290
|
+
maxAmount: number;
|
|
291
|
+
minTermMonths: number;
|
|
292
|
+
maxTermMonths: number;
|
|
293
|
+
baseRatePercent: number;
|
|
294
|
+
maxDtiPercent: number;
|
|
295
|
+
minCreditScore: number;
|
|
296
|
+
}
|
|
297
|
+
declare class JoopLoanEligibilityService {
|
|
298
|
+
private _products;
|
|
299
|
+
addProduct(product: JoopLoanProduct): void;
|
|
300
|
+
removeProduct(name: string): void;
|
|
301
|
+
getProducts(): JoopLoanProduct[];
|
|
302
|
+
getProductsByType(type: JoopLoanType): JoopLoanProduct[];
|
|
303
|
+
assess(applicant: JoopLoanApplicant, params: JoopLoanParams): JoopLoanEligibilityResult;
|
|
304
|
+
compareProducts(applicant: JoopLoanApplicant, requestedAmount: number, termMonths: number): Array<{
|
|
305
|
+
product: JoopLoanProduct;
|
|
306
|
+
result: JoopLoanEligibilityResult;
|
|
307
|
+
}>;
|
|
308
|
+
computeEmi(principal: number, annualRatePercent: number, termMonths: number): number;
|
|
309
|
+
computeEmiBreakdown(principal: number, annualRatePercent: number, termMonths: number): JoopEmiBreakdown;
|
|
310
|
+
maxLoanAmount(monthlyPaymentCapacity: number, annualRatePercent: number, termMonths: number): number;
|
|
311
|
+
creditScoreRating(score: number): JoopCreditScoreRating;
|
|
312
|
+
computeDti(monthlyDebts: number, grossMonthlyIncome: number): number;
|
|
313
|
+
}
|
|
314
|
+
|
|
315
|
+
type JoopLoyaltyTier = 'bronze' | 'silver' | 'gold' | 'platinum';
|
|
316
|
+
type JoopLoyaltyTxnType = 'earn' | 'redeem' | 'expire' | 'adjust' | 'bonus';
|
|
317
|
+
interface JoopLoyaltyTierDef {
|
|
318
|
+
tier: JoopLoyaltyTier;
|
|
319
|
+
minPoints: number;
|
|
320
|
+
earnMultiplier: number;
|
|
321
|
+
label: string;
|
|
322
|
+
}
|
|
323
|
+
interface JoopLoyaltyEarnRule {
|
|
324
|
+
category: string;
|
|
325
|
+
pointsPerUnit: number;
|
|
326
|
+
currency?: string;
|
|
327
|
+
multiplier?: number;
|
|
328
|
+
maxPerTxn?: number;
|
|
329
|
+
}
|
|
330
|
+
interface JoopLoyaltyTransaction {
|
|
331
|
+
id: string;
|
|
332
|
+
type: JoopLoyaltyTxnType;
|
|
333
|
+
points: number;
|
|
334
|
+
balance: number;
|
|
335
|
+
description: string;
|
|
336
|
+
category?: string;
|
|
337
|
+
reference?: string;
|
|
338
|
+
expiresAt?: number;
|
|
339
|
+
date: number;
|
|
340
|
+
}
|
|
341
|
+
interface JoopLoyaltySummary {
|
|
342
|
+
balance: number;
|
|
343
|
+
lifetimeEarned: number;
|
|
344
|
+
lifetimeRedeemed: number;
|
|
345
|
+
lifetimeExpired: number;
|
|
346
|
+
tier: JoopLoyaltyTier;
|
|
347
|
+
nextTier: JoopLoyaltyTier | null;
|
|
348
|
+
pointsToNextTier: number | null;
|
|
349
|
+
tierMultiplier: number;
|
|
350
|
+
}
|
|
351
|
+
declare class JoopLoyaltyService {
|
|
352
|
+
private _balance;
|
|
353
|
+
private _lifetimeEarned;
|
|
354
|
+
private _lifetimeRedeemed;
|
|
355
|
+
private _lifetimeExpired;
|
|
356
|
+
private _transactions;
|
|
357
|
+
private _tiers;
|
|
358
|
+
private _baseEarnRate;
|
|
359
|
+
private _earnRules;
|
|
360
|
+
private _pointValue;
|
|
361
|
+
private _summary$;
|
|
362
|
+
constructor(options?: {
|
|
363
|
+
baseEarnRate?: number;
|
|
364
|
+
pointValue?: number;
|
|
365
|
+
tiers?: JoopLoyaltyTierDef[];
|
|
366
|
+
});
|
|
367
|
+
setEarnRule(rule: JoopLoyaltyEarnRule): void;
|
|
368
|
+
removeEarnRule(category: string): void;
|
|
369
|
+
getEarnRate(amount: number, category?: string): number;
|
|
370
|
+
earn(amount: number, options?: {
|
|
371
|
+
category?: string;
|
|
372
|
+
description?: string;
|
|
373
|
+
reference?: string;
|
|
374
|
+
ttlDays?: number;
|
|
375
|
+
bonus?: number;
|
|
376
|
+
}): JoopLoyaltyTransaction;
|
|
377
|
+
redeem(points: number, options?: {
|
|
378
|
+
description?: string;
|
|
379
|
+
reference?: string;
|
|
380
|
+
}): JoopLoyaltyTransaction;
|
|
381
|
+
adjust(points: number, description: string): JoopLoyaltyTransaction;
|
|
382
|
+
getBalance(): number;
|
|
383
|
+
getAvailableBalance(asOf?: number): number;
|
|
384
|
+
pointsToValue(points: number): number;
|
|
385
|
+
currencyToPoints(amount: number, category?: string): number;
|
|
386
|
+
expirePoints(asOf?: number): number;
|
|
387
|
+
getCurrentTier(): JoopLoyaltyTier;
|
|
388
|
+
getTierDef(tier: JoopLoyaltyTier): JoopLoyaltyTierDef;
|
|
389
|
+
getNextTier(): JoopLoyaltyTier | null;
|
|
390
|
+
getPointsToNextTier(): number | null;
|
|
391
|
+
getTransactions(): JoopLoyaltyTransaction[];
|
|
392
|
+
getTransactionsByType(type: JoopLoyaltyTxnType): JoopLoyaltyTransaction[];
|
|
393
|
+
getSummary(): JoopLoyaltySummary;
|
|
394
|
+
summary$(): JoopObservable<JoopLoyaltySummary>;
|
|
395
|
+
private _record;
|
|
396
|
+
private _currentTier;
|
|
397
|
+
private _getTierDef;
|
|
398
|
+
private _emitSummary;
|
|
399
|
+
}
|
|
400
|
+
|
|
401
|
+
type JoopAssetType = 'stock' | 'bond' | 'etf' | 'crypto' | 'mutual-fund' | 'real-estate' | 'commodity' | 'cash' | 'other';
|
|
402
|
+
interface JoopHolding {
|
|
403
|
+
id: string;
|
|
404
|
+
symbol: string;
|
|
405
|
+
name: string;
|
|
406
|
+
assetType: JoopAssetType;
|
|
407
|
+
quantity: number;
|
|
408
|
+
purchasePrice: number;
|
|
409
|
+
currentPrice: number;
|
|
410
|
+
currency: string;
|
|
411
|
+
purchaseDate?: number;
|
|
412
|
+
exchange?: string;
|
|
413
|
+
sector?: string;
|
|
414
|
+
notes?: string;
|
|
415
|
+
createdAt: number;
|
|
416
|
+
updatedAt: number;
|
|
417
|
+
}
|
|
418
|
+
interface JoopHoldingPerformance {
|
|
419
|
+
holding: JoopHolding;
|
|
420
|
+
costBasis: number;
|
|
421
|
+
marketValue: number;
|
|
422
|
+
unrealizedGain: number;
|
|
423
|
+
unrealizedGainPercent: number;
|
|
424
|
+
allocationPercent: number;
|
|
425
|
+
daysSinceEntry: number | null;
|
|
426
|
+
annualizedReturnPercent: number | null;
|
|
427
|
+
}
|
|
428
|
+
interface JoopPortfolioSummary {
|
|
429
|
+
totalCost: number;
|
|
430
|
+
totalValue: number;
|
|
431
|
+
totalUnrealizedGain: number;
|
|
432
|
+
totalUnrealizedGainPercent: number;
|
|
433
|
+
holdingCount: number;
|
|
434
|
+
allocationByType: Record<JoopAssetType, number>;
|
|
435
|
+
topHolding: JoopHoldingPerformance | null;
|
|
436
|
+
worstHolding: JoopHoldingPerformance | null;
|
|
437
|
+
currency: string;
|
|
438
|
+
}
|
|
439
|
+
declare class JoopPortfolioService {
|
|
440
|
+
private _holdings;
|
|
441
|
+
private _portfolio$;
|
|
442
|
+
add(data: Omit<JoopHolding, 'id' | 'createdAt' | 'updatedAt'>): JoopHolding;
|
|
443
|
+
update(idOrSymbol: string, patch: Partial<Omit<JoopHolding, 'id' | 'createdAt'>>): JoopHolding;
|
|
444
|
+
remove(idOrSymbol: string): void;
|
|
445
|
+
get(idOrSymbol: string): JoopHolding | undefined;
|
|
446
|
+
getAll(): JoopHolding[];
|
|
447
|
+
getByType(type: JoopAssetType): JoopHolding[];
|
|
448
|
+
addToPosition(symbol: string, quantity: number, price: number): JoopHolding;
|
|
449
|
+
reducePosition(symbol: string, quantity: number): JoopHolding;
|
|
450
|
+
updatePrice(symbol: string, price: number): JoopHolding;
|
|
451
|
+
updatePrices(prices: Record<string, number>): void;
|
|
452
|
+
getPerformance(idOrSymbol: string): JoopHoldingPerformance | null;
|
|
453
|
+
getAllPerformance(): JoopHoldingPerformance[];
|
|
454
|
+
getTotalValue(): number;
|
|
455
|
+
getTotalCost(): number;
|
|
456
|
+
getTotalGain(): number;
|
|
457
|
+
getTotalGainPercent(): number;
|
|
458
|
+
getAllocation(): Array<{
|
|
459
|
+
symbol: string;
|
|
460
|
+
percent: number;
|
|
461
|
+
}>;
|
|
462
|
+
getAllocationByType(): Record<JoopAssetType, number>;
|
|
463
|
+
getSummary(): JoopPortfolioSummary;
|
|
464
|
+
portfolio$(): JoopObservable<JoopHolding[]>;
|
|
465
|
+
private _bySymbol;
|
|
466
|
+
private _require;
|
|
467
|
+
private _requireBySymbol;
|
|
468
|
+
private _totalValue;
|
|
469
|
+
private _computePerf;
|
|
470
|
+
private _emit;
|
|
471
|
+
}
|
|
472
|
+
|
|
473
|
+
interface JoopTaxBracket {
|
|
474
|
+
from: number;
|
|
475
|
+
to: number | null;
|
|
476
|
+
rate: number;
|
|
477
|
+
label?: string;
|
|
478
|
+
}
|
|
479
|
+
interface JoopTaxDeduction {
|
|
480
|
+
name: string;
|
|
481
|
+
amount: number;
|
|
482
|
+
}
|
|
483
|
+
interface JoopIncomeTaxResult {
|
|
484
|
+
grossIncome: number;
|
|
485
|
+
totalDeductions: number;
|
|
486
|
+
taxableIncome: number;
|
|
487
|
+
tax: number;
|
|
488
|
+
effectiveRate: number;
|
|
489
|
+
marginalRate: number;
|
|
490
|
+
netIncome: number;
|
|
491
|
+
bracketBreakdown: Array<{
|
|
492
|
+
bracket: JoopTaxBracket;
|
|
493
|
+
taxableInBracket: number;
|
|
494
|
+
tax: number;
|
|
495
|
+
}>;
|
|
496
|
+
currency: string;
|
|
497
|
+
}
|
|
498
|
+
interface JoopCapitalGainsTaxResult {
|
|
499
|
+
gain: number;
|
|
500
|
+
holdingDays: number;
|
|
501
|
+
isLongTerm: boolean;
|
|
502
|
+
rate: number;
|
|
503
|
+
tax: number;
|
|
504
|
+
netGain: number;
|
|
505
|
+
}
|
|
506
|
+
interface JoopGstResult {
|
|
507
|
+
baseAmount: number;
|
|
508
|
+
rate: number;
|
|
509
|
+
gstAmount: number;
|
|
510
|
+
totalAmount: number;
|
|
511
|
+
isInclusive: boolean;
|
|
512
|
+
}
|
|
513
|
+
interface JoopTaxSummary {
|
|
514
|
+
grossIncome: number;
|
|
515
|
+
incomeTax: number;
|
|
516
|
+
capitalGainsTax: number;
|
|
517
|
+
withholdingTax: number;
|
|
518
|
+
totalTax: number;
|
|
519
|
+
netIncome: number;
|
|
520
|
+
effectiveOverallRate: number;
|
|
521
|
+
currency: string;
|
|
522
|
+
}
|
|
523
|
+
declare const JoopTaxBrackets: {
|
|
524
|
+
US_2024: JoopTaxBracket[];
|
|
525
|
+
UK_2024: JoopTaxBracket[];
|
|
526
|
+
IN_FY2024: JoopTaxBracket[];
|
|
527
|
+
AU_FY2024: JoopTaxBracket[];
|
|
528
|
+
};
|
|
529
|
+
declare class JoopTaxCalculatorService {
|
|
530
|
+
private _brackets;
|
|
531
|
+
private _currency;
|
|
532
|
+
private _longTermThresholdDays;
|
|
533
|
+
private _shortTermCgtRate;
|
|
534
|
+
private _longTermCgtRate;
|
|
535
|
+
private _defaultGstRate;
|
|
536
|
+
constructor(options?: {
|
|
537
|
+
brackets?: JoopTaxBracket[];
|
|
538
|
+
currency?: string;
|
|
539
|
+
longTermThresholdDays?: number;
|
|
540
|
+
shortTermCgtRate?: number;
|
|
541
|
+
longTermCgtRate?: number;
|
|
542
|
+
defaultGstRate?: number;
|
|
543
|
+
});
|
|
544
|
+
setBrackets(brackets: JoopTaxBracket[]): void;
|
|
545
|
+
getBrackets(): JoopTaxBracket[];
|
|
546
|
+
calculateIncomeTax(grossIncome: number, deductions?: JoopTaxDeduction[], brackets?: JoopTaxBracket[]): JoopIncomeTaxResult;
|
|
547
|
+
calculateCapitalGains(gain: number, holdingDays: number, options?: {
|
|
548
|
+
shortTermRate?: number;
|
|
549
|
+
longTermRate?: number;
|
|
550
|
+
}): JoopCapitalGainsTaxResult;
|
|
551
|
+
calculateGst(amount: number, options?: {
|
|
552
|
+
rate?: number;
|
|
553
|
+
inclusive?: boolean;
|
|
554
|
+
}): JoopGstResult;
|
|
555
|
+
calculateVat: (amount: number, options?: {
|
|
556
|
+
rate?: number;
|
|
557
|
+
inclusive?: boolean;
|
|
558
|
+
}) => JoopGstResult;
|
|
559
|
+
calculateWithholding(amount: number, rate: number): {
|
|
560
|
+
gross: number;
|
|
561
|
+
withheld: number;
|
|
562
|
+
net: number;
|
|
563
|
+
rate: number;
|
|
564
|
+
};
|
|
565
|
+
getTaxSummary(options: {
|
|
566
|
+
grossIncome: number;
|
|
567
|
+
deductions?: JoopTaxDeduction[];
|
|
568
|
+
capitalGain?: number;
|
|
569
|
+
capitalGainHoldingDays?: number;
|
|
570
|
+
withholdingAmount?: number;
|
|
571
|
+
withholdingRate?: number;
|
|
572
|
+
}): JoopTaxSummary;
|
|
573
|
+
getMarginalRate(income: number, brackets?: JoopTaxBracket[]): number;
|
|
574
|
+
getEffectiveRate(income: number, brackets?: JoopTaxBracket[]): number;
|
|
575
|
+
}
|
|
576
|
+
|
|
577
|
+
type JoopCompoundFrequency = 'daily' | 'monthly' | 'quarterly' | 'half-yearly' | 'yearly';
|
|
578
|
+
interface JoopSimpleInterestResult {
|
|
579
|
+
principal: number;
|
|
580
|
+
rate: number;
|
|
581
|
+
years: number;
|
|
582
|
+
interest: number;
|
|
583
|
+
amount: number;
|
|
584
|
+
}
|
|
585
|
+
interface JoopCompoundInterestResult {
|
|
586
|
+
principal: number;
|
|
587
|
+
rate: number;
|
|
588
|
+
years: number;
|
|
589
|
+
frequency: JoopCompoundFrequency;
|
|
590
|
+
compoundsPerYear: number;
|
|
591
|
+
interest: number;
|
|
592
|
+
amount: number;
|
|
593
|
+
effectiveAnnualRate: number;
|
|
594
|
+
}
|
|
595
|
+
interface JoopFixedDepositResult {
|
|
596
|
+
principal: number;
|
|
597
|
+
ratePercent: number;
|
|
598
|
+
termDays: number;
|
|
599
|
+
frequency: JoopCompoundFrequency;
|
|
600
|
+
maturityAmount: number;
|
|
601
|
+
totalInterest: number;
|
|
602
|
+
effectiveAnnualRate: number;
|
|
603
|
+
}
|
|
604
|
+
interface JoopRecurringDepositResult {
|
|
605
|
+
monthlyDeposit: number;
|
|
606
|
+
ratePercent: number;
|
|
607
|
+
termMonths: number;
|
|
608
|
+
maturityAmount: number;
|
|
609
|
+
totalDeposited: number;
|
|
610
|
+
totalInterest: number;
|
|
611
|
+
}
|
|
612
|
+
interface JoopSavingsProjectionEntry {
|
|
613
|
+
year: number;
|
|
614
|
+
openingBalance: number;
|
|
615
|
+
deposits: number;
|
|
616
|
+
interest: number;
|
|
617
|
+
closingBalance: number;
|
|
618
|
+
}
|
|
619
|
+
interface JoopSavingsProjection {
|
|
620
|
+
startBalance: number;
|
|
621
|
+
monthlyDeposit: number;
|
|
622
|
+
annualRatePercent: number;
|
|
623
|
+
years: number;
|
|
624
|
+
finalBalance: number;
|
|
625
|
+
totalDeposited: number;
|
|
626
|
+
totalInterest: number;
|
|
627
|
+
schedule: JoopSavingsProjectionEntry[];
|
|
628
|
+
}
|
|
629
|
+
declare class JoopInterestCalculatorService {
|
|
630
|
+
simpleInterest(principal: number, ratePercent: number, years: number): JoopSimpleInterestResult;
|
|
631
|
+
compoundInterest(principal: number, ratePercent: number, years: number, frequency?: JoopCompoundFrequency): JoopCompoundInterestResult;
|
|
632
|
+
fixedDeposit(principal: number, ratePercent: number, termDays: number, frequency?: JoopCompoundFrequency): JoopFixedDepositResult;
|
|
633
|
+
recurringDeposit(monthlyDeposit: number, ratePercent: number, termMonths: number): JoopRecurringDepositResult;
|
|
634
|
+
projectSavings(startBalance: number, monthlyDeposit: number, annualRatePercent: number, years: number): JoopSavingsProjection;
|
|
635
|
+
effectiveAnnualRate(nominalRatePercent: number, compoundsPerYear: number): number;
|
|
636
|
+
ruleOf72(ratePercent: number): number;
|
|
637
|
+
breakEven(fixedCost: number, pricePerUnit: number, variableCostPerUnit: number): number;
|
|
638
|
+
presentValue(futureValue: number, ratePercent: number, years: number): number;
|
|
639
|
+
futureValue(presentValue: number, ratePercent: number, years: number): number;
|
|
640
|
+
cagr(startValue: number, endValue: number, years: number): number;
|
|
641
|
+
}
|
|
642
|
+
|
|
643
|
+
type JoopCreditBand = 'exceptional' | 'very-good' | 'good' | 'fair' | 'poor';
|
|
644
|
+
type JoopCreditFactor = 'payment-history' | 'utilization' | 'age-of-credit' | 'credit-mix' | 'new-inquiries';
|
|
645
|
+
type JoopCreditTrend = 'improving' | 'declining' | 'stable';
|
|
646
|
+
type JoopCreditAlertSeverity = 'info' | 'warning' | 'critical';
|
|
647
|
+
interface JoopCreditEntry {
|
|
648
|
+
id: string;
|
|
649
|
+
score: number;
|
|
650
|
+
date: number;
|
|
651
|
+
source: string;
|
|
652
|
+
note?: string;
|
|
653
|
+
}
|
|
654
|
+
interface JoopCreditFactorScore {
|
|
655
|
+
factor: JoopCreditFactor;
|
|
656
|
+
score: number;
|
|
657
|
+
weight: number;
|
|
658
|
+
impact: 'positive' | 'negative' | 'neutral';
|
|
659
|
+
description: string;
|
|
660
|
+
}
|
|
661
|
+
interface JoopCreditAlert {
|
|
662
|
+
id: string;
|
|
663
|
+
type: string;
|
|
664
|
+
severity: JoopCreditAlertSeverity;
|
|
665
|
+
message: string;
|
|
666
|
+
date: number;
|
|
667
|
+
acknowledged: boolean;
|
|
668
|
+
}
|
|
669
|
+
interface JoopCreditReport {
|
|
670
|
+
currentScore: number | null;
|
|
671
|
+
band: JoopCreditBand | null;
|
|
672
|
+
trend: JoopCreditTrend;
|
|
673
|
+
change30d: number | null;
|
|
674
|
+
change90d: number | null;
|
|
675
|
+
entries: JoopCreditEntry[];
|
|
676
|
+
factors: JoopCreditFactorScore[];
|
|
677
|
+
alerts: JoopCreditAlert[];
|
|
678
|
+
}
|
|
679
|
+
interface JoopCreditSimulation {
|
|
680
|
+
action: string;
|
|
681
|
+
currentScore: number;
|
|
682
|
+
estimatedChange: number;
|
|
683
|
+
estimatedScore: number;
|
|
684
|
+
confidence: 'low' | 'medium' | 'high';
|
|
685
|
+
}
|
|
686
|
+
declare class JoopCreditScoreService {
|
|
687
|
+
private _entries;
|
|
688
|
+
private _factors;
|
|
689
|
+
private _alerts;
|
|
690
|
+
private _score$;
|
|
691
|
+
addEntry(score: number, source?: string, note?: string): JoopCreditEntry;
|
|
692
|
+
getCurrentScore(): number | null;
|
|
693
|
+
getHistory(limit?: number): JoopCreditEntry[];
|
|
694
|
+
getBand(score?: number): JoopCreditBand | null;
|
|
695
|
+
getTrend(): JoopCreditTrend;
|
|
696
|
+
private _changeOver;
|
|
697
|
+
setFactors(factors: JoopCreditFactorScore[]): void;
|
|
698
|
+
getFactors(): JoopCreditFactorScore[];
|
|
699
|
+
setDefaultFactors(options?: {
|
|
700
|
+
paymentHistoryScore?: number;
|
|
701
|
+
utilizationScore?: number;
|
|
702
|
+
ageScore?: number;
|
|
703
|
+
mixScore?: number;
|
|
704
|
+
inquiriesScore?: number;
|
|
705
|
+
}): void;
|
|
706
|
+
addAlert(type: string, severity: JoopCreditAlertSeverity, message: string): JoopCreditAlert;
|
|
707
|
+
acknowledgeAlert(id: string): void;
|
|
708
|
+
getAlerts(unacknowledgedOnly?: boolean): JoopCreditAlert[];
|
|
709
|
+
simulateImpact(action: string): JoopCreditSimulation;
|
|
710
|
+
getReport(): JoopCreditReport;
|
|
711
|
+
score$(): JoopObservable<number | null>;
|
|
712
|
+
}
|
|
713
|
+
|
|
714
|
+
type JoopAssetCategory = 'cash' | 'investment' | 'real-estate' | 'vehicle' | 'retirement' | 'business' | 'personal-property' | 'other-asset';
|
|
715
|
+
type JoopLiabilityCategory = 'mortgage' | 'auto-loan' | 'student-loan' | 'credit-card' | 'personal-loan' | 'business-loan' | 'other-liability';
|
|
716
|
+
interface JoopFinancialAsset {
|
|
717
|
+
id: string;
|
|
718
|
+
name: string;
|
|
719
|
+
category: JoopAssetCategory;
|
|
720
|
+
value: number;
|
|
721
|
+
currency: string;
|
|
722
|
+
notes?: string;
|
|
723
|
+
asOf: number;
|
|
724
|
+
}
|
|
725
|
+
interface JoopFinancialLiability {
|
|
726
|
+
id: string;
|
|
727
|
+
name: string;
|
|
728
|
+
category: JoopLiabilityCategory;
|
|
729
|
+
balance: number;
|
|
730
|
+
interestRate?: number;
|
|
731
|
+
currency: string;
|
|
732
|
+
notes?: string;
|
|
733
|
+
asOf: number;
|
|
734
|
+
}
|
|
735
|
+
interface JoopNetWorthSnapshot {
|
|
736
|
+
id: string;
|
|
737
|
+
date: number;
|
|
738
|
+
totalAssets: number;
|
|
739
|
+
totalLiabilities: number;
|
|
740
|
+
netWorth: number;
|
|
741
|
+
assetsByCategory: Record<string, number>;
|
|
742
|
+
liabilitiesByCategory: Record<string, number>;
|
|
743
|
+
}
|
|
744
|
+
interface JoopNetWorthTrend {
|
|
745
|
+
snapshots: JoopNetWorthSnapshot[];
|
|
746
|
+
change: number;
|
|
747
|
+
changePercent: number;
|
|
748
|
+
direction: 'up' | 'down' | 'flat';
|
|
749
|
+
}
|
|
750
|
+
declare class JoopNetWorthService {
|
|
751
|
+
private _assets;
|
|
752
|
+
private _liabilities;
|
|
753
|
+
private _snapshots;
|
|
754
|
+
private _netWorth$;
|
|
755
|
+
addAsset(data: Omit<JoopFinancialAsset, 'id'>): JoopFinancialAsset;
|
|
756
|
+
updateAsset(id: string, patch: Partial<Omit<JoopFinancialAsset, 'id'>>): JoopFinancialAsset;
|
|
757
|
+
removeAsset(id: string): void;
|
|
758
|
+
getAsset(id: string): JoopFinancialAsset | undefined;
|
|
759
|
+
getAssets(): JoopFinancialAsset[];
|
|
760
|
+
addLiability(data: Omit<JoopFinancialLiability, 'id'>): JoopFinancialLiability;
|
|
761
|
+
updateLiability(id: string, patch: Partial<Omit<JoopFinancialLiability, 'id'>>): JoopFinancialLiability;
|
|
762
|
+
removeLiability(id: string): void;
|
|
763
|
+
getLiability(id: string): JoopFinancialLiability | undefined;
|
|
764
|
+
getLiabilities(): JoopFinancialLiability[];
|
|
765
|
+
getTotalAssets(): number;
|
|
766
|
+
getTotalLiabilities(): number;
|
|
767
|
+
getNetWorth(): number;
|
|
768
|
+
getAssetsByCategory(): Record<JoopAssetCategory, number>;
|
|
769
|
+
getLiabilitiesByCategory(): Record<JoopLiabilityCategory, number>;
|
|
770
|
+
getDebtToAssetRatio(): number;
|
|
771
|
+
snapshot(): JoopNetWorthSnapshot;
|
|
772
|
+
getHistory(): JoopNetWorthSnapshot[];
|
|
773
|
+
getTrend(periods?: number): JoopNetWorthTrend;
|
|
774
|
+
netWorth$(): JoopObservable<number>;
|
|
775
|
+
private _emit;
|
|
776
|
+
private _requireAsset;
|
|
777
|
+
private _requireLiability;
|
|
778
|
+
}
|
|
779
|
+
|
|
780
|
+
type JoopCashFlowCategory = 'income' | 'expense' | 'transfer' | 'tax' | 'investment';
|
|
781
|
+
type JoopCashFlowFrequency = 'daily' | 'weekly' | 'biweekly' | 'monthly' | 'quarterly' | 'yearly';
|
|
782
|
+
type JoopCashFlowDirection = 'inflow' | 'outflow';
|
|
783
|
+
interface JoopCashFlowEntry {
|
|
784
|
+
id: string;
|
|
785
|
+
direction: JoopCashFlowDirection;
|
|
786
|
+
amount: number;
|
|
787
|
+
category: JoopCashFlowCategory;
|
|
788
|
+
description: string;
|
|
789
|
+
date: number;
|
|
790
|
+
currency: string;
|
|
791
|
+
isRecurring: boolean;
|
|
792
|
+
frequency?: JoopCashFlowFrequency;
|
|
793
|
+
endDate?: number;
|
|
794
|
+
tags?: string[];
|
|
795
|
+
}
|
|
796
|
+
interface JoopCashFlowPeriod {
|
|
797
|
+
from: number;
|
|
798
|
+
to: number;
|
|
799
|
+
totalInflow: number;
|
|
800
|
+
totalOutflow: number;
|
|
801
|
+
netCashFlow: number;
|
|
802
|
+
entries: JoopCashFlowEntry[];
|
|
803
|
+
}
|
|
804
|
+
interface JoopCashFlowForecast {
|
|
805
|
+
from: number;
|
|
806
|
+
to: number;
|
|
807
|
+
periods: JoopCashFlowPeriod[];
|
|
808
|
+
projectedInflow: number;
|
|
809
|
+
projectedOutflow: number;
|
|
810
|
+
projectedNet: number;
|
|
811
|
+
}
|
|
812
|
+
interface JoopBurnRateResult {
|
|
813
|
+
dailyBurnRate: number;
|
|
814
|
+
monthlyBurnRate: number;
|
|
815
|
+
periodDays: number;
|
|
816
|
+
}
|
|
817
|
+
interface JoopRunwayResult {
|
|
818
|
+
runwayDays: number;
|
|
819
|
+
runwayMonths: number;
|
|
820
|
+
currentBalance: number;
|
|
821
|
+
monthlyBurnRate: number;
|
|
822
|
+
}
|
|
823
|
+
interface JoopCategoryBreakdown {
|
|
824
|
+
category: JoopCashFlowCategory;
|
|
825
|
+
inflow: number;
|
|
826
|
+
outflow: number;
|
|
827
|
+
net: number;
|
|
828
|
+
}
|
|
829
|
+
declare class JoopCashFlowService {
|
|
830
|
+
private _entries;
|
|
831
|
+
private _netCash$;
|
|
832
|
+
addEntry(direction: JoopCashFlowDirection, amount: number, category: JoopCashFlowCategory, description: string, date: number, opts?: {
|
|
833
|
+
currency?: string;
|
|
834
|
+
isRecurring?: boolean;
|
|
835
|
+
frequency?: JoopCashFlowFrequency;
|
|
836
|
+
endDate?: number;
|
|
837
|
+
tags?: string[];
|
|
838
|
+
}): JoopCashFlowEntry;
|
|
839
|
+
updateEntry(id: string, patch: Partial<Omit<JoopCashFlowEntry, 'id'>>): JoopCashFlowEntry;
|
|
840
|
+
removeEntry(id: string): void;
|
|
841
|
+
getEntry(id: string): JoopCashFlowEntry | undefined;
|
|
842
|
+
getEntries(from?: number, to?: number): JoopCashFlowEntry[];
|
|
843
|
+
getInflow(from: number, to: number): number;
|
|
844
|
+
getOutflow(from: number, to: number): number;
|
|
845
|
+
getNetCashFlow(from: number, to: number): number;
|
|
846
|
+
getCategoryBreakdown(from: number, to: number): JoopCategoryBreakdown[];
|
|
847
|
+
getBurnRate(periodDays?: number): JoopBurnRateResult;
|
|
848
|
+
getRunway(currentBalance: number, periodDays?: number): JoopRunwayResult;
|
|
849
|
+
forecast(from: number, to: number, granularityDays?: number): JoopCashFlowForecast;
|
|
850
|
+
cashFlow$(): JoopBehaviorSubject<number>;
|
|
851
|
+
private _getEntry;
|
|
852
|
+
private _emit;
|
|
853
|
+
/** Expand recurring entries into concrete occurrences within [from, to]. */
|
|
854
|
+
private _expandRecurring;
|
|
855
|
+
}
|
|
856
|
+
|
|
857
|
+
interface JoopJwtHeader {
|
|
858
|
+
alg: string;
|
|
859
|
+
typ?: string;
|
|
860
|
+
kid?: string;
|
|
861
|
+
[key: string]: unknown;
|
|
862
|
+
}
|
|
863
|
+
interface JoopJwtClaims {
|
|
864
|
+
sub?: string;
|
|
865
|
+
iss?: string;
|
|
866
|
+
aud?: string | string[];
|
|
867
|
+
exp?: number;
|
|
868
|
+
iat?: number;
|
|
869
|
+
nbf?: number;
|
|
870
|
+
jti?: string;
|
|
871
|
+
[key: string]: unknown;
|
|
872
|
+
}
|
|
873
|
+
interface JoopJwtParseResult {
|
|
874
|
+
header: JoopJwtHeader;
|
|
875
|
+
claims: JoopJwtClaims;
|
|
876
|
+
signature: string;
|
|
877
|
+
raw: string;
|
|
878
|
+
}
|
|
879
|
+
interface JoopJwtValidationResult {
|
|
880
|
+
valid: boolean;
|
|
881
|
+
expired: boolean;
|
|
882
|
+
claims?: JoopJwtClaims;
|
|
883
|
+
reason?: string;
|
|
884
|
+
}
|
|
885
|
+
interface JoopJwtConfig {
|
|
886
|
+
issuer?: string;
|
|
887
|
+
audience?: string | string[];
|
|
888
|
+
clockSkewMs?: number;
|
|
889
|
+
}
|
|
890
|
+
interface JoopJwtRefreshConfig {
|
|
891
|
+
refreshThresholdMs?: number;
|
|
892
|
+
refreshFn: (token: string) => Promise<{
|
|
893
|
+
accessToken: string;
|
|
894
|
+
refreshToken?: string;
|
|
895
|
+
}>;
|
|
896
|
+
onRefreshed?: (tokens: {
|
|
897
|
+
accessToken: string;
|
|
898
|
+
refreshToken?: string;
|
|
899
|
+
}) => void;
|
|
900
|
+
onError?: (err: Error) => void;
|
|
901
|
+
}
|
|
902
|
+
declare class JoopJwtService {
|
|
903
|
+
private readonly clockSkewMs;
|
|
904
|
+
private readonly issuer?;
|
|
905
|
+
private readonly audience?;
|
|
906
|
+
private _refreshTimer?;
|
|
907
|
+
constructor(config?: JoopJwtConfig);
|
|
908
|
+
parse(token: string): JoopJwtParseResult;
|
|
909
|
+
validate(token: string): JoopJwtValidationResult;
|
|
910
|
+
isExpired(token: string): boolean;
|
|
911
|
+
getExpiry(token: string): Date | null;
|
|
912
|
+
getTimeToExpiry(token: string): number;
|
|
913
|
+
getClaim<T>(token: string, key: string): T | undefined;
|
|
914
|
+
startAutoRefresh(token: string, config: JoopJwtRefreshConfig): (newToken: string) => void;
|
|
915
|
+
stopAutoRefresh(): void;
|
|
916
|
+
static decode(token: string): JoopJwtParseResult;
|
|
917
|
+
}
|
|
918
|
+
|
|
919
|
+
interface JoopEmiScheduleEntry {
|
|
920
|
+
month: number;
|
|
921
|
+
instalment: number;
|
|
922
|
+
principal: number;
|
|
923
|
+
interest: number;
|
|
924
|
+
balance: number;
|
|
925
|
+
}
|
|
926
|
+
interface JoopEmiResult {
|
|
927
|
+
monthlyInstalment: number;
|
|
928
|
+
totalAmount: number;
|
|
929
|
+
totalInterest: number;
|
|
930
|
+
effectiveAnnualRate: number;
|
|
931
|
+
schedule: JoopEmiScheduleEntry[];
|
|
932
|
+
}
|
|
933
|
+
interface JoopPrepaymentResult {
|
|
934
|
+
mode: 'reduce-tenure' | 'reduce-emi';
|
|
935
|
+
savedInterest: number;
|
|
936
|
+
newTenureMonths?: number;
|
|
937
|
+
newMonthlyInstalment?: number;
|
|
938
|
+
originalTotalInterest: number;
|
|
939
|
+
newTotalInterest: number;
|
|
940
|
+
}
|
|
941
|
+
interface JoopAffordabilityResult {
|
|
942
|
+
maxLoan: number;
|
|
943
|
+
maxEmi: number;
|
|
944
|
+
dtiRatio: number;
|
|
945
|
+
}
|
|
946
|
+
declare class JoopEmiCalculator {
|
|
947
|
+
/** Reducing-balance EMI (standard bank method). */
|
|
948
|
+
calculate(principal: number, annualRate: number, tenureMonths: number): JoopEmiResult;
|
|
949
|
+
/** Flat-rate EMI — interest computed on original principal throughout. */
|
|
950
|
+
calculateFlat(principal: number, annualRate: number, tenureMonths: number): JoopEmiResult;
|
|
951
|
+
/** Impact of a lump-sum prepayment — either shorten tenure or reduce EMI. */
|
|
952
|
+
prepayment(principal: number, annualRate: number, tenureMonths: number, prepayAmount: number, prepayAtMonth: number, mode: 'reduce-tenure' | 'reduce-emi'): JoopPrepaymentResult;
|
|
953
|
+
/** Maximum loan a borrower can afford given income, obligations, and a DTI cap. */
|
|
954
|
+
affordability(monthlyIncome: number, existingObligations: number, annualRate: number, tenureMonths: number, maxDtiRatio?: number): JoopAffordabilityResult;
|
|
955
|
+
}
|
|
956
|
+
|
|
957
|
+
type JoopTransactionCategory = 'groceries' | 'utilities' | 'salary' | 'transfer' | 'entertainment' | 'dining' | 'travel' | 'healthcare' | 'education' | 'shopping' | 'fuel' | 'insurance' | 'emi' | 'tax' | 'fees' | 'atm' | 'other';
|
|
958
|
+
interface JoopTransaction {
|
|
959
|
+
description: string;
|
|
960
|
+
amount: number;
|
|
961
|
+
type?: 'credit' | 'debit';
|
|
962
|
+
merchantCode?: string;
|
|
963
|
+
}
|
|
964
|
+
interface JoopCategoryRule {
|
|
965
|
+
category: JoopTransactionCategory;
|
|
966
|
+
keywords?: string[];
|
|
967
|
+
patterns?: RegExp[];
|
|
968
|
+
merchantCodes?: string[];
|
|
969
|
+
amountRange?: {
|
|
970
|
+
min?: number;
|
|
971
|
+
max?: number;
|
|
972
|
+
};
|
|
973
|
+
type?: 'credit' | 'debit';
|
|
974
|
+
priority?: number;
|
|
975
|
+
label?: string;
|
|
976
|
+
}
|
|
977
|
+
interface JoopCategorizationResult {
|
|
978
|
+
category: JoopTransactionCategory;
|
|
979
|
+
confidence: number;
|
|
980
|
+
matchedRule?: string;
|
|
981
|
+
}
|
|
982
|
+
declare class JoopTransactionCategorizer {
|
|
983
|
+
private rules;
|
|
984
|
+
constructor(customRules?: JoopCategoryRule[]);
|
|
985
|
+
categorize(tx: JoopTransaction): JoopCategorizationResult;
|
|
986
|
+
categorizeBatch(txs: JoopTransaction[]): JoopCategorizationResult[];
|
|
987
|
+
addRule(rule: JoopCategoryRule): void;
|
|
988
|
+
removeRule(label: string): void;
|
|
989
|
+
getRules(): JoopCategoryRule[];
|
|
990
|
+
getCategories(): JoopTransactionCategory[];
|
|
991
|
+
}
|
|
992
|
+
|
|
993
|
+
type JoopEventMap = Record<string, any>;
|
|
994
|
+
interface JoopEventBusOptions {
|
|
995
|
+
replayLast?: boolean;
|
|
996
|
+
maxHistory?: number;
|
|
997
|
+
maxListeners?: number;
|
|
998
|
+
}
|
|
999
|
+
interface JoopEventMeta {
|
|
1000
|
+
event: string;
|
|
1001
|
+
timestamp: number;
|
|
1002
|
+
id: string;
|
|
1003
|
+
}
|
|
1004
|
+
type JoopEventHandler<T = unknown> = (payload: T, meta: JoopEventMeta) => void;
|
|
1005
|
+
type JoopAnyHandler = (event: string, payload: unknown, meta: JoopEventMeta) => void;
|
|
1006
|
+
interface JoopEventHistoryEntry {
|
|
1007
|
+
event: string;
|
|
1008
|
+
payload: unknown;
|
|
1009
|
+
meta: JoopEventMeta;
|
|
1010
|
+
}
|
|
1011
|
+
declare class JoopEventBus<TMap extends JoopEventMap = JoopEventMap> {
|
|
1012
|
+
private readonly listeners;
|
|
1013
|
+
private readonly onceMarked;
|
|
1014
|
+
private readonly wildcards;
|
|
1015
|
+
private readonly anyHandlers;
|
|
1016
|
+
private readonly lastEmitted;
|
|
1017
|
+
private readonly _history;
|
|
1018
|
+
private readonly opts;
|
|
1019
|
+
constructor(options?: JoopEventBusOptions);
|
|
1020
|
+
on<K extends keyof TMap>(event: K, handler: JoopEventHandler<TMap[K]>): () => void;
|
|
1021
|
+
once<K extends keyof TMap>(event: K, handler: JoopEventHandler<TMap[K]>): () => void;
|
|
1022
|
+
off<K extends keyof TMap>(event: K, handler: JoopEventHandler<TMap[K]>): void;
|
|
1023
|
+
emit<K extends keyof TMap>(event: K, payload: TMap[K]): void;
|
|
1024
|
+
onWildcard(pattern: string | RegExp, handler: JoopEventHandler<unknown>): () => void;
|
|
1025
|
+
onAny(handler: JoopAnyHandler): () => void;
|
|
1026
|
+
waitFor<K extends keyof TMap>(event: K, timeoutMs?: number): Promise<TMap[K]>;
|
|
1027
|
+
history(event?: keyof TMap, limit?: number): JoopEventHistoryEntry[];
|
|
1028
|
+
listenerCount(event?: keyof TMap): number;
|
|
1029
|
+
clear(event?: keyof TMap): void;
|
|
1030
|
+
}
|
|
1031
|
+
declare const joopEventBus: JoopEventBus<JoopEventMap>;
|
|
1032
|
+
|
|
1033
|
+
type JoopKycStatus = 'unverified' | 'started' | 'docs_submitted' | 'under_review' | 'additional_info_required' | 'verified' | 'rejected' | 'expired';
|
|
1034
|
+
type JoopKycDocumentType = 'passport' | 'national_id' | 'driving_license' | 'utility_bill' | 'bank_statement' | 'selfie' | 'proof_of_address';
|
|
1035
|
+
interface JoopKycDocument {
|
|
1036
|
+
type: JoopKycDocumentType;
|
|
1037
|
+
status: 'pending' | 'accepted' | 'rejected';
|
|
1038
|
+
submittedAt: number;
|
|
1039
|
+
url?: string;
|
|
1040
|
+
rejectionReason?: string;
|
|
1041
|
+
}
|
|
1042
|
+
interface JoopKycContext {
|
|
1043
|
+
userId: string;
|
|
1044
|
+
status: JoopKycStatus;
|
|
1045
|
+
documents: JoopKycDocument[];
|
|
1046
|
+
reviewNotes: string[];
|
|
1047
|
+
startedAt?: number;
|
|
1048
|
+
submittedAt?: number;
|
|
1049
|
+
completedAt?: number;
|
|
1050
|
+
rejectionReason?: string;
|
|
1051
|
+
metadata: Record<string, unknown>;
|
|
1052
|
+
}
|
|
1053
|
+
interface JoopKycHistoryEntry {
|
|
1054
|
+
from: JoopKycStatus;
|
|
1055
|
+
to: JoopKycStatus;
|
|
1056
|
+
event: string;
|
|
1057
|
+
timestamp: number;
|
|
1058
|
+
}
|
|
1059
|
+
type TransitionFn = (from: JoopKycStatus, to: JoopKycStatus, ctx: JoopKycContext) => void;
|
|
1060
|
+
type EnterFn = (ctx: JoopKycContext) => void;
|
|
1061
|
+
declare class JoopKycStateMachine {
|
|
1062
|
+
private ctx;
|
|
1063
|
+
private readonly _history;
|
|
1064
|
+
private readonly transitionListeners;
|
|
1065
|
+
private readonly enterListeners;
|
|
1066
|
+
constructor(userId: string, initialStatus?: JoopKycStatus);
|
|
1067
|
+
private transition;
|
|
1068
|
+
start(): Promise<void>;
|
|
1069
|
+
submitDocuments(docs: Omit<JoopKycDocument, 'submittedAt'>[]): Promise<void>;
|
|
1070
|
+
beginReview(): Promise<void>;
|
|
1071
|
+
requestMoreInfo(reason: string): Promise<void>;
|
|
1072
|
+
approve(): Promise<void>;
|
|
1073
|
+
reject(reason: string): Promise<void>;
|
|
1074
|
+
expire(): Promise<void>;
|
|
1075
|
+
resubmit(docs: Omit<JoopKycDocument, 'submittedAt'>[]): Promise<void>;
|
|
1076
|
+
restart(): Promise<void>;
|
|
1077
|
+
getContext(): JoopKycContext;
|
|
1078
|
+
getStatus(): JoopKycStatus;
|
|
1079
|
+
canTransitionTo(status: JoopKycStatus): boolean;
|
|
1080
|
+
getAvailableTransitions(): string[];
|
|
1081
|
+
getHistory(): readonly JoopKycHistoryEntry[];
|
|
1082
|
+
onTransition(fn: TransitionFn): () => void;
|
|
1083
|
+
onEnter(status: JoopKycStatus, fn: EnterFn): () => void;
|
|
1084
|
+
setMetadata(key: string, value: unknown): void;
|
|
1085
|
+
serialize(): string;
|
|
1086
|
+
static deserialize(data: string): JoopKycStateMachine;
|
|
1087
|
+
}
|
|
1088
|
+
|
|
1089
|
+
type JoopAmlRuleType = 'velocity' | 'threshold' | 'structuring' | 'geographic' | 'watchlist' | 'pattern';
|
|
1090
|
+
type JoopAmlAlertSeverity = 'low' | 'medium' | 'high' | 'critical';
|
|
1091
|
+
type JoopAmlDisposition = 'true-positive' | 'false-positive' | 'pending';
|
|
1092
|
+
type JoopAmlTxnType = 'credit' | 'debit';
|
|
1093
|
+
interface JoopAmlTransaction {
|
|
1094
|
+
id: string;
|
|
1095
|
+
entityId: string;
|
|
1096
|
+
entityName?: string;
|
|
1097
|
+
amount: number;
|
|
1098
|
+
currency: string;
|
|
1099
|
+
type: JoopAmlTxnType;
|
|
1100
|
+
country?: string;
|
|
1101
|
+
date: number;
|
|
1102
|
+
description?: string;
|
|
1103
|
+
}
|
|
1104
|
+
interface JoopAmlRule {
|
|
1105
|
+
id: string;
|
|
1106
|
+
name: string;
|
|
1107
|
+
type: JoopAmlRuleType;
|
|
1108
|
+
enabled: boolean;
|
|
1109
|
+
severity: JoopAmlAlertSeverity;
|
|
1110
|
+
params: Record<string, unknown>;
|
|
1111
|
+
}
|
|
1112
|
+
interface JoopAmlAlert {
|
|
1113
|
+
id: string;
|
|
1114
|
+
ruleId: string;
|
|
1115
|
+
ruleName: string;
|
|
1116
|
+
severity: JoopAmlAlertSeverity;
|
|
1117
|
+
entityId: string;
|
|
1118
|
+
transactionIds: string[];
|
|
1119
|
+
description: string;
|
|
1120
|
+
raisedAt: number;
|
|
1121
|
+
disposition: JoopAmlDisposition;
|
|
1122
|
+
reviewedAt?: number;
|
|
1123
|
+
reviewedBy?: string;
|
|
1124
|
+
}
|
|
1125
|
+
interface JoopAmlStats {
|
|
1126
|
+
total: number;
|
|
1127
|
+
pending: number;
|
|
1128
|
+
truePositive: number;
|
|
1129
|
+
falsePositive: number;
|
|
1130
|
+
bySeverity: Record<JoopAmlAlertSeverity, number>;
|
|
1131
|
+
byRule: Record<string, number>;
|
|
1132
|
+
}
|
|
1133
|
+
declare class JoopAmlService {
|
|
1134
|
+
private _rules;
|
|
1135
|
+
private _alerts;
|
|
1136
|
+
private _txnHistory;
|
|
1137
|
+
private _watchlist;
|
|
1138
|
+
private _highRisk;
|
|
1139
|
+
private _alert$;
|
|
1140
|
+
constructor();
|
|
1141
|
+
addRule(data: Omit<JoopAmlRule, 'id'>): JoopAmlRule;
|
|
1142
|
+
enableRule(id: string): void;
|
|
1143
|
+
disableRule(id: string): void;
|
|
1144
|
+
getRules(): JoopAmlRule[];
|
|
1145
|
+
addToWatchlist(name: string): void;
|
|
1146
|
+
removeFromWatchlist(name: string): void;
|
|
1147
|
+
isOnWatchlist(name: string): boolean;
|
|
1148
|
+
addHighRiskCountry(code: string): void;
|
|
1149
|
+
removeHighRiskCountry(code: string): void;
|
|
1150
|
+
isHighRisk(countryCode: string): boolean;
|
|
1151
|
+
screenTransaction(txn: JoopAmlTransaction): JoopAmlAlert[];
|
|
1152
|
+
getAlerts(disposition?: JoopAmlDisposition): JoopAmlAlert[];
|
|
1153
|
+
getEntityAlerts(entityId: string): JoopAmlAlert[];
|
|
1154
|
+
reviewAlert(id: string, disposition: 'true-positive' | 'false-positive', reviewedBy?: string): JoopAmlAlert;
|
|
1155
|
+
getStats(): JoopAmlStats;
|
|
1156
|
+
alert$(): JoopObservable<JoopAmlAlert>;
|
|
1157
|
+
private _applyRule;
|
|
1158
|
+
private _makeAlert;
|
|
1159
|
+
private _getRule;
|
|
1160
|
+
}
|
|
1161
|
+
|
|
1162
|
+
type JoopFundCategory = 'equity' | 'debt' | 'hybrid' | 'money-market' | 'index' | 'etf';
|
|
1163
|
+
type JoopSipStatus = 'active' | 'paused' | 'cancelled' | 'completed';
|
|
1164
|
+
type JoopFundTxnType = 'invest' | 'redeem' | 'sip' | 'dividend';
|
|
1165
|
+
interface JoopMutualFund {
|
|
1166
|
+
symbol: string;
|
|
1167
|
+
name: string;
|
|
1168
|
+
category: JoopFundCategory;
|
|
1169
|
+
currentNav: number;
|
|
1170
|
+
currency: string;
|
|
1171
|
+
navUpdatedAt: number;
|
|
1172
|
+
isinCode?: string;
|
|
1173
|
+
expenseRatio?: number;
|
|
1174
|
+
}
|
|
1175
|
+
interface JoopFundHolding {
|
|
1176
|
+
id: string;
|
|
1177
|
+
symbol: string;
|
|
1178
|
+
investorId: string;
|
|
1179
|
+
units: number;
|
|
1180
|
+
averageNav: number;
|
|
1181
|
+
totalInvested: number;
|
|
1182
|
+
currentValue: number;
|
|
1183
|
+
unrealizedGain: number;
|
|
1184
|
+
returnPercent: number;
|
|
1185
|
+
createdAt: number;
|
|
1186
|
+
lastUpdatedAt: number;
|
|
1187
|
+
}
|
|
1188
|
+
interface JoopSip {
|
|
1189
|
+
id: string;
|
|
1190
|
+
symbol: string;
|
|
1191
|
+
investorId: string;
|
|
1192
|
+
amount: number;
|
|
1193
|
+
currency: string;
|
|
1194
|
+
frequency: 'weekly' | 'monthly' | 'quarterly';
|
|
1195
|
+
startDate: number;
|
|
1196
|
+
nextExecutionDate: number;
|
|
1197
|
+
endDate?: number;
|
|
1198
|
+
status: JoopSipStatus;
|
|
1199
|
+
executionCount: number;
|
|
1200
|
+
totalInvested: number;
|
|
1201
|
+
}
|
|
1202
|
+
interface JoopFundTransaction {
|
|
1203
|
+
id: string;
|
|
1204
|
+
holdingId: string;
|
|
1205
|
+
symbol: string;
|
|
1206
|
+
investorId: string;
|
|
1207
|
+
type: JoopFundTxnType;
|
|
1208
|
+
units: number;
|
|
1209
|
+
nav: number;
|
|
1210
|
+
amount: number;
|
|
1211
|
+
executedAt: number;
|
|
1212
|
+
sipId?: string;
|
|
1213
|
+
}
|
|
1214
|
+
interface JoopFundPortfolioSummary {
|
|
1215
|
+
investorId: string;
|
|
1216
|
+
totalInvested: number;
|
|
1217
|
+
currentValue: number;
|
|
1218
|
+
totalUnrealizedGain: number;
|
|
1219
|
+
totalReturnPercent: number;
|
|
1220
|
+
holdings: JoopFundHolding[];
|
|
1221
|
+
}
|
|
1222
|
+
declare class JoopMutualFundService {
|
|
1223
|
+
private _funds;
|
|
1224
|
+
private _holdings;
|
|
1225
|
+
private _sips;
|
|
1226
|
+
private _txns;
|
|
1227
|
+
private _change$;
|
|
1228
|
+
addFund(symbol: string, name: string, category: JoopFundCategory, currentNav: number, opts?: {
|
|
1229
|
+
currency?: string;
|
|
1230
|
+
isinCode?: string;
|
|
1231
|
+
expenseRatio?: number;
|
|
1232
|
+
}): JoopMutualFund;
|
|
1233
|
+
updateNav(symbol: string, newNav: number): JoopMutualFund;
|
|
1234
|
+
getFund(symbol: string): JoopMutualFund | undefined;
|
|
1235
|
+
getFunds(): JoopMutualFund[];
|
|
1236
|
+
invest(symbol: string, investorId: string, amount: number, opts?: {
|
|
1237
|
+
sipId?: string;
|
|
1238
|
+
}): JoopFundHolding;
|
|
1239
|
+
redeem(holdingId: string, units: number): JoopFundTransaction;
|
|
1240
|
+
createSip(symbol: string, investorId: string, amount: number, frequency: JoopSip['frequency'], startDate: number, opts?: {
|
|
1241
|
+
endDate?: number;
|
|
1242
|
+
}): JoopSip;
|
|
1243
|
+
executeSip(sipId: string): JoopFundHolding;
|
|
1244
|
+
pauseSip(sipId: string): JoopSip;
|
|
1245
|
+
resumeSip(sipId: string): JoopSip;
|
|
1246
|
+
cancelSip(sipId: string): JoopSip;
|
|
1247
|
+
getSip(id: string): JoopSip | undefined;
|
|
1248
|
+
getSipsByInvestor(investorId: string): JoopSip[];
|
|
1249
|
+
getHolding(id: string): JoopFundHolding | undefined;
|
|
1250
|
+
getHoldingsByInvestor(investorId: string): JoopFundHolding[];
|
|
1251
|
+
getPortfolioSummary(investorId: string): JoopFundPortfolioSummary;
|
|
1252
|
+
getTransactions(investorId?: string): JoopFundTransaction[];
|
|
1253
|
+
change$(): JoopSubject<JoopFundHolding>;
|
|
1254
|
+
private _getFund;
|
|
1255
|
+
private _getHolding;
|
|
1256
|
+
private _getSip;
|
|
1257
|
+
private _findHolding;
|
|
1258
|
+
private _refreshHolding;
|
|
1259
|
+
private _recordTxn;
|
|
1260
|
+
private _setSipStatus;
|
|
1261
|
+
private _setSipStat;
|
|
1262
|
+
}
|
|
1263
|
+
|
|
1264
|
+
type JoopSanctionsList = 'ofac' | 'un' | 'eu' | 'uk' | 'custom';
|
|
1265
|
+
type JoopSanctionEntityType = 'individual' | 'entity' | 'vessel' | 'aircraft';
|
|
1266
|
+
type JoopSanctionMatchType = 'exact' | 'alias' | 'fuzzy';
|
|
1267
|
+
interface JoopSanctionEntry {
|
|
1268
|
+
id: string;
|
|
1269
|
+
list: JoopSanctionsList;
|
|
1270
|
+
name: string;
|
|
1271
|
+
normalizedName: string;
|
|
1272
|
+
entityType: JoopSanctionEntityType;
|
|
1273
|
+
country?: string;
|
|
1274
|
+
aliases: string[];
|
|
1275
|
+
normalizedAliases: string[];
|
|
1276
|
+
reference?: string;
|
|
1277
|
+
addedAt: number;
|
|
1278
|
+
notes?: string;
|
|
1279
|
+
}
|
|
1280
|
+
interface JoopSanctionHit {
|
|
1281
|
+
entryId: string;
|
|
1282
|
+
list: JoopSanctionsList;
|
|
1283
|
+
matchedName: string;
|
|
1284
|
+
matchType: JoopSanctionMatchType;
|
|
1285
|
+
score: number;
|
|
1286
|
+
entry: JoopSanctionEntry;
|
|
1287
|
+
}
|
|
1288
|
+
interface JoopScreenResult {
|
|
1289
|
+
id: string;
|
|
1290
|
+
screenedName: string;
|
|
1291
|
+
normalizedInput: string;
|
|
1292
|
+
screenedAt: number;
|
|
1293
|
+
hits: JoopSanctionHit[];
|
|
1294
|
+
isClear: boolean;
|
|
1295
|
+
threshold: number;
|
|
1296
|
+
}
|
|
1297
|
+
interface JoopScreeningStats {
|
|
1298
|
+
totalEntries: number;
|
|
1299
|
+
entriesByList: Record<string, number>;
|
|
1300
|
+
totalScreened: number;
|
|
1301
|
+
totalHits: number;
|
|
1302
|
+
}
|
|
1303
|
+
declare class JoopSanctionsScreeningService {
|
|
1304
|
+
private _entries;
|
|
1305
|
+
private _results;
|
|
1306
|
+
private _disabledLists;
|
|
1307
|
+
private _hit$;
|
|
1308
|
+
addEntry(list: JoopSanctionsList, name: string, entityType: JoopSanctionEntityType, opts?: {
|
|
1309
|
+
country?: string;
|
|
1310
|
+
aliases?: string[];
|
|
1311
|
+
reference?: string;
|
|
1312
|
+
notes?: string;
|
|
1313
|
+
}): JoopSanctionEntry;
|
|
1314
|
+
addBulk(entries: Omit<Parameters<JoopSanctionsScreeningService['addEntry']>[0 | 1 | 2 | 3], never>[]): JoopSanctionEntry[];
|
|
1315
|
+
removeEntry(id: string): void;
|
|
1316
|
+
updateEntry(id: string, patch: Partial<Pick<JoopSanctionEntry, 'name' | 'aliases' | 'country' | 'notes'>>): JoopSanctionEntry;
|
|
1317
|
+
getEntries(list?: JoopSanctionsList): JoopSanctionEntry[];
|
|
1318
|
+
disableList(list: JoopSanctionsList): void;
|
|
1319
|
+
enableList(list: JoopSanctionsList): void;
|
|
1320
|
+
isListEnabled(list: JoopSanctionsList): boolean;
|
|
1321
|
+
screen(name: string, opts?: {
|
|
1322
|
+
threshold?: number;
|
|
1323
|
+
lists?: JoopSanctionsList[];
|
|
1324
|
+
}): JoopScreenResult;
|
|
1325
|
+
screenBatch(names: string[], opts?: {
|
|
1326
|
+
threshold?: number;
|
|
1327
|
+
lists?: JoopSanctionsList[];
|
|
1328
|
+
}): JoopScreenResult[];
|
|
1329
|
+
getResult(id: string): JoopScreenResult | undefined;
|
|
1330
|
+
getResults(hitOnly?: boolean): JoopScreenResult[];
|
|
1331
|
+
isClear(resultId: string): boolean;
|
|
1332
|
+
getStats(): JoopScreeningStats;
|
|
1333
|
+
hit$(): JoopSubject<JoopScreenResult>;
|
|
1334
|
+
}
|
|
1335
|
+
|
|
1336
|
+
export { DECRYPTION_FAILED, DEFAULT_REQUEST_TIMEOUT, DEFAULT_SESSION_TIMEOUT, DEFAULT_SESSION_WAIT_TIMEOUT, type JoopAffordabilityResult, type JoopAmlAlert, type JoopAmlAlertSeverity, type JoopAmlDisposition, type JoopAmlRule, type JoopAmlRuleType, JoopAmlService, type JoopAmlStats, type JoopAmlTransaction, type JoopAmlTxnType, type JoopAnyHandler, type JoopAssetCategory, type JoopAssetType, type JoopAutoDebitFrequency, JoopBehaviorSubject, type JoopBudgetCategory, type JoopBudgetEntry, type JoopBudgetPeriod, JoopBudgetService, type JoopBudgetStatus, type JoopBudgetSummary, type JoopBurnRateResult, type JoopCapitalGainsTaxResult, type JoopCashFlowCategory, type JoopCashFlowDirection, type JoopCashFlowEntry, type JoopCashFlowForecast, type JoopCashFlowFrequency, type JoopCashFlowPeriod, JoopCashFlowService, type JoopCategorizationResult, type JoopCategoryBreakdown, type JoopCategoryRule, type JoopCompoundFrequency, type JoopCompoundInterestResult, type JoopConversionResult, type JoopCreditAlert, type JoopCreditAlertSeverity, type JoopCreditBand, type JoopCreditEntry, type JoopCreditFactor, type JoopCreditFactorScore, type JoopCreditReport, type JoopCreditScoreRating, JoopCreditScoreService, type JoopCreditSimulation, type JoopCreditTrend, JoopCurrencyExchangeService, type JoopEmiBreakdown, JoopEmiCalculator, type JoopEmiResult, type JoopEmiScheduleEntry, type JoopEncryptedResponse, JoopEventBus, type JoopEventBusOptions, type JoopEventHandler, type JoopEventHistoryEntry, type JoopEventMap, type JoopEventMeta, type JoopExchangeRate, type JoopExchangeRateProvider, type JoopFinancialAsset, type JoopFinancialLiability, type JoopFixedDepositResult, type JoopFundCategory, type JoopFundHolding, type JoopFundPortfolioSummary, type JoopFundTransaction, type JoopFundTxnType, type JoopGoalStatus, type JoopGstResult, type JoopHolding, type JoopHoldingPerformance, type JoopIncomeTaxResult, JoopInterestCalculatorService, type JoopJwtClaims, type JoopJwtConfig, type JoopJwtHeader, type JoopJwtParseResult, type JoopJwtRefreshConfig, JoopJwtService, type JoopJwtValidationResult, type JoopKycContext, type JoopKycDocument, type JoopKycDocumentType, type JoopKycHistoryEntry, JoopKycStateMachine, type JoopKycStatus, type JoopLiabilityCategory, type JoopLoanApplicant, type JoopLoanEligibilityResult, JoopLoanEligibilityService, type JoopLoanParams, type JoopLoanProduct, type JoopLoanType, type JoopLoyaltyEarnRule, JoopLoyaltyService, type JoopLoyaltySummary, type JoopLoyaltyTier, type JoopLoyaltyTierDef, type JoopLoyaltyTransaction, type JoopLoyaltyTxnType, type JoopMutualFund, JoopMutualFundService, JoopNetWorthService, type JoopNetWorthSnapshot, type JoopNetWorthTrend, JoopObservable, JoopPortfolioService, type JoopPortfolioSummary, type JoopPrepaymentResult, type JoopRecurringDepositResult, type JoopRunwayResult, type JoopSanctionEntityType, type JoopSanctionEntry, type JoopSanctionHit, type JoopSanctionMatchType, type JoopSanctionsList, JoopSanctionsScreeningService, type JoopSavingsGoal, JoopSavingsGoalService, type JoopSavingsProgress, type JoopSavingsProjection, type JoopSavingsProjectionEntry, type JoopSavingsTransaction, type JoopScreenResult, type JoopScreeningStats, type JoopSimpleInterestResult, type JoopSip, type JoopSipStatus, JoopSubject, type JoopTaxBracket, JoopTaxBrackets, JoopTaxCalculatorService, type JoopTaxDeduction, type JoopTaxSummary, type JoopTransaction, JoopTransactionCategorizer, type JoopTransactionCategory, PAGE_TOKEN_KEY, SESSION_STORAGE_KEY, joopEventBus };
|