@bsv/wallet-toolbox 2.13.0 → 2.13.2
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 +283 -1
- package/README.md +403 -5
- package/docs/README.md +8 -1
- package/docs/client.md +13057 -4632
- package/docs/identity-verification.md +196 -0
- package/docs/monitor.md +505 -190
- package/docs/services.md +4013 -1153
- package/docs/setup.md +98 -58
- package/docs/storage.md +5780 -1609
- package/docs/wallet.md +10155 -10871
- package/out/src/CWIStyleWalletManager.d.ts +6 -8
- package/out/src/CWIStyleWalletManager.d.ts.map +1 -1
- package/out/src/CWIStyleWalletManager.js +170 -125
- package/out/src/CWIStyleWalletManager.js.map +1 -1
- package/out/src/Setup.d.ts +2 -0
- package/out/src/Setup.d.ts.map +1 -1
- package/out/src/Setup.js +3 -2
- package/out/src/Setup.js.map +1 -1
- package/out/src/ShamirWalletManager.d.ts.map +1 -1
- package/out/src/ShamirWalletManager.js +34 -19
- package/out/src/ShamirWalletManager.js.map +1 -1
- package/out/src/SimpleWalletManager.d.ts.map +1 -1
- package/out/src/SimpleWalletManager.js +7 -6
- package/out/src/SimpleWalletManager.js.map +1 -1
- package/out/src/Wallet.d.ts +50 -11
- package/out/src/Wallet.d.ts.map +1 -1
- package/out/src/Wallet.js +183 -107
- package/out/src/Wallet.js.map +1 -1
- package/out/src/WalletAuthenticationManager.d.ts.map +1 -1
- package/out/src/WalletAuthenticationManager.js +282 -26
- package/out/src/WalletAuthenticationManager.js.map +1 -1
- package/out/src/WalletLogger.js +1 -1
- package/out/src/WalletLogger.js.map +1 -1
- package/out/src/WalletPermissionsManager.d.ts +30 -17
- package/out/src/WalletPermissionsManager.d.ts.map +1 -1
- package/out/src/WalletPermissionsManager.js +540 -312
- package/out/src/WalletPermissionsManager.js.map +1 -1
- package/out/src/WalletSettingsManager.d.ts +3 -2
- package/out/src/WalletSettingsManager.d.ts.map +1 -1
- package/out/src/WalletSettingsManager.js +141 -6
- package/out/src/WalletSettingsManager.js.map +1 -1
- package/out/src/entropy/EntropyCollector.d.ts.map +1 -1
- package/out/src/entropy/EntropyCollector.js +3 -2
- package/out/src/entropy/EntropyCollector.js.map +1 -1
- package/out/src/fundWalletP2PKH.d.ts.map +1 -1
- package/out/src/fundWalletP2PKH.js +143 -44
- package/out/src/fundWalletP2PKH.js.map +1 -1
- package/out/src/mockchain/MockChainTracker.d.ts.map +1 -1
- package/out/src/mockchain/MockChainTracker.js +5 -5
- package/out/src/mockchain/MockChainTracker.js.map +1 -1
- package/out/src/mockchain/MockServices.d.ts.map +1 -1
- package/out/src/mockchain/MockServices.js +32 -8
- package/out/src/mockchain/MockServices.js.map +1 -1
- package/out/src/monitor/Monitor.d.ts +17 -0
- package/out/src/monitor/Monitor.d.ts.map +1 -1
- package/out/src/monitor/Monitor.js +206 -42
- package/out/src/monitor/Monitor.js.map +1 -1
- package/out/src/monitor/MonitorDaemon.d.ts.map +1 -1
- package/out/src/monitor/MonitorDaemon.js +64 -16
- package/out/src/monitor/MonitorDaemon.js.map +1 -1
- package/out/src/monitor/monitorValidation.d.ts +12 -0
- package/out/src/monitor/monitorValidation.d.ts.map +1 -0
- package/out/src/monitor/monitorValidation.js +133 -0
- package/out/src/monitor/monitorValidation.js.map +1 -0
- package/out/src/monitor/tasks/TaskArcSSE.d.ts +2 -0
- package/out/src/monitor/tasks/TaskArcSSE.d.ts.map +1 -1
- package/out/src/monitor/tasks/TaskArcSSE.js +28 -12
- package/out/src/monitor/tasks/TaskArcSSE.js.map +1 -1
- package/out/src/monitor/tasks/TaskCheckForProofs.d.ts +5 -0
- package/out/src/monitor/tasks/TaskCheckForProofs.d.ts.map +1 -1
- package/out/src/monitor/tasks/TaskCheckForProofs.js +29 -24
- package/out/src/monitor/tasks/TaskCheckForProofs.js.map +1 -1
- package/out/src/monitor/tasks/TaskCheckNoSends.d.ts.map +1 -1
- package/out/src/monitor/tasks/TaskCheckNoSends.js +11 -3
- package/out/src/monitor/tasks/TaskCheckNoSends.js.map +1 -1
- package/out/src/monitor/tasks/TaskFailAbandoned.d.ts.map +1 -1
- package/out/src/monitor/tasks/TaskFailAbandoned.js +9 -4
- package/out/src/monitor/tasks/TaskFailAbandoned.js.map +1 -1
- package/out/src/monitor/tasks/TaskNewHeader.d.ts.map +1 -1
- package/out/src/monitor/tasks/TaskNewHeader.js +3 -1
- package/out/src/monitor/tasks/TaskNewHeader.js.map +1 -1
- package/out/src/monitor/tasks/TaskReconcilePendingTransactions.d.ts.map +1 -1
- package/out/src/monitor/tasks/TaskReconcilePendingTransactions.js +9 -3
- package/out/src/monitor/tasks/TaskReconcilePendingTransactions.js.map +1 -1
- package/out/src/monitor/tasks/TaskReorg.d.ts.map +1 -1
- package/out/src/monitor/tasks/TaskReorg.js +4 -4
- package/out/src/monitor/tasks/TaskReorg.js.map +1 -1
- package/out/src/monitor/tasks/TaskReviewDoubleSpends.d.ts.map +1 -1
- package/out/src/monitor/tasks/TaskReviewDoubleSpends.js +17 -7
- package/out/src/monitor/tasks/TaskReviewDoubleSpends.js.map +1 -1
- package/out/src/monitor/tasks/TaskReviewProvenTxs.d.ts +18 -1
- package/out/src/monitor/tasks/TaskReviewProvenTxs.d.ts.map +1 -1
- package/out/src/monitor/tasks/TaskReviewProvenTxs.js +99 -21
- package/out/src/monitor/tasks/TaskReviewProvenTxs.js.map +1 -1
- package/out/src/monitor/tasks/TaskReviewUtxos.d.ts +4 -4
- package/out/src/monitor/tasks/TaskReviewUtxos.d.ts.map +1 -1
- package/out/src/monitor/tasks/TaskReviewUtxos.js +41 -13
- package/out/src/monitor/tasks/TaskReviewUtxos.js.map +1 -1
- package/out/src/monitor/tasks/TaskSendWaiting.d.ts.map +1 -1
- package/out/src/monitor/tasks/TaskSendWaiting.js +52 -11
- package/out/src/monitor/tasks/TaskSendWaiting.js.map +1 -1
- package/out/src/monitor/tasks/TaskUnFail.d.ts +1 -0
- package/out/src/monitor/tasks/TaskUnFail.d.ts.map +1 -1
- package/out/src/monitor/tasks/TaskUnFail.js +26 -8
- package/out/src/monitor/tasks/TaskUnFail.js.map +1 -1
- package/out/src/sdk/PrivilegedKeyManager.d.ts.map +1 -1
- package/out/src/sdk/PrivilegedKeyManager.js +3 -2
- package/out/src/sdk/PrivilegedKeyManager.js.map +1 -1
- package/out/src/sdk/WalletErrorFromJson.d.ts.map +1 -1
- package/out/src/sdk/WalletErrorFromJson.js +112 -2
- package/out/src/sdk/WalletErrorFromJson.js.map +1 -1
- package/out/src/sdk/WalletServices.interfaces.d.ts +17 -1
- package/out/src/sdk/WalletServices.interfaces.d.ts.map +1 -1
- package/out/src/services/Services.d.ts +4 -0
- package/out/src/services/Services.d.ts.map +1 -1
- package/out/src/services/Services.js +260 -117
- package/out/src/services/Services.js.map +1 -1
- package/out/src/services/chaintracker/BHServiceClient.d.ts +21 -4
- package/out/src/services/chaintracker/BHServiceClient.d.ts.map +1 -1
- package/out/src/services/chaintracker/BHServiceClient.js +267 -66
- package/out/src/services/chaintracker/BHServiceClient.js.map +1 -1
- package/out/src/services/chaintracker/ChaintracksChainTracker.d.ts +25 -3
- package/out/src/services/chaintracker/ChaintracksChainTracker.d.ts.map +1 -1
- package/out/src/services/chaintracker/ChaintracksChainTracker.js +188 -53
- package/out/src/services/chaintracker/ChaintracksChainTracker.js.map +1 -1
- package/out/src/services/chaintracker/LocalChainTracker.d.ts +26 -0
- package/out/src/services/chaintracker/LocalChainTracker.d.ts.map +1 -1
- package/out/src/services/chaintracker/LocalChainTracker.js +180 -10
- package/out/src/services/chaintracker/LocalChainTracker.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Api/BlockHeaderApi.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Api/BlockHeaderApi.js +59 -7
- package/out/src/services/chaintracker/chaintracks/Api/BlockHeaderApi.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Api/ChaintracksApi.d.ts +6 -0
- package/out/src/services/chaintracker/chaintracks/Api/ChaintracksApi.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Api/ChaintracksClientApi.d.ts +7 -0
- package/out/src/services/chaintracker/chaintracks/Api/ChaintracksClientApi.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Api/ChaintracksFetchApi.d.ts +2 -0
- package/out/src/services/chaintracker/chaintracks/Api/ChaintracksFetchApi.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Api/ChaintracksStorageApi.d.ts +9 -0
- package/out/src/services/chaintracker/chaintracks/Api/ChaintracksStorageApi.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Chaintracks.d.ts +19 -0
- package/out/src/services/chaintracker/chaintracks/Chaintracks.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Chaintracks.js +237 -61
- package/out/src/services/chaintracker/chaintracks/Chaintracks.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/ChaintracksService.d.ts +16 -0
- package/out/src/services/chaintracker/chaintracks/ChaintracksService.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/ChaintracksService.js +150 -26
- package/out/src/services/chaintracker/chaintracks/ChaintracksService.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/ChaintracksServiceClient.d.ts +30 -1
- package/out/src/services/chaintracker/chaintracks/ChaintracksServiceClient.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/ChaintracksServiceClient.js +346 -30
- package/out/src/services/chaintracker/chaintracks/ChaintracksServiceClient.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/GoChaintracksServiceClient.d.ts +32 -1
- package/out/src/services/chaintracker/chaintracks/GoChaintracksServiceClient.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/GoChaintracksServiceClient.js +375 -43
- package/out/src/services/chaintracker/chaintracks/GoChaintracksServiceClient.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorBase.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorBase.js +28 -3
- package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorBase.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorCDN.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorCDN.js +33 -9
- package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorCDN.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorCDNBabbage.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorCDNBabbage.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorChaintracks.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorChaintracks.js +4 -2
- package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorChaintracks.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorWhatsOnChainCdn.d.ts +2 -0
- package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorWhatsOnChainCdn.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorWhatsOnChainCdn.js +17 -4
- package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorWhatsOnChainCdn.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorWhatsOnChainWs.d.ts +2 -0
- package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorWhatsOnChainWs.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorWhatsOnChainWs.js +40 -20
- package/out/src/services/chaintracker/chaintracks/Ingest/BulkIngestorWhatsOnChainWs.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorBase.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorBase.js +14 -0
- package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorBase.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorChaintracksSSE.d.ts +6 -0
- package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorChaintracksSSE.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorChaintracksSSE.js +56 -9
- package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorChaintracksSSE.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorTeranodeP2P.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorTeranodeP2P.js +6 -3
- package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorTeranodeP2P.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorWhatsOnChainPoll.d.ts +4 -0
- package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorWhatsOnChainPoll.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorWhatsOnChainPoll.js +27 -9
- package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorWhatsOnChainPoll.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorWhatsOnChainWs.d.ts +8 -0
- package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorWhatsOnChainWs.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorWhatsOnChainWs.js +49 -5
- package/out/src/services/chaintracker/chaintracks/Ingest/LiveIngestorWhatsOnChainWs.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainIngestorWs.d.ts +1 -1
- package/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainIngestorWs.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainIngestorWs.js +90 -21
- package/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainIngestorWs.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainServices.d.ts +3 -1
- package/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainServices.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainServices.js +185 -38
- package/out/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainServices.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Storage/BulkStorageBase.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Storage/BulkStorageBase.js +59 -6
- package/out/src/services/chaintracker/chaintracks/Storage/BulkStorageBase.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksKnexMigrations.d.ts +2 -0
- package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksKnexMigrations.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksKnexMigrations.js +89 -39
- package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksKnexMigrations.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageBase.d.ts +10 -0
- package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageBase.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageBase.js +225 -24
- package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageBase.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageIdb.d.ts +2 -1
- package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageIdb.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageIdb.js +265 -96
- package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageIdb.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageKnex.d.ts +3 -0
- package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageKnex.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageKnex.js +225 -86
- package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageKnex.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageNoDb.d.ts +3 -0
- package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageNoDb.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageNoDb.js +121 -35
- package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageNoDb.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/configureChaintracksIngestors.js +2 -2
- package/out/src/services/chaintracker/chaintracks/configureChaintracksIngestors.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/createDefaultIdbChaintracksOptions.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/createDefaultIdbChaintracksOptions.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/createDefaultKnexChaintracksOptions.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/createDefaultKnexChaintracksOptions.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/createDefaultNoDbChaintracksOptions.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/createDefaultNoDbChaintracksOptions.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/createIdbChaintracks.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/createIdbChaintracks.js +1 -7
- package/out/src/services/chaintracker/chaintracks/createIdbChaintracks.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/createKnexChaintracks.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/createKnexChaintracks.js +1 -7
- package/out/src/services/chaintracker/chaintracks/createKnexChaintracks.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/createNoDbChaintracks.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/createNoDbChaintracks.js +1 -7
- package/out/src/services/chaintracker/chaintracks/createNoDbChaintracks.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/util/BulkFileDataCacheFs.d.ts +18 -0
- package/out/src/services/chaintracker/chaintracks/util/BulkFileDataCacheFs.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/util/BulkFileDataCacheFs.js +204 -14
- package/out/src/services/chaintracker/chaintracks/util/BulkFileDataCacheFs.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/util/BulkFileDataManager.d.ts +6 -1
- package/out/src/services/chaintracker/chaintracks/util/BulkFileDataManager.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/util/BulkFileDataManager.js +486 -82
- package/out/src/services/chaintracker/chaintracks/util/BulkFileDataManager.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/util/BulkFileDataReader.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/util/BulkFileDataReader.js +17 -1
- package/out/src/services/chaintracker/chaintracks/util/BulkFileDataReader.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/util/BulkFileDataValidator.worker.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/util/BulkFileDataValidator.worker.js +12 -2
- package/out/src/services/chaintracker/chaintracks/util/BulkFileDataValidator.worker.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/util/BulkFilesReader.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/util/BulkFilesReader.js +99 -30
- package/out/src/services/chaintracker/chaintracks/util/BulkFilesReader.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/util/BulkHeaderFile.d.ts +1 -0
- package/out/src/services/chaintracker/chaintracks/util/BulkHeaderFile.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/util/BulkHeaderFile.js +23 -15
- package/out/src/services/chaintracker/chaintracks/util/BulkHeaderFile.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/util/ChaintracksFetch.d.ts +7 -0
- package/out/src/services/chaintracker/chaintracks/util/ChaintracksFetch.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/util/ChaintracksFetch.js +90 -24
- package/out/src/services/chaintracker/chaintracks/util/ChaintracksFetch.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/util/ChaintracksFs.d.ts +2 -1
- package/out/src/services/chaintracker/chaintracks/util/ChaintracksFs.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/util/ChaintracksFs.js +57 -11
- package/out/src/services/chaintracker/chaintracks/util/ChaintracksFs.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/util/DurableFileBulkFileDownloadBudget.d.ts +9 -0
- package/out/src/services/chaintracker/chaintracks/util/DurableFileBulkFileDownloadBudget.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/util/DurableFileBulkFileDownloadBudget.js +100 -14
- package/out/src/services/chaintracker/chaintracks/util/DurableFileBulkFileDownloadBudget.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/util/HeightRange.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/util/HeightRange.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/util/InlineBulkFileDataValidator.d.ts +2 -0
- package/out/src/services/chaintracker/chaintracks/util/InlineBulkFileDataValidator.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/util/InlineBulkFileDataValidator.js +104 -8
- package/out/src/services/chaintracker/chaintracks/util/InlineBulkFileDataValidator.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/util/NodeBulkFileDataValidator.d.ts +1 -0
- package/out/src/services/chaintracker/chaintracks/util/NodeBulkFileDataValidator.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/util/NodeBulkFileDataValidator.js +79 -15
- package/out/src/services/chaintracker/chaintracks/util/NodeBulkFileDataValidator.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/util/SingleWriterMultiReaderLock.d.ts +3 -0
- package/out/src/services/chaintracker/chaintracks/util/SingleWriterMultiReaderLock.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/util/SingleWriterMultiReaderLock.js +15 -0
- package/out/src/services/chaintracker/chaintracks/util/SingleWriterMultiReaderLock.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/util/blockHeaderUtilities.d.ts +6 -1
- package/out/src/services/chaintracker/chaintracks/util/blockHeaderUtilities.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/util/blockHeaderUtilities.js +311 -93
- package/out/src/services/chaintracker/chaintracks/util/blockHeaderUtilities.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/util/safeDiagnostic.d.ts +4 -0
- package/out/src/services/chaintracker/chaintracks/util/safeDiagnostic.d.ts.map +1 -0
- package/out/src/services/chaintracker/chaintracks/util/safeDiagnostic.js +33 -0
- package/out/src/services/chaintracker/chaintracks/util/safeDiagnostic.js.map +1 -0
- package/out/src/services/chaintracker/chaintracks/util/validBulkHeaderFilesByFileHash.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/util/validBulkHeaderFilesByFileHash.js.map +1 -1
- package/out/src/services/classifyOutputUtxo.d.ts.map +1 -1
- package/out/src/services/classifyOutputUtxo.js +19 -10
- package/out/src/services/classifyOutputUtxo.js.map +1 -1
- package/out/src/services/fiatRateValidation.d.ts +12 -0
- package/out/src/services/fiatRateValidation.d.ts.map +1 -0
- package/out/src/services/fiatRateValidation.js +138 -0
- package/out/src/services/fiatRateValidation.js.map +1 -0
- package/out/src/services/getCanonicalMerklePath.d.ts +15 -0
- package/out/src/services/getCanonicalMerklePath.d.ts.map +1 -0
- package/out/src/services/getCanonicalMerklePath.js +90 -0
- package/out/src/services/getCanonicalMerklePath.js.map +1 -0
- package/out/src/services/providers/ARC.d.ts +3 -16
- package/out/src/services/providers/ARC.d.ts.map +1 -1
- package/out/src/services/providers/ARC.js +36 -37
- package/out/src/services/providers/ARC.js.map +1 -1
- package/out/src/services/providers/ArcSSEClient.d.ts +25 -19
- package/out/src/services/providers/ArcSSEClient.d.ts.map +1 -1
- package/out/src/services/providers/ArcSSEClient.js +352 -85
- package/out/src/services/providers/ArcSSEClient.js.map +1 -1
- package/out/src/services/providers/Arcade.d.ts +1 -0
- package/out/src/services/providers/Arcade.d.ts.map +1 -1
- package/out/src/services/providers/Arcade.js +56 -41
- package/out/src/services/providers/Arcade.js.map +1 -1
- package/out/src/services/providers/Bitails.d.ts +3 -0
- package/out/src/services/providers/Bitails.d.ts.map +1 -1
- package/out/src/services/providers/Bitails.js +79 -12
- package/out/src/services/providers/Bitails.js.map +1 -1
- package/out/src/services/providers/SdkWhatsOnChain.d.ts +8 -2
- package/out/src/services/providers/SdkWhatsOnChain.d.ts.map +1 -1
- package/out/src/services/providers/SdkWhatsOnChain.js +83 -10
- package/out/src/services/providers/SdkWhatsOnChain.js.map +1 -1
- package/out/src/services/providers/WhatsOnChain.d.ts +3 -0
- package/out/src/services/providers/WhatsOnChain.d.ts.map +1 -1
- package/out/src/services/providers/WhatsOnChain.js +221 -69
- package/out/src/services/providers/WhatsOnChain.js.map +1 -1
- package/out/src/services/providers/arcProviderConfig.d.ts +27 -0
- package/out/src/services/providers/arcProviderConfig.d.ts.map +1 -0
- package/out/src/services/providers/arcProviderConfig.js +83 -0
- package/out/src/services/providers/arcProviderConfig.js.map +1 -0
- package/out/src/services/providers/arcTxDataValidation.d.ts +4 -0
- package/out/src/services/providers/arcTxDataValidation.d.ts.map +1 -0
- package/out/src/services/providers/arcTxDataValidation.js +92 -0
- package/out/src/services/providers/arcTxDataValidation.js.map +1 -0
- package/out/src/services/providers/exchangeRates.d.ts +3 -3
- package/out/src/services/providers/exchangeRates.d.ts.map +1 -1
- package/out/src/services/providers/exchangeRates.js +153 -226
- package/out/src/services/providers/exchangeRates.js.map +1 -1
- package/out/src/services/providers/getBeefForTxid.d.ts.map +1 -1
- package/out/src/services/providers/getBeefForTxid.js.map +1 -1
- package/out/src/services/providers/whatsOnChainHelpers.d.ts +2 -2
- package/out/src/services/providers/whatsOnChainHelpers.d.ts.map +1 -1
- package/out/src/services/providers/whatsOnChainHelpers.js +11 -8
- package/out/src/services/providers/whatsOnChainHelpers.js.map +1 -1
- package/out/src/services/validateMerklePathResult.d.ts +30 -0
- package/out/src/services/validateMerklePathResult.d.ts.map +1 -0
- package/out/src/services/validateMerklePathResult.js +272 -0
- package/out/src/services/validateMerklePathResult.js.map +1 -0
- package/out/src/services/validatePostBeefResult.d.ts +17 -0
- package/out/src/services/validatePostBeefResult.d.ts.map +1 -0
- package/out/src/services/validatePostBeefResult.js +334 -0
- package/out/src/services/validatePostBeefResult.js.map +1 -0
- package/out/src/services/validateRawTxResult.d.ts +6 -0
- package/out/src/services/validateRawTxResult.d.ts.map +1 -0
- package/out/src/services/validateRawTxResult.js +77 -0
- package/out/src/services/validateRawTxResult.js.map +1 -0
- package/out/src/services/validateScriptHashHistoryResult.d.ts +5 -0
- package/out/src/services/validateScriptHashHistoryResult.d.ts.map +1 -0
- package/out/src/services/validateScriptHashHistoryResult.js +99 -0
- package/out/src/services/validateScriptHashHistoryResult.js.map +1 -0
- package/out/src/services/validateStatusForTxidsResult.d.ts +8 -0
- package/out/src/services/validateStatusForTxidsResult.d.ts.map +1 -0
- package/out/src/services/validateStatusForTxidsResult.js +181 -0
- package/out/src/services/validateStatusForTxidsResult.js.map +1 -0
- package/out/src/services/validateUtxoStatusResult.d.ts +6 -0
- package/out/src/services/validateUtxoStatusResult.d.ts.map +1 -0
- package/out/src/services/validateUtxoStatusResult.js +126 -0
- package/out/src/services/validateUtxoStatusResult.js.map +1 -0
- package/out/src/signer/actionBatch/ActionBatchPlanner.d.ts +3 -2
- package/out/src/signer/actionBatch/ActionBatchPlanner.d.ts.map +1 -1
- package/out/src/signer/actionBatch/ActionBatchPlanner.js +4 -3
- package/out/src/signer/actionBatch/ActionBatchPlanner.js.map +1 -1
- package/out/src/signer/actionBatch/ActionBatchWorkspace.d.ts +6 -5
- package/out/src/signer/actionBatch/ActionBatchWorkspace.d.ts.map +1 -1
- package/out/src/signer/actionBatch/ActionBatchWorkspace.js +70 -76
- package/out/src/signer/actionBatch/ActionBatchWorkspace.js.map +1 -1
- package/out/src/signer/actionBatch/actionBatchBootstrap.d.ts +2 -2
- package/out/src/signer/actionBatch/actionBatchBootstrap.d.ts.map +1 -1
- package/out/src/signer/actionBatch/actionBatchBootstrap.js +3 -3
- package/out/src/signer/actionBatch/actionBatchBootstrap.js.map +1 -1
- package/out/src/signer/methods/acquireDirectCertificate.d.ts +3 -2
- package/out/src/signer/methods/acquireDirectCertificate.d.ts.map +1 -1
- package/out/src/signer/methods/acquireDirectCertificate.js.map +1 -1
- package/out/src/signer/methods/buildSignableTransaction.d.ts +6 -5
- package/out/src/signer/methods/buildSignableTransaction.d.ts.map +1 -1
- package/out/src/signer/methods/buildSignableTransaction.js +6 -11
- package/out/src/signer/methods/buildSignableTransaction.js.map +1 -1
- package/out/src/signer/methods/createAction.d.ts +4 -3
- package/out/src/signer/methods/createAction.d.ts.map +1 -1
- package/out/src/signer/methods/createAction.js +4 -2
- package/out/src/signer/methods/createAction.js.map +1 -1
- package/out/src/signer/methods/createNoSendExpiryAction.d.ts +3 -3
- package/out/src/signer/methods/createNoSendExpiryAction.d.ts.map +1 -1
- package/out/src/signer/methods/createNoSendExpiryAction.js +9 -4
- package/out/src/signer/methods/createNoSendExpiryAction.js.map +1 -1
- package/out/src/signer/methods/internalizeAction.d.ts.map +1 -1
- package/out/src/signer/methods/internalizeAction.js +2 -2
- package/out/src/signer/methods/internalizeAction.js.map +1 -1
- package/out/src/signer/methods/proveCertificate.d.ts +3 -2
- package/out/src/signer/methods/proveCertificate.d.ts.map +1 -1
- package/out/src/signer/methods/proveCertificate.js.map +1 -1
- package/out/src/signer/methods/signAction.d.ts.map +1 -1
- package/out/src/signer/methods/signAction.js +3 -2
- package/out/src/signer/methods/signAction.js.map +1 -1
- package/out/src/signer/methods/verifyUnlockScripts.d.ts.map +1 -1
- package/out/src/signer/methods/verifyUnlockScripts.js +12 -17
- package/out/src/signer/methods/verifyUnlockScripts.js.map +1 -1
- package/out/src/storage/StorageIdb.d.ts +5 -3
- package/out/src/storage/StorageIdb.d.ts.map +1 -1
- package/out/src/storage/StorageIdb.js +15 -20
- package/out/src/storage/StorageIdb.js.map +1 -1
- package/out/src/storage/StorageKnex.d.ts +5 -3
- package/out/src/storage/StorageKnex.d.ts.map +1 -1
- package/out/src/storage/StorageKnex.js +143 -93
- package/out/src/storage/StorageKnex.js.map +1 -1
- package/out/src/storage/StorageProvider.d.ts +19 -9
- package/out/src/storage/StorageProvider.d.ts.map +1 -1
- package/out/src/storage/StorageProvider.js +229 -145
- package/out/src/storage/StorageProvider.js.map +1 -1
- package/out/src/storage/StorageReader.d.ts +1 -1
- package/out/src/storage/StorageReader.d.ts.map +1 -1
- package/out/src/storage/StorageReader.js +9 -42
- package/out/src/storage/StorageReader.js.map +1 -1
- package/out/src/storage/StorageReaderWriter.d.ts +1 -0
- package/out/src/storage/StorageReaderWriter.d.ts.map +1 -1
- package/out/src/storage/StorageReaderWriter.js +37 -36
- package/out/src/storage/StorageReaderWriter.js.map +1 -1
- package/out/src/storage/StorageSyncReader.d.ts +1 -1
- package/out/src/storage/StorageSyncReader.d.ts.map +1 -1
- package/out/src/storage/StorageSyncReader.js +3 -36
- package/out/src/storage/StorageSyncReader.js.map +1 -1
- package/out/src/storage/WalletStorageManager.d.ts +8 -7
- package/out/src/storage/WalletStorageManager.d.ts.map +1 -1
- package/out/src/storage/WalletStorageManager.js +38 -65
- package/out/src/storage/WalletStorageManager.js.map +1 -1
- package/out/src/storage/adminServer/adminServer.d.ts +1 -1
- package/out/src/storage/adminServer/adminServer.d.ts.map +1 -1
- package/out/src/storage/adminServer/adminServer.js +16 -44
- package/out/src/storage/adminServer/adminServer.js.map +1 -1
- package/out/src/storage/methods/ListActionsSpecOp.d.ts +2 -2
- package/out/src/storage/methods/ListActionsSpecOp.d.ts.map +1 -1
- package/out/src/storage/methods/ListActionsSpecOp.js.map +1 -1
- package/out/src/storage/methods/ListOutputsSpecOp.d.ts +7 -4
- package/out/src/storage/methods/ListOutputsSpecOp.d.ts.map +1 -1
- package/out/src/storage/methods/ListOutputsSpecOp.js +1 -0
- package/out/src/storage/methods/ListOutputsSpecOp.js.map +1 -1
- package/out/src/storage/methods/actionBatch.d.ts.map +1 -1
- package/out/src/storage/methods/actionBatch.js +3 -2
- package/out/src/storage/methods/actionBatch.js.map +1 -1
- package/out/src/storage/methods/actionBatchBlobs.d.ts +2 -0
- package/out/src/storage/methods/actionBatchBlobs.d.ts.map +1 -1
- package/out/src/storage/methods/actionBatchBlobs.js +40 -22
- package/out/src/storage/methods/actionBatchBlobs.js.map +1 -1
- package/out/src/storage/methods/actionBatchValidation.d.ts.map +1 -1
- package/out/src/storage/methods/actionBatchValidation.js +22 -30
- package/out/src/storage/methods/actionBatchValidation.js.map +1 -1
- package/out/src/storage/methods/attemptToPostReqsToNetwork.d.ts +7 -2
- package/out/src/storage/methods/attemptToPostReqsToNetwork.d.ts.map +1 -1
- package/out/src/storage/methods/attemptToPostReqsToNetwork.js +57 -44
- package/out/src/storage/methods/attemptToPostReqsToNetwork.js.map +1 -1
- package/out/src/storage/methods/createAction.d.ts +7 -6
- package/out/src/storage/methods/createAction.d.ts.map +1 -1
- package/out/src/storage/methods/createAction.js +7 -5
- package/out/src/storage/methods/createAction.js.map +1 -1
- package/out/src/storage/methods/generateChange.d.ts.map +1 -1
- package/out/src/storage/methods/generateChange.js +12 -11
- package/out/src/storage/methods/generateChange.js.map +1 -1
- package/out/src/storage/methods/getBeefForTransaction.js +5 -7
- package/out/src/storage/methods/getBeefForTransaction.js.map +1 -1
- package/out/src/storage/methods/internalizeAction.d.ts +3 -3
- package/out/src/storage/methods/internalizeAction.d.ts.map +1 -1
- package/out/src/storage/methods/internalizeAction.js +134 -129
- package/out/src/storage/methods/internalizeAction.js.map +1 -1
- package/out/src/storage/methods/listActionsIdb.d.ts +3 -2
- package/out/src/storage/methods/listActionsIdb.d.ts.map +1 -1
- package/out/src/storage/methods/listActionsIdb.js +2 -2
- package/out/src/storage/methods/listActionsIdb.js.map +1 -1
- package/out/src/storage/methods/listActionsKnex.d.ts +3 -2
- package/out/src/storage/methods/listActionsKnex.d.ts.map +1 -1
- package/out/src/storage/methods/listActionsKnex.js +10 -9
- package/out/src/storage/methods/listActionsKnex.js.map +1 -1
- package/out/src/storage/methods/listCertificates.d.ts +3 -2
- package/out/src/storage/methods/listCertificates.d.ts.map +1 -1
- package/out/src/storage/methods/listCertificates.js.map +1 -1
- package/out/src/storage/methods/listOutputsIdb.d.ts +3 -2
- package/out/src/storage/methods/listOutputsIdb.d.ts.map +1 -1
- package/out/src/storage/methods/listOutputsIdb.js +11 -11
- package/out/src/storage/methods/listOutputsIdb.js.map +1 -1
- package/out/src/storage/methods/listOutputsKnex.d.ts +3 -2
- package/out/src/storage/methods/listOutputsKnex.d.ts.map +1 -1
- package/out/src/storage/methods/listOutputsKnex.js +15 -23
- package/out/src/storage/methods/listOutputsKnex.js.map +1 -1
- package/out/src/storage/methods/noSendExpiry.d.ts +3 -3
- package/out/src/storage/methods/noSendExpiry.d.ts.map +1 -1
- package/out/src/storage/methods/noSendExpiry.js +10 -8
- package/out/src/storage/methods/noSendExpiry.js.map +1 -1
- package/out/src/storage/methods/preparedBeef.d.ts.map +1 -1
- package/out/src/storage/methods/preparedBeef.js +13 -14
- package/out/src/storage/methods/preparedBeef.js.map +1 -1
- package/out/src/storage/methods/processAction.d.ts.map +1 -1
- package/out/src/storage/methods/processAction.js +37 -6
- package/out/src/storage/methods/processAction.js.map +1 -1
- package/out/src/storage/methods/reconcileFailedTransactionInputs.d.ts +1 -1
- package/out/src/storage/methods/reconcileFailedTransactionInputs.d.ts.map +1 -1
- package/out/src/storage/methods/reconcileFailedTransactionInputs.js.map +1 -1
- package/out/src/storage/methods/reviewStatusIdb.d.ts +1 -1
- package/out/src/storage/methods/reviewStatusIdb.d.ts.map +1 -1
- package/out/src/storage/methods/reviewStatusIdb.js.map +1 -1
- package/out/src/storage/methods/reviewUtxoOutputs.d.ts +1 -0
- package/out/src/storage/methods/reviewUtxoOutputs.d.ts.map +1 -1
- package/out/src/storage/methods/reviewUtxoOutputs.js +51 -4
- package/out/src/storage/methods/reviewUtxoOutputs.js.map +1 -1
- package/out/src/storage/methods/validateSyncProof.d.ts.map +1 -1
- package/out/src/storage/methods/validateSyncProof.js +3 -3
- package/out/src/storage/methods/validateSyncProof.js.map +1 -1
- package/out/src/storage/portable/index.d.ts.map +1 -1
- package/out/src/storage/portable/index.js +21 -13
- package/out/src/storage/portable/index.js.map +1 -1
- package/out/src/storage/remoting/BinaryJson.d.ts +11 -0
- package/out/src/storage/remoting/BinaryJson.d.ts.map +1 -1
- package/out/src/storage/remoting/BinaryJson.js +37 -0
- package/out/src/storage/remoting/BinaryJson.js.map +1 -1
- package/out/src/storage/remoting/KnexSessionManager.d.ts +26 -2
- package/out/src/storage/remoting/KnexSessionManager.d.ts.map +1 -1
- package/out/src/storage/remoting/KnexSessionManager.js +222 -30
- package/out/src/storage/remoting/KnexSessionManager.js.map +1 -1
- package/out/src/storage/remoting/KnexSyncTransferStore.d.ts.map +1 -1
- package/out/src/storage/remoting/KnexSyncTransferStore.js +3 -4
- package/out/src/storage/remoting/KnexSyncTransferStore.js.map +1 -1
- package/out/src/storage/remoting/StorageClient.d.ts +6 -1
- package/out/src/storage/remoting/StorageClient.d.ts.map +1 -1
- package/out/src/storage/remoting/StorageClient.js +63 -6
- package/out/src/storage/remoting/StorageClient.js.map +1 -1
- package/out/src/storage/remoting/StorageClientBase.d.ts +23 -6
- package/out/src/storage/remoting/StorageClientBase.d.ts.map +1 -1
- package/out/src/storage/remoting/StorageClientBase.js +148 -19
- package/out/src/storage/remoting/StorageClientBase.js.map +1 -1
- package/out/src/storage/remoting/StorageMobile.d.ts +5 -0
- package/out/src/storage/remoting/StorageMobile.d.ts.map +1 -1
- package/out/src/storage/remoting/StorageMobile.js +11 -9
- package/out/src/storage/remoting/StorageMobile.js.map +1 -1
- package/out/src/storage/remoting/StorageServer.d.ts +5 -1
- package/out/src/storage/remoting/StorageServer.d.ts.map +1 -1
- package/out/src/storage/remoting/StorageServer.js +95 -19
- package/out/src/storage/remoting/StorageServer.js.map +1 -1
- package/out/src/storage/remoting/SyncTransfer.d.ts.map +1 -1
- package/out/src/storage/remoting/SyncTransfer.js +3 -2
- package/out/src/storage/remoting/SyncTransfer.js.map +1 -1
- package/out/src/storage/schema/KnexMigrations.d.ts +1 -0
- package/out/src/storage/schema/KnexMigrations.d.ts.map +1 -1
- package/out/src/storage/schema/KnexMigrations.js +28 -6
- package/out/src/storage/schema/KnexMigrations.js.map +1 -1
- package/out/src/storage/schema/entities/EntityOutput.d.ts.map +1 -1
- package/out/src/storage/schema/entities/EntityOutput.js +11 -4
- package/out/src/storage/schema/entities/EntityOutput.js.map +1 -1
- package/out/src/storage/schema/entities/EntityProvenTx.d.ts +2 -1
- package/out/src/storage/schema/entities/EntityProvenTx.d.ts.map +1 -1
- package/out/src/storage/schema/entities/EntityProvenTx.js +93 -39
- package/out/src/storage/schema/entities/EntityProvenTx.js.map +1 -1
- package/out/src/storage/schema/entities/EntityProvenTxReq.js +1 -1
- package/out/src/storage/schema/entities/EntityProvenTxReq.js.map +1 -1
- package/out/src/storage/schema/entities/EntitySyncState.js +1 -1
- package/out/src/storage/schema/entities/EntitySyncState.js.map +1 -1
- package/out/src/storage/schema/tables/TableCertificate.d.ts +1 -1
- package/out/src/storage/schema/tables/TableCertificate.d.ts.map +1 -1
- package/out/src/storage/schema/tables/TableCertificateField.d.ts +1 -1
- package/out/src/storage/schema/tables/TableCertificateField.d.ts.map +1 -1
- package/out/src/storage/schema/tables/TableCommission.d.ts +1 -1
- package/out/src/storage/schema/tables/TableCommission.d.ts.map +1 -1
- package/out/src/storage/schema/tables/TableMonitorEvent.d.ts +1 -1
- package/out/src/storage/schema/tables/TableMonitorEvent.d.ts.map +1 -1
- package/out/src/storage/schema/tables/TableOutput.d.ts +1 -1
- package/out/src/storage/schema/tables/TableOutput.d.ts.map +1 -1
- package/out/src/storage/schema/tables/TableOutputBasket.d.ts +1 -1
- package/out/src/storage/schema/tables/TableOutputBasket.d.ts.map +1 -1
- package/out/src/storage/schema/tables/TableOutputTag.d.ts +1 -1
- package/out/src/storage/schema/tables/TableOutputTag.d.ts.map +1 -1
- package/out/src/storage/schema/tables/TableOutputTagMap.d.ts +1 -1
- package/out/src/storage/schema/tables/TableOutputTagMap.d.ts.map +1 -1
- package/out/src/storage/schema/tables/TableProvenTx.d.ts +1 -1
- package/out/src/storage/schema/tables/TableProvenTx.d.ts.map +1 -1
- package/out/src/storage/schema/tables/TableProvenTxReq.d.ts +1 -1
- package/out/src/storage/schema/tables/TableProvenTxReq.d.ts.map +1 -1
- package/out/src/storage/schema/tables/TableSettings.d.ts +1 -1
- package/out/src/storage/schema/tables/TableSettings.d.ts.map +1 -1
- package/out/src/storage/schema/tables/TableSyncState.d.ts +1 -1
- package/out/src/storage/schema/tables/TableSyncState.d.ts.map +1 -1
- package/out/src/storage/schema/tables/TableTransaction.d.ts +1 -1
- package/out/src/storage/schema/tables/TableTransaction.d.ts.map +1 -1
- package/out/src/storage/schema/tables/TableTransaction.js.map +1 -1
- package/out/src/storage/schema/tables/TableTxLabel.d.ts +1 -1
- package/out/src/storage/schema/tables/TableTxLabel.d.ts.map +1 -1
- package/out/src/storage/schema/tables/TableTxLabelMap.d.ts +1 -1
- package/out/src/storage/schema/tables/TableTxLabelMap.d.ts.map +1 -1
- package/out/src/storage/schema/tables/TableUser.d.ts +1 -1
- package/out/src/storage/schema/tables/TableUser.d.ts.map +1 -1
- package/out/src/storage/sync/StorageMySQLDojoReader.d.ts.map +1 -1
- package/out/src/storage/sync/StorageMySQLDojoReader.js +8 -7
- package/out/src/storage/sync/StorageMySQLDojoReader.js.map +1 -1
- package/out/src/utility/actionBatchDigest.d.ts.map +1 -1
- package/out/src/utility/actionBatchDigest.js +9 -7
- package/out/src/utility/actionBatchDigest.js.map +1 -1
- package/out/src/utility/actionBatchPack.d.ts.map +1 -1
- package/out/src/utility/actionBatchPack.js +7 -12
- package/out/src/utility/actionBatchPack.js.map +1 -1
- package/out/src/utility/brc153ReferenceLabels.d.ts.map +1 -1
- package/out/src/utility/brc153ReferenceLabels.js +4 -4
- package/out/src/utility/brc153ReferenceLabels.js.map +1 -1
- package/out/src/utility/brc177NoSendExpiry.d.ts +2 -2
- package/out/src/utility/brc177NoSendExpiry.d.ts.map +1 -1
- package/out/src/utility/canonicalizeAtomicBeef.js +2 -2
- package/out/src/utility/canonicalizeAtomicBeef.js.map +1 -1
- package/out/src/utility/exactActionSpend.d.ts +11 -0
- package/out/src/utility/exactActionSpend.d.ts.map +1 -0
- package/out/src/utility/exactActionSpend.js +11 -0
- package/out/src/utility/exactActionSpend.js.map +1 -0
- package/out/src/utility/identityUtils.d.ts +44 -4
- package/out/src/utility/identityUtils.d.ts.map +1 -1
- package/out/src/utility/identityUtils.js +376 -61
- package/out/src/utility/identityUtils.js.map +1 -1
- package/out/src/utility/parseTxScriptOffsets.d.ts.map +1 -1
- package/out/src/utility/parseTxScriptOffsets.js +1 -19
- package/out/src/utility/parseTxScriptOffsets.js.map +1 -1
- package/out/src/utility/tscProofToMerklePath.d.ts.map +1 -1
- package/out/src/utility/tscProofToMerklePath.js +35 -4
- package/out/src/utility/tscProofToMerklePath.js.map +1 -1
- package/out/src/utility/utilityHelpers.d.ts.map +1 -1
- package/out/src/utility/utilityHelpers.js +8 -6
- package/out/src/utility/utilityHelpers.js.map +1 -1
- package/out/src/utility/utilityHelpers.noBuffer.d.ts.map +1 -1
- package/out/src/utility/utilityHelpers.noBuffer.js +6 -6
- package/out/src/utility/utilityHelpers.noBuffer.js.map +1 -1
- package/out/src/utility/verifyOverlayOutput.d.ts +12 -0
- package/out/src/utility/verifyOverlayOutput.d.ts.map +1 -0
- package/out/src/utility/verifyOverlayOutput.js +22 -0
- package/out/src/utility/verifyOverlayOutput.js.map +1 -0
- package/out/src/utility/walletResultGuards.d.ts +14 -0
- package/out/src/utility/walletResultGuards.d.ts.map +1 -0
- package/out/src/utility/walletResultGuards.js +28 -0
- package/out/src/utility/walletResultGuards.js.map +1 -0
- package/out/src/wab-client/WABClient.d.ts +3 -17
- package/out/src/wab-client/WABClient.d.ts.map +1 -1
- package/out/src/wab-client/WABClient.js +30 -14
- package/out/src/wab-client/WABClient.js.map +1 -1
- package/out/src/wab-client/WABResponseValidation.d.ts +48 -0
- package/out/src/wab-client/WABResponseValidation.d.ts.map +1 -0
- package/out/src/wab-client/WABResponseValidation.js +321 -0
- package/out/src/wab-client/WABResponseValidation.js.map +1 -0
- package/out/src/wab-client/auth-method-interactors/AuthMethodInteractor.d.ts.map +1 -1
- package/out/src/wab-client/auth-method-interactors/AuthMethodInteractor.js +3 -2
- package/out/src/wab-client/auth-method-interactors/AuthMethodInteractor.js.map +1 -1
- package/package.json +5 -5
|
@@ -4,6 +4,7 @@ exports.Services = void 0;
|
|
|
4
4
|
exports.validateScriptHash = validateScriptHash;
|
|
5
5
|
exports.toBinaryBaseBlockHeader = toBinaryBaseBlockHeader;
|
|
6
6
|
const sdk_1 = require("@bsv/sdk");
|
|
7
|
+
const utils_1 = require("@bsv/sdk/primitives/utils");
|
|
7
8
|
const ServiceCollection_1 = require("./ServiceCollection");
|
|
8
9
|
const createDefaultWalletServicesOptions_1 = require("./createDefaultWalletServicesOptions");
|
|
9
10
|
const WhatsOnChain_1 = require("./providers/WhatsOnChain");
|
|
@@ -18,7 +19,27 @@ const WalletError_1 = require("../sdk/WalletError");
|
|
|
18
19
|
const utilityHelpers_1 = require("../utility/utilityHelpers");
|
|
19
20
|
const utilityHelpers_noBuffer_1 = require("../utility/utilityHelpers.noBuffer");
|
|
20
21
|
const classifyOutputUtxo_1 = require("./classifyOutputUtxo");
|
|
22
|
+
const validateMerklePathResult_1 = require("./validateMerklePathResult");
|
|
23
|
+
const validateStatusForTxidsResult_1 = require("./validateStatusForTxidsResult");
|
|
24
|
+
const validateRawTxResult_1 = require("./validateRawTxResult");
|
|
25
|
+
const validateUtxoStatusResult_1 = require("./validateUtxoStatusResult");
|
|
26
|
+
const validateScriptHashHistoryResult_1 = require("./validateScriptHashHistoryResult");
|
|
27
|
+
const validatePostBeefResult_1 = require("./validatePostBeefResult");
|
|
28
|
+
const fiatRateValidation_1 = require("./fiatRateValidation");
|
|
29
|
+
const getCanonicalMerklePath_1 = require("./getCanonicalMerklePath");
|
|
30
|
+
function copyFiatExchangeRates(rates) {
|
|
31
|
+
return {
|
|
32
|
+
timestamp: new Date(rates.timestamp.getTime()),
|
|
33
|
+
base: rates.base,
|
|
34
|
+
rates: { ...rates.rates },
|
|
35
|
+
rateTimestamps: rates.rateTimestamps == null
|
|
36
|
+
? undefined
|
|
37
|
+
: Object.fromEntries(Object.entries(rates.rateTimestamps).map(([key, value]) => [key, new Date(value.getTime())]))
|
|
38
|
+
};
|
|
39
|
+
}
|
|
21
40
|
class Services {
|
|
41
|
+
identityChainTracker;
|
|
42
|
+
identityChainTrackerInit;
|
|
22
43
|
static getStatusForTxidsBatchLimit = 20;
|
|
23
44
|
static createDefaultOptions(chain) {
|
|
24
45
|
return (0, createDefaultWalletServicesOptions_1.createDefaultWalletServicesOptions)(chain);
|
|
@@ -176,51 +197,81 @@ class Services {
|
|
|
176
197
|
};
|
|
177
198
|
}
|
|
178
199
|
async getChainTracker() {
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
200
|
+
while (true) {
|
|
201
|
+
if (this.options.chainTracker != null)
|
|
202
|
+
return this.options.chainTracker;
|
|
203
|
+
if (this.options.chaintracks == null) {
|
|
204
|
+
throw new WERR_errors_1.WERR_INVALID_PARAMETER('options.chainTracker or options.chaintracks', "valid to enable 'getChainTracker' service.");
|
|
205
|
+
}
|
|
206
|
+
const desired = this.options.chaintracks;
|
|
207
|
+
if (this.identityChainTracker?.chaintracks === desired)
|
|
208
|
+
return this.identityChainTracker;
|
|
209
|
+
if (this.identityChainTrackerInit != null) {
|
|
210
|
+
await this.identityChainTrackerInit.catch(() => undefined);
|
|
211
|
+
continue;
|
|
212
|
+
}
|
|
213
|
+
const previous = this.identityChainTracker;
|
|
214
|
+
const created = new ChaintracksChainTracker_1.ChaintracksChainTracker(this.chain, desired, {
|
|
215
|
+
telemetry: this.options.telemetry
|
|
216
|
+
});
|
|
217
|
+
this.identityChainTracker = created;
|
|
218
|
+
const init = Promise.resolve().then(async () => {
|
|
219
|
+
if (previous != null)
|
|
220
|
+
await previous.dispose();
|
|
221
|
+
return created;
|
|
222
|
+
});
|
|
223
|
+
this.identityChainTrackerInit = init;
|
|
224
|
+
try {
|
|
225
|
+
await init.catch(() => created);
|
|
226
|
+
}
|
|
227
|
+
finally {
|
|
228
|
+
if (this.identityChainTrackerInit === init)
|
|
229
|
+
this.identityChainTrackerInit = undefined;
|
|
230
|
+
}
|
|
183
231
|
}
|
|
184
|
-
return new ChaintracksChainTracker_1.ChaintracksChainTracker(this.chain, this.options.chaintracks, {
|
|
185
|
-
telemetry: this.options.telemetry
|
|
186
|
-
});
|
|
187
232
|
}
|
|
188
233
|
async getBsvExchangeRate() {
|
|
189
234
|
this.options.bsvExchangeRate = await this.whatsonchain.updateBsvExchangeRate(this.options.bsvExchangeRate, this.options.bsvUpdateMsecs);
|
|
190
235
|
return this.options.bsvExchangeRate.rate;
|
|
191
236
|
}
|
|
192
237
|
async getFiatExchangeRate(currency, base) {
|
|
193
|
-
|
|
194
|
-
|
|
238
|
+
const normalizedCurrency = (0, fiatRateValidation_1.normalizeFiatCurrency)(currency);
|
|
239
|
+
const normalizedBase = (0, fiatRateValidation_1.normalizeFiatCurrency)(base ?? 'USD', 'base');
|
|
240
|
+
if (normalizedCurrency === normalizedBase)
|
|
195
241
|
return 1;
|
|
196
|
-
const required =
|
|
197
|
-
await this.updateFiatExchangeRates(required, this.options.fiatUpdateMsecs);
|
|
198
|
-
const
|
|
199
|
-
const
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
242
|
+
const required = normalizedBase === 'USD' ? [normalizedCurrency] : [normalizedCurrency, normalizedBase];
|
|
243
|
+
const rates = await this.updateFiatExchangeRates(required, this.options.fiatUpdateMsecs);
|
|
244
|
+
const c = rates.rates?.[normalizedCurrency];
|
|
245
|
+
const b = rates.rates?.[normalizedBase];
|
|
246
|
+
if (!(0, fiatRateValidation_1.isValidFiatRate)(c)) {
|
|
247
|
+
throw new WERR_errors_1.WERR_INVALID_PARAMETER('currency', `valid fiat currency '${normalizedCurrency}' with an exchange rate.`);
|
|
248
|
+
}
|
|
249
|
+
if (!(0, fiatRateValidation_1.isValidFiatRate)(b)) {
|
|
250
|
+
throw new WERR_errors_1.WERR_INVALID_PARAMETER('base', `valid fiat currency '${normalizedBase}' with an exchange rate.`);
|
|
203
251
|
}
|
|
204
|
-
|
|
205
|
-
|
|
252
|
+
const result = c / b;
|
|
253
|
+
if (!(0, fiatRateValidation_1.isValidFiatRate)(result)) {
|
|
254
|
+
throw new WERR_errors_1.WERR_INVALID_PARAMETER('currency', 'a finite and bounded conversion result.');
|
|
206
255
|
}
|
|
207
|
-
return
|
|
256
|
+
return result;
|
|
208
257
|
}
|
|
209
258
|
async getFiatExchangeRates(targetCurrencies) {
|
|
210
|
-
|
|
211
|
-
const stored = this.options.
|
|
259
|
+
const targets = (0, fiatRateValidation_1.normalizeFiatCurrencies)(targetCurrencies);
|
|
260
|
+
const stored = await this.updateFiatExchangeRates(targets, this.options.fiatUpdateMsecs);
|
|
212
261
|
const rates = {};
|
|
213
|
-
for (const c of
|
|
262
|
+
for (const c of targets) {
|
|
214
263
|
const v = stored.rates?.[c];
|
|
215
|
-
if (
|
|
264
|
+
if ((0, fiatRateValidation_1.isValidFiatRate)(v)) {
|
|
216
265
|
rates[c] = v;
|
|
217
266
|
}
|
|
218
267
|
}
|
|
219
268
|
return {
|
|
220
|
-
timestamp: stored.timestamp,
|
|
269
|
+
timestamp: new Date(stored.timestamp.getTime()),
|
|
221
270
|
base: 'USD',
|
|
222
271
|
rates,
|
|
223
|
-
rateTimestamps: stored.rateTimestamps
|
|
272
|
+
rateTimestamps: stored.rateTimestamps == null
|
|
273
|
+
? undefined
|
|
274
|
+
: Object.fromEntries(Object.entries(stored.rateTimestamps).map(([key, value]) => [key, new Date(value.getTime())]))
|
|
224
275
|
};
|
|
225
276
|
}
|
|
226
277
|
get getProofsCount() {
|
|
@@ -239,6 +290,7 @@ class Services {
|
|
|
239
290
|
const services = this.getStatusForTxidsServices;
|
|
240
291
|
if (useNext === true)
|
|
241
292
|
services.next();
|
|
293
|
+
const normalizedTxids = txids.map((txid, index) => (0, validateMerklePathResult_1.normalizeTxid)(txid, `txids[${index}]`));
|
|
242
294
|
let fallback = {
|
|
243
295
|
name: '<noservices>',
|
|
244
296
|
status: 'error',
|
|
@@ -246,7 +298,7 @@ class Services {
|
|
|
246
298
|
results: []
|
|
247
299
|
};
|
|
248
300
|
const resultsByTxid = new Map();
|
|
249
|
-
const unresolved = new Set(
|
|
301
|
+
const unresolved = new Set(normalizedTxids);
|
|
250
302
|
const providerNames = [];
|
|
251
303
|
let successfulProvider = false;
|
|
252
304
|
const rank = (result) => {
|
|
@@ -268,7 +320,7 @@ class Services {
|
|
|
268
320
|
if (r.status === 'success') {
|
|
269
321
|
services.addServiceCallSuccess(stc);
|
|
270
322
|
successfulProvider = true;
|
|
271
|
-
providerNames.push(
|
|
323
|
+
providerNames.push(stc.providerName);
|
|
272
324
|
for (const result of r.results) {
|
|
273
325
|
const current = resultsByTxid.get(result.txid);
|
|
274
326
|
if (current == null || rank(result) > rank(current))
|
|
@@ -297,7 +349,7 @@ class Services {
|
|
|
297
349
|
return {
|
|
298
350
|
name: [...new Set(providerNames)].join(','),
|
|
299
351
|
status: 'success',
|
|
300
|
-
results:
|
|
352
|
+
results: normalizedTxids.map(txid => resultsByTxid.get(txid) ?? { txid, status: 'unknown', depth: undefined })
|
|
301
353
|
};
|
|
302
354
|
}
|
|
303
355
|
async getStatusForTxidsBatched(stc, txids) {
|
|
@@ -305,7 +357,7 @@ class Services {
|
|
|
305
357
|
let error;
|
|
306
358
|
for (let i = 0; i < txids.length; i += Services.getStatusForTxidsBatchLimit) {
|
|
307
359
|
const batch = txids.slice(i, i + Services.getStatusForTxidsBatchLimit);
|
|
308
|
-
const r = await stc.service(batch);
|
|
360
|
+
const r = (0, validateStatusForTxidsResult_1.validateStatusForTxidsResult)(await stc.service(batch), batch, stc.providerName);
|
|
309
361
|
if (r.status !== 'success') {
|
|
310
362
|
return r;
|
|
311
363
|
}
|
|
@@ -325,13 +377,16 @@ class Services {
|
|
|
325
377
|
* @returns script hash in 'hashLE' format, which is the default.
|
|
326
378
|
*/
|
|
327
379
|
hashOutputScript(script) {
|
|
328
|
-
const hash =
|
|
380
|
+
const hash = (0, utils_1.toHex)((0, utilityHelpers_1.sha256Hash)((0, utils_1.toArray)(script, 'hex')));
|
|
329
381
|
return hash;
|
|
330
382
|
}
|
|
331
383
|
async isUtxo(output) {
|
|
332
384
|
return (0, classifyOutputUtxo_1.requireConclusiveUtxo)(await (0, classifyOutputUtxo_1.classifyOutputUtxo)(this, output));
|
|
333
385
|
}
|
|
334
386
|
async getUtxoStatus(output, outputFormat, outpoint, useNext, logger) {
|
|
387
|
+
validateScriptHash(output, outputFormat);
|
|
388
|
+
const normalizedOutput = output.toLowerCase();
|
|
389
|
+
const normalizedOutpoint = (0, validateUtxoStatusResult_1.normalizeWalletOutpoint)(outpoint);
|
|
335
390
|
const services = this.getUtxoStatusServices;
|
|
336
391
|
if (useNext === true)
|
|
337
392
|
services.next();
|
|
@@ -343,7 +398,8 @@ class Services {
|
|
|
343
398
|
};
|
|
344
399
|
logger?.group('services getUtxoStatus');
|
|
345
400
|
for (let retry = 0; retry < 2; retry++) {
|
|
346
|
-
r0 =
|
|
401
|
+
r0 =
|
|
402
|
+
(await this.tryUtxoStatusProviders(services, normalizedOutput, outputFormat, normalizedOutpoint, logger)) ?? r0;
|
|
347
403
|
if (r0.status === 'success')
|
|
348
404
|
break;
|
|
349
405
|
await (0, utilityHelpers_1.wait)(2000);
|
|
@@ -355,7 +411,7 @@ class Services {
|
|
|
355
411
|
for (let tries = 0; tries < services.count; tries++) {
|
|
356
412
|
const stc = services.serviceToCall;
|
|
357
413
|
try {
|
|
358
|
-
const r = await stc.service(output, outputFormat, outpoint);
|
|
414
|
+
const r = (0, validateUtxoStatusResult_1.validateUtxoStatusResult)(await stc.service(output, outputFormat, outpoint), outpoint, stc.providerName);
|
|
359
415
|
logger?.log(`${stc.providerName} status ${r.status}`);
|
|
360
416
|
if (r.status === 'success') {
|
|
361
417
|
services.addServiceCallSuccess(stc);
|
|
@@ -374,6 +430,7 @@ class Services {
|
|
|
374
430
|
return undefined;
|
|
375
431
|
}
|
|
376
432
|
async getScriptHashHistory(hash, useNext, logger) {
|
|
433
|
+
const normalizedHash = (0, validateMerklePathResult_1.normalizeTxid)(hash, 'hash');
|
|
377
434
|
const services = this.getScriptHashHistoryServices;
|
|
378
435
|
if (useNext === true)
|
|
379
436
|
services.next();
|
|
@@ -387,10 +444,11 @@ class Services {
|
|
|
387
444
|
for (let tries = 0; tries < services.count; tries++) {
|
|
388
445
|
const stc = services.serviceToCall;
|
|
389
446
|
try {
|
|
390
|
-
const r = await stc.service(
|
|
447
|
+
const r = (0, validateScriptHashHistoryResult_1.validateScriptHashHistoryResult)(await stc.service(normalizedHash), stc.providerName);
|
|
391
448
|
logger?.log(`${stc.providerName} status ${r.status}`);
|
|
392
449
|
if (r.status === 'success') {
|
|
393
450
|
r0 = r;
|
|
451
|
+
services.addServiceCallSuccess(stc);
|
|
394
452
|
break;
|
|
395
453
|
}
|
|
396
454
|
if (r.error != null)
|
|
@@ -429,10 +487,15 @@ class Services {
|
|
|
429
487
|
* @returns
|
|
430
488
|
*/
|
|
431
489
|
async postBeef(beef, txids, logger) {
|
|
490
|
+
const request = (0, validatePostBeefResult_1.snapshotPostBeefRequest)(beef, txids);
|
|
491
|
+
if (this.postBeefMode !== 'UntilSuccess' && this.postBeefMode !== 'PromiseAll') {
|
|
492
|
+
throw new WERR_errors_1.WERR_INVALID_PARAMETER('postBeefMode', "'UntilSuccess' or 'PromiseAll'");
|
|
493
|
+
}
|
|
432
494
|
let rs = [];
|
|
433
495
|
const services = this.postBeefServices;
|
|
434
496
|
const stcs = services.allServicesToCall;
|
|
435
|
-
const softTimeoutMs = this.getPostBeefSoftTimeoutMs(
|
|
497
|
+
const softTimeoutMs = this.getPostBeefSoftTimeoutMs(request.beefBytes.length);
|
|
498
|
+
const softTimedOut = new Set();
|
|
436
499
|
logger?.group('services postBeef');
|
|
437
500
|
switch (this.postBeefMode) {
|
|
438
501
|
case 'UntilSuccess':
|
|
@@ -442,8 +505,7 @@ class Services {
|
|
|
442
505
|
rs.push(r);
|
|
443
506
|
if (r.status === 'success')
|
|
444
507
|
break;
|
|
445
|
-
|
|
446
|
-
if (!softTimedOut && r.txidResults?.every(txr => txr.serviceError)) {
|
|
508
|
+
if (!softTimedOut.has(stc) && r.txidResults.every(txr => txr.serviceError)) {
|
|
447
509
|
// move this service to the end of the list
|
|
448
510
|
this.postBeefServices.moveServiceToLast(stc);
|
|
449
511
|
}
|
|
@@ -459,7 +521,10 @@ class Services {
|
|
|
459
521
|
logger?.groupEnd();
|
|
460
522
|
return rs;
|
|
461
523
|
async function callService(stc, timeoutMs) {
|
|
462
|
-
const callPromise =
|
|
524
|
+
const callPromise = Promise.resolve()
|
|
525
|
+
.then(async () => await stc.service(sdk_1.Beef.fromBinaryStrict(request.beefBytes), [...request.txids]))
|
|
526
|
+
.then(result => (0, validatePostBeefResult_1.validatePostBeefResult)(result, request.txids, stc.providerName))
|
|
527
|
+
.catch(() => (0, validatePostBeefResult_1.makePostBeefServiceError)(stc.providerName, request.txids, 'postBeefServiceError'));
|
|
463
528
|
let r;
|
|
464
529
|
if (timeoutMs == null || timeoutMs <= 0) {
|
|
465
530
|
r = await callPromise;
|
|
@@ -467,7 +532,10 @@ class Services {
|
|
|
467
532
|
else {
|
|
468
533
|
let timeoutHandle;
|
|
469
534
|
const timeoutPromise = new Promise(resolve => {
|
|
470
|
-
timeoutHandle = setTimeout(() =>
|
|
535
|
+
timeoutHandle = setTimeout(() => {
|
|
536
|
+
softTimedOut.add(stc);
|
|
537
|
+
resolve((0, validatePostBeefResult_1.makePostBeefServiceError)(stc.providerName, request.txids, 'postBeefServiceTimeout', timeoutMs));
|
|
538
|
+
}, timeoutMs);
|
|
471
539
|
});
|
|
472
540
|
r = await Promise.race([callPromise, timeoutPromise]);
|
|
473
541
|
if (timeoutHandle != null)
|
|
@@ -486,39 +554,34 @@ class Services {
|
|
|
486
554
|
}
|
|
487
555
|
return r;
|
|
488
556
|
}
|
|
489
|
-
function makeServiceTimeoutResult(providerName, txids, timeoutMs) {
|
|
490
|
-
return {
|
|
491
|
-
name: providerName,
|
|
492
|
-
status: 'error',
|
|
493
|
-
txidResults: txids.map(txid => ({
|
|
494
|
-
txid,
|
|
495
|
-
status: 'error',
|
|
496
|
-
serviceError: true,
|
|
497
|
-
data: { detail: `timeout after ${timeoutMs}ms` }
|
|
498
|
-
})),
|
|
499
|
-
notes: [{ when: new Date().toISOString(), what: 'postBeefServiceTimeout', providerName, timeoutMs }]
|
|
500
|
-
};
|
|
501
|
-
}
|
|
502
557
|
}
|
|
503
|
-
getPostBeefSoftTimeoutMs(
|
|
504
|
-
const
|
|
505
|
-
const
|
|
506
|
-
|
|
558
|
+
getPostBeefSoftTimeoutMs(beefBytes) {
|
|
559
|
+
const maximum = 60 * 60 * 1000;
|
|
560
|
+
const valid = (value, name) => {
|
|
561
|
+
if (!Number.isSafeInteger(value) || value < 0 || value > maximum) {
|
|
562
|
+
throw new WERR_errors_1.WERR_INVALID_PARAMETER(name, `an integer from 0 through ${maximum}`);
|
|
563
|
+
}
|
|
564
|
+
return value;
|
|
565
|
+
};
|
|
566
|
+
const baseMs = valid(this.postBeefUntilSuccessSoftTimeoutMs, 'postBeefUntilSuccessSoftTimeoutMs');
|
|
567
|
+
const perKbMs = valid(this.postBeefUntilSuccessSoftTimeoutPerKbMs, 'postBeefUntilSuccessSoftTimeoutPerKbMs');
|
|
568
|
+
const maxMs = Math.max(baseMs, valid(this.postBeefUntilSuccessSoftTimeoutMaxMs, 'postBeefUntilSuccessSoftTimeoutMaxMs'));
|
|
507
569
|
if (perKbMs <= 0)
|
|
508
570
|
return Math.min(baseMs, maxMs);
|
|
509
|
-
const beefBytes = beef.toBinary().length;
|
|
510
571
|
const extraMs = Math.ceil((beefBytes / 1024) * perKbMs);
|
|
511
572
|
return Math.min(maxMs, baseMs + extraMs);
|
|
512
573
|
}
|
|
513
574
|
async getRawTx(txid, useNext) {
|
|
575
|
+
const normalizedTxid = (0, validateMerklePathResult_1.normalizeTxid)(txid);
|
|
514
576
|
const services = this.getRawTxServices;
|
|
515
577
|
if (useNext === true)
|
|
516
578
|
services.next();
|
|
517
|
-
const r0 = { txid };
|
|
579
|
+
const r0 = { txid: normalizedTxid };
|
|
518
580
|
for (let tries = 0; tries < services.count; tries++) {
|
|
519
581
|
const stc = services.serviceToCall;
|
|
520
582
|
try {
|
|
521
|
-
const
|
|
583
|
+
const result = (0, validateRawTxResult_1.validateRawTxResult)(await stc.service(normalizedTxid, this.chain), normalizedTxid, stc.providerName);
|
|
584
|
+
const done = this.applyRawTxResult(r0, normalizedTxid, result, services, stc);
|
|
522
585
|
if (done)
|
|
523
586
|
break;
|
|
524
587
|
}
|
|
@@ -532,9 +595,9 @@ class Services {
|
|
|
532
595
|
applyRawTxResult(r0, txid, r, services, stc) {
|
|
533
596
|
if (r.rawTx != null) {
|
|
534
597
|
const hash = (0, utilityHelpers_noBuffer_1.asString)((0, utilityHelpers_1.doubleSha256BE)(r.rawTx));
|
|
535
|
-
if (hash ===
|
|
598
|
+
if (hash === txid) {
|
|
536
599
|
r0.rawTx = r.rawTx;
|
|
537
|
-
r0.name =
|
|
600
|
+
r0.name = stc.providerName;
|
|
538
601
|
r0.error = undefined;
|
|
539
602
|
services.addServiceCallSuccess(stc);
|
|
540
603
|
return true;
|
|
@@ -622,63 +685,99 @@ class Services {
|
|
|
622
685
|
}
|
|
623
686
|
}
|
|
624
687
|
async hashToHeader(hash) {
|
|
688
|
+
const normalizedHash = (0, validateMerklePathResult_1.normalizeTxid)(hash, 'hash');
|
|
625
689
|
const method = async () => {
|
|
626
690
|
const chaintracks = this.options.chaintracks;
|
|
627
|
-
const header = await chaintracks.findHeaderForBlockHash(
|
|
691
|
+
const header = await chaintracks.findHeaderForBlockHash(normalizedHash);
|
|
628
692
|
return header;
|
|
629
693
|
};
|
|
630
694
|
let header = await this.invokeChaintracksWithRetry(method, 'find_header_for_hash');
|
|
631
|
-
header ??= await this.whatsonchain.getBlockHeaderByHash(
|
|
695
|
+
header ??= await this.whatsonchain.getBlockHeaderByHash(normalizedHash);
|
|
632
696
|
if (header == null)
|
|
633
|
-
throw new WERR_errors_1.WERR_INVALID_PARAMETER('hash', `valid blockhash '${
|
|
634
|
-
|
|
697
|
+
throw new WERR_errors_1.WERR_INVALID_PARAMETER('hash', `valid blockhash '${normalizedHash}' on mined chain ${this.chain}`);
|
|
698
|
+
const validated = (0, validateMerklePathResult_1.copyValidatedBlockHeader)(header, true);
|
|
699
|
+
if (validated.hash !== normalizedHash) {
|
|
700
|
+
throw new WERR_errors_1.WERR_INVALID_PARAMETER('hash', `the hash of the returned mined header on chain ${this.chain}`);
|
|
701
|
+
}
|
|
702
|
+
return validated;
|
|
703
|
+
}
|
|
704
|
+
async authenticateProviderMerklePath(txid, result) {
|
|
705
|
+
// First copy and bind the provider's mutable proof/header response. Then
|
|
706
|
+
// resolve that header hash through the wallet's own chain service and bind
|
|
707
|
+
// the proof a second time to that canonical, proof-of-work-valid header.
|
|
708
|
+
// Bind the provider path to the declared height/root before using the
|
|
709
|
+
// declared hash as a lookup key. `hashToHeader` then authenticates that
|
|
710
|
+
// hash and returns the canonical owned header.
|
|
711
|
+
const providerResult = (0, validateMerklePathResult_1.validateMerklePathResult)(txid, result, false, false);
|
|
712
|
+
const canonicalHeader = await this.hashToHeader(providerResult.header.hash);
|
|
713
|
+
// `hashToHeader` already returns an owned, format-checked,
|
|
714
|
+
// proof-of-work-valid header. This second pass only binds the copied path
|
|
715
|
+
// to that canonical header's height and root.
|
|
716
|
+
return (0, validateMerklePathResult_1.validateMerklePathResult)(txid, { merklePath: providerResult.merklePath, header: canonicalHeader }, false, false);
|
|
717
|
+
}
|
|
718
|
+
async tryMerklePathProvider(txid, service, aggregate, logger) {
|
|
719
|
+
let result;
|
|
720
|
+
try {
|
|
721
|
+
result = (0, validateMerklePathResult_1.snapshotMerklePathResult)(await service.service(txid, this), true, service.providerName);
|
|
722
|
+
}
|
|
723
|
+
catch (error_) {
|
|
724
|
+
const error = WalletError_1.WalletError.fromUnknown(error_);
|
|
725
|
+
this.getMerklePathServices.addServiceCallError(service, error);
|
|
726
|
+
aggregate.error ??= error;
|
|
727
|
+
return false;
|
|
728
|
+
}
|
|
729
|
+
aggregate.notes?.push(...(result.notes ?? []));
|
|
730
|
+
aggregate.name ??= result.name ?? service.providerName;
|
|
731
|
+
if (result.merklePath != null) {
|
|
732
|
+
try {
|
|
733
|
+
await (0, getCanonicalMerklePath_1.validateCanonicalMerklePathResult)(txid, result, await this.getChainTracker());
|
|
734
|
+
if (result.header != null) {
|
|
735
|
+
const authenticated = await this.authenticateProviderMerklePath(txid, result);
|
|
736
|
+
result.merklePath = authenticated.merklePath;
|
|
737
|
+
result.header = authenticated.header;
|
|
738
|
+
}
|
|
739
|
+
logger?.log(`${service.providerName} has authenticated canonical merklePath`);
|
|
740
|
+
Object.assign(aggregate, {
|
|
741
|
+
merklePath: result.merklePath,
|
|
742
|
+
header: result.header,
|
|
743
|
+
name: result.name ?? service.providerName,
|
|
744
|
+
error: undefined
|
|
745
|
+
});
|
|
746
|
+
this.getMerklePathServices.addServiceCallSuccess(service);
|
|
747
|
+
return true;
|
|
748
|
+
}
|
|
749
|
+
catch (error_) {
|
|
750
|
+
logger?.log(`${service.providerName} rejected non-canonical merklePath`);
|
|
751
|
+
result.error = WalletError_1.WalletError.fromUnknown(error_);
|
|
752
|
+
}
|
|
753
|
+
}
|
|
754
|
+
else {
|
|
755
|
+
logger?.log(`${service.providerName} no merklePath`);
|
|
756
|
+
}
|
|
757
|
+
if (result.error != null)
|
|
758
|
+
this.getMerklePathServices.addServiceCallError(service, result.error);
|
|
759
|
+
else
|
|
760
|
+
this.getMerklePathServices.addServiceCallFailure(service);
|
|
761
|
+
aggregate.error ??= result.error;
|
|
762
|
+
return false;
|
|
635
763
|
}
|
|
636
764
|
async getMerklePath(txid, useNext, logger) {
|
|
765
|
+
const normalizedTxid = (0, validateMerklePathResult_1.normalizeTxid)(txid);
|
|
637
766
|
const services = this.getMerklePathServices;
|
|
638
767
|
if (useNext === true)
|
|
639
768
|
services.next();
|
|
640
|
-
const
|
|
769
|
+
const result = { notes: [] };
|
|
641
770
|
logger?.group('services getMerklePath');
|
|
642
771
|
for (let tries = 0; tries < services.count; tries++) {
|
|
643
|
-
|
|
644
|
-
|
|
645
|
-
const r = await stc.service(txid, this);
|
|
646
|
-
if (r.notes != null) {
|
|
647
|
-
r0.notes = r0.notes ?? [];
|
|
648
|
-
r0.notes.push(...r.notes);
|
|
649
|
-
}
|
|
650
|
-
r0.name ??= r.name;
|
|
651
|
-
if (r.merklePath == null) {
|
|
652
|
-
logger?.log(`${stc.providerName} no merklePath`);
|
|
653
|
-
}
|
|
654
|
-
else {
|
|
655
|
-
logger?.log(`${stc.providerName} has merklePath`);
|
|
656
|
-
// If we have a proof, call it done.
|
|
657
|
-
r0.merklePath = r.merklePath;
|
|
658
|
-
r0.header = r.header;
|
|
659
|
-
r0.name = r.name;
|
|
660
|
-
r0.error = undefined;
|
|
661
|
-
services.addServiceCallSuccess(stc);
|
|
662
|
-
break;
|
|
663
|
-
}
|
|
664
|
-
if (r.error != null)
|
|
665
|
-
services.addServiceCallError(stc, r.error);
|
|
666
|
-
else
|
|
667
|
-
services.addServiceCallFailure(stc);
|
|
668
|
-
if (r.error != null && r0.error == null) {
|
|
669
|
-
// If we have an error and didn't before...
|
|
670
|
-
r0.error = r.error;
|
|
671
|
-
}
|
|
672
|
-
}
|
|
673
|
-
catch (error_) {
|
|
674
|
-
const e = WalletError_1.WalletError.fromUnknown(error_);
|
|
675
|
-
services.addServiceCallError(stc, e);
|
|
676
|
-
}
|
|
772
|
+
if (await this.tryMerklePathProvider(normalizedTxid, services.serviceToCall, result, logger))
|
|
773
|
+
break;
|
|
677
774
|
services.next();
|
|
678
775
|
}
|
|
679
|
-
|
|
776
|
+
logger?.groupEnd?.();
|
|
777
|
+
return result;
|
|
680
778
|
}
|
|
681
779
|
async getValidatedMerklePath(txid, validate) {
|
|
780
|
+
const normalizedTxid = (0, validateMerklePathResult_1.normalizeTxid)(txid);
|
|
682
781
|
const services = this.getMerklePathServices;
|
|
683
782
|
const calls = services.allServicesToCall;
|
|
684
783
|
const start = services.index;
|
|
@@ -686,13 +785,28 @@ class Services {
|
|
|
686
785
|
for (let i = 0; i < calls.length; i++) {
|
|
687
786
|
const call = calls[(start + i) % calls.length];
|
|
688
787
|
try {
|
|
689
|
-
const result = await call.service(
|
|
788
|
+
const result = (0, validateMerklePathResult_1.snapshotMerklePathResult)(await call.service(normalizedTxid, this), true, call.providerName);
|
|
690
789
|
if (result.merklePath == null) {
|
|
691
790
|
throw result.error ?? new WERR_errors_1.WERR_INVALID_OPERATION('Proof provider returned no Merkle path');
|
|
692
791
|
}
|
|
693
|
-
await
|
|
792
|
+
await (0, getCanonicalMerklePath_1.validateCanonicalMerklePathResult)(normalizedTxid, result, await this.getChainTracker());
|
|
793
|
+
// Some legacy/custom proof providers return a path without a header;
|
|
794
|
+
// this method's explicit validator contract exists so its caller can
|
|
795
|
+
// resolve and authenticate that header independently. When a provider
|
|
796
|
+
// does supply a header, apply the standard built-in boundary first.
|
|
797
|
+
let candidate = result;
|
|
798
|
+
if (result.header != null) {
|
|
799
|
+
const authenticated = await this.authenticateProviderMerklePath(normalizedTxid, result);
|
|
800
|
+
candidate = {
|
|
801
|
+
name: call.providerName,
|
|
802
|
+
notes: result.notes,
|
|
803
|
+
merklePath: authenticated.merklePath,
|
|
804
|
+
header: authenticated.header
|
|
805
|
+
};
|
|
806
|
+
}
|
|
807
|
+
await validate(candidate);
|
|
694
808
|
services.addServiceCallSuccess(call);
|
|
695
|
-
return
|
|
809
|
+
return candidate;
|
|
696
810
|
}
|
|
697
811
|
catch (cause) {
|
|
698
812
|
error = WalletError_1.WalletError.fromUnknown(cause);
|
|
@@ -703,10 +817,28 @@ class Services {
|
|
|
703
817
|
}
|
|
704
818
|
async updateFiatExchangeRates(targetCurrencies, updateMsecs) {
|
|
705
819
|
updateMsecs ??= 1000 * 60 * 60 * 24;
|
|
820
|
+
if (!Number.isSafeInteger(updateMsecs) || updateMsecs < 0 || updateMsecs > 10 * 365 * 24 * 60 * 60 * 1000) {
|
|
821
|
+
throw new WERR_errors_1.WERR_INVALID_PARAMETER('updateMsecs', 'a bounded non-negative safe integer.');
|
|
822
|
+
}
|
|
823
|
+
const targets = (0, fiatRateValidation_1.normalizeFiatCurrencies)(targetCurrencies);
|
|
706
824
|
const freshnessDate = new Date(Date.now() - updateMsecs);
|
|
707
|
-
|
|
825
|
+
let stored;
|
|
826
|
+
try {
|
|
827
|
+
const normalized = (0, fiatRateValidation_1.normalizeFiatExchangeRates)(this.options.fiatExchangeRates, []);
|
|
828
|
+
stored = {
|
|
829
|
+
...normalized,
|
|
830
|
+
rateTimestamps: (0, fiatRateValidation_1.normalizeFiatRateTimestamps)(this.options.fiatExchangeRates.rateTimestamps)
|
|
831
|
+
};
|
|
832
|
+
}
|
|
833
|
+
catch {
|
|
834
|
+
stored = {
|
|
835
|
+
timestamp: new Date(Date.UTC(2000, 0, 1)),
|
|
836
|
+
base: 'USD',
|
|
837
|
+
rates: { USD: 1 }
|
|
838
|
+
};
|
|
839
|
+
}
|
|
708
840
|
const storedRates = stored.rates ?? {};
|
|
709
|
-
const toFetch = this.collectStaleCurrencies(
|
|
841
|
+
const toFetch = this.collectStaleCurrencies(targets, storedRates, stored, freshnessDate);
|
|
710
842
|
if (toFetch.length === 0) {
|
|
711
843
|
this.options.fiatExchangeRates = {
|
|
712
844
|
timestamp: stored.timestamp,
|
|
@@ -714,16 +846,16 @@ class Services {
|
|
|
714
846
|
rates: storedRates,
|
|
715
847
|
rateTimestamps: stored.rateTimestamps
|
|
716
848
|
};
|
|
717
|
-
return this.options.fiatExchangeRates;
|
|
849
|
+
return copyFiatExchangeRates(this.options.fiatExchangeRates);
|
|
718
850
|
}
|
|
719
851
|
const fetched = await this.fetchFiatRates(toFetch);
|
|
720
852
|
if (fetched == null) {
|
|
721
853
|
if (Object.keys(storedRates).length > 0)
|
|
722
|
-
return stored;
|
|
854
|
+
return copyFiatExchangeRates(stored);
|
|
723
855
|
throw new WERR_errors_1.WERR_INTERNAL();
|
|
724
856
|
}
|
|
725
857
|
this.options.fiatExchangeRates = this.mergeFiatRates(stored, storedRates, fetched);
|
|
726
|
-
return this.options.fiatExchangeRates;
|
|
858
|
+
return copyFiatExchangeRates(this.options.fiatExchangeRates);
|
|
727
859
|
}
|
|
728
860
|
collectStaleCurrencies(targetCurrencies, storedRates, stored, freshnessDate) {
|
|
729
861
|
const toFetch = [];
|
|
@@ -735,7 +867,8 @@ class Services {
|
|
|
735
867
|
}
|
|
736
868
|
const v = storedRates[c];
|
|
737
869
|
const ts = stored.rateTimestamps?.[c] ?? stored.timestamp;
|
|
738
|
-
const
|
|
870
|
+
const tsValue = ts instanceof Date ? ts.getTime() : Number.NaN;
|
|
871
|
+
const fresh = (0, fiatRateValidation_1.isValidFiatRate)(v) && Number.isFinite(tsValue) && tsValue <= Date.now() + 5 * 60 * 1000 && ts > freshnessDate;
|
|
739
872
|
if (!fresh)
|
|
740
873
|
toFetch.push(c);
|
|
741
874
|
}
|
|
@@ -746,12 +879,10 @@ class Services {
|
|
|
746
879
|
for (let tries = 0; tries < services.count; tries++) {
|
|
747
880
|
const stc = services.serviceToCall;
|
|
748
881
|
try {
|
|
749
|
-
const
|
|
750
|
-
|
|
751
|
-
|
|
752
|
-
|
|
753
|
-
}
|
|
754
|
-
services.addServiceCallFailure(stc);
|
|
882
|
+
const raw = await stc.service(toFetch, this.options);
|
|
883
|
+
const rates = (0, fiatRateValidation_1.normalizeFiatExchangeRates)(raw, toFetch);
|
|
884
|
+
services.addServiceCallSuccess(stc);
|
|
885
|
+
return rates;
|
|
755
886
|
}
|
|
756
887
|
catch (error_) {
|
|
757
888
|
services.addServiceCallError(stc, WalletError_1.WalletError.fromUnknown(error_));
|
|
@@ -761,11 +892,12 @@ class Services {
|
|
|
761
892
|
return undefined;
|
|
762
893
|
}
|
|
763
894
|
mergeFiatRates(stored, storedRates, fetched) {
|
|
895
|
+
fetched = (0, fiatRateValidation_1.normalizeFiatExchangeRates)(fetched, []);
|
|
764
896
|
const nextRates = { ...storedRates };
|
|
765
897
|
const nextTimestamps = { ...stored.rateTimestamps };
|
|
766
898
|
for (const c of fetched.rates != null ? Object.keys(fetched.rates) : []) {
|
|
767
899
|
const v = fetched.rates?.[c];
|
|
768
|
-
if (
|
|
900
|
+
if ((0, fiatRateValidation_1.isValidFiatRate)(v)) {
|
|
769
901
|
nextRates[c] = v;
|
|
770
902
|
nextTimestamps[c] = fetched.timestamp;
|
|
771
903
|
}
|
|
@@ -811,6 +943,13 @@ class Services {
|
|
|
811
943
|
}
|
|
812
944
|
exports.Services = Services;
|
|
813
945
|
function validateScriptHash(output, outputFormat) {
|
|
946
|
+
if (typeof output !== 'string' ||
|
|
947
|
+
output.length === 0 ||
|
|
948
|
+
output.length % 2 !== 0 ||
|
|
949
|
+
output.length > validateRawTxResult_1.MAX_RAW_TRANSACTION_BYTES * 2 ||
|
|
950
|
+
!/^[0-9a-fA-F]+$/.test(output)) {
|
|
951
|
+
throw new WERR_errors_1.WERR_INVALID_PARAMETER('output', `nonempty hexadecimal bytes up to ${validateRawTxResult_1.MAX_RAW_TRANSACTION_BYTES} bytes`);
|
|
952
|
+
}
|
|
814
953
|
let b = (0, utilityHelpers_noBuffer_1.asArray)(output);
|
|
815
954
|
if (outputFormat == null) {
|
|
816
955
|
if (b.length === 32)
|
|
@@ -820,8 +959,12 @@ function validateScriptHash(output, outputFormat) {
|
|
|
820
959
|
}
|
|
821
960
|
switch (outputFormat) {
|
|
822
961
|
case 'hashBE':
|
|
962
|
+
if (b.length !== 32)
|
|
963
|
+
throw new WERR_errors_1.WERR_INVALID_PARAMETER('output', 'exactly 32 bytes for hashBE');
|
|
823
964
|
break;
|
|
824
965
|
case 'hashLE':
|
|
966
|
+
if (b.length !== 32)
|
|
967
|
+
throw new WERR_errors_1.WERR_INVALID_PARAMETER('output', 'exactly 32 bytes for hashLE');
|
|
825
968
|
b = b.reverse();
|
|
826
969
|
break;
|
|
827
970
|
case 'script':
|
|
@@ -841,7 +984,7 @@ function validateScriptHash(output, outputFormat) {
|
|
|
841
984
|
* @publicbody
|
|
842
985
|
*/
|
|
843
986
|
function toBinaryBaseBlockHeader(header) {
|
|
844
|
-
const writer = new
|
|
987
|
+
const writer = new utils_1.Writer();
|
|
845
988
|
writer.writeUInt32LE(header.version);
|
|
846
989
|
writer.writeReverse((0, utilityHelpers_noBuffer_1.asArray)(header.previousHash));
|
|
847
990
|
writer.writeReverse((0, utilityHelpers_noBuffer_1.asArray)(header.merkleRoot));
|