@brightchain/brightchain-lib 0.30.1 → 0.31.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/README.md +34 -5
- package/package.json +4 -4
- package/src/browser.d.ts +7 -0
- package/src/browser.d.ts.map +1 -1
- package/src/browser.js +21 -1
- package/src/browser.js.map +1 -1
- package/src/lib/asset/assetAccount.d.ts +66 -0
- package/src/lib/asset/assetAccount.d.ts.map +1 -0
- package/src/lib/asset/assetAccount.js +192 -0
- package/src/lib/asset/assetAccount.js.map +1 -0
- package/src/lib/asset/formatAssetAmount.d.ts +30 -0
- package/src/lib/asset/formatAssetAmount.d.ts.map +1 -0
- package/src/lib/asset/formatAssetAmount.js +54 -0
- package/src/lib/asset/formatAssetAmount.js.map +1 -0
- package/src/lib/asset/index.d.ts +11 -0
- package/src/lib/asset/index.d.ts.map +1 -0
- package/src/lib/asset/index.js +14 -0
- package/src/lib/asset/index.js.map +1 -0
- package/src/lib/asset/jouleConstants.d.ts +21 -0
- package/src/lib/asset/jouleConstants.d.ts.map +1 -0
- package/src/lib/asset/jouleConstants.js +24 -0
- package/src/lib/asset/jouleConstants.js.map +1 -0
- package/src/lib/asset/microunits.d.ts +19 -0
- package/src/lib/asset/microunits.d.ts.map +1 -0
- package/src/lib/asset/microunits.js +36 -0
- package/src/lib/asset/microunits.js.map +1 -0
- package/src/lib/constants.d.ts +3 -1
- package/src/lib/constants.d.ts.map +1 -1
- package/src/lib/constants.js +23 -1
- package/src/lib/constants.js.map +1 -1
- package/src/lib/db/driverBackedHeadRegistry.d.ts +42 -0
- package/src/lib/db/driverBackedHeadRegistry.d.ts.map +1 -0
- package/src/lib/db/driverBackedHeadRegistry.js +146 -0
- package/src/lib/db/driverBackedHeadRegistry.js.map +1 -0
- package/src/lib/db/headRegistryGossipTransport.d.ts +74 -0
- package/src/lib/db/headRegistryGossipTransport.d.ts.map +1 -0
- package/src/lib/db/headRegistryGossipTransport.js +153 -0
- package/src/lib/db/headRegistryGossipTransport.js.map +1 -0
- package/src/lib/db/inMemoryHeadRegistry.d.ts +9 -0
- package/src/lib/db/inMemoryHeadRegistry.d.ts.map +1 -1
- package/src/lib/db/inMemoryHeadRegistry.js +48 -0
- package/src/lib/db/inMemoryHeadRegistry.js.map +1 -1
- package/src/lib/db/inMemoryHeadRegistryDriver.d.ts +13 -0
- package/src/lib/db/inMemoryHeadRegistryDriver.d.ts.map +1 -0
- package/src/lib/db/inMemoryHeadRegistryDriver.js +24 -0
- package/src/lib/db/inMemoryHeadRegistryDriver.js.map +1 -0
- package/src/lib/db/index.d.ts +3 -0
- package/src/lib/db/index.d.ts.map +1 -1
- package/src/lib/db/index.js +3 -0
- package/src/lib/db/index.js.map +1 -1
- package/src/lib/energyAccount.d.ts +15 -62
- package/src/lib/energyAccount.d.ts.map +1 -1
- package/src/lib/energyAccount.js +20 -118
- package/src/lib/energyAccount.js.map +1 -1
- package/src/lib/enumerations/brightChainStrings.d.ts +123 -0
- package/src/lib/enumerations/brightChainStrings.d.ts.map +1 -1
- package/src/lib/enumerations/brightChainStrings.js +130 -0
- package/src/lib/enumerations/brightChainStrings.js.map +1 -1
- package/src/lib/enumerations/difficultyTier.d.ts +20 -0
- package/src/lib/enumerations/difficultyTier.d.ts.map +1 -0
- package/src/lib/enumerations/difficultyTier.js +25 -0
- package/src/lib/enumerations/difficultyTier.js.map +1 -0
- package/src/lib/enumerations/index.d.ts +2 -1
- package/src/lib/enumerations/index.d.ts.map +1 -1
- package/src/lib/enumerations/index.js +3 -1
- package/src/lib/enumerations/index.js.map +1 -1
- package/src/lib/errors/asset/assetUnknownError.d.ts +12 -0
- package/src/lib/errors/asset/assetUnknownError.d.ts.map +1 -0
- package/src/lib/errors/asset/assetUnknownError.js +21 -0
- package/src/lib/errors/asset/assetUnknownError.js.map +1 -0
- package/src/lib/errors/asset/index.d.ts +13 -0
- package/src/lib/errors/asset/index.d.ts.map +1 -0
- package/src/lib/errors/asset/index.js +16 -0
- package/src/lib/errors/asset/index.js.map +1 -0
- package/src/lib/errors/asset/insufficientAvailableBalanceError.d.ts +13 -0
- package/src/lib/errors/asset/insufficientAvailableBalanceError.d.ts.map +1 -0
- package/src/lib/errors/asset/insufficientAvailableBalanceError.js +25 -0
- package/src/lib/errors/asset/insufficientAvailableBalanceError.js.map +1 -0
- package/src/lib/errors/asset/invalidAmountError.d.ts +11 -0
- package/src/lib/errors/asset/invalidAmountError.d.ts.map +1 -0
- package/src/lib/errors/asset/invalidAmountError.js +20 -0
- package/src/lib/errors/asset/invalidAmountError.js.map +1 -0
- package/src/lib/errors/asset/ledgerAlreadyAttachedError.d.ts +11 -0
- package/src/lib/errors/asset/ledgerAlreadyAttachedError.d.ts.map +1 -0
- package/src/lib/errors/asset/ledgerAlreadyAttachedError.js +19 -0
- package/src/lib/errors/asset/ledgerAlreadyAttachedError.js.map +1 -0
- package/src/lib/errors/asset/mixedAssetError.d.ts +12 -0
- package/src/lib/errors/asset/mixedAssetError.d.ts.map +1 -0
- package/src/lib/errors/asset/mixedAssetError.js +22 -0
- package/src/lib/errors/asset/mixedAssetError.js.map +1 -0
- package/src/lib/errors/asset/reservationExpiredError.d.ts +13 -0
- package/src/lib/errors/asset/reservationExpiredError.d.ts.map +1 -0
- package/src/lib/errors/asset/reservationExpiredError.js +24 -0
- package/src/lib/errors/asset/reservationExpiredError.js.map +1 -0
- package/src/lib/errors/asset/reservationNotFoundError.d.ts +11 -0
- package/src/lib/errors/asset/reservationNotFoundError.d.ts.map +1 -0
- package/src/lib/errors/asset/reservationNotFoundError.js +20 -0
- package/src/lib/errors/asset/reservationNotFoundError.js.map +1 -0
- package/src/lib/errors/encryptionErrors.d.ts.map +1 -1
- package/src/lib/errors/encryptionErrors.js.map +1 -1
- package/src/lib/errors/friendsServiceError.d.ts.map +1 -1
- package/src/lib/errors/friendsServiceError.js.map +1 -1
- package/src/lib/errors/index.d.ts +18 -0
- package/src/lib/errors/index.d.ts.map +1 -1
- package/src/lib/errors/index.js +21 -0
- package/src/lib/errors/index.js.map +1 -1
- package/src/lib/i18n/strings/englishUs.d.ts.map +1 -1
- package/src/lib/i18n/strings/englishUs.js +131 -1
- package/src/lib/i18n/strings/englishUs.js.map +1 -1
- package/src/lib/i18n/strings/french.d.ts.map +1 -1
- package/src/lib/i18n/strings/french.js +133 -3
- package/src/lib/i18n/strings/french.js.map +1 -1
- package/src/lib/i18n/strings/german.d.ts.map +1 -1
- package/src/lib/i18n/strings/german.js +131 -1
- package/src/lib/i18n/strings/german.js.map +1 -1
- package/src/lib/i18n/strings/japanese.d.ts.map +1 -1
- package/src/lib/i18n/strings/japanese.js +131 -1
- package/src/lib/i18n/strings/japanese.js.map +1 -1
- package/src/lib/i18n/strings/mandarin.d.ts.map +1 -1
- package/src/lib/i18n/strings/mandarin.js +131 -1
- package/src/lib/i18n/strings/mandarin.js.map +1 -1
- package/src/lib/i18n/strings/spanish.d.ts.map +1 -1
- package/src/lib/i18n/strings/spanish.js +131 -1
- package/src/lib/i18n/strings/spanish.js.map +1 -1
- package/src/lib/i18n/strings/ukrainian.d.ts.map +1 -1
- package/src/lib/i18n/strings/ukrainian.js +131 -1
- package/src/lib/i18n/strings/ukrainian.js.map +1 -1
- package/src/lib/index.d.ts +36 -1
- package/src/lib/index.d.ts.map +1 -1
- package/src/lib/index.js +48 -1
- package/src/lib/index.js.map +1 -1
- package/src/lib/interfaces/appSubsystemPlugin.d.ts +6 -1
- package/src/lib/interfaces/appSubsystemPlugin.d.ts.map +1 -1
- package/src/lib/interfaces/assetAccount.d.ts +91 -0
- package/src/lib/interfaces/assetAccount.d.ts.map +1 -0
- package/src/lib/interfaces/assetAccount.js +3 -0
- package/src/lib/interfaces/assetAccount.js.map +1 -0
- package/src/lib/interfaces/brightpass/vaultEntry.d.ts +38 -0
- package/src/lib/interfaces/brightpass/vaultEntry.d.ts.map +1 -1
- package/src/lib/interfaces/brightpass/vaultMetadata.d.ts +11 -0
- package/src/lib/interfaces/brightpass/vaultMetadata.d.ts.map +1 -1
- package/src/lib/interfaces/communication/chatStorageProvider.d.ts +1 -1
- package/src/lib/interfaces/communication/chatStorageProvider.d.ts.map +1 -1
- package/src/lib/interfaces/communication/index.d.ts +2 -0
- package/src/lib/interfaces/communication/index.d.ts.map +1 -1
- package/src/lib/interfaces/communication/index.js +2 -0
- package/src/lib/interfaces/communication/index.js.map +1 -1
- package/src/lib/interfaces/communication/server.d.ts +8 -0
- package/src/lib/interfaces/communication/server.d.ts.map +1 -1
- package/src/lib/interfaces/communication/serverIconConfig.d.ts +32 -0
- package/src/lib/interfaces/communication/serverIconConfig.d.ts.map +1 -0
- package/src/lib/interfaces/communication/serverIconConfig.js +35 -0
- package/src/lib/interfaces/communication/serverIconConfig.js.map +1 -0
- package/src/lib/interfaces/communication/serverIconRequest.d.ts +12 -0
- package/src/lib/interfaces/communication/serverIconRequest.d.ts.map +1 -0
- package/src/lib/interfaces/communication/serverIconRequest.js +3 -0
- package/src/lib/interfaces/communication/serverIconRequest.js.map +1 -0
- package/src/lib/interfaces/constants.d.ts +14 -0
- package/src/lib/interfaces/constants.d.ts.map +1 -1
- package/src/lib/interfaces/energyAccount.d.ts +13 -34
- package/src/lib/interfaces/energyAccount.d.ts.map +1 -1
- package/src/lib/interfaces/energyTransaction.d.ts +25 -6
- package/src/lib/interfaces/energyTransaction.d.ts.map +1 -1
- package/src/lib/interfaces/identity/brightChainIdentity.d.ts +29 -0
- package/src/lib/interfaces/identity/brightChainIdentity.d.ts.map +1 -0
- package/src/lib/interfaces/identity/brightChainIdentity.js +3 -0
- package/src/lib/interfaces/identity/brightChainIdentity.js.map +1 -0
- package/src/lib/interfaces/identity/index.d.ts +1 -0
- package/src/lib/interfaces/identity/index.d.ts.map +1 -1
- package/src/lib/interfaces/index.d.ts +5 -0
- package/src/lib/interfaces/index.d.ts.map +1 -1
- package/src/lib/interfaces/index.js +8 -0
- package/src/lib/interfaces/index.js.map +1 -1
- package/src/lib/interfaces/messaging/attachmentMetadata.d.ts +12 -0
- package/src/lib/interfaces/messaging/attachmentMetadata.d.ts.map +1 -1
- package/src/lib/interfaces/messaging/emailMetadata.d.ts +55 -0
- package/src/lib/interfaces/messaging/emailMetadata.d.ts.map +1 -1
- package/src/lib/interfaces/messaging/emailMetadata.js.map +1 -1
- package/src/lib/interfaces/pouw/challengeToken.d.ts +20 -0
- package/src/lib/interfaces/pouw/challengeToken.d.ts.map +1 -0
- package/src/lib/interfaces/pouw/challengeToken.js +3 -0
- package/src/lib/interfaces/pouw/challengeToken.js.map +1 -0
- package/src/lib/interfaces/pouw/index.d.ts +8 -0
- package/src/lib/interfaces/pouw/index.d.ts.map +1 -0
- package/src/lib/interfaces/pouw/index.js +12 -0
- package/src/lib/interfaces/pouw/index.js.map +1 -0
- package/src/lib/interfaces/pouw/pouwConfig.d.ts +91 -0
- package/src/lib/interfaces/pouw/pouwConfig.d.ts.map +1 -0
- package/src/lib/interfaces/pouw/pouwConfig.js +24 -0
- package/src/lib/interfaces/pouw/pouwConfig.js.map +1 -0
- package/src/lib/interfaces/pouw/pouwMetrics.d.ts +23 -0
- package/src/lib/interfaces/pouw/pouwMetrics.d.ts.map +1 -0
- package/src/lib/interfaces/pouw/pouwMetrics.js +3 -0
- package/src/lib/interfaces/pouw/pouwMetrics.js.map +1 -0
- package/src/lib/interfaces/pouw/workResult.d.ts +19 -0
- package/src/lib/interfaces/pouw/workResult.d.ts.map +1 -0
- package/src/lib/interfaces/pouw/workResult.js +3 -0
- package/src/lib/interfaces/pouw/workResult.js.map +1 -0
- package/src/lib/interfaces/pouw/workUnit.d.ts +48 -0
- package/src/lib/interfaces/pouw/workUnit.d.ts.map +1 -0
- package/src/lib/interfaces/pouw/workUnit.js +14 -0
- package/src/lib/interfaces/pouw/workUnit.js.map +1 -0
- package/src/lib/interfaces/responses/adminDashboardResponse.d.ts +7 -0
- package/src/lib/interfaces/responses/adminDashboardResponse.d.ts.map +1 -1
- package/src/lib/interfaces/responses/communicationResponses.d.ts +2 -0
- package/src/lib/interfaces/responses/communicationResponses.d.ts.map +1 -1
- package/src/lib/interfaces/responses/identityResponseData.d.ts +10 -0
- package/src/lib/interfaces/responses/identityResponseData.d.ts.map +1 -0
- package/src/lib/interfaces/responses/identityResponseData.js +3 -0
- package/src/lib/interfaces/responses/identityResponseData.js.map +1 -0
- package/src/lib/interfaces/responses/index.d.ts +1 -0
- package/src/lib/interfaces/responses/index.d.ts.map +1 -1
- package/src/lib/interfaces/staging/commitRequest.d.ts +28 -0
- package/src/lib/interfaces/staging/commitRequest.d.ts.map +1 -0
- package/src/lib/interfaces/staging/commitRequest.js +3 -0
- package/src/lib/interfaces/staging/commitRequest.js.map +1 -0
- package/src/lib/interfaces/staging/commitResponse.d.ts +17 -0
- package/src/lib/interfaces/staging/commitResponse.d.ts.map +1 -0
- package/src/lib/interfaces/staging/commitResponse.js +3 -0
- package/src/lib/interfaces/staging/commitResponse.js.map +1 -0
- package/src/lib/interfaces/staging/index.d.ts +7 -0
- package/src/lib/interfaces/staging/index.d.ts.map +1 -0
- package/src/lib/interfaces/staging/index.js +6 -0
- package/src/lib/interfaces/staging/index.js.map +1 -0
- package/src/lib/interfaces/staging/processingParams.d.ts +16 -0
- package/src/lib/interfaces/staging/processingParams.d.ts.map +1 -0
- package/src/lib/interfaces/staging/processingParams.js +3 -0
- package/src/lib/interfaces/staging/processingParams.js.map +1 -0
- package/src/lib/interfaces/staging/stagedFileRecord.d.ts +23 -0
- package/src/lib/interfaces/staging/stagedFileRecord.d.ts.map +1 -0
- package/src/lib/interfaces/staging/stagedFileRecord.js +3 -0
- package/src/lib/interfaces/staging/stagedFileRecord.js.map +1 -0
- package/src/lib/interfaces/staging/stagingConfig.d.ts +19 -0
- package/src/lib/interfaces/staging/stagingConfig.d.ts.map +1 -0
- package/src/lib/interfaces/staging/stagingConfig.js +11 -0
- package/src/lib/interfaces/staging/stagingConfig.js.map +1 -0
- package/src/lib/interfaces/staging/tempUploadResponse.d.ts +19 -0
- package/src/lib/interfaces/staging/tempUploadResponse.d.ts.map +1 -0
- package/src/lib/interfaces/staging/tempUploadResponse.js +3 -0
- package/src/lib/interfaces/staging/tempUploadResponse.js.map +1 -0
- package/src/lib/interfaces/storage/blockStore.d.ts +22 -4
- package/src/lib/interfaces/storage/blockStore.d.ts.map +1 -1
- package/src/lib/interfaces/storage/headRegistry.d.ts +38 -0
- package/src/lib/interfaces/storage/headRegistry.d.ts.map +1 -1
- package/src/lib/interfaces/storage/headRegistryDriver.d.ts +47 -0
- package/src/lib/interfaces/storage/headRegistryDriver.d.ts.map +1 -0
- package/src/lib/interfaces/storage/headRegistryDriver.js +15 -0
- package/src/lib/interfaces/storage/headRegistryDriver.js.map +1 -0
- package/src/lib/interfaces/storage/index.d.ts +1 -0
- package/src/lib/interfaces/storage/index.d.ts.map +1 -1
- package/src/lib/interfaces/storage/index.js.map +1 -1
- package/src/lib/joule/formatJoule.d.ts +44 -0
- package/src/lib/joule/formatJoule.d.ts.map +1 -0
- package/src/lib/joule/formatJoule.js +121 -0
- package/src/lib/joule/formatJoule.js.map +1 -0
- package/src/lib/joule/index.d.ts +10 -0
- package/src/lib/joule/index.d.ts.map +1 -0
- package/src/lib/joule/index.js +13 -0
- package/src/lib/joule/index.js.map +1 -0
- package/src/lib/joule/jouleConstants.d.ts +13 -0
- package/src/lib/joule/jouleConstants.d.ts.map +1 -0
- package/src/lib/joule/jouleConstants.js +18 -0
- package/src/lib/joule/jouleConstants.js.map +1 -0
- package/src/lib/joule/rateTable.d.ts +55 -0
- package/src/lib/joule/rateTable.d.ts.map +1 -0
- package/src/lib/joule/rateTable.js +58 -0
- package/src/lib/joule/rateTable.js.map +1 -0
- package/src/lib/joule/resourceClass.d.ts +18 -0
- package/src/lib/joule/resourceClass.d.ts.map +1 -0
- package/src/lib/joule/resourceClass.js +28 -0
- package/src/lib/joule/resourceClass.js.map +1 -0
- package/src/lib/operationCost.d.ts +12 -7
- package/src/lib/operationCost.d.ts.map +1 -1
- package/src/lib/operationCost.js +11 -4
- package/src/lib/operationCost.js.map +1 -1
- package/src/lib/pouw/computeWorkUnit.d.ts +41 -0
- package/src/lib/pouw/computeWorkUnit.d.ts.map +1 -0
- package/src/lib/pouw/computeWorkUnit.js +92 -0
- package/src/lib/pouw/computeWorkUnit.js.map +1 -0
- package/src/lib/pouw/index.d.ts +8 -0
- package/src/lib/pouw/index.d.ts.map +1 -0
- package/src/lib/pouw/index.js +12 -0
- package/src/lib/pouw/index.js.map +1 -0
- package/src/lib/serializers/index.d.ts +2 -0
- package/src/lib/serializers/index.d.ts.map +1 -0
- package/src/lib/serializers/index.js +10 -0
- package/src/lib/serializers/index.js.map +1 -0
- package/src/lib/serializers/workUnitSerializer.d.ts +39 -0
- package/src/lib/serializers/workUnitSerializer.d.ts.map +1 -0
- package/src/lib/serializers/workUnitSerializer.js +150 -0
- package/src/lib/serializers/workUnitSerializer.js.map +1 -0
- package/src/lib/services/communication/__tests__/mockChatStorageProvider.d.ts +1 -1
- package/src/lib/services/communication/__tests__/mockChatStorageProvider.d.ts.map +1 -1
- package/src/lib/services/communication/__tests__/mockChatStorageProvider.js +5 -3
- package/src/lib/services/communication/__tests__/mockChatStorageProvider.js.map +1 -1
- package/src/lib/services/communication/__tests__/mockStorageProvider.d.ts +6 -0
- package/src/lib/services/communication/__tests__/mockStorageProvider.d.ts.map +1 -0
- package/src/lib/services/communication/__tests__/mockStorageProvider.js +41 -0
- package/src/lib/services/communication/__tests__/mockStorageProvider.js.map +1 -0
- package/src/lib/services/communication/channelService.d.ts +1 -1
- package/src/lib/services/communication/channelService.d.ts.map +1 -1
- package/src/lib/services/communication/channelService.js +2 -2
- package/src/lib/services/communication/channelService.js.map +1 -1
- package/src/lib/services/communication/conversationService.d.ts +1 -1
- package/src/lib/services/communication/conversationService.d.ts.map +1 -1
- package/src/lib/services/communication/conversationService.js +2 -2
- package/src/lib/services/communication/conversationService.js.map +1 -1
- package/src/lib/services/communication/groupService.d.ts +1 -1
- package/src/lib/services/communication/groupService.d.ts.map +1 -1
- package/src/lib/services/communication/groupService.js +2 -2
- package/src/lib/services/communication/groupService.js.map +1 -1
- package/src/lib/services/communication/rehydrationHelpers.d.ts.map +1 -1
- package/src/lib/services/communication/rehydrationHelpers.js +1 -2
- package/src/lib/services/communication/rehydrationHelpers.js.map +1 -1
- package/src/lib/services/communication/serverService.d.ts +13 -115
- package/src/lib/services/communication/serverService.d.ts.map +1 -1
- package/src/lib/services/communication/serverService.js +91 -235
- package/src/lib/services/communication/serverService.js.map +1 -1
- package/src/lib/services/copyOnWrite.service.d.ts.map +1 -1
- package/src/lib/services/copyOnWrite.service.js +1 -2
- package/src/lib/services/copyOnWrite.service.js.map +1 -1
- package/src/lib/services/messaging/emailMessageService.d.ts +89 -0
- package/src/lib/services/messaging/emailMessageService.d.ts.map +1 -1
- package/src/lib/services/messaging/emailMessageService.js +207 -28
- package/src/lib/services/messaging/emailMessageService.js.map +1 -1
- package/src/lib/services/messaging/emailParser.d.ts.map +1 -1
- package/src/lib/services/messaging/emailParser.js +1 -0
- package/src/lib/services/messaging/emailParser.js.map +1 -1
- package/src/lib/stores/assetAccountStore.d.ts +102 -0
- package/src/lib/stores/assetAccountStore.d.ts.map +1 -0
- package/src/lib/stores/assetAccountStore.js +276 -0
- package/src/lib/stores/assetAccountStore.js.map +1 -0
- package/src/lib/stores/blockStoreAdapter.d.ts +2 -0
- package/src/lib/stores/blockStoreAdapter.d.ts.map +1 -1
- package/src/lib/stores/blockStoreAdapter.js +3 -0
- package/src/lib/stores/blockStoreAdapter.js.map +1 -1
- package/src/lib/stores/energyAccountStore.d.ts +22 -36
- package/src/lib/stores/energyAccountStore.d.ts.map +1 -1
- package/src/lib/stores/energyAccountStore.js +33 -63
- package/src/lib/stores/energyAccountStore.js.map +1 -1
- package/src/lib/stores/memoryBlockStore.d.ts +16 -1
- package/src/lib/stores/memoryBlockStore.d.ts.map +1 -1
- package/src/lib/stores/memoryBlockStore.js +42 -6
- package/src/lib/stores/memoryBlockStore.js.map +1 -1
package/README.md
CHANGED
|
@@ -8,21 +8,30 @@
|
|
|
8
8
|
## 🌟 Key Features
|
|
9
9
|
|
|
10
10
|
### 🔐 Unified Cryptographic Architecture
|
|
11
|
+
|
|
11
12
|
- **ECIES Integration**: Elliptic Curve Integrated Encryption Scheme for secure messaging and file storage
|
|
12
13
|
- **Homomorphic Encryption**: Paillier keys derived from ECDH keypairs for secure voting and computation
|
|
13
14
|
- **Brokered Anonymity**: Forward Error Correction with BrightTrust-based identity recovery
|
|
14
15
|
|
|
15
16
|
### 📦 Owner-Free File System (OFFS)
|
|
17
|
+
|
|
16
18
|
- **TUPLE Storage**: All data stored as 3-block TUPLEs (data + 2 randomizers) for complete plausible deniability
|
|
17
19
|
- **Block-based Storage**: Files broken into encrypted blocks with XOR randomization
|
|
18
20
|
- **Deduplication**: SHA-512 based block identification prevents duplicate storage
|
|
19
21
|
- **Distributed Architecture**: Decentralized storage with no single point of failure
|
|
20
22
|
- **Legal Protection**: True owner-free storage ensures no single party can be compelled to produce meaningful data
|
|
21
23
|
|
|
22
|
-
### ⚡
|
|
23
|
-
|
|
24
|
-
- **
|
|
25
|
-
-
|
|
24
|
+
### ⚡ Asset Accounts & Metering
|
|
25
|
+
|
|
26
|
+
- **Generic `AssetAccount` / `AssetAccountStore`**: A single parameterized shape tracks any fungible asset (joules, tokens, credits). Each account is keyed by `memberId + assetId`; balances are stored as `bigint` microunits for lossless precision.
|
|
27
|
+
- **`EnergyAccount` / `EnergyAccountStore`**: Specialization for the `'joule'` asset. Balances are expressed in microjoules (1 J = 1 000 000 µJ). Legacy numeric-joule DTOs are automatically migrated on read.
|
|
28
|
+
- **Backward-compatible hydration**: `AssetAccount.fromDto()` handles missing `assetId` (defaults to `'joule'`) and numeric balances (multiplied by `JOULE_MICROUNITS_PER_UNIT = 1_000_000n`), so existing persisted data is transparently upgraded.
|
|
29
|
+
- **`ITypedCollection<TStored, TTyped>`**: Storage abstraction in `brightchain-lib` that `brightchain-db` satisfies. `EnergyAccountStore` depends only on this interface, keeping the library free of database imports.
|
|
30
|
+
- **Joule Currency**: All operations are measured and throttled using actual energy-unit accounting.
|
|
31
|
+
- **Proof of Work Throttling**: Bad actors face increased computational requirements.
|
|
32
|
+
- **Sustainable Operations**: Optimized for minimal energy consumption.
|
|
33
|
+
|
|
34
|
+
> See specs: [`asset-account-store-generalization`](.kiro/specs/asset-account-store-generalization/), [`programmable-asset-ledger`](.kiro/specs/programmable-asset-ledger/), [`metering-log`](.kiro/specs/metering-log/).
|
|
26
35
|
|
|
27
36
|
## 🚀 Quick Start
|
|
28
37
|
|
|
@@ -136,6 +145,7 @@ try {
|
|
|
136
145
|
```
|
|
137
146
|
|
|
138
147
|
**Error Types:**
|
|
148
|
+
|
|
139
149
|
- `BrightChainError`: Base class for all BrightChain errors
|
|
140
150
|
- `ValidationError`: Input validation failures
|
|
141
151
|
- `ChecksumError`: Checksum calculation or validation errors
|
|
@@ -145,6 +155,7 @@ try {
|
|
|
145
155
|
|
|
146
156
|
**Error Context:**
|
|
147
157
|
All BrightChain errors include:
|
|
158
|
+
|
|
148
159
|
- `type`: Error type identifier
|
|
149
160
|
- `message`: Human-readable error message
|
|
150
161
|
- `context`: Additional context (parameters, state, etc.)
|
|
@@ -228,11 +239,13 @@ try {
|
|
|
228
239
|
```
|
|
229
240
|
|
|
230
241
|
**Classes with Factory Patterns:**
|
|
242
|
+
|
|
231
243
|
- `MemberDocument`: Use `MemberDocument.create()`
|
|
232
244
|
- `BaseBlock` subclasses: Use `BlockType.from()` or specific factory methods
|
|
233
245
|
- `Checksum`: Use `Checksum.fromBuffer()`, `Checksum.fromUint8Array()`, or `Checksum.fromHex()`
|
|
234
246
|
|
|
235
247
|
**Why Factory Patterns?**
|
|
248
|
+
|
|
236
249
|
- Ensures proper validation during object creation
|
|
237
250
|
- Prevents invalid object states
|
|
238
251
|
- Provides clear, documented creation APIs
|
|
@@ -249,6 +262,7 @@ If you're upgrading from BrightChain v1.x, see our comprehensive [Migration Guid
|
|
|
249
262
|
- Breaking changes documentation
|
|
250
263
|
|
|
251
264
|
**Quick Migration Checklist:**
|
|
265
|
+
|
|
252
266
|
- [ ] Replace `ChecksumBuffer`/`ChecksumUint8Array` with `Checksum` class
|
|
253
267
|
- [ ] Update direct constructor calls to use factory methods
|
|
254
268
|
- [ ] Add type parameters to `BlockHandle` declarations
|
|
@@ -288,6 +302,7 @@ const originalData = await tupleService.retrieveTuple(
|
|
|
288
302
|
```
|
|
289
303
|
|
|
290
304
|
**Why TUPLEs?**
|
|
305
|
+
|
|
291
306
|
- **Plausible Deniability**: No single block contains identifiable data
|
|
292
307
|
- **Legal Protection**: Node operators cannot be compelled to produce meaningful data
|
|
293
308
|
- **Complete OFF Compliance**: All data stored as 3 blocks (not just 2)
|
|
@@ -449,6 +464,7 @@ All blocks follow a layered structure:
|
|
|
449
464
|
```
|
|
450
465
|
|
|
451
466
|
**Base Header includes:**
|
|
467
|
+
|
|
452
468
|
- Block Type
|
|
453
469
|
- Block Size
|
|
454
470
|
- Data Type
|
|
@@ -456,6 +472,7 @@ All blocks follow a layered structure:
|
|
|
456
472
|
- Date Created
|
|
457
473
|
|
|
458
474
|
**Encrypted Block Header adds:**
|
|
475
|
+
|
|
459
476
|
- Encryption Type (1 byte)
|
|
460
477
|
- Recipient GUID (16 bytes)
|
|
461
478
|
- Ephemeral Public Key (65 bytes)
|
|
@@ -589,49 +606,61 @@ For detailed naming conventions and terminology, see [NAMING_CONVENTIONS.md](./N
|
|
|
589
606
|
### Core Classes
|
|
590
607
|
|
|
591
608
|
#### BrightChain
|
|
609
|
+
|
|
592
610
|
Main interface for file storage and retrieval.
|
|
593
611
|
|
|
594
612
|
**Methods:**
|
|
613
|
+
|
|
595
614
|
- `storeFile(data: Uint8Array, fileName?: string): Promise<FileReceipt>`
|
|
596
615
|
- `retrieveFile(receipt: FileReceipt): Promise<Uint8Array>`
|
|
597
616
|
|
|
598
617
|
#### BaseBlock
|
|
618
|
+
|
|
599
619
|
Abstract base class for all block types.
|
|
600
620
|
|
|
601
621
|
**Properties:**
|
|
622
|
+
|
|
602
623
|
- `blockSize: BlockSize` - Size category of the block
|
|
603
624
|
- `blockType: BlockType` - Type of block (raw, encrypted, CBL, etc)
|
|
604
625
|
- `idChecksum: ChecksumUint8Array` - Unique identifier
|
|
605
626
|
- `dateCreated: Date` - Creation timestamp
|
|
606
627
|
|
|
607
628
|
**Methods:**
|
|
629
|
+
|
|
608
630
|
- `validateAsync(): Promise<void>` - Async validation
|
|
609
631
|
- `validateSync(): void` - Sync validation
|
|
610
632
|
|
|
611
633
|
#### EncryptedBlock
|
|
634
|
+
|
|
612
635
|
Encrypted block implementation with ECIES.
|
|
613
636
|
|
|
614
637
|
**Properties:**
|
|
638
|
+
|
|
615
639
|
- `encryptionType: BlockEncryptionType` - Single or multi-recipient
|
|
616
640
|
- `recipients: Array<TID>` - List of recipient IDs
|
|
617
641
|
- `recipientWithKey: Member<TID>` - Member with decryption key
|
|
618
642
|
|
|
619
643
|
**Methods:**
|
|
644
|
+
|
|
620
645
|
- `decrypt<D>(newBlockType: BlockType): Promise<D>` - Decrypt block
|
|
621
646
|
|
|
622
647
|
### Services
|
|
623
648
|
|
|
624
649
|
#### ChecksumService
|
|
650
|
+
|
|
625
651
|
Handles SHA-512 checksum operations.
|
|
626
652
|
|
|
627
653
|
**Methods:**
|
|
654
|
+
|
|
628
655
|
- `calculateChecksum(data: Uint8Array): ChecksumUint8Array`
|
|
629
656
|
- `checksumToHexString(checksum: ChecksumUint8Array): ChecksumString`
|
|
630
657
|
|
|
631
658
|
#### ECIESService
|
|
659
|
+
|
|
632
660
|
Provides ECIES encryption/decryption.
|
|
633
661
|
|
|
634
662
|
**Methods:**
|
|
663
|
+
|
|
635
664
|
- `encryptSimpleOrSingle(simple: boolean, publicKey: Uint8Array, data: Uint8Array): Promise<Uint8Array>`
|
|
636
665
|
- `decryptSimpleOrSingle(simple: boolean, privateKey: Uint8Array, data: Uint8Array): Promise<Uint8Array>`
|
|
637
666
|
|
|
@@ -674,4 +703,4 @@ BrightChain is actively developed with ambitious goals:
|
|
|
674
703
|
|
|
675
704
|
---
|
|
676
705
|
|
|
677
|
-
**BrightChain** - *Illuminating the future of decentralized digital governance*
|
|
706
|
+
**BrightChain** - *Illuminating the future of decentralized digital governance*
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@brightchain/brightchain-lib",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.31.0",
|
|
4
4
|
"description": "BrightChain core library - browser-compatible blockchain storage",
|
|
5
5
|
"main": "src/index.js",
|
|
6
6
|
"types": "src/index.d.ts",
|
|
@@ -68,11 +68,11 @@
|
|
|
68
68
|
"dependencies": {
|
|
69
69
|
"@digitaldefiance/branded-interface": "0.0.5",
|
|
70
70
|
"@digitaldefiance/bzip2-wasm": "^1.1.1",
|
|
71
|
-
"@digitaldefiance/ecies-lib": "5.1.
|
|
72
|
-
"@digitaldefiance/i18n-lib": "4.7.
|
|
71
|
+
"@digitaldefiance/ecies-lib": "5.1.6",
|
|
72
|
+
"@digitaldefiance/i18n-lib": "4.7.4",
|
|
73
73
|
"@digitaldefiance/reed-solomon-erasure.wasm": "^1.0.2",
|
|
74
74
|
"@digitaldefiance/secrets": "^2.0.7",
|
|
75
|
-
"@digitaldefiance/suite-core-lib": "4.
|
|
75
|
+
"@digitaldefiance/suite-core-lib": "4.27.2",
|
|
76
76
|
"@ethereumjs/wallet": "^10.0.0",
|
|
77
77
|
"@noble/hashes": "^1.8.0",
|
|
78
78
|
"@peculiar/asn1-pfx": "^2.6.1",
|
package/src/browser.d.ts
CHANGED
|
@@ -11,6 +11,7 @@ export { RawDataBlock } from './lib/blocks/rawData';
|
|
|
11
11
|
export { ServiceLocator } from './lib/services/serviceLocator';
|
|
12
12
|
export { uint8ArrayToHex } from './lib/utils/checksumUtils';
|
|
13
13
|
export { XorLengthMismatchError, constantTimeXor, constantTimeXorMultiple, } from './lib/utils/constantTimeXor';
|
|
14
|
+
export { BlockECIES } from './lib/access/ecies';
|
|
14
15
|
export { ServiceProvider } from './lib/services/service.provider';
|
|
15
16
|
export { initializeBrightChain } from './lib/init';
|
|
16
17
|
export { Checksum } from './lib/types/checksum';
|
|
@@ -19,6 +20,9 @@ export type { BlockId } from './lib/interfaces/branded/primitives/blockId';
|
|
|
19
20
|
export { CBLService } from './lib/services/cblService';
|
|
20
21
|
export { ChecksumService } from './lib/services/checksum.service';
|
|
21
22
|
export { MessageCBLService } from './lib/services/messaging/messageCBLService';
|
|
23
|
+
export { joulesToMicrojoules, microjoulesToJoules, } from './lib/asset/microunits';
|
|
24
|
+
export { formatJoule } from './lib/joule/formatJoule';
|
|
25
|
+
export { DefaultDurabilityLevel, DurabilityLevel, DurabilityMap, getParityCountForDurability, } from './lib/enumerations/durabilityLevel';
|
|
22
26
|
export { BrightChainStrings } from './lib/enumerations/brightChainStrings';
|
|
23
27
|
export { DeliveryStatus } from './lib/enumerations/messaging/deliveryStatus';
|
|
24
28
|
export { MessageEncryptionScheme } from './lib/enumerations/messaging/messageEncryptionScheme';
|
|
@@ -27,6 +31,9 @@ export type { IMessageMetadata } from './lib/interfaces/messaging/messageMetadat
|
|
|
27
31
|
export type { IMessageCBLOptions } from './lib/services/messaging/messageCBLService';
|
|
28
32
|
export type { BlockInfo, FileReceipt } from './lib/brightChain';
|
|
29
33
|
export type { CBLMagnetComponents, CBLStorageResult, CBLWhiteningOptions, } from './lib/interfaces/storage/cblWhitening';
|
|
34
|
+
export { InMemoryHeadRegistry } from './lib/db/inMemoryHeadRegistry';
|
|
35
|
+
export type { IHeadRegistry } from './lib/interfaces/storage/headRegistry';
|
|
36
|
+
export * from './lib/joule';
|
|
30
37
|
export type { ILedgerEntry } from './lib/interfaces/ledger/ledgerEntry';
|
|
31
38
|
export type { ILedgerMetadata } from './lib/interfaces/ledger/ledgerMetadata';
|
|
32
39
|
export type { ILedgerSignatureVerifier } from './lib/interfaces/ledger/ledgerSignatureVerifier';
|
package/src/browser.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"browser.d.ts","sourceRoot":"","sources":["../../../brightchain-lib/src/browser.ts"],"names":[],"mappings":"AAGA,cAAc,mBAAmB,CAAC;AAClC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,mCAAmC,CAAC;AAClD,cAAc,qCAAqC,CAAC;AACpD,cAAc,+BAA+B,CAAC;AAG9C,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAG7E,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAC9C,OAAO,EACL,iBAAiB,EACjB,aAAa,EACb,KAAK,WAAW,GACjB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAGpD,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAG/D,OAAO,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AAG5D,OAAO,EACL,sBAAsB,EACtB,eAAe,EACf,uBAAuB,GACxB,MAAM,6BAA6B,CAAC;AAGrC,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAGlE,OAAO,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAGnD,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAGhD,OAAO,EAAE,SAAS,EAAE,MAAM,6CAA6C,CAAC;AACxE,YAAY,EAAE,OAAO,EAAE,MAAM,6CAA6C,CAAC;AAG3E,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAClE,OAAO,EAAE,iBAAiB,EAAE,MAAM,4CAA4C,CAAC;AAG/E,OAAO,EAAE,kBAAkB,EAAE,MAAM,uCAAuC,CAAC;AAC3E,OAAO,EAAE,cAAc,EAAE,MAAM,6CAA6C,CAAC;AAC7E,OAAO,EAAE,uBAAuB,EAAE,MAAM,sDAAsD,CAAC;AAC/F,OAAO,EAAE,eAAe,EAAE,MAAM,8CAA8C,CAAC;AAC/E,YAAY,EAAE,gBAAgB,EAAE,MAAM,4CAA4C,CAAC;AACnF,YAAY,EAAE,kBAAkB,EAAE,MAAM,4CAA4C,CAAC;AAGrF,YAAY,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChE,YAAY,EACV,mBAAmB,EACnB,gBAAgB,EAChB,mBAAmB,GACpB,MAAM,uCAAuC,CAAC;AAG/C,YAAY,EAAE,YAAY,EAAE,MAAM,qCAAqC,CAAC;AACxE,YAAY,EAAE,eAAe,EAAE,MAAM,wCAAwC,CAAC;AAC9E,YAAY,EAAE,wBAAwB,EAAE,MAAM,iDAAiD,CAAC;AAChG,YAAY,EAAE,aAAa,EAAE,MAAM,sCAAsC,CAAC;AAC1E,YAAY,EACV,sBAAsB,EACtB,iBAAiB,IAAI,uBAAuB,EAC5C,yBAAyB,GAC1B,MAAM,0CAA0C,CAAC;AAClD,OAAO,EAAE,wBAAwB,EAAE,MAAM,uCAAuC,CAAC;AACjF,OAAO,EAAE,sBAAsB,EAAE,MAAM,qCAAqC,CAAC;AAC7E,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AACzE,OAAO,EAAE,qBAAqB,EAAE,MAAM,oCAAoC,CAAC;AAC3E,OAAO,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AAGvE,YAAY,EAAE,iBAAiB,EAAE,MAAM,0CAA0C,CAAC;AAClF,OAAO,EAAE,UAAU,EAAE,MAAM,2CAA2C,CAAC;AACvE,YAAY,EAAE,kBAAkB,EAAE,MAAM,2CAA2C,CAAC;AACpF,OAAO,EAAE,oBAAoB,EAAE,MAAM,0CAA0C,CAAC;AAChF,YAAY,EAAE,iBAAiB,EAAE,MAAM,0CAA0C,CAAC;AAClF,YAAY,EAAE,kBAAkB,EAAE,MAAM,2CAA2C,CAAC;AACpF,OAAO,EAAE,UAAU,EAAE,MAAM,oCAAoC,CAAC;AAChE,OAAO,EAAE,YAAY,EAAE,MAAM,sCAAsC,CAAC;AACpE,OAAO,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AACvE,OAAO,EAAE,2BAA2B,EAAE,MAAM,0CAA0C,CAAC;AACvF,YAAY,EAAE,mBAAmB,EAAE,MAAM,0CAA0C,CAAC"}
|
|
1
|
+
{"version":3,"file":"browser.d.ts","sourceRoot":"","sources":["../../../brightchain-lib/src/browser.ts"],"names":[],"mappings":"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"}
|
package/src/browser.js
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
// Minimal browser-compatible exports
|
|
3
3
|
// Only exports core functionality that works without Node.js modules
|
|
4
4
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
5
|
-
exports.GovernancePayloadSerializer = exports.AuthorizedSignerSet = exports.SignerStatus = exports.SignerRole = exports.GovernanceActionType = exports.QuorumType = exports.MemberSignerAdapter = exports.LedgerEntrySerializer = exports.LedgerChainValidator = exports.Ledger = exports.EciesSignatureVerifier = exports.BrowserSignatureVerifier = exports.MessagePriority = exports.MessageEncryptionScheme = exports.DeliveryStatus = exports.BrightChainStrings = exports.MessageCBLService = exports.ChecksumService = exports.CBLService = exports.asBlockId = exports.Checksum = exports.initializeBrightChain = exports.ServiceProvider = exports.constantTimeXorMultiple = exports.constantTimeXor = exports.XorLengthMismatchError = exports.uint8ArrayToHex = exports.ServiceLocator = exports.RawDataBlock = exports.RandomBlock = exports.isBlockHandle = exports.createBlockHandle = exports.BaseBlock = exports.VALIDATION = exports.TUPLE = exports.THEME_COLORS = exports.CONSTANTS = void 0;
|
|
5
|
+
exports.GovernancePayloadSerializer = exports.AuthorizedSignerSet = exports.SignerStatus = exports.SignerRole = exports.GovernanceActionType = exports.QuorumType = exports.MemberSignerAdapter = exports.LedgerEntrySerializer = exports.LedgerChainValidator = exports.Ledger = exports.EciesSignatureVerifier = exports.BrowserSignatureVerifier = exports.InMemoryHeadRegistry = exports.MessagePriority = exports.MessageEncryptionScheme = exports.DeliveryStatus = exports.BrightChainStrings = exports.getParityCountForDurability = exports.DurabilityMap = exports.DurabilityLevel = exports.DefaultDurabilityLevel = exports.formatJoule = exports.microjoulesToJoules = exports.joulesToMicrojoules = exports.MessageCBLService = exports.ChecksumService = exports.CBLService = exports.asBlockId = exports.Checksum = exports.initializeBrightChain = exports.ServiceProvider = exports.BlockECIES = exports.constantTimeXorMultiple = exports.constantTimeXor = exports.XorLengthMismatchError = exports.uint8ArrayToHex = exports.ServiceLocator = exports.RawDataBlock = exports.RandomBlock = exports.isBlockHandle = exports.createBlockHandle = exports.BaseBlock = exports.VALIDATION = exports.TUPLE = exports.THEME_COLORS = exports.CONSTANTS = void 0;
|
|
6
6
|
const tslib_1 = require("tslib");
|
|
7
7
|
tslib_1.__exportStar(require("./lib/brightChain"), exports);
|
|
8
8
|
tslib_1.__exportStar(require("./lib/enumerations/blockSize"), exports);
|
|
@@ -36,6 +36,9 @@ var constantTimeXor_1 = require("./lib/utils/constantTimeXor");
|
|
|
36
36
|
Object.defineProperty(exports, "XorLengthMismatchError", { enumerable: true, get: function () { return constantTimeXor_1.XorLengthMismatchError; } });
|
|
37
37
|
Object.defineProperty(exports, "constantTimeXor", { enumerable: true, get: function () { return constantTimeXor_1.constantTimeXor; } });
|
|
38
38
|
Object.defineProperty(exports, "constantTimeXorMultiple", { enumerable: true, get: function () { return constantTimeXor_1.constantTimeXorMultiple; } });
|
|
39
|
+
// Export ECIES block encryption utility (browser-compatible)
|
|
40
|
+
var ecies_1 = require("./lib/access/ecies");
|
|
41
|
+
Object.defineProperty(exports, "BlockECIES", { enumerable: true, get: function () { return ecies_1.BlockECIES; } });
|
|
39
42
|
// Export ServiceProvider for advanced usage
|
|
40
43
|
var service_provider_1 = require("./lib/services/service.provider");
|
|
41
44
|
Object.defineProperty(exports, "ServiceProvider", { enumerable: true, get: function () { return service_provider_1.ServiceProvider; } });
|
|
@@ -55,6 +58,18 @@ var checksum_service_1 = require("./lib/services/checksum.service");
|
|
|
55
58
|
Object.defineProperty(exports, "ChecksumService", { enumerable: true, get: function () { return checksum_service_1.ChecksumService; } });
|
|
56
59
|
var messageCBLService_1 = require("./lib/services/messaging/messageCBLService");
|
|
57
60
|
Object.defineProperty(exports, "MessageCBLService", { enumerable: true, get: function () { return messageCBLService_1.MessageCBLService; } });
|
|
61
|
+
// Export asset / joule unit conversion helpers (pure math, browser-safe)
|
|
62
|
+
var microunits_1 = require("./lib/asset/microunits");
|
|
63
|
+
Object.defineProperty(exports, "joulesToMicrojoules", { enumerable: true, get: function () { return microunits_1.joulesToMicrojoules; } });
|
|
64
|
+
Object.defineProperty(exports, "microjoulesToJoules", { enumerable: true, get: function () { return microunits_1.microjoulesToJoules; } });
|
|
65
|
+
var formatJoule_1 = require("./lib/joule/formatJoule");
|
|
66
|
+
Object.defineProperty(exports, "formatJoule", { enumerable: true, get: function () { return formatJoule_1.formatJoule; } });
|
|
67
|
+
// Export durability level enum and helpers (browser-safe)
|
|
68
|
+
var durabilityLevel_1 = require("./lib/enumerations/durabilityLevel");
|
|
69
|
+
Object.defineProperty(exports, "DefaultDurabilityLevel", { enumerable: true, get: function () { return durabilityLevel_1.DefaultDurabilityLevel; } });
|
|
70
|
+
Object.defineProperty(exports, "DurabilityLevel", { enumerable: true, get: function () { return durabilityLevel_1.DurabilityLevel; } });
|
|
71
|
+
Object.defineProperty(exports, "DurabilityMap", { enumerable: true, get: function () { return durabilityLevel_1.DurabilityMap; } });
|
|
72
|
+
Object.defineProperty(exports, "getParityCountForDurability", { enumerable: true, get: function () { return durabilityLevel_1.getParityCountForDurability; } });
|
|
58
73
|
// Export messaging enums and interfaces
|
|
59
74
|
var brightChainStrings_1 = require("./lib/enumerations/brightChainStrings");
|
|
60
75
|
Object.defineProperty(exports, "BrightChainStrings", { enumerable: true, get: function () { return brightChainStrings_1.BrightChainStrings; } });
|
|
@@ -64,6 +79,11 @@ var messageEncryptionScheme_1 = require("./lib/enumerations/messaging/messageEnc
|
|
|
64
79
|
Object.defineProperty(exports, "MessageEncryptionScheme", { enumerable: true, get: function () { return messageEncryptionScheme_1.MessageEncryptionScheme; } });
|
|
65
80
|
var messagePriority_1 = require("./lib/enumerations/messaging/messagePriority");
|
|
66
81
|
Object.defineProperty(exports, "MessagePriority", { enumerable: true, get: function () { return messagePriority_1.MessagePriority; } });
|
|
82
|
+
// Head registry (browser-compatible in-memory implementation)
|
|
83
|
+
var inMemoryHeadRegistry_1 = require("./lib/db/inMemoryHeadRegistry");
|
|
84
|
+
Object.defineProperty(exports, "InMemoryHeadRegistry", { enumerable: true, get: function () { return inMemoryHeadRegistry_1.InMemoryHeadRegistry; } });
|
|
85
|
+
// Joule resource-credit primitives (browser-safe)
|
|
86
|
+
tslib_1.__exportStar(require("./lib/joule"), exports);
|
|
67
87
|
var browserSignatureVerifier_1 = require("./lib/ledger/browserSignatureVerifier");
|
|
68
88
|
Object.defineProperty(exports, "BrowserSignatureVerifier", { enumerable: true, get: function () { return browserSignatureVerifier_1.BrowserSignatureVerifier; } });
|
|
69
89
|
var eciesSignatureVerifier_1 = require("./lib/ledger/eciesSignatureVerifier");
|
package/src/browser.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"browser.js","sourceRoot":"","sources":["../../../brightchain-lib/src/browser.ts"],"names":[],"mappings":";AAAA,qCAAqC;AACrC,qEAAqE;;;;AAErE,4DAAkC;AAClC,uEAA6C;AAC7C,4EAAkD;AAClD,8EAAoD;AACpD,wEAA8C;AAE9C,mBAAmB;AACnB,6CAA6E;AAApE,sGAAA,SAAS,OAAA;AAAE,yGAAA,YAAY,OAAA;AAAE,kGAAA,KAAK,OAAA;AAAE,uGAAA,UAAU,OAAA;AAEnD,qCAAqC;AACrC,0CAA8C;AAArC,iGAAA,SAAS,OAAA;AAClB,8CAI6B;AAH3B,2GAAA,iBAAiB,OAAA;AACjB,uGAAA,aAAa,OAAA;AAGf,8CAAkD;AAAzC,qGAAA,WAAW,OAAA;AACpB,gDAAoD;AAA3C,uGAAA,YAAY,OAAA;AAErB,wBAAwB;AACxB,gEAA+D;AAAtD,gHAAA,cAAc,OAAA;AAEvB,2BAA2B;AAC3B,2DAA4D;AAAnD,gHAAA,eAAe,OAAA;AAExB,0DAA0D;AAC1D,+DAIqC;AAHnC,yHAAA,sBAAsB,OAAA;AACtB,kHAAA,eAAe,OAAA;AACf,0HAAA,uBAAuB,OAAA;AAGzB,4CAA4C;AAC5C,oEAAkE;AAAzD,mHAAA,eAAe,OAAA;AAExB,4CAA4C;AAC5C,mCAAmD;AAA1C,6GAAA,qBAAqB,OAAA;AAE9B,kDAAkD;AAClD,iDAAgD;AAAvC,oGAAA,QAAQ,OAAA;AAEjB,0CAA0C;AAC1C,uEAAwE;AAA/D,oGAAA,SAAS,OAAA;AAGlB,kBAAkB;AAClB,wDAAuD;AAA9C,wGAAA,UAAU,OAAA;AACnB,oEAAkE;AAAzD,mHAAA,eAAe,OAAA;AACxB,gFAA+E;AAAtE,sHAAA,iBAAiB,OAAA;AAE1B,wCAAwC;AACxC,4EAA2E;AAAlE,wHAAA,kBAAkB,OAAA;AAC3B,8EAA6E;AAApE,gHAAA,cAAc,OAAA;AACvB,gGAA+F;AAAtF,kIAAA,uBAAuB,OAAA;AAChC,gFAA+E;AAAtE,kHAAA,eAAe,OAAA;
|
|
1
|
+
{"version":3,"file":"browser.js","sourceRoot":"","sources":["../../../brightchain-lib/src/browser.ts"],"names":[],"mappings":";AAAA,qCAAqC;AACrC,qEAAqE;;;;AAErE,4DAAkC;AAClC,uEAA6C;AAC7C,4EAAkD;AAClD,8EAAoD;AACpD,wEAA8C;AAE9C,mBAAmB;AACnB,6CAA6E;AAApE,sGAAA,SAAS,OAAA;AAAE,yGAAA,YAAY,OAAA;AAAE,kGAAA,KAAK,OAAA;AAAE,uGAAA,UAAU,OAAA;AAEnD,qCAAqC;AACrC,0CAA8C;AAArC,iGAAA,SAAS,OAAA;AAClB,8CAI6B;AAH3B,2GAAA,iBAAiB,OAAA;AACjB,uGAAA,aAAa,OAAA;AAGf,8CAAkD;AAAzC,qGAAA,WAAW,OAAA;AACpB,gDAAoD;AAA3C,uGAAA,YAAY,OAAA;AAErB,wBAAwB;AACxB,gEAA+D;AAAtD,gHAAA,cAAc,OAAA;AAEvB,2BAA2B;AAC3B,2DAA4D;AAAnD,gHAAA,eAAe,OAAA;AAExB,0DAA0D;AAC1D,+DAIqC;AAHnC,yHAAA,sBAAsB,OAAA;AACtB,kHAAA,eAAe,OAAA;AACf,0HAAA,uBAAuB,OAAA;AAGzB,6DAA6D;AAC7D,4CAAgD;AAAvC,mGAAA,UAAU,OAAA;AAEnB,4CAA4C;AAC5C,oEAAkE;AAAzD,mHAAA,eAAe,OAAA;AAExB,4CAA4C;AAC5C,mCAAmD;AAA1C,6GAAA,qBAAqB,OAAA;AAE9B,kDAAkD;AAClD,iDAAgD;AAAvC,oGAAA,QAAQ,OAAA;AAEjB,0CAA0C;AAC1C,uEAAwE;AAA/D,oGAAA,SAAS,OAAA;AAGlB,kBAAkB;AAClB,wDAAuD;AAA9C,wGAAA,UAAU,OAAA;AACnB,oEAAkE;AAAzD,mHAAA,eAAe,OAAA;AACxB,gFAA+E;AAAtE,sHAAA,iBAAiB,OAAA;AAE1B,yEAAyE;AACzE,qDAGgC;AAF9B,iHAAA,mBAAmB,OAAA;AACnB,iHAAA,mBAAmB,OAAA;AAErB,uDAAsD;AAA7C,0GAAA,WAAW,OAAA;AAEpB,0DAA0D;AAC1D,sEAK4C;AAJ1C,yHAAA,sBAAsB,OAAA;AACtB,kHAAA,eAAe,OAAA;AACf,gHAAA,aAAa,OAAA;AACb,8HAAA,2BAA2B,OAAA;AAG7B,wCAAwC;AACxC,4EAA2E;AAAlE,wHAAA,kBAAkB,OAAA;AAC3B,8EAA6E;AAApE,gHAAA,cAAc,OAAA;AACvB,gGAA+F;AAAtF,kIAAA,uBAAuB,OAAA;AAChC,gFAA+E;AAAtE,kHAAA,eAAe,OAAA;AAYxB,8DAA8D;AAC9D,sEAAqE;AAA5D,4HAAA,oBAAoB,OAAA;AAG7B,kDAAkD;AAClD,sDAA4B;AAY5B,kFAAiF;AAAxE,oIAAA,wBAAwB,OAAA;AACjC,8EAA6E;AAApE,gIAAA,sBAAsB,OAAA;AAC/B,8CAA6C;AAApC,gGAAA,MAAM,OAAA;AACf,0EAAyE;AAAhE,4HAAA,oBAAoB,OAAA;AAC7B,4EAA2E;AAAlE,8HAAA,qBAAqB,OAAA;AAC9B,wEAAuE;AAA9D,0HAAA,mBAAmB,OAAA;AAI5B,+EAAuE;AAA9D,+GAAA,UAAU,OAAA;AAEnB,6EAAgF;AAAvE,wHAAA,oBAAoB,OAAA;AAG7B,iEAAgE;AAAvD,wGAAA,UAAU,OAAA;AACnB,qEAAoE;AAA3D,4GAAA,YAAY,OAAA;AACrB,wEAAuE;AAA9D,0HAAA,mBAAmB,OAAA;AAC5B,wFAAuF;AAA9E,0IAAA,2BAA2B,OAAA"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import { IAssetAccount, IAssetAccountDto } from '../interfaces/assetAccount';
|
|
2
|
+
import { Checksum } from '../types/checksum';
|
|
3
|
+
declare const BIGINT_FIELDS: readonly ["balance", "earned", "spent", "reserved"];
|
|
4
|
+
type BigIntField = (typeof BIGINT_FIELDS)[number];
|
|
5
|
+
/**
|
|
6
|
+
* Hydrate a raw DTO record into a canonical {@link IAssetAccountDto}.
|
|
7
|
+
*
|
|
8
|
+
* Handles two legacy markers introduced before the
|
|
9
|
+
* `asset-account-store-generalization` refactor:
|
|
10
|
+
*
|
|
11
|
+
* - **missing `assetId`** → defaults to `'joule'`.
|
|
12
|
+
* - **`number` balance fields** → multiplied by
|
|
13
|
+
* {@link JOULE_MICROUNITS_PER_UNIT} (rounded) and stored as decimal-
|
|
14
|
+
* string `bigint` microunits.
|
|
15
|
+
*
|
|
16
|
+
* Already-upgraded DTOs round-trip unchanged. The function never throws —
|
|
17
|
+
* unrecognized field shapes coerce to `'0'` so the caller gets a fully
|
|
18
|
+
* populated DTO it can persist on next write.
|
|
19
|
+
*
|
|
20
|
+
* @see asset-account-store-generalization spec, Requirements 1.4, 2.5, 2.6.
|
|
21
|
+
*/
|
|
22
|
+
export declare function hydrateAssetAccountDto(raw: Record<string, unknown>): IAssetAccountDto;
|
|
23
|
+
/**
|
|
24
|
+
* Generalized per-(member, asset) account.
|
|
25
|
+
*
|
|
26
|
+
* `bigint` microunit balances eliminate floating-point drift from
|
|
27
|
+
* charge / credit paths. The legacy {@link EnergyAccount} class is
|
|
28
|
+
* preserved untouched during this additive phase; a future phase will
|
|
29
|
+
* fold it onto this base via re-export alias.
|
|
30
|
+
*
|
|
31
|
+
* @see asset-account-store-generalization spec, Phase 3.
|
|
32
|
+
*/
|
|
33
|
+
export declare class AssetAccount implements IAssetAccount {
|
|
34
|
+
readonly memberId: Checksum;
|
|
35
|
+
readonly assetId: string;
|
|
36
|
+
readonly createdAt: Date;
|
|
37
|
+
balance: bigint;
|
|
38
|
+
earned: bigint;
|
|
39
|
+
spent: bigint;
|
|
40
|
+
reserved: bigint;
|
|
41
|
+
reputation: number;
|
|
42
|
+
lastUpdated: Date;
|
|
43
|
+
constructor(memberId: Checksum, assetId?: string, createdAt?: Date, balance?: bigint, earned?: bigint, spent?: bigint, reserved?: bigint, reputation?: number, lastUpdated?: Date);
|
|
44
|
+
/** Available = balance - reserved, floored at 0. */
|
|
45
|
+
get availableBalance(): bigint;
|
|
46
|
+
/** Net = earned - spent. May be negative. */
|
|
47
|
+
get netAsset(): bigint;
|
|
48
|
+
canAfford(amount: bigint): boolean;
|
|
49
|
+
reserve(amount: bigint): void;
|
|
50
|
+
release(amount: bigint): void;
|
|
51
|
+
charge(amount: bigint): void;
|
|
52
|
+
credit(amount: bigint): void;
|
|
53
|
+
updateReputation(newReputation: number): void;
|
|
54
|
+
toDto(): IAssetAccountDto;
|
|
55
|
+
/**
|
|
56
|
+
* Build an {@link AssetAccount} from a DTO. Accepts both fully-upgraded
|
|
57
|
+
* {@link IAssetAccountDto} and legacy `IEnergyAccountDto`-shaped records:
|
|
58
|
+
* the input is run through {@link hydrateAssetAccountDto} first.
|
|
59
|
+
*/
|
|
60
|
+
static fromDto(dto: Record<string, unknown>): AssetAccount;
|
|
61
|
+
toJson(): string;
|
|
62
|
+
static fromJson(json: string): AssetAccount;
|
|
63
|
+
}
|
|
64
|
+
export declare const ASSET_ACCOUNT_BIGINT_FIELDS: readonly BigIntField[];
|
|
65
|
+
export {};
|
|
66
|
+
//# sourceMappingURL=assetAccount.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"assetAccount.d.ts","sourceRoot":"","sources":["../../../../../brightchain-lib/src/lib/asset/assetAccount.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAC7E,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAG7C,QAAA,MAAM,aAAa,qDAAsD,CAAC;AAC1E,KAAK,WAAW,GAAG,CAAC,OAAO,aAAa,CAAC,CAAC,MAAM,CAAC,CAAC;AAWlD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,sBAAsB,CACpC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC3B,gBAAgB,CAsClB;AAED;;;;;;;;;GASG;AACH,qBAAa,YAAa,YAAW,aAAa;aAS9B,QAAQ,EAAE,QAAQ;aAClB,OAAO,EAAE,MAAM;aACf,SAAS,EAAE,IAAI;IAV1B,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,IAAI,CAAC;gBAGP,QAAQ,EAAE,QAAQ,EAClB,OAAO,GAAE,MAAuB,EAChC,SAAS,GAAE,IAAiB,EAC5C,OAAO,GAAE,MAAW,EACpB,MAAM,GAAE,MAAW,EACnB,KAAK,GAAE,MAAW,EAClB,QAAQ,GAAE,MAAW,EACrB,UAAU,SAAM,EAChB,WAAW,CAAC,EAAE,IAAI;IAoBpB,oDAAoD;IACpD,IAAI,gBAAgB,IAAI,MAAM,CAG7B;IAED,6CAA6C;IAC7C,IAAI,QAAQ,IAAI,MAAM,CAErB;IAED,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;IAKlC,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAa7B,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAM7B,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAc5B,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAO5B,gBAAgB,CAAC,aAAa,EAAE,MAAM,GAAG,IAAI;IAW7C,KAAK,IAAI,gBAAgB;IAczB;;;;OAIG;IACH,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,YAAY;IAe1D,MAAM,IAAI,MAAM;IAIhB,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY;CAG5C;AAID,eAAO,MAAM,2BAA2B,EAAE,SAAS,WAAW,EAC/C,CAAC"}
|
|
@@ -0,0 +1,192 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ASSET_ACCOUNT_BIGINT_FIELDS = exports.AssetAccount = void 0;
|
|
4
|
+
exports.hydrateAssetAccountDto = hydrateAssetAccountDto;
|
|
5
|
+
const insufficientAvailableBalanceError_1 = require("../errors/asset/insufficientAvailableBalanceError");
|
|
6
|
+
const invalidAmountError_1 = require("../errors/asset/invalidAmountError");
|
|
7
|
+
const checksum_1 = require("../types/checksum");
|
|
8
|
+
const jouleConstants_1 = require("./jouleConstants");
|
|
9
|
+
const BIGINT_FIELDS = ['balance', 'earned', 'spent', 'reserved'];
|
|
10
|
+
function assertNonNegativeBigInt(value, field) {
|
|
11
|
+
if (typeof value !== 'bigint') {
|
|
12
|
+
throw new invalidAmountError_1.InvalidAmountError(`${field} must be bigint`, value);
|
|
13
|
+
}
|
|
14
|
+
if (value < 0n) {
|
|
15
|
+
throw new invalidAmountError_1.InvalidAmountError(`${field} must be non-negative`, value);
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Hydrate a raw DTO record into a canonical {@link IAssetAccountDto}.
|
|
20
|
+
*
|
|
21
|
+
* Handles two legacy markers introduced before the
|
|
22
|
+
* `asset-account-store-generalization` refactor:
|
|
23
|
+
*
|
|
24
|
+
* - **missing `assetId`** → defaults to `'joule'`.
|
|
25
|
+
* - **`number` balance fields** → multiplied by
|
|
26
|
+
* {@link JOULE_MICROUNITS_PER_UNIT} (rounded) and stored as decimal-
|
|
27
|
+
* string `bigint` microunits.
|
|
28
|
+
*
|
|
29
|
+
* Already-upgraded DTOs round-trip unchanged. The function never throws —
|
|
30
|
+
* unrecognized field shapes coerce to `'0'` so the caller gets a fully
|
|
31
|
+
* populated DTO it can persist on next write.
|
|
32
|
+
*
|
|
33
|
+
* @see asset-account-store-generalization spec, Requirements 1.4, 2.5, 2.6.
|
|
34
|
+
*/
|
|
35
|
+
function hydrateAssetAccountDto(raw) {
|
|
36
|
+
const assetIdRaw = raw['assetId'];
|
|
37
|
+
const assetId = typeof assetIdRaw === 'string' && assetIdRaw.length > 0
|
|
38
|
+
? assetIdRaw
|
|
39
|
+
: jouleConstants_1.JOULE_ASSET_ID;
|
|
40
|
+
const out = { ...raw, assetId };
|
|
41
|
+
for (const field of BIGINT_FIELDS) {
|
|
42
|
+
const v = raw[field];
|
|
43
|
+
if (typeof v === 'bigint') {
|
|
44
|
+
out[field] = v.toString();
|
|
45
|
+
}
|
|
46
|
+
else if (typeof v === 'number' && Number.isFinite(v)) {
|
|
47
|
+
// Legacy joule DTO: number Joules → bigint microjoules.
|
|
48
|
+
const micro = BigInt(Math.round(v * Number(jouleConstants_1.JOULE_MICROUNITS_PER_UNIT)));
|
|
49
|
+
out[field] = micro.toString();
|
|
50
|
+
}
|
|
51
|
+
else if (typeof v === 'string' && /^-?\d+$/.test(v)) {
|
|
52
|
+
out[field] = v;
|
|
53
|
+
}
|
|
54
|
+
else {
|
|
55
|
+
out[field] = '0';
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
if (typeof out['reputation'] !== 'number') {
|
|
59
|
+
out['reputation'] = 0;
|
|
60
|
+
}
|
|
61
|
+
if (typeof out['memberId'] !== 'string') {
|
|
62
|
+
out['memberId'] = '';
|
|
63
|
+
}
|
|
64
|
+
if (typeof out['createdAt'] !== 'string') {
|
|
65
|
+
out['createdAt'] = new Date(0).toISOString();
|
|
66
|
+
}
|
|
67
|
+
if (typeof out['lastUpdated'] !== 'string') {
|
|
68
|
+
out['lastUpdated'] = out['createdAt'];
|
|
69
|
+
}
|
|
70
|
+
return out;
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Generalized per-(member, asset) account.
|
|
74
|
+
*
|
|
75
|
+
* `bigint` microunit balances eliminate floating-point drift from
|
|
76
|
+
* charge / credit paths. The legacy {@link EnergyAccount} class is
|
|
77
|
+
* preserved untouched during this additive phase; a future phase will
|
|
78
|
+
* fold it onto this base via re-export alias.
|
|
79
|
+
*
|
|
80
|
+
* @see asset-account-store-generalization spec, Phase 3.
|
|
81
|
+
*/
|
|
82
|
+
class AssetAccount {
|
|
83
|
+
memberId;
|
|
84
|
+
assetId;
|
|
85
|
+
createdAt;
|
|
86
|
+
balance;
|
|
87
|
+
earned;
|
|
88
|
+
spent;
|
|
89
|
+
reserved;
|
|
90
|
+
reputation;
|
|
91
|
+
lastUpdated;
|
|
92
|
+
constructor(memberId, assetId = jouleConstants_1.JOULE_ASSET_ID, createdAt = new Date(), balance = 0n, earned = 0n, spent = 0n, reserved = 0n, reputation = 0.5, lastUpdated) {
|
|
93
|
+
this.memberId = memberId;
|
|
94
|
+
this.assetId = assetId;
|
|
95
|
+
this.createdAt = createdAt;
|
|
96
|
+
if (typeof assetId !== 'string' || assetId.length === 0) {
|
|
97
|
+
throw new invalidAmountError_1.InvalidAmountError('assetId must be a non-empty string', assetId);
|
|
98
|
+
}
|
|
99
|
+
assertNonNegativeBigInt(balance, 'balance');
|
|
100
|
+
assertNonNegativeBigInt(earned, 'earned');
|
|
101
|
+
assertNonNegativeBigInt(spent, 'spent');
|
|
102
|
+
assertNonNegativeBigInt(reserved, 'reserved');
|
|
103
|
+
this.balance = balance;
|
|
104
|
+
this.earned = earned;
|
|
105
|
+
this.spent = spent;
|
|
106
|
+
this.reserved = reserved;
|
|
107
|
+
this.reputation = Math.max(0, Math.min(1, reputation));
|
|
108
|
+
this.lastUpdated = lastUpdated ?? createdAt;
|
|
109
|
+
}
|
|
110
|
+
/** Available = balance - reserved, floored at 0. */
|
|
111
|
+
get availableBalance() {
|
|
112
|
+
const a = this.balance - this.reserved;
|
|
113
|
+
return a > 0n ? a : 0n;
|
|
114
|
+
}
|
|
115
|
+
/** Net = earned - spent. May be negative. */
|
|
116
|
+
get netAsset() {
|
|
117
|
+
return this.earned - this.spent;
|
|
118
|
+
}
|
|
119
|
+
canAfford(amount) {
|
|
120
|
+
if (typeof amount !== 'bigint' || amount < 0n)
|
|
121
|
+
return false;
|
|
122
|
+
return this.availableBalance >= amount;
|
|
123
|
+
}
|
|
124
|
+
reserve(amount) {
|
|
125
|
+
assertNonNegativeBigInt(amount, 'amount');
|
|
126
|
+
if (!this.canAfford(amount)) {
|
|
127
|
+
throw new insufficientAvailableBalanceError_1.InsufficientAvailableBalanceError(this.assetId, amount, this.availableBalance);
|
|
128
|
+
}
|
|
129
|
+
this.reserved += amount;
|
|
130
|
+
this.lastUpdated = new Date();
|
|
131
|
+
}
|
|
132
|
+
release(amount) {
|
|
133
|
+
assertNonNegativeBigInt(amount, 'amount');
|
|
134
|
+
this.reserved = this.reserved > amount ? this.reserved - amount : 0n;
|
|
135
|
+
this.lastUpdated = new Date();
|
|
136
|
+
}
|
|
137
|
+
charge(amount) {
|
|
138
|
+
assertNonNegativeBigInt(amount, 'amount');
|
|
139
|
+
if (amount > this.balance) {
|
|
140
|
+
throw new insufficientAvailableBalanceError_1.InsufficientAvailableBalanceError(this.assetId, amount, this.balance);
|
|
141
|
+
}
|
|
142
|
+
this.balance -= amount;
|
|
143
|
+
this.spent += amount;
|
|
144
|
+
this.lastUpdated = new Date();
|
|
145
|
+
}
|
|
146
|
+
credit(amount) {
|
|
147
|
+
assertNonNegativeBigInt(amount, 'amount');
|
|
148
|
+
this.balance += amount;
|
|
149
|
+
this.earned += amount;
|
|
150
|
+
this.lastUpdated = new Date();
|
|
151
|
+
}
|
|
152
|
+
updateReputation(newReputation) {
|
|
153
|
+
if (typeof newReputation !== 'number' || !Number.isFinite(newReputation)) {
|
|
154
|
+
throw new invalidAmountError_1.InvalidAmountError('reputation must be finite number', newReputation);
|
|
155
|
+
}
|
|
156
|
+
this.reputation = Math.max(0, Math.min(1, newReputation));
|
|
157
|
+
this.lastUpdated = new Date();
|
|
158
|
+
}
|
|
159
|
+
toDto() {
|
|
160
|
+
return {
|
|
161
|
+
memberId: this.memberId.toHex(),
|
|
162
|
+
assetId: this.assetId,
|
|
163
|
+
balance: this.balance.toString(),
|
|
164
|
+
earned: this.earned.toString(),
|
|
165
|
+
spent: this.spent.toString(),
|
|
166
|
+
reserved: this.reserved.toString(),
|
|
167
|
+
reputation: this.reputation,
|
|
168
|
+
createdAt: this.createdAt.toISOString(),
|
|
169
|
+
lastUpdated: this.lastUpdated.toISOString(),
|
|
170
|
+
};
|
|
171
|
+
}
|
|
172
|
+
/**
|
|
173
|
+
* Build an {@link AssetAccount} from a DTO. Accepts both fully-upgraded
|
|
174
|
+
* {@link IAssetAccountDto} and legacy `IEnergyAccountDto`-shaped records:
|
|
175
|
+
* the input is run through {@link hydrateAssetAccountDto} first.
|
|
176
|
+
*/
|
|
177
|
+
static fromDto(dto) {
|
|
178
|
+
const h = hydrateAssetAccountDto(dto);
|
|
179
|
+
return new AssetAccount(checksum_1.Checksum.fromHex(h.memberId), h.assetId, new Date(h.createdAt), BigInt(h.balance), BigInt(h.earned), BigInt(h.spent), BigInt(h.reserved), h.reputation, new Date(h.lastUpdated));
|
|
180
|
+
}
|
|
181
|
+
toJson() {
|
|
182
|
+
return JSON.stringify(this.toDto());
|
|
183
|
+
}
|
|
184
|
+
static fromJson(json) {
|
|
185
|
+
return AssetAccount.fromDto(JSON.parse(json));
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
exports.AssetAccount = AssetAccount;
|
|
189
|
+
// Re-export field list for tests / store internals that need to walk
|
|
190
|
+
// every bigint-microunit field.
|
|
191
|
+
exports.ASSET_ACCOUNT_BIGINT_FIELDS = BIGINT_FIELDS;
|
|
192
|
+
//# sourceMappingURL=assetAccount.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"assetAccount.js","sourceRoot":"","sources":["../../../../../brightchain-lib/src/lib/asset/assetAccount.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Options controlling {@link formatAssetAmount} output.
|
|
3
|
+
*/
|
|
4
|
+
export interface IFormatAssetAmountOptions {
|
|
5
|
+
/**
|
|
6
|
+
* Number of fractional digits to render. Defaults to the asset's natural
|
|
7
|
+
* precision (6 for joule).
|
|
8
|
+
*/
|
|
9
|
+
precision?: number;
|
|
10
|
+
/**
|
|
11
|
+
* BCP-47 locale tag for digit grouping / decimal separator. When omitted,
|
|
12
|
+
* a plain non-localized representation is produced (no thousands grouping,
|
|
13
|
+
* `.` decimal separator).
|
|
14
|
+
*/
|
|
15
|
+
locale?: string;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Format an asset microunit amount as a human-readable string.
|
|
19
|
+
*
|
|
20
|
+
* - For `assetId === 'joule'` the default format is `'1.234567 J'`.
|
|
21
|
+
* - For unknown assetIds the function falls back to `'<microunits> <assetId>'`
|
|
22
|
+
* raw and never throws.
|
|
23
|
+
*
|
|
24
|
+
* No business logic SHALL parse formatted strings back into amounts; parsing
|
|
25
|
+
* occurs only on validated DTO inputs.
|
|
26
|
+
*
|
|
27
|
+
* @see asset-account-store-generalization spec, Requirements 8.1–8.4.
|
|
28
|
+
*/
|
|
29
|
+
export declare function formatAssetAmount(amount: bigint, assetId: string, opts?: IFormatAssetAmountOptions): string;
|
|
30
|
+
//# sourceMappingURL=formatAssetAmount.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"formatAssetAmount.d.ts","sourceRoot":"","sources":["../../../../../brightchain-lib/src/lib/asset/formatAssetAmount.ts"],"names":[],"mappings":"AAOA;;GAEG;AACH,MAAM,WAAW,yBAAyB;IACxC;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB;;;;OAIG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,EACf,IAAI,CAAC,EAAE,yBAAyB,GAC/B,MAAM,CAwCR"}
|