@bopen-io/wallet-toolbox 2.6.2-brc153.5 → 2.15.0-bopen.1
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 +789 -1
- package/LICENSES/Open-BSV-License-4-wallet-pre-2026.txt +28 -0
- package/README.md +889 -14
- package/THIRD_PARTY_NOTICES.md +35 -0
- package/docs/README.md +44 -31
- package/docs/action-batch-planning.md +80 -37
- package/docs/client.md +11241 -2525
- package/docs/identity-verification.md +218 -0
- package/docs/local-first-chaintracks.md +129 -0
- package/docs/managed-change-liquidity.md +258 -0
- package/docs/managed-change-policy.md +14 -1
- package/docs/monitor.md +411 -85
- package/docs/no-send-expiry.md +167 -0
- package/docs/prepared-beef.md +197 -0
- package/docs/services.md +5163 -2157
- package/docs/setup.md +153 -57
- package/docs/storage.md +5051 -851
- package/docs/sync-transfer.md +144 -0
- package/docs/wab-shamir.md +5 -1
- package/docs/wallet.md +10202 -10670
- package/out/src/CWIStyleWalletManager.d.ts +39 -31
- package/out/src/CWIStyleWalletManager.d.ts.map +1 -1
- package/out/src/CWIStyleWalletManager.js +309 -258
- package/out/src/CWIStyleWalletManager.js.map +1 -1
- package/out/src/Setup.d.ts +24 -0
- package/out/src/Setup.d.ts.map +1 -1
- package/out/src/Setup.js +30 -2
- package/out/src/Setup.js.map +1 -1
- package/out/src/SetupClient.d.ts +3 -0
- package/out/src/SetupClient.d.ts.map +1 -1
- package/out/src/SetupClient.js +1 -0
- package/out/src/SetupClient.js.map +1 -1
- package/out/src/SetupWallet.d.ts +3 -0
- package/out/src/SetupWallet.d.ts.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 +54 -14
- package/out/src/Wallet.d.ts.map +1 -1
- package/out/src/Wallet.js +216 -114
- package/out/src/Wallet.js.map +1 -1
- package/out/src/WalletAuthenticationManager.d.ts +32 -0
- package/out/src/WalletAuthenticationManager.d.ts.map +1 -1
- package/out/src/WalletAuthenticationManager.js +531 -78
- 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 +101 -43
- package/out/src/WalletPermissionsManager.d.ts.map +1 -1
- package/out/src/WalletPermissionsManager.js +897 -414
- 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 +143 -8
- 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/index.client.d.ts +6 -0
- package/out/src/index.client.d.ts.map +1 -1
- package/out/src/index.client.js +16 -1
- package/out/src/index.client.js.map +1 -1
- package/out/src/index.mobile.d.ts +7 -0
- package/out/src/index.mobile.d.ts.map +1 -1
- package/out/src/index.mobile.js +17 -1
- package/out/src/index.mobile.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 +2 -0
- package/out/src/mockchain/MockServices.d.ts.map +1 -1
- package/out/src/mockchain/MockServices.js +54 -14
- package/out/src/mockchain/MockServices.js.map +1 -1
- package/out/src/monitor/Monitor.d.ts +51 -0
- package/out/src/monitor/Monitor.d.ts.map +1 -1
- package/out/src/monitor/Monitor.js +282 -41
- package/out/src/monitor/Monitor.js.map +1 -1
- package/out/src/monitor/MonitorDaemon.d.ts +2 -0
- package/out/src/monitor/MonitorDaemon.d.ts.map +1 -1
- package/out/src/monitor/MonitorDaemon.js +73 -17
- 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 +6 -1
- package/out/src/monitor/tasks/TaskArcSSE.d.ts.map +1 -1
- package/out/src/monitor/tasks/TaskArcSSE.js +117 -74
- 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/TaskNoSendExpiry.d.ts +19 -0
- package/out/src/monitor/tasks/TaskNoSendExpiry.d.ts.map +1 -0
- package/out/src/monitor/tasks/TaskNoSendExpiry.js +47 -0
- package/out/src/monitor/tasks/TaskNoSendExpiry.js.map +1 -0
- package/out/src/monitor/tasks/TaskReconcilePendingTransactions.d.ts +27 -0
- package/out/src/monitor/tasks/TaskReconcilePendingTransactions.d.ts.map +1 -0
- package/out/src/monitor/tasks/TaskReconcilePendingTransactions.js +242 -0
- package/out/src/monitor/tasks/TaskReconcilePendingTransactions.js.map +1 -0
- 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 +31 -9
- 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 +33 -6
- package/out/src/monitor/tasks/TaskReviewUtxos.d.ts.map +1 -1
- package/out/src/monitor/tasks/TaskReviewUtxos.js +189 -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/monitor/tasks/index.all.d.ts +2 -0
- package/out/src/monitor/tasks/index.all.d.ts.map +1 -1
- package/out/src/monitor/tasks/index.all.js +2 -0
- package/out/src/monitor/tasks/index.all.js.map +1 -1
- package/out/src/sdk/ActionBatch.interfaces.d.ts +23 -0
- package/out/src/sdk/ActionBatch.interfaces.d.ts.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/WERR_errors.d.ts +23 -0
- package/out/src/sdk/WERR_errors.d.ts.map +1 -1
- package/out/src/sdk/WERR_errors.js +51 -7
- package/out/src/sdk/WERR_errors.js.map +1 -1
- package/out/src/sdk/WalletError.d.ts.map +1 -1
- package/out/src/sdk/WalletError.js +7 -21
- package/out/src/sdk/WalletError.js.map +1 -1
- package/out/src/sdk/WalletErrorFromJson.d.ts.map +1 -1
- package/out/src/sdk/WalletErrorFromJson.js +121 -3
- package/out/src/sdk/WalletErrorFromJson.js.map +1 -1
- package/out/src/sdk/WalletServices.interfaces.d.ts +45 -2
- package/out/src/sdk/WalletServices.interfaces.d.ts.map +1 -1
- package/out/src/sdk/WalletStorage.interfaces.d.ts +87 -4
- package/out/src/sdk/WalletStorage.interfaces.d.ts.map +1 -1
- package/out/src/sdk/types.d.ts +3 -2
- package/out/src/sdk/types.d.ts.map +1 -1
- package/out/src/sdk/types.js +3 -2
- package/out/src/sdk/types.js.map +1 -1
- package/out/src/services/ServiceCollection.js +2 -2
- package/out/src/services/ServiceCollection.js.map +1 -1
- package/out/src/services/Services.d.ts +5 -0
- package/out/src/services/Services.d.ts.map +1 -1
- package/out/src/services/Services.js +346 -120
- 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 +269 -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 +122 -0
- package/out/src/services/chaintracker/LocalChainTracker.d.ts.map +1 -0
- package/out/src/services/chaintracker/LocalChainTracker.js +465 -0
- package/out/src/services/chaintracker/LocalChainTracker.js.map +1 -0
- 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/BulkFileDataCacheApi.d.ts +48 -0
- package/out/src/services/chaintracker/chaintracks/Api/BulkFileDataCacheApi.d.ts.map +1 -0
- package/out/src/services/chaintracker/chaintracks/Api/BulkFileDataCacheApi.js +3 -0
- package/out/src/services/chaintracker/chaintracks/Api/BulkFileDataCacheApi.js.map +1 -0
- package/out/src/services/chaintracker/chaintracks/Api/BulkFileDataValidatorApi.d.ts +70 -0
- package/out/src/services/chaintracker/chaintracks/Api/BulkFileDataValidatorApi.d.ts.map +1 -0
- package/out/src/services/chaintracker/chaintracks/Api/BulkFileDataValidatorApi.js +21 -0
- package/out/src/services/chaintracker/chaintracks/Api/BulkFileDataValidatorApi.js.map +1 -0
- 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 +53 -0
- package/out/src/services/chaintracker/chaintracks/Api/ChaintracksClientApi.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Api/ChaintracksFetchApi.d.ts +9 -2
- 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 +28 -3
- package/out/src/services/chaintracker/chaintracks/Chaintracks.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Chaintracks.js +282 -64
- 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 +348 -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 +378 -44
- 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 +230 -28
- 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 +8 -1
- package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageKnex.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageKnex.js +248 -87
- 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.d.ts +8 -0
- package/out/src/services/chaintracker/chaintracks/configureChaintracksIngestors.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/configureChaintracksIngestors.js +6 -3
- 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/index.all.d.ts +3 -0
- package/out/src/services/chaintracker/chaintracks/index.all.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/index.all.js +3 -0
- package/out/src/services/chaintracker/chaintracks/index.all.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/index.mobile.d.ts +5 -0
- package/out/src/services/chaintracker/chaintracks/index.mobile.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/index.mobile.js +5 -0
- package/out/src/services/chaintracker/chaintracks/index.mobile.js.map +1 -1
- package/out/src/services/chaintracker/chaintracks/util/BulkFileDataCacheFs.d.ts +51 -0
- package/out/src/services/chaintracker/chaintracks/util/BulkFileDataCacheFs.d.ts.map +1 -0
- package/out/src/services/chaintracker/chaintracks/util/BulkFileDataCacheFs.js +394 -0
- package/out/src/services/chaintracker/chaintracks/util/BulkFileDataCacheFs.js.map +1 -0
- package/out/src/services/chaintracker/chaintracks/util/BulkFileDataManager.d.ts +45 -1
- package/out/src/services/chaintracker/chaintracks/util/BulkFileDataManager.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/util/BulkFileDataManager.js +733 -166
- 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 +32 -0
- package/out/src/services/chaintracker/chaintracks/util/BulkFileDataValidator.worker.d.ts.map +1 -0
- package/out/src/services/chaintracker/chaintracks/util/BulkFileDataValidator.worker.js +40 -0
- package/out/src/services/chaintracker/chaintracks/util/BulkFileDataValidator.worker.js.map +1 -0
- 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 +3 -1
- 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 +38 -4
- package/out/src/services/chaintracker/chaintracks/util/ChaintracksFetch.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/util/ChaintracksFetch.js +191 -47
- 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 +48 -0
- package/out/src/services/chaintracker/chaintracks/util/DurableFileBulkFileDownloadBudget.d.ts.map +1 -0
- package/out/src/services/chaintracker/chaintracks/util/DurableFileBulkFileDownloadBudget.js +280 -0
- package/out/src/services/chaintracker/chaintracks/util/DurableFileBulkFileDownloadBudget.js.map +1 -0
- package/out/src/services/chaintracker/chaintracks/util/FixedWindowBulkFileDownloadBudget.d.ts +30 -0
- package/out/src/services/chaintracker/chaintracks/util/FixedWindowBulkFileDownloadBudget.d.ts.map +1 -0
- package/out/src/services/chaintracker/chaintracks/util/FixedWindowBulkFileDownloadBudget.js +57 -0
- package/out/src/services/chaintracker/chaintracks/util/FixedWindowBulkFileDownloadBudget.js.map +1 -0
- 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 +14 -0
- package/out/src/services/chaintracker/chaintracks/util/InlineBulkFileDataValidator.d.ts.map +1 -0
- package/out/src/services/chaintracker/chaintracks/util/InlineBulkFileDataValidator.js +148 -0
- package/out/src/services/chaintracker/chaintracks/util/InlineBulkFileDataValidator.js.map +1 -0
- package/out/src/services/chaintracker/chaintracks/util/NodeBulkFileDataValidator.d.ts +41 -0
- package/out/src/services/chaintracker/chaintracks/util/NodeBulkFileDataValidator.d.ts.map +1 -0
- package/out/src/services/chaintracker/chaintracks/util/NodeBulkFileDataValidator.js +271 -0
- package/out/src/services/chaintracker/chaintracks/util/NodeBulkFileDataValidator.js.map +1 -0
- 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 +17 -4
- package/out/src/services/chaintracker/chaintracks/util/blockHeaderUtilities.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/util/blockHeaderUtilities.js +362 -105
- 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/chaintracker/index.all.d.ts +1 -0
- package/out/src/services/chaintracker/index.all.d.ts.map +1 -1
- package/out/src/services/chaintracker/index.all.js +1 -0
- package/out/src/services/chaintracker/index.all.js.map +1 -1
- package/out/src/services/chaintracker/index.client.d.ts +1 -0
- package/out/src/services/chaintracker/index.client.d.ts.map +1 -1
- package/out/src/services/chaintracker/index.client.js +1 -0
- package/out/src/services/chaintracker/index.client.js.map +1 -1
- package/out/src/services/chaintracker/index.mobile.d.ts +1 -0
- package/out/src/services/chaintracker/index.mobile.d.ts.map +1 -1
- package/out/src/services/chaintracker/index.mobile.js +1 -0
- package/out/src/services/chaintracker/index.mobile.js.map +1 -1
- package/out/src/services/classifyOutputUtxo.d.ts +25 -0
- package/out/src/services/classifyOutputUtxo.d.ts.map +1 -0
- package/out/src/services/classifyOutputUtxo.js +96 -0
- package/out/src/services/classifyOutputUtxo.js.map +1 -0
- package/out/src/services/createDefaultWalletServicesOptions.d.ts +16 -3
- package/out/src/services/createDefaultWalletServicesOptions.d.ts.map +1 -1
- package/out/src/services/createDefaultWalletServicesOptions.js +38 -8
- package/out/src/services/createDefaultWalletServicesOptions.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 +38 -23
- package/out/src/services/providers/ArcSSEClient.d.ts.map +1 -1
- package/out/src/services/providers/ArcSSEClient.js +384 -63
- package/out/src/services/providers/ArcSSEClient.js.map +1 -1
- package/out/src/services/providers/Arcade.d.ts +11 -1
- package/out/src/services/providers/Arcade.d.ts.map +1 -1
- package/out/src/services/providers/Arcade.js +111 -33
- 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/arcadeStatus.d.ts +18 -0
- package/out/src/services/providers/arcadeStatus.d.ts.map +1 -0
- package/out/src/services/providers/arcadeStatus.js +56 -0
- package/out/src/services/providers/arcadeStatus.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 +29 -6
- package/out/src/signer/actionBatch/ActionBatchPlanner.js.map +1 -1
- package/out/src/signer/actionBatch/ActionBatchWorkspace.d.ts +8 -5
- package/out/src/signer/actionBatch/ActionBatchWorkspace.d.ts.map +1 -1
- package/out/src/signer/actionBatch/ActionBatchWorkspace.js +186 -73
- 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 +3 -1
- package/out/src/signer/methods/createAction.js.map +1 -1
- package/out/src/signer/methods/createNoSendExpiryAction.d.ts +7 -0
- package/out/src/signer/methods/createNoSendExpiryAction.d.ts.map +1 -0
- package/out/src/signer/methods/createNoSendExpiryAction.js +254 -0
- package/out/src/signer/methods/createNoSendExpiryAction.js.map +1 -0
- package/out/src/signer/methods/internalizeAction.d.ts.map +1 -1
- package/out/src/signer/methods/internalizeAction.js +9 -5
- 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 +12 -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 +11 -3
- package/out/src/storage/StorageIdb.d.ts.map +1 -1
- package/out/src/storage/StorageIdb.js +134 -44
- package/out/src/storage/StorageIdb.js.map +1 -1
- package/out/src/storage/StorageKnex.d.ts +71 -7
- package/out/src/storage/StorageKnex.d.ts.map +1 -1
- package/out/src/storage/StorageKnex.js +616 -262
- package/out/src/storage/StorageKnex.js.map +1 -1
- package/out/src/storage/StorageProvider.d.ts +41 -10
- package/out/src/storage/StorageProvider.d.ts.map +1 -1
- package/out/src/storage/StorageProvider.js +397 -107
- package/out/src/storage/StorageProvider.js.map +1 -1
- package/out/src/storage/StorageReader.d.ts +9 -3
- package/out/src/storage/StorageReader.d.ts.map +1 -1
- package/out/src/storage/StorageReader.js +21 -43
- package/out/src/storage/StorageReader.js.map +1 -1
- package/out/src/storage/StorageReaderWriter.d.ts +4 -0
- package/out/src/storage/StorageReaderWriter.d.ts.map +1 -1
- package/out/src/storage/StorageReaderWriter.js +68 -38
- 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 +31 -6
- package/out/src/storage/WalletStorageManager.d.ts.map +1 -1
- package/out/src/storage/WalletStorageManager.js +166 -75
- package/out/src/storage/WalletStorageManager.js.map +1 -1
- package/out/src/storage/adminServer/adminServer.d.ts +3 -1
- package/out/src/storage/adminServer/adminServer.d.ts.map +1 -1
- package/out/src/storage/adminServer/adminServer.js +41 -90
- package/out/src/storage/adminServer/adminServer.js.map +1 -1
- package/out/src/storage/adminServer/adminUi.d.ts.map +1 -1
- package/out/src/storage/adminServer/adminUi.js +32 -9
- package/out/src/storage/adminServer/adminUi.js.map +1 -1
- package/out/src/storage/adminServer/reqReviewQuery.d.ts +41 -0
- package/out/src/storage/adminServer/reqReviewQuery.d.ts.map +1 -0
- package/out/src/storage/adminServer/reqReviewQuery.js +67 -0
- package/out/src/storage/adminServer/reqReviewQuery.js.map +1 -0
- package/out/src/storage/adminServer/reviewUtxos.d.ts +27 -0
- package/out/src/storage/adminServer/reviewUtxos.d.ts.map +1 -0
- package/out/src/storage/adminServer/reviewUtxos.js +62 -0
- package/out/src/storage/adminServer/reviewUtxos.js.map +1 -0
- package/out/src/storage/idbHelpers.d.ts.map +1 -1
- package/out/src/storage/idbHelpers.js +14 -2
- package/out/src/storage/idbHelpers.js.map +1 -1
- package/out/src/storage/index.all.d.ts +4 -0
- package/out/src/storage/index.all.d.ts.map +1 -1
- package/out/src/storage/index.all.js +4 -0
- package/out/src/storage/index.all.js.map +1 -1
- package/out/src/storage/index.client.d.ts +1 -0
- package/out/src/storage/index.client.d.ts.map +1 -1
- package/out/src/storage/index.client.js +1 -0
- package/out/src/storage/index.client.js.map +1 -1
- package/out/src/storage/index.mobile.d.ts +1 -0
- package/out/src/storage/index.mobile.d.ts.map +1 -1
- package/out/src/storage/index.mobile.js +1 -0
- package/out/src/storage/index.mobile.js.map +1 -1
- package/out/src/storage/knexPostgres.d.ts +16 -0
- package/out/src/storage/knexPostgres.d.ts.map +1 -0
- package/out/src/storage/knexPostgres.js +34 -0
- package/out/src/storage/knexPostgres.js.map +1 -0
- 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 +5 -44
- package/out/src/storage/methods/ListOutputsSpecOp.js.map +1 -1
- package/out/src/storage/methods/actionBatch.d.ts +9 -2
- package/out/src/storage/methods/actionBatch.d.ts.map +1 -1
- package/out/src/storage/methods/actionBatch.js +260 -67
- 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 +47 -26
- 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 +59 -110
- package/out/src/storage/methods/attemptToPostReqsToNetwork.js.map +1 -1
- package/out/src/storage/methods/availableManagedChange.d.ts +8 -1
- package/out/src/storage/methods/availableManagedChange.d.ts.map +1 -1
- package/out/src/storage/methods/availableManagedChange.js.map +1 -1
- package/out/src/storage/methods/createAction.d.ts +60 -3
- package/out/src/storage/methods/createAction.d.ts.map +1 -1
- package/out/src/storage/methods/createAction.js +390 -105
- package/out/src/storage/methods/createAction.js.map +1 -1
- package/out/src/storage/methods/generateChange.d.ts +15 -5
- package/out/src/storage/methods/generateChange.d.ts.map +1 -1
- package/out/src/storage/methods/generateChange.js +187 -27
- 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/getSyncChunk.d.ts.map +1 -1
- package/out/src/storage/methods/getSyncChunk.js +42 -11
- package/out/src/storage/methods/getSyncChunk.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 +171 -133
- 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 +21 -11
- 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 +25 -18
- 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 +31 -30
- package/out/src/storage/methods/listOutputsKnex.js.map +1 -1
- package/out/src/storage/methods/managedChangePolicy.d.ts +44 -0
- package/out/src/storage/methods/managedChangePolicy.d.ts.map +1 -0
- package/out/src/storage/methods/managedChangePolicy.js +58 -0
- package/out/src/storage/methods/managedChangePolicy.js.map +1 -0
- package/out/src/storage/methods/maxPossibleSatoshis.d.ts +13 -0
- package/out/src/storage/methods/maxPossibleSatoshis.d.ts.map +1 -0
- package/out/src/storage/methods/maxPossibleSatoshis.js +16 -0
- package/out/src/storage/methods/maxPossibleSatoshis.js.map +1 -0
- package/out/src/storage/methods/noSendExpiry.d.ts +11 -0
- package/out/src/storage/methods/noSendExpiry.d.ts.map +1 -0
- package/out/src/storage/methods/noSendExpiry.js +359 -0
- package/out/src/storage/methods/noSendExpiry.js.map +1 -0
- package/out/src/storage/methods/noSendExpiryLifecycle.d.ts +14 -0
- package/out/src/storage/methods/noSendExpiryLifecycle.d.ts.map +1 -0
- package/out/src/storage/methods/noSendExpiryLifecycle.js +691 -0
- package/out/src/storage/methods/noSendExpiryLifecycle.js.map +1 -0
- package/out/src/storage/methods/preparedBeef.d.ts +104 -0
- package/out/src/storage/methods/preparedBeef.d.ts.map +1 -0
- package/out/src/storage/methods/preparedBeef.js +524 -0
- package/out/src/storage/methods/preparedBeef.js.map +1 -0
- package/out/src/storage/methods/processAction.d.ts.map +1 -1
- package/out/src/storage/methods/processAction.js +144 -32
- package/out/src/storage/methods/processAction.js.map +1 -1
- package/out/src/storage/methods/purgeData.d.ts.map +1 -1
- package/out/src/storage/methods/purgeData.js +18 -3
- package/out/src/storage/methods/purgeData.js.map +1 -1
- package/out/src/storage/methods/reconcileFailedTransactionInputs.d.ts +32 -0
- package/out/src/storage/methods/reconcileFailedTransactionInputs.d.ts.map +1 -0
- package/out/src/storage/methods/reconcileFailedTransactionInputs.js +142 -0
- package/out/src/storage/methods/reconcileFailedTransactionInputs.js.map +1 -0
- package/out/src/storage/methods/reviewStatus.js +4 -4
- package/out/src/storage/methods/reviewStatus.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 +38 -0
- package/out/src/storage/methods/reviewUtxoOutputs.d.ts.map +1 -0
- package/out/src/storage/methods/reviewUtxoOutputs.js +197 -0
- package/out/src/storage/methods/reviewUtxoOutputs.js.map +1 -0
- package/out/src/storage/methods/validateSyncProof.d.ts +32 -0
- package/out/src/storage/methods/validateSyncProof.d.ts.map +1 -0
- package/out/src/storage/methods/validateSyncProof.js +139 -0
- package/out/src/storage/methods/validateSyncProof.js.map +1 -0
- package/out/src/storage/portable/index.d.ts.map +1 -1
- package/out/src/storage/portable/index.js +63 -27
- 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 +94 -8
- package/out/src/storage/remoting/BinaryJson.js.map +1 -1
- package/out/src/storage/remoting/KnexPaymentReplayStore.d.ts.map +1 -1
- package/out/src/storage/remoting/KnexPaymentReplayStore.js +1 -0
- package/out/src/storage/remoting/KnexPaymentReplayStore.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 +221 -40
- package/out/src/storage/remoting/KnexSessionManager.js.map +1 -1
- package/out/src/storage/remoting/KnexSyncTransferStore.d.ts +26 -0
- package/out/src/storage/remoting/KnexSyncTransferStore.d.ts.map +1 -0
- package/out/src/storage/remoting/KnexSyncTransferStore.js +222 -0
- package/out/src/storage/remoting/KnexSyncTransferStore.js.map +1 -0
- 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 +65 -8
- package/out/src/storage/remoting/StorageClient.js.map +1 -1
- package/out/src/storage/remoting/StorageClientBase.d.ts +57 -10
- package/out/src/storage/remoting/StorageClientBase.d.ts.map +1 -1
- package/out/src/storage/remoting/StorageClientBase.js +372 -9
- 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 +13 -11
- package/out/src/storage/remoting/StorageMobile.js.map +1 -1
- package/out/src/storage/remoting/StorageServer.d.ts +27 -5
- package/out/src/storage/remoting/StorageServer.d.ts.map +1 -1
- package/out/src/storage/remoting/StorageServer.js +243 -33
- package/out/src/storage/remoting/StorageServer.js.map +1 -1
- package/out/src/storage/remoting/SyncTransfer.d.ts +29 -0
- package/out/src/storage/remoting/SyncTransfer.d.ts.map +1 -0
- package/out/src/storage/remoting/SyncTransfer.js +153 -0
- package/out/src/storage/remoting/SyncTransfer.js.map +1 -0
- package/out/src/storage/remoting/entityValidationHelpers.d.ts.map +1 -1
- package/out/src/storage/remoting/entityValidationHelpers.js +35 -0
- package/out/src/storage/remoting/entityValidationHelpers.js.map +1 -1
- package/out/src/storage/remoting/syncChunkBinary.d.ts +4 -0
- package/out/src/storage/remoting/syncChunkBinary.d.ts.map +1 -0
- package/out/src/storage/remoting/syncChunkBinary.js +38 -0
- package/out/src/storage/remoting/syncChunkBinary.js.map +1 -0
- package/out/src/storage/remoting/validateRpcSyncProofs.d.ts +5 -0
- package/out/src/storage/remoting/validateRpcSyncProofs.d.ts.map +1 -0
- package/out/src/storage/remoting/validateRpcSyncProofs.js +82 -0
- package/out/src/storage/remoting/validateRpcSyncProofs.js.map +1 -0
- package/out/src/storage/schema/KnexMigrations.d.ts +13 -2
- package/out/src/storage/schema/KnexMigrations.d.ts.map +1 -1
- package/out/src/storage/schema/KnexMigrations.js +334 -43
- package/out/src/storage/schema/KnexMigrations.js.map +1 -1
- package/out/src/storage/schema/StorageIdbSchema.d.ts +3 -0
- package/out/src/storage/schema/StorageIdbSchema.d.ts.map +1 -1
- package/out/src/storage/schema/entities/EntityOutput.d.ts.map +1 -1
- package/out/src/storage/schema/entities/EntityOutput.js +24 -4
- package/out/src/storage/schema/entities/EntityOutput.js.map +1 -1
- package/out/src/storage/schema/entities/EntityOutputBasket.d.ts.map +1 -1
- package/out/src/storage/schema/entities/EntityOutputBasket.js +5 -2
- package/out/src/storage/schema/entities/EntityOutputBasket.js.map +1 -1
- package/out/src/storage/schema/entities/EntityProvenTx.d.ts +4 -1
- package/out/src/storage/schema/entities/EntityProvenTx.d.ts.map +1 -1
- package/out/src/storage/schema/entities/EntityProvenTx.js +125 -41
- 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.d.ts +4 -2
- package/out/src/storage/schema/entities/EntitySyncState.d.ts.map +1 -1
- package/out/src/storage/schema/entities/EntitySyncState.js +12 -6
- package/out/src/storage/schema/entities/EntitySyncState.js.map +1 -1
- package/out/src/storage/schema/entities/EntityTransaction.d.ts +26 -0
- package/out/src/storage/schema/entities/EntityTransaction.d.ts.map +1 -1
- package/out/src/storage/schema/entities/EntityTransaction.js +221 -21
- package/out/src/storage/schema/entities/EntityTransaction.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/TablePreparedBeef.interfaces.d.ts +23 -0
- package/out/src/storage/schema/tables/TablePreparedBeef.interfaces.d.ts.map +1 -0
- package/out/src/storage/schema/tables/TablePreparedBeef.interfaces.js +3 -0
- package/out/src/storage/schema/tables/TablePreparedBeef.interfaces.js.map +1 -0
- 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 +2 -2
- 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 +17 -1
- package/out/src/storage/schema/tables/TableTransaction.d.ts.map +1 -1
- package/out/src/storage/schema/tables/TableTransaction.js +14 -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/storage/sync/SyncPageBudget.d.ts +8 -0
- package/out/src/storage/sync/SyncPageBudget.d.ts.map +1 -0
- package/out/src/storage/sync/SyncPageBudget.js +24 -0
- package/out/src/storage/sync/SyncPageBudget.js.map +1 -0
- package/out/src/storage/sync/syncCheckpoint.d.ts +4 -0
- package/out/src/storage/sync/syncCheckpoint.d.ts.map +1 -0
- package/out/src/storage/sync/syncCheckpoint.js +49 -0
- package/out/src/storage/sync/syncCheckpoint.js.map +1 -0
- package/out/src/utility/Argon2idBackend.d.ts +36 -0
- package/out/src/utility/Argon2idBackend.d.ts.map +1 -0
- package/out/src/utility/Argon2idBackend.js +60 -0
- package/out/src/utility/Argon2idBackend.js.map +1 -0
- 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/beefForTxids.d.ts +12 -3
- package/out/src/utility/beefForTxids.d.ts.map +1 -1
- package/out/src/utility/beefForTxids.js +69 -21
- package/out/src/utility/beefForTxids.js.map +1 -1
- package/out/src/utility/brc153ReferenceLabels.d.ts +16 -0
- package/out/src/utility/brc153ReferenceLabels.d.ts.map +1 -1
- package/out/src/utility/brc153ReferenceLabels.js +20 -5
- package/out/src/utility/brc153ReferenceLabels.js.map +1 -1
- package/out/src/utility/brc177NoSendExpiry.d.ts +34 -0
- package/out/src/utility/brc177NoSendExpiry.d.ts.map +1 -0
- package/out/src/utility/brc177NoSendExpiry.js +81 -0
- package/out/src/utility/brc177NoSendExpiry.js.map +1 -0
- package/out/src/utility/canonicalizeAtomicBeef.d.ts +12 -0
- package/out/src/utility/canonicalizeAtomicBeef.d.ts.map +1 -0
- package/out/src/utility/canonicalizeAtomicBeef.js +23 -0
- package/out/src/utility/canonicalizeAtomicBeef.js.map +1 -0
- package/out/src/utility/exactActionSpend.d.ts +9 -0
- package/out/src/utility/exactActionSpend.d.ts.map +1 -0
- package/out/src/utility/exactActionSpend.js +26 -0
- package/out/src/utility/exactActionSpend.js.map +1 -0
- package/out/src/utility/hashWasm.d.ts +1 -1
- package/out/src/utility/hashWasm.d.ts.map +1 -1
- package/out/src/utility/hashWasm.js +83 -1
- package/out/src/utility/hashWasm.js.map +1 -1
- 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 +523 -61
- package/out/src/utility/identityUtils.js.map +1 -1
- package/out/src/utility/index.all.d.ts +2 -0
- package/out/src/utility/index.all.d.ts.map +1 -1
- package/out/src/utility/index.all.js +2 -0
- package/out/src/utility/index.all.js.map +1 -1
- package/out/src/utility/index.client.d.ts +2 -0
- package/out/src/utility/index.client.d.ts.map +1 -1
- package/out/src/utility/index.client.js +2 -0
- package/out/src/utility/index.client.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 +1 -1
- package/out/src/utility/utilityHelpers.d.ts.map +1 -1
- package/out/src/utility/utilityHelpers.js +10 -7
- 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 +4 -17
- package/out/src/wab-client/WABClient.d.ts.map +1 -1
- package/out/src/wab-client/WABClient.js +35 -12
- 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/WABTransport.d.ts +17 -23
- package/out/src/wab-client/WABTransport.d.ts.map +1 -1
- package/out/src/wab-client/WABTransport.js +130 -142
- package/out/src/wab-client/WABTransport.js.map +1 -1
- package/out/src/wab-client/auth-method-interactors/AuthMethodInteractor.d.ts +8 -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 +35 -30
- package/docs/open-rpc/index.html +0 -46
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.StorageProvider = void 0;
|
|
4
4
|
exports.validateStorageFeeModel = validateStorageFeeModel;
|
|
5
|
+
const validationHelpers_1 = require("@bsv/sdk/wallet/validationHelpers");
|
|
5
6
|
const sdk_1 = require("@bsv/sdk");
|
|
6
7
|
const storageProviderHelpers_1 = require("./storageProviderHelpers");
|
|
7
8
|
const getBeefForTransaction_1 = require("./methods/getBeefForTransaction");
|
|
@@ -16,9 +17,16 @@ const WERR_errors_1 = require("../sdk/WERR_errors");
|
|
|
16
17
|
const utilityHelpers_1 = require("../utility/utilityHelpers");
|
|
17
18
|
const WalletError_1 = require("../sdk/WalletError");
|
|
18
19
|
const utilityHelpers_noBuffer_1 = require("../utility/utilityHelpers.noBuffer");
|
|
20
|
+
const classifyOutputUtxo_1 = require("../services/classifyOutputUtxo");
|
|
21
|
+
const noSendExpiryLifecycle_1 = require("./methods/noSendExpiryLifecycle");
|
|
22
|
+
const validateSyncProof_1 = require("./methods/validateSyncProof");
|
|
19
23
|
const actionBatch_1 = require("./methods/actionBatch");
|
|
20
24
|
const actionBatchBlobs_1 = require("./methods/actionBatchBlobs");
|
|
21
25
|
const availableManagedChange_1 = require("./methods/availableManagedChange");
|
|
26
|
+
const managedChangePolicy_1 = require("./methods/managedChangePolicy");
|
|
27
|
+
const noSendExpiry_1 = require("./methods/noSendExpiry");
|
|
28
|
+
const MAX_AUTH_PROOF_REQUEST_FALLBACK_ROWS = 10_000;
|
|
29
|
+
const MAX_AUTH_PROOF_REQUEST_TXIDS = 1_000;
|
|
22
30
|
class StorageProvider extends StorageReaderWriter_1.StorageReaderWriter {
|
|
23
31
|
isDirty = false;
|
|
24
32
|
_services;
|
|
@@ -26,12 +34,16 @@ class StorageProvider extends StorageReaderWriter_1.StorageReaderWriter {
|
|
|
26
34
|
commissionSatoshis;
|
|
27
35
|
commissionPubKeyHex;
|
|
28
36
|
maxRecursionDepth;
|
|
37
|
+
actionBatchMaxReservedOutputs;
|
|
38
|
+
managedChangePolicy;
|
|
29
39
|
scriptVerifier;
|
|
30
40
|
static defaultOptions() {
|
|
31
41
|
const opts = {
|
|
32
42
|
feeModel: { model: 'sat/kb', value: 100 },
|
|
33
43
|
commissionSatoshis: 0,
|
|
34
|
-
commissionPubKeyHex: undefined
|
|
44
|
+
commissionPubKeyHex: undefined,
|
|
45
|
+
actionBatchMaxReservedOutputs: 256,
|
|
46
|
+
managedChangePolicy: (0, managedChangePolicy_1.defaultManagedChangePolicy)()
|
|
35
47
|
};
|
|
36
48
|
return opts;
|
|
37
49
|
}
|
|
@@ -48,6 +60,12 @@ class StorageProvider extends StorageReaderWriter_1.StorageReaderWriter {
|
|
|
48
60
|
this.commissionPubKeyHex = options.commissionPubKeyHex;
|
|
49
61
|
this.commissionSatoshis = options.commissionSatoshis;
|
|
50
62
|
this.maxRecursionDepth = 12;
|
|
63
|
+
const maxReservedOutputs = options.actionBatchMaxReservedOutputs ?? 256;
|
|
64
|
+
if (maxReservedOutputs !== -1 && (!Number.isSafeInteger(maxReservedOutputs) || maxReservedOutputs < 1)) {
|
|
65
|
+
throw new WERR_errors_1.WERR_INVALID_PARAMETER('actionBatchMaxReservedOutputs', 'a positive safe integer or -1 for unlimited');
|
|
66
|
+
}
|
|
67
|
+
this.actionBatchMaxReservedOutputs = maxReservedOutputs;
|
|
68
|
+
this.managedChangePolicy = (0, managedChangePolicy_1.validateManagedChangePolicy)(options.managedChangePolicy);
|
|
51
69
|
this.scriptVerifier = options.scriptVerifier;
|
|
52
70
|
}
|
|
53
71
|
/** Mark a planned set of change inputs spent within the caller's transaction. */
|
|
@@ -77,13 +95,21 @@ class StorageProvider extends StorageReaderWriter_1.StorageReaderWriter {
|
|
|
77
95
|
}
|
|
78
96
|
/** Read only the fields needed by the in-memory funding planner. */
|
|
79
97
|
async findAvailableManagedChangeInputCandidates(userId, basketId, excludeSending, trx) {
|
|
80
|
-
|
|
81
|
-
|
|
98
|
+
const outputs = await this.findAvailableManagedChangeInputs(userId, basketId, excludeSending, trx);
|
|
99
|
+
// Keep prototype-level/custom provider fallbacks working even when a
|
|
100
|
+
// minimal older implementation has not exposed the additive batch status
|
|
101
|
+
// lookup. createAction resolves missing metadata before tier planning.
|
|
102
|
+
const findStatuses = this.findTransactionStatusesByIds?.bind(this);
|
|
103
|
+
const statuses = findStatuses == null
|
|
104
|
+
? new Map()
|
|
105
|
+
: await findStatuses(userId, outputs.map(output => output.transactionId), trx);
|
|
106
|
+
return outputs.map(({ outputId, transactionId, satoshis, txid, vout }) => ({
|
|
82
107
|
outputId,
|
|
83
108
|
transactionId,
|
|
84
109
|
satoshis,
|
|
85
110
|
txid,
|
|
86
|
-
vout
|
|
111
|
+
vout,
|
|
112
|
+
transactionStatus: statuses.get(transactionId)
|
|
87
113
|
}));
|
|
88
114
|
}
|
|
89
115
|
/** Read the current status of a set of source transactions without loading raw transaction bytes. */
|
|
@@ -178,7 +204,77 @@ class StorageProvider extends StorageReaderWriter_1.StorageReaderWriter {
|
|
|
178
204
|
throw new WERR_errors_1.WERR_NOT_IMPLEMENTED();
|
|
179
205
|
}
|
|
180
206
|
async getCapabilities() {
|
|
181
|
-
return
|
|
207
|
+
return {
|
|
208
|
+
...(this.supportsNoSendExpiryPersistence() ? { brc177NoSendExpiry: { version: 1 } } : {}),
|
|
209
|
+
...(this.supportsActionBatchPersistence()
|
|
210
|
+
? (0, actionBatch_1.getActionBatchCapabilities)(this.actionBatchMaxReservedOutputs, true)
|
|
211
|
+
: {})
|
|
212
|
+
};
|
|
213
|
+
}
|
|
214
|
+
/**
|
|
215
|
+
* Restrict remotely requested proof work to transactions tracked by the
|
|
216
|
+
* authenticated wallet. ProvenTxReq rows are globally deduplicated, so their
|
|
217
|
+
* own schema has no userId column and must be authorized through transactions.
|
|
218
|
+
*/
|
|
219
|
+
async findProvenTxReqsAuth(auth, args) {
|
|
220
|
+
const userId = (0, utilityHelpers_1.verifyId)(auth.userId);
|
|
221
|
+
let requestedTxids;
|
|
222
|
+
if (args.txids?.length) {
|
|
223
|
+
if (args.txids.length > MAX_AUTH_PROOF_REQUEST_TXIDS) {
|
|
224
|
+
throw new WERR_errors_1.WERR_INVALID_PARAMETER('args.txids', `at most ${MAX_AUTH_PROOF_REQUEST_TXIDS} transaction IDs`);
|
|
225
|
+
}
|
|
226
|
+
requestedTxids = [];
|
|
227
|
+
for (const txid of args.txids) {
|
|
228
|
+
if ((await this.countTransactions({ partial: { userId, txid }, trx: args.trx })) > 0) {
|
|
229
|
+
requestedTxids.push(txid);
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
else {
|
|
234
|
+
// Built-in providers override this method with a joined/indexed query.
|
|
235
|
+
// Keep third-party implementations safe even when they only implement
|
|
236
|
+
// the older reader surface: bound the compatibility ownership scan and
|
|
237
|
+
// require exact txids for wallets beyond it.
|
|
238
|
+
const owned = await this.getProvenTxReqsForUser({
|
|
239
|
+
userId,
|
|
240
|
+
paged: { limit: MAX_AUTH_PROOF_REQUEST_FALLBACK_ROWS + 1, offset: 0 },
|
|
241
|
+
trx: args.trx
|
|
242
|
+
});
|
|
243
|
+
if (owned.length > MAX_AUTH_PROOF_REQUEST_FALLBACK_ROWS) {
|
|
244
|
+
throw new WERR_errors_1.WERR_INVALID_OPERATION('Authenticated proof-request scans beyond 10,000 rows require a provider-native scoped query or exact txids');
|
|
245
|
+
}
|
|
246
|
+
requestedTxids = owned.map(request => request.txid);
|
|
247
|
+
}
|
|
248
|
+
if (requestedTxids.length === 0)
|
|
249
|
+
return [];
|
|
250
|
+
return await this.findProvenTxReqs({ ...args, txids: requestedTxids });
|
|
251
|
+
}
|
|
252
|
+
async prepareNoSendExpiry(auth, args) {
|
|
253
|
+
if (auth.isActive !== true)
|
|
254
|
+
throw new WERR_errors_1.WERR_NOT_ACTIVE('BRC-177 requires the active storage provider');
|
|
255
|
+
if (!this.supportsNoSendExpiryPersistence()) {
|
|
256
|
+
throw new WERR_errors_1.WERR_NOT_IMPLEMENTED('BRC-177 atomic lifecycle persistence');
|
|
257
|
+
}
|
|
258
|
+
return await (0, noSendExpiry_1.prepareNoSendExpiry)(this, auth, args);
|
|
259
|
+
}
|
|
260
|
+
async activateNoSendExpiry(auth, args) {
|
|
261
|
+
if (auth.isActive !== true)
|
|
262
|
+
throw new WERR_errors_1.WERR_NOT_ACTIVE('BRC-177 requires the active storage provider');
|
|
263
|
+
if (!this.supportsNoSendExpiryPersistence()) {
|
|
264
|
+
throw new WERR_errors_1.WERR_NOT_IMPLEMENTED('BRC-177 atomic lifecycle persistence');
|
|
265
|
+
}
|
|
266
|
+
return await (0, noSendExpiry_1.activateNoSendExpiry)(this, auth, args);
|
|
267
|
+
}
|
|
268
|
+
async armNoSendExpiry(auth, args) {
|
|
269
|
+
if (auth.isActive !== true)
|
|
270
|
+
throw new WERR_errors_1.WERR_NOT_ACTIVE('BRC-177 requires the active storage provider');
|
|
271
|
+
if (!this.supportsNoSendExpiryPersistence()) {
|
|
272
|
+
throw new WERR_errors_1.WERR_NOT_IMPLEMENTED('BRC-177 atomic lifecycle persistence');
|
|
273
|
+
}
|
|
274
|
+
await (0, noSendExpiry_1.armNoSendExpiry)(this, auth, args);
|
|
275
|
+
}
|
|
276
|
+
supportsNoSendExpiryPersistence() {
|
|
277
|
+
return false;
|
|
182
278
|
}
|
|
183
279
|
supportsActionBatchPersistence() {
|
|
184
280
|
return false;
|
|
@@ -198,6 +294,9 @@ class StorageProvider extends StorageReaderWriter_1.StorageReaderWriter {
|
|
|
198
294
|
async renewActionBatch(auth, batchId) {
|
|
199
295
|
return await (0, actionBatch_1.renewActionBatch)(this, auth, batchId);
|
|
200
296
|
}
|
|
297
|
+
async resumeActionBatch(auth, args) {
|
|
298
|
+
return await (0, actionBatch_1.resumeActionBatch)(this, auth, args);
|
|
299
|
+
}
|
|
201
300
|
async prepareActionBatchCommit(auth, manifest) {
|
|
202
301
|
return await (0, actionBatchBlobs_1.prepareActionBatchCommit)(this, auth, manifest);
|
|
203
302
|
}
|
|
@@ -325,14 +424,16 @@ class StorageProvider extends StorageReaderWriter_1.StorageReaderWriter {
|
|
|
325
424
|
}));
|
|
326
425
|
}
|
|
327
426
|
const unAbortableStatus = ['completed', 'failed', 'sending', 'unproven'];
|
|
328
|
-
|
|
427
|
+
const brc177TerminalOrRacing = tx?.noSendExpiryState != null &&
|
|
428
|
+
['broadcast', 'reclaiming', 'reclaimed', 'target-won', 'conflicted', 'cancelled'].includes(tx.noSendExpiryState);
|
|
429
|
+
if (tx == null || !tx.isOutgoing || (unAbortableStatus.includes(tx.status) && !brc177TerminalOrRacing)) {
|
|
329
430
|
throw new WERR_errors_1.WERR_INVALID_PARAMETER('reference', 'an inprocess, outgoing action that has not been signed and shared to the network.');
|
|
330
431
|
}
|
|
331
432
|
return { tx, reference };
|
|
332
433
|
}
|
|
333
|
-
async
|
|
334
|
-
if (tx.txid == null || tx.txid === '' || tx.status !== 'nosend') {
|
|
335
|
-
return
|
|
434
|
+
async observeAbortChainProtection(tx) {
|
|
435
|
+
if (tx.txid == null || tx.txid === '' || tx.status !== 'nosend' || tx.noSendExpiryState != null) {
|
|
436
|
+
return undefined;
|
|
336
437
|
}
|
|
337
438
|
let serviceUnreachable = false;
|
|
338
439
|
let chainStatus;
|
|
@@ -348,21 +449,19 @@ class StorageProvider extends StorageReaderWriter_1.StorageReaderWriter {
|
|
|
348
449
|
catch {
|
|
349
450
|
serviceUnreachable = true;
|
|
350
451
|
}
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
what: 'abortAction-skipped-onchain',
|
|
358
|
-
reference: args.reference,
|
|
359
|
-
chainStatus
|
|
360
|
-
});
|
|
361
|
-
await req.updateStorageDynamicProperties(this, trx);
|
|
362
|
-
}
|
|
363
|
-
return { skipped: true, serviceUnreachable };
|
|
452
|
+
return {
|
|
453
|
+
transactionId: tx.transactionId,
|
|
454
|
+
txid: tx.txid,
|
|
455
|
+
chainStatus,
|
|
456
|
+
serviceUnreachable
|
|
457
|
+
};
|
|
364
458
|
}
|
|
365
459
|
async invalidateAbortedTransaction(tx, userId, reference, originalReference, serviceUnreachable, trx) {
|
|
460
|
+
if (tx.noSendExpiryState === 'preparing' || tx.noSendExpiryState === 'unsigned') {
|
|
461
|
+
if (!(await this.compareAndSetNoSendExpiryState(tx.transactionId, tx.noSendExpiryState, 'cancelled', trx))) {
|
|
462
|
+
throw new WERR_errors_1.WERR_INVALID_OPERATION('BRC-177 action changed while it was being aborted');
|
|
463
|
+
}
|
|
464
|
+
}
|
|
366
465
|
await this.updateTransactionStatus('failed', tx.transactionId, userId, reference, trx);
|
|
367
466
|
if (tx.txid != null && tx.txid !== '') {
|
|
368
467
|
const req = await entities_1.EntityProvenTxReq.fromStorageTxid(this, tx.txid, trx);
|
|
@@ -380,47 +479,131 @@ class StorageProvider extends StorageReaderWriter_1.StorageReaderWriter {
|
|
|
380
479
|
if (auth.userId == null)
|
|
381
480
|
throw new WERR_errors_1.WERR_INVALID_PARAMETER('auth.userId', 'valid');
|
|
382
481
|
const userId = auth.userId;
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
//
|
|
386
|
-
//
|
|
387
|
-
//
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
482
|
+
let r;
|
|
483
|
+
for (let attempt = 0; attempt < 2; attempt++) {
|
|
484
|
+
// IndexedDB write transactions can auto-commit while awaiting non-database
|
|
485
|
+
// promises. Observe the chain before opening the write transaction, then
|
|
486
|
+
// bind the observation to the exact row and txid re-read below.
|
|
487
|
+
const preflight = await this.findAbortableTransaction(userId, args);
|
|
488
|
+
const chainObservation = await this.observeAbortChainProtection(preflight.tx);
|
|
489
|
+
r = await this.transaction(async (trx) => {
|
|
490
|
+
const { tx, reference } = await this.findAbortableTransaction(userId, args, trx);
|
|
491
|
+
if (tx.noSendExpiryState != null && auth.isActive !== true) {
|
|
492
|
+
throw new WERR_errors_1.WERR_NOT_ACTIVE('BRC-177 requires the active storage provider');
|
|
493
|
+
}
|
|
494
|
+
if (tx.noSendExpiryState === 'signed') {
|
|
495
|
+
// A released BRC-177 transaction must never be invalidated locally: the
|
|
496
|
+
// recipient may be broadcasting it at this instant. Make it due and let
|
|
497
|
+
// the lifecycle's positive chain/UTXO checks arbitrate the race.
|
|
498
|
+
if (!(await this.compareAndSetNoSendExpiryState(tx.transactionId, 'signed', 'revocation-requested', trx))) {
|
|
499
|
+
throw new WERR_errors_1.WERR_INVALID_OPERATION('BRC-177 action changed while early revocation was requested');
|
|
500
|
+
}
|
|
501
|
+
const req = tx.txid == null ? undefined : await entities_1.EntityProvenTxReq.fromStorageTxid(this, tx.txid, trx);
|
|
502
|
+
if (req != null) {
|
|
503
|
+
req.addHistoryNote({ what: 'brc177-early-abort-reclaim-requested', reference: args.reference });
|
|
504
|
+
await req.updateStorageDynamicProperties(this, trx);
|
|
505
|
+
}
|
|
506
|
+
return {
|
|
507
|
+
__abortAction: 'brc177-reclaim-requested',
|
|
508
|
+
transactionId: tx.transactionId
|
|
509
|
+
};
|
|
510
|
+
}
|
|
511
|
+
if (tx.noSendExpiryState === 'revocation-requested') {
|
|
512
|
+
return {
|
|
513
|
+
__abortAction: 'brc177-reclaim-requested',
|
|
514
|
+
transactionId: tx.transactionId
|
|
515
|
+
};
|
|
516
|
+
}
|
|
517
|
+
if (tx.noSendExpiryState === 'reclaiming' || tx.noSendExpiryState === 'reclaimed') {
|
|
518
|
+
return { __abortAction: 'brc177-reclaim-in-progress' };
|
|
519
|
+
}
|
|
520
|
+
if (tx.noSendExpiryState === 'cancelled') {
|
|
521
|
+
return { __abortAction: 'brc177-cancelled' };
|
|
522
|
+
}
|
|
523
|
+
if (tx.noSendExpiryState === 'broadcast' ||
|
|
524
|
+
tx.noSendExpiryState === 'target-won' ||
|
|
525
|
+
tx.noSendExpiryState === 'conflicted') {
|
|
526
|
+
return { __abortAction: 'brc177-target-protected' };
|
|
527
|
+
}
|
|
528
|
+
// Chain-status protection for signed nosend txs.
|
|
529
|
+
//
|
|
530
|
+
// Background: a nosend tx (created via createAction({noSend:true}))
|
|
531
|
+
// can be externally broadcast by the caller and reach 'mined' or
|
|
532
|
+
// mempool-'known' status before any internalizeAction or Monitor
|
|
533
|
+
// cycle has retired its 'nosend' status in storage. If abortAction
|
|
534
|
+
// is invoked on it in that window, the destructive transitions
|
|
535
|
+
// below (transactions.status='failed' + proven_tx_reqs.status='invalid')
|
|
536
|
+
// orphan every output the tx produced — including auto-fund change
|
|
537
|
+
// outputs the wallet itself emitted — because listOutputs filters
|
|
538
|
+
// them out of the spendable set on parent-tx 'failed' status.
|
|
539
|
+
//
|
|
540
|
+
// Protection: if the tx has a txid AND status is 'nosend', ask
|
|
541
|
+
// the network whether it already knows about the tx before
|
|
542
|
+
// invalidating. getStatusForTxids returns 'mined' | 'known' |
|
|
543
|
+
// 'unknown' per StatusForTxidResult (WalletServices.interfaces.ts).
|
|
544
|
+
// Refuse the abort for 'mined' OR 'known' — a tx that's broadcast
|
|
545
|
+
// and propagating in mempool returns 'known' (depth===0) and
|
|
546
|
+
// protecting it avoids orphaning during the propagation window.
|
|
547
|
+
//
|
|
548
|
+
// Service-unreachable handling: proceed with abort. Refusal is
|
|
549
|
+
// reserved for positive on-chain confirmation. When the network
|
|
550
|
+
// confirmation pathway is itself unavailable (services throw or
|
|
551
|
+
// gracefully return r.status !== 'success'), confirmation is not
|
|
552
|
+
// possible — and per the BRC-100 contract callers retain the
|
|
553
|
+
// ability to abort offline. The fallback writes a forensic
|
|
554
|
+
// history note ('abortAction-offline-fallback') so an operator
|
|
555
|
+
// can grep for aborts that proceeded under uncertainty. This
|
|
556
|
+
// hole can never be 100% closed against externally-broadcast
|
|
557
|
+
// chain-confirmed txs while offline; the audit trail makes it
|
|
558
|
+
// recoverable.
|
|
559
|
+
if (tx.txid != null && tx.txid !== '' && tx.status === 'nosend' && tx.noSendExpiryState == null) {
|
|
560
|
+
if (chainObservation == null ||
|
|
561
|
+
chainObservation.transactionId !== tx.transactionId ||
|
|
562
|
+
chainObservation.txid !== tx.txid) {
|
|
563
|
+
return { __abortAction: 'retry-chain-check' };
|
|
564
|
+
}
|
|
565
|
+
if (chainObservation.chainStatus === 'mined' || chainObservation.chainStatus === 'known') {
|
|
566
|
+
const req = await entities_1.EntityProvenTxReq.fromStorageTxid(this, tx.txid, trx);
|
|
567
|
+
if (req != null) {
|
|
568
|
+
req.addHistoryNote({
|
|
569
|
+
what: 'abortAction-skipped-onchain',
|
|
570
|
+
reference: args.reference,
|
|
571
|
+
chainStatus: chainObservation.chainStatus
|
|
572
|
+
});
|
|
573
|
+
await req.updateStorageDynamicProperties(this, trx);
|
|
574
|
+
}
|
|
575
|
+
// Commit the audit note before translating this sentinel to aborted:false.
|
|
576
|
+
return { __abortAction: 'skipped-onchain' };
|
|
577
|
+
}
|
|
578
|
+
}
|
|
579
|
+
return await this.invalidateAbortedTransaction(tx, userId, reference, args.reference, chainObservation?.serviceUnreachable ?? false, trx);
|
|
580
|
+
});
|
|
581
|
+
if (!('__abortAction' in r) || r.__abortAction !== 'retry-chain-check')
|
|
582
|
+
break;
|
|
583
|
+
}
|
|
584
|
+
if (r == null || ('__abortAction' in r && r.__abortAction === 'retry-chain-check')) {
|
|
585
|
+
throw new WERR_errors_1.WERR_INVALID_OPERATION('Action changed while its chain status was being checked; retry abortAction');
|
|
586
|
+
}
|
|
423
587
|
if ('__abortAction' in r) {
|
|
588
|
+
if (r.__abortAction === 'brc177-reclaim-requested') {
|
|
589
|
+
await (0, noSendExpiryLifecycle_1.processNoSendExpiryLifecycle)(this).catch(() => undefined);
|
|
590
|
+
const current = (0, utilityHelpers_1.verifyOne)(await this.findTransactions({
|
|
591
|
+
partial: { transactionId: r.transactionId },
|
|
592
|
+
noRawTx: true
|
|
593
|
+
}));
|
|
594
|
+
if (current.noSendExpiryState === 'broadcast' ||
|
|
595
|
+
current.noSendExpiryState === 'target-won' ||
|
|
596
|
+
current.noSendExpiryState === 'conflicted') {
|
|
597
|
+
return { aborted: false };
|
|
598
|
+
}
|
|
599
|
+
return { aborted: true };
|
|
600
|
+
}
|
|
601
|
+
if (r.__abortAction === 'brc177-reclaim-in-progress')
|
|
602
|
+
return { aborted: true };
|
|
603
|
+
if (r.__abortAction === 'brc177-cancelled')
|
|
604
|
+
return { aborted: true };
|
|
605
|
+
if (r.__abortAction === 'brc177-target-protected')
|
|
606
|
+
return { aborted: false };
|
|
424
607
|
// Tone Engel review feedback (PR #122 comment 4444566147 item 3):
|
|
425
608
|
// do not throw on chain-confirmed refusal — surface it via the
|
|
426
609
|
// return value so callers can branch on it. Refusal is positive
|
|
@@ -477,6 +660,7 @@ class StorageProvider extends StorageReaderWriter_1.StorageReaderWriter {
|
|
|
477
660
|
}
|
|
478
661
|
catch (error_) {
|
|
479
662
|
const e = WalletError_1.WalletError.fromUnknown(error_);
|
|
663
|
+
d.status = 'error';
|
|
480
664
|
d.error = `${e.name}: ${e.message}`;
|
|
481
665
|
}
|
|
482
666
|
}
|
|
@@ -568,6 +752,23 @@ class StorageProvider extends StorageReaderWriter_1.StorageReaderWriter {
|
|
|
568
752
|
await this.updateOutput((0, utilityHelpers_1.verifyId)(output.outputId), { spendable: false, spentBy: undefined }, trx);
|
|
569
753
|
}
|
|
570
754
|
}
|
|
755
|
+
async protectNoSendExpiryReclaimInputOnFailure(tx, trx) {
|
|
756
|
+
if (tx.txid == null)
|
|
757
|
+
return false;
|
|
758
|
+
const target = (0, utilityHelpers_1.verifyOneOrNone)(await this.findTransactions({
|
|
759
|
+
partial: { userId: tx.userId, noSendExpiryReclaimTxid: tx.txid },
|
|
760
|
+
noRawTx: true,
|
|
761
|
+
trx
|
|
762
|
+
}));
|
|
763
|
+
if (target == null)
|
|
764
|
+
return false;
|
|
765
|
+
// Generic failed-transaction cleanup releases inputs for reuse. A reclaim
|
|
766
|
+
// is different: the signed target may still be outside the wallet, so its
|
|
767
|
+
// anchor remains quarantined even when a processor rejects this reclaim.
|
|
768
|
+
// Keep the race lifecycle intact because a prior submission can still be
|
|
769
|
+
// proven later; a rejection response is not chain finality.
|
|
770
|
+
return true;
|
|
771
|
+
}
|
|
571
772
|
/**
|
|
572
773
|
* For all `status` values besides 'failed', just updates the transaction records status property.
|
|
573
774
|
*
|
|
@@ -606,7 +807,9 @@ class StorageProvider extends StorageReaderWriter_1.StorageReaderWriter {
|
|
|
606
807
|
}
|
|
607
808
|
switch (status) {
|
|
608
809
|
case 'failed':
|
|
609
|
-
await this.
|
|
810
|
+
if (!(await this.protectNoSendExpiryReclaimInputOnFailure(tx, trx))) {
|
|
811
|
+
await this.releaseInputsAllocatedToFailedTransaction(tx, trx);
|
|
812
|
+
}
|
|
610
813
|
await this.markFailedTransactionOutputsNotSpendable(tx, trx);
|
|
611
814
|
break;
|
|
612
815
|
case 'nosend':
|
|
@@ -689,7 +892,7 @@ class StorageProvider extends StorageReaderWriter_1.StorageReaderWriter {
|
|
|
689
892
|
if (chainTracker != null) {
|
|
690
893
|
const root = mp.computeRoot();
|
|
691
894
|
const isValid = await chainTracker.isValidRootForHeight(root, proven.height);
|
|
692
|
-
if (
|
|
895
|
+
if (isValid !== true) {
|
|
693
896
|
if (skipInvalidProofs !== true)
|
|
694
897
|
throw new WERR_errors_1.WERR_INVALID_MERKLE_ROOT(proven.blockHash, proven.height, root, txid);
|
|
695
898
|
// Proof is currently invalid — recurse deeper via rawTx path
|
|
@@ -741,9 +944,10 @@ class StorageProvider extends StorageReaderWriter_1.StorageReaderWriter {
|
|
|
741
944
|
return (0, utilityHelpers_1.verifyOneOrNone)(await this.findMonitorEvents({ partial: { id }, trx }));
|
|
742
945
|
}
|
|
743
946
|
async relinquishCertificate(auth, args) {
|
|
744
|
-
const vargs =
|
|
947
|
+
const vargs = (0, validationHelpers_1.validateRelinquishCertificateArgs)(args);
|
|
745
948
|
const cert = (0, utilityHelpers_1.verifyOne)(await this.findCertificates({
|
|
746
949
|
partial: {
|
|
950
|
+
userId: auth.userId,
|
|
747
951
|
certifier: vargs.certifier,
|
|
748
952
|
serialNumber: vargs.serialNumber,
|
|
749
953
|
type: vargs.type
|
|
@@ -754,21 +958,77 @@ class StorageProvider extends StorageReaderWriter_1.StorageReaderWriter {
|
|
|
754
958
|
});
|
|
755
959
|
}
|
|
756
960
|
async relinquishOutput(auth, args) {
|
|
757
|
-
const vargs =
|
|
758
|
-
const { txid, vout } =
|
|
759
|
-
|
|
760
|
-
|
|
961
|
+
const vargs = (0, validationHelpers_1.validateRelinquishOutputArgs)(args);
|
|
962
|
+
const { txid, vout } = (0, validationHelpers_1.parseWalletOutpoint)(vargs.output);
|
|
963
|
+
return await this.transaction(async (trx) => {
|
|
964
|
+
// Keep existing "not found" behavior for a missing output.
|
|
965
|
+
const output = (0, utilityHelpers_1.verifyOne)(await this.findOutputs({ partial: { userId: auth.userId, txid, vout }, trx }));
|
|
966
|
+
// Confirm the output actually belongs to the caller-claimed basket before
|
|
967
|
+
// clearing it. Without this, any caller that names an arbitrary basket it
|
|
968
|
+
// happens to hold basket-removal permission for could relinquish (and
|
|
969
|
+
// thereby free for reuse/spend by whichever app claims the output next)
|
|
970
|
+
// an output belonging to a different basket entirely, by outpoint alone.
|
|
971
|
+
const basket = (0, utilityHelpers_1.verifyOneOrNone)(await this.findOutputBaskets({ partial: { userId: auth.userId, name: vargs.basket }, trx }));
|
|
972
|
+
if (basket == null || output.basketId == null || output.basketId !== basket.basketId) {
|
|
973
|
+
throw new WERR_errors_1.WERR_INVALID_PARAMETER('basket', `the basket currently containing output ${vargs.output}`);
|
|
974
|
+
}
|
|
975
|
+
return await this.updateOutput(output.outputId, { basketId: undefined }, trx);
|
|
976
|
+
});
|
|
761
977
|
}
|
|
762
978
|
async processSyncChunk(args, chunk) {
|
|
763
|
-
|
|
764
|
-
|
|
765
|
-
|
|
766
|
-
|
|
767
|
-
|
|
979
|
+
// Canonicalize before text-key lookup in every sync mode. Direct
|
|
980
|
+
// backup/conflict sync retains its established trust for new proof rows,
|
|
981
|
+
// but may replace an existing global proof only after active-chain
|
|
982
|
+
// validation. RPC validates every proof before reaching this method.
|
|
983
|
+
const incomingProofs = chunk.provenTxs ?? [];
|
|
984
|
+
for (const proof of incomingProofs)
|
|
985
|
+
(0, validateSyncProof_1.canonicalizeSyncProofIdentifiers)(proof);
|
|
986
|
+
if (incomingProofs.length > 0) {
|
|
987
|
+
const existingProofs = await this.findProvenTxs({
|
|
988
|
+
partial: {},
|
|
989
|
+
txids: [...new Set(incomingProofs.map(proof => proof.txid))]
|
|
990
|
+
});
|
|
991
|
+
const existingByTxid = new Map(existingProofs.map(proof => [proof.txid.toLowerCase(), proof]));
|
|
992
|
+
for (const proof of incomingProofs) {
|
|
993
|
+
const existing = existingByTxid.get(proof.txid);
|
|
994
|
+
if (existing == null)
|
|
995
|
+
(0, validateSyncProof_1.markSyncProofInsertOnly)(proof);
|
|
996
|
+
else if (!(0, validateSyncProof_1.sameSyncProof)(existing, proof))
|
|
997
|
+
await (0, validateSyncProof_1.validateSyncProof)(this, proof);
|
|
768
998
|
}
|
|
769
|
-
}
|
|
770
|
-
|
|
771
|
-
|
|
999
|
+
}
|
|
1000
|
+
// A sync page may contain hundreds of related entities. Keep their lookups,
|
|
1001
|
+
// inserts, ID remapping, and sync-state checkpoint in one transaction. This
|
|
1002
|
+
// avoids a transaction startup/commit for every record (especially costly
|
|
1003
|
+
// in IndexedDB) and makes the page checkpoint atomic with its data changes.
|
|
1004
|
+
return await this.transaction(async (trx) => {
|
|
1005
|
+
const user = (0, utilityHelpers_1.verifyTruthy)((0, utilityHelpers_1.verifyOneOrNone)(await this.findUsers({ partial: { identityKey: args.identityKey }, trx })));
|
|
1006
|
+
const ss = new entities_1.EntitySyncState((0, utilityHelpers_1.verifyOne)(await this.findSyncStates({
|
|
1007
|
+
partial: args.syncStateId == null
|
|
1008
|
+
? {
|
|
1009
|
+
storageIdentityKey: args.fromStorageIdentityKey,
|
|
1010
|
+
userId: user.userId
|
|
1011
|
+
}
|
|
1012
|
+
: {
|
|
1013
|
+
syncStateId: args.syncStateId,
|
|
1014
|
+
storageIdentityKey: args.fromStorageIdentityKey,
|
|
1015
|
+
userId: user.userId
|
|
1016
|
+
},
|
|
1017
|
+
trx
|
|
1018
|
+
})));
|
|
1019
|
+
if (args.requireMatchingCheckpoint === true) {
|
|
1020
|
+
const checkpoint = ss.makeSyncCheckpoint();
|
|
1021
|
+
const sameSince = (checkpoint.since == null ? undefined : new Date(checkpoint.since).getTime()) ===
|
|
1022
|
+
(args.since == null ? undefined : new Date(args.since).getTime());
|
|
1023
|
+
if (!sameSince ||
|
|
1024
|
+
checkpoint.offsets.length !== args.offsets.length ||
|
|
1025
|
+
checkpoint.offsets.some((entry, index) => entry.name !== args.offsets[index]?.name || entry.offset !== args.offsets[index]?.offset)) {
|
|
1026
|
+
throw new WERR_errors_1.WERR_INVALID_OPERATION('Wallet sync checkpoint changed; resume from its durable state before retrying');
|
|
1027
|
+
}
|
|
1028
|
+
}
|
|
1029
|
+
const result = await ss.processSyncChunk(this, args, chunk, trx);
|
|
1030
|
+
return args.includeNextCheckpoint === true ? { ...result, nextCheckpoint: ss.makeSyncCheckpoint() } : result;
|
|
1031
|
+
});
|
|
772
1032
|
}
|
|
773
1033
|
/**
|
|
774
1034
|
* Handles storage changes when a valid MerklePath and mined block header are found for a ProvenTxReq txid.
|
|
@@ -783,8 +1043,11 @@ class StorageProvider extends StorageReaderWriter_1.StorageReaderWriter {
|
|
|
783
1043
|
*
|
|
784
1044
|
* Alterations of "typically" to handle:
|
|
785
1045
|
*/
|
|
786
|
-
async updateProvenTxReqWithNewProvenTx(args) {
|
|
1046
|
+
async updateProvenTxReqWithNewProvenTx(args, validatedCandidate) {
|
|
787
1047
|
const req = await entities_1.EntityProvenTxReq.fromStorageId(this, args.provenTxReqId);
|
|
1048
|
+
if (req.txid.toLowerCase() !== args.txid.toLowerCase()) {
|
|
1049
|
+
throw new WERR_errors_1.WERR_INVALID_PARAMETER('args.txid', 'the transaction id of the selected proof request');
|
|
1050
|
+
}
|
|
788
1051
|
let proven;
|
|
789
1052
|
if (req.provenTxId != null && req.provenTxId > 0) {
|
|
790
1053
|
// Someone beat us to it, grab what we need for results...
|
|
@@ -796,19 +1059,20 @@ class StorageProvider extends StorageReaderWriter_1.StorageReaderWriter {
|
|
|
796
1059
|
}
|
|
797
1060
|
}
|
|
798
1061
|
else {
|
|
1062
|
+
const candidate = validatedCandidate ?? {
|
|
1063
|
+
created_at: new Date(),
|
|
1064
|
+
updated_at: new Date(),
|
|
1065
|
+
provenTxId: 0,
|
|
1066
|
+
txid: args.txid,
|
|
1067
|
+
height: args.height,
|
|
1068
|
+
index: args.index,
|
|
1069
|
+
merklePath: args.merklePath,
|
|
1070
|
+
rawTx: req.rawTx,
|
|
1071
|
+
blockHash: args.blockHash,
|
|
1072
|
+
merkleRoot: args.merkleRoot
|
|
1073
|
+
};
|
|
799
1074
|
proven = await this.transaction(async (trx) => {
|
|
800
|
-
const { proven: api } = await this.findOrInsertProvenTx(
|
|
801
|
-
created_at: new Date(),
|
|
802
|
-
updated_at: new Date(),
|
|
803
|
-
provenTxId: 0,
|
|
804
|
-
txid: args.txid,
|
|
805
|
-
height: args.height,
|
|
806
|
-
index: args.index,
|
|
807
|
-
merklePath: args.merklePath,
|
|
808
|
-
rawTx: req.rawTx,
|
|
809
|
-
blockHash: args.blockHash,
|
|
810
|
-
merkleRoot: args.merkleRoot
|
|
811
|
-
}, trx);
|
|
1075
|
+
const { proven: api } = await this.findOrInsertProvenTx(candidate, trx);
|
|
812
1076
|
const found = new entities_1.EntityProvenTx(api);
|
|
813
1077
|
if (req.status !== 'completed' || req.provenTxId !== found.provenTxId) {
|
|
814
1078
|
req.status = 'completed';
|
|
@@ -828,6 +1092,34 @@ class StorageProvider extends StorageReaderWriter_1.StorageReaderWriter {
|
|
|
828
1092
|
};
|
|
829
1093
|
return r;
|
|
830
1094
|
}
|
|
1095
|
+
/** Authorize and validate remote proof completion before mutating shared proof state. */
|
|
1096
|
+
async updateProvenTxReqWithNewProvenTxAuth(auth, args) {
|
|
1097
|
+
const userId = (0, utilityHelpers_1.verifyId)(auth.userId);
|
|
1098
|
+
const req = await entities_1.EntityProvenTxReq.fromStorageId(this, args.provenTxReqId);
|
|
1099
|
+
if (req.txid.toLowerCase() !== args.txid.toLowerCase()) {
|
|
1100
|
+
throw new WERR_errors_1.WERR_INVALID_PARAMETER('args.txid', 'the transaction id of the selected proof request');
|
|
1101
|
+
}
|
|
1102
|
+
const ownedTransactions = await this.countTransactions({
|
|
1103
|
+
partial: { userId, txid: req.txid }
|
|
1104
|
+
});
|
|
1105
|
+
if (ownedTransactions === 0) {
|
|
1106
|
+
throw new WERR_errors_1.WERR_UNAUTHORIZED('The proof request does not belong to the authenticated wallet.');
|
|
1107
|
+
}
|
|
1108
|
+
const candidate = {
|
|
1109
|
+
created_at: new Date(),
|
|
1110
|
+
updated_at: new Date(),
|
|
1111
|
+
provenTxId: 0,
|
|
1112
|
+
txid: args.txid,
|
|
1113
|
+
height: args.height,
|
|
1114
|
+
index: args.index,
|
|
1115
|
+
merklePath: args.merklePath,
|
|
1116
|
+
rawTx: req.rawTx,
|
|
1117
|
+
blockHash: args.blockHash,
|
|
1118
|
+
merkleRoot: args.merkleRoot
|
|
1119
|
+
};
|
|
1120
|
+
await (0, validateSyncProof_1.validateSyncProof)(this, candidate);
|
|
1121
|
+
return await this.updateProvenTxReqWithNewProvenTx(args, candidate);
|
|
1122
|
+
}
|
|
831
1123
|
/**
|
|
832
1124
|
* Reconcile completed proof requests whose transaction fan-out previously
|
|
833
1125
|
* failed or whose durable notification state drifted.
|
|
@@ -874,7 +1166,16 @@ class StorageProvider extends StorageReaderWriter_1.StorageReaderWriter {
|
|
|
874
1166
|
for (const output of outputs) {
|
|
875
1167
|
const outputId = (0, utilityHelpers_1.verifyId)(output.outputId);
|
|
876
1168
|
await this.validateOutputScript(output);
|
|
877
|
-
|
|
1169
|
+
if (output.lockingScript == null) {
|
|
1170
|
+
verdicts.set(outputId, undefined);
|
|
1171
|
+
continue;
|
|
1172
|
+
}
|
|
1173
|
+
const classification = await (0, classifyOutputUtxo_1.classifyOutputUtxo)(services, output);
|
|
1174
|
+
// Proof recovery must not turn provider absence into a spent verdict.
|
|
1175
|
+
// Leave the output's current state unchanged when no UTXO service can
|
|
1176
|
+
// answer conclusively; the validated proof still repairs transaction
|
|
1177
|
+
// and consumed-input state.
|
|
1178
|
+
verdicts.set(outputId, classification.verdict === 'unknown' ? undefined : classification.verdict === 'unspent');
|
|
878
1179
|
}
|
|
879
1180
|
}
|
|
880
1181
|
return verdicts;
|
|
@@ -920,18 +1221,14 @@ class StorageProvider extends StorageReaderWriter_1.StorageReaderWriter {
|
|
|
920
1221
|
}
|
|
921
1222
|
const isUtxo = outputVerdicts.get(outputId);
|
|
922
1223
|
if (isUtxo == null) {
|
|
923
|
-
log +=
|
|
924
|
-
' '.repeat(indent + 2) +
|
|
925
|
-
`output ${output.outputId} does not have a valid locking script\n`;
|
|
1224
|
+
log += ' '.repeat(indent + 2) + `output ${output.outputId} does not have a valid locking script\n`;
|
|
926
1225
|
continue;
|
|
927
1226
|
}
|
|
928
1227
|
if (isUtxo === output.spendable) {
|
|
929
1228
|
log += ' '.repeat(indent + 2) + `output ${output.outputId} unchanged\n`;
|
|
930
1229
|
continue;
|
|
931
1230
|
}
|
|
932
|
-
log +=
|
|
933
|
-
' '.repeat(indent + 2) +
|
|
934
|
-
`output ${output.outputId} set to ${isUtxo ? 'spendable' : 'spent'}\n`;
|
|
1231
|
+
log += ' '.repeat(indent + 2) + `output ${output.outputId} set to ${isUtxo ? 'spendable' : 'spent'}\n`;
|
|
935
1232
|
await this.updateOutput(outputId, { spendable: isUtxo }, trx);
|
|
936
1233
|
}
|
|
937
1234
|
return log;
|
|
@@ -941,8 +1238,7 @@ class StorageProvider extends StorageReaderWriter_1.StorageReaderWriter {
|
|
|
941
1238
|
throw new WERR_errors_1.WERR_INTERNAL(`Transaction ${tx.transactionId} changed while preparing proof recovery.`);
|
|
942
1239
|
}
|
|
943
1240
|
await this.updateTransaction(tx.transactionId, { status: 'unproven' }, trx);
|
|
944
|
-
let log = ' '.repeat(indent) +
|
|
945
|
-
`transaction ${tx.transactionId} status is now 'unproven'\n`;
|
|
1241
|
+
let log = ' '.repeat(indent) + `transaction ${tx.transactionId} status is now 'unproven'\n`;
|
|
946
1242
|
log += await this.restoreProofRecoveryInputs(tx, bsvtx, indent, trx);
|
|
947
1243
|
log += await this.restoreProofRecoveryOutputs(tx, outputVerdicts, indent, trx);
|
|
948
1244
|
return log;
|
|
@@ -1064,20 +1360,14 @@ class StorageProvider extends StorageReaderWriter_1.StorageReaderWriter {
|
|
|
1064
1360
|
for (const o of outputs) {
|
|
1065
1361
|
if (!o.spendable)
|
|
1066
1362
|
continue;
|
|
1067
|
-
|
|
1363
|
+
await this.validateOutputScript(o);
|
|
1364
|
+
const isUtxo = (0, classifyOutputUtxo_1.requireConclusiveUtxo)(await (0, classifyOutputUtxo_1.classifyOutputUtxo)(services, o));
|
|
1068
1365
|
if (!isUtxo)
|
|
1069
1366
|
invalidSpendableOutputs.push(o);
|
|
1070
1367
|
}
|
|
1071
1368
|
}
|
|
1072
1369
|
return { invalidSpendableOutputs };
|
|
1073
1370
|
}
|
|
1074
|
-
async checkOutputIsUtxo(o, services) {
|
|
1075
|
-
if (o.lockingScript == null || o.lockingScript.length === 0)
|
|
1076
|
-
return false;
|
|
1077
|
-
const hash = services.hashOutputScript((0, utilityHelpers_noBuffer_1.asString)(o.lockingScript));
|
|
1078
|
-
const r = await services.getUtxoStatus(hash, undefined, `${o.txid ?? ''}.${o.vout ?? ''}`);
|
|
1079
|
-
return r.isUtxo === true;
|
|
1080
|
-
}
|
|
1081
1371
|
async updateProvenTxReqDynamics(id, update, trx) {
|
|
1082
1372
|
const partial = {};
|
|
1083
1373
|
if (update.updated_at != null)
|