@bopen-io/wallet-toolbox 2.6.2-brc153.5 → 2.14.6
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 +744 -1
- package/LICENSES/Open-BSV-License-4-wallet-pre-2026.txt +28 -0
- package/README.md +823 -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 +12996 -4571
- 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 +505 -190
- package/docs/no-send-expiry.md +167 -0
- package/docs/prepared-beef.md +197 -0
- package/docs/services.md +4013 -1153
- package/docs/setup.md +107 -56
- package/docs/storage.md +5781 -1599
- package/docs/sync-transfer.md +144 -0
- package/docs/wab-shamir.md +5 -1
- package/docs/wallet.md +10188 -10904
- 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 +14 -0
- package/out/src/Setup.d.ts.map +1 -1
- package/out/src/Setup.js +6 -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.map +1 -1
- package/out/src/monitor/MonitorDaemon.js +64 -16
- package/out/src/monitor/MonitorDaemon.js.map +1 -1
- package/out/src/monitor/monitorValidation.d.ts +12 -0
- package/out/src/monitor/monitorValidation.d.ts.map +1 -0
- package/out/src/monitor/monitorValidation.js +133 -0
- package/out/src/monitor/monitorValidation.js.map +1 -0
- package/out/src/monitor/tasks/TaskArcSSE.d.ts +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 +3 -1
- package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageKnex.d.ts.map +1 -1
- package/out/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageKnex.js +240 -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 +35 -3
- package/out/src/signer/methods/createAction.d.ts.map +1 -1
- package/out/src/signer/methods/createAction.js +50 -2
- 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 +20 -3
- 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 +68 -7
- package/out/src/storage/StorageKnex.d.ts.map +1 -1
- package/out/src/storage/StorageKnex.js +551 -105
- 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 +38 -49
- 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/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 +3 -0
- package/out/src/storage/index.all.d.ts.map +1 -1
- package/out/src/storage/index.all.js +3 -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/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 +396 -106
- package/out/src/storage/methods/createAction.js.map +1 -1
- package/out/src/storage/methods/generateChange.d.ts +21 -5
- package/out/src/storage/methods/generateChange.d.ts.map +1 -1
- package/out/src/storage/methods/generateChange.js +194 -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 +22 -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 +33 -31
- 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 +369 -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 +21 -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.d.ts.map +1 -1
- package/out/src/storage/methods/reviewStatus.js +7 -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 +25 -15
- 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 +382 -10
- 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 +10 -1
- package/out/src/storage/remoting/StorageServer.d.ts.map +1 -1
- package/out/src/storage/remoting/StorageServer.js +232 -20
- 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 +14 -0
- package/out/src/storage/remoting/syncChunkBinary.d.ts.map +1 -0
- package/out/src/storage/remoting/syncChunkBinary.js +42 -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 +6 -0
- package/out/src/storage/schema/KnexMigrations.d.ts.map +1 -1
- package/out/src/storage/schema/KnexMigrations.js +194 -5
- 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 +45 -41
- package/docs/open-rpc/index.html +0 -46
|
@@ -1,14 +1,16 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.ACTION_BATCH_MAX_RESERVATION_EXTENSION_OUTPUTS = exports.ACTION_BATCH_HARD_LIFETIME_MS = exports.ACTION_BATCH_LEASE_MS = void 0;
|
|
3
|
+
exports.ACTION_BATCH_MAX_RESERVED_OUTPUTS = exports.ACTION_BATCH_MAX_RESERVATION_EXTENSION_OUTPUTS = exports.ACTION_BATCH_HARD_LIFETIME_MS = exports.ACTION_BATCH_LEASE_MS = void 0;
|
|
4
4
|
exports.getActionBatchCapabilities = getActionBatchCapabilities;
|
|
5
5
|
exports.cleanupExpiredActionBatches = cleanupExpiredActionBatches;
|
|
6
6
|
exports.beginActionBatch = beginActionBatch;
|
|
7
7
|
exports.extendActionBatch = extendActionBatch;
|
|
8
8
|
exports.renewActionBatch = renewActionBatch;
|
|
9
|
+
exports.resumeActionBatch = resumeActionBatch;
|
|
9
10
|
exports.commitActionBatch = commitActionBatch;
|
|
10
11
|
exports.commitActionBatchByDigest = commitActionBatchByDigest;
|
|
11
12
|
exports.abortActionBatch = abortActionBatch;
|
|
13
|
+
const validationHelpers_1 = require("@bsv/sdk/wallet/validationHelpers");
|
|
12
14
|
const sdk_1 = require("@bsv/sdk");
|
|
13
15
|
const WERR_errors_1 = require("../../sdk/WERR_errors");
|
|
14
16
|
const utilityHelpers_1 = require("../../utility/utilityHelpers");
|
|
@@ -29,7 +31,14 @@ exports.ACTION_BATCH_HARD_LIFETIME_MS = 60 * 60 * 1000;
|
|
|
29
31
|
const INITIAL_RESERVATION_LIMIT = 8;
|
|
30
32
|
const INITIAL_EXTRA_OUTPUTS = 3;
|
|
31
33
|
exports.ACTION_BATCH_MAX_RESERVATION_EXTENSION_OUTPUTS = 64;
|
|
32
|
-
|
|
34
|
+
exports.ACTION_BATCH_MAX_RESERVED_OUTPUTS = 256;
|
|
35
|
+
function isValidOutpoint(outpoint) {
|
|
36
|
+
// Storage keys and canonical transaction IDs are lowercase. Rejecting an
|
|
37
|
+
// alternate spelling here is preferable to validating it and then silently
|
|
38
|
+
// missing the case-sensitive lookup below.
|
|
39
|
+
return /^[0-9a-f]{64}$/.test(outpoint.txid) && Number.isSafeInteger(outpoint.vout) && outpoint.vout >= 0;
|
|
40
|
+
}
|
|
41
|
+
function getActionBatchCapabilities(maxReservedOutputs = exports.ACTION_BATCH_MAX_RESERVED_OUTPUTS, supportsResume = false) {
|
|
33
42
|
return {
|
|
34
43
|
actionBatch: {
|
|
35
44
|
version: 1,
|
|
@@ -38,6 +47,8 @@ function getActionBatchCapabilities() {
|
|
|
38
47
|
maxConcurrentUploads: actionBatchBlobs_1.ACTION_BATCH_MAX_CONCURRENT_UPLOADS,
|
|
39
48
|
leaseMs: exports.ACTION_BATCH_LEASE_MS,
|
|
40
49
|
hardLifetimeMs: exports.ACTION_BATCH_HARD_LIFETIME_MS,
|
|
50
|
+
resume: supportsResume ? true : undefined,
|
|
51
|
+
maxReservedOutputs,
|
|
41
52
|
compactBegin: true,
|
|
42
53
|
manifestVersion: 2,
|
|
43
54
|
commitByDigest: true,
|
|
@@ -55,13 +66,28 @@ function getActionBatchCapabilities() {
|
|
|
55
66
|
};
|
|
56
67
|
}
|
|
57
68
|
function activeExpiry(batch, now = new Date()) {
|
|
58
|
-
return batch.status !== 'active' && batch.status !== 'prepared' ||
|
|
69
|
+
return ((batch.status !== 'active' && batch.status !== 'prepared') ||
|
|
59
70
|
batch.expiresAt.getTime() <= now.getTime() ||
|
|
60
|
-
batch.hardExpiresAt.getTime() <= now.getTime();
|
|
71
|
+
batch.hardExpiresAt.getTime() <= now.getTime());
|
|
72
|
+
}
|
|
73
|
+
function actionBatchErrorState(batch, now = new Date()) {
|
|
74
|
+
if (batch == null)
|
|
75
|
+
return 'missing';
|
|
76
|
+
if (batch.hardExpiresAt.getTime() <= now.getTime())
|
|
77
|
+
return 'hard-expired';
|
|
78
|
+
if (batch.status === 'aborted')
|
|
79
|
+
return 'aborted';
|
|
80
|
+
if (batch.status === 'committed')
|
|
81
|
+
return 'committed';
|
|
82
|
+
if (batch.status === 'expired' || batch.expiresAt.getTime() <= now.getTime())
|
|
83
|
+
return 'expired';
|
|
84
|
+
if (batch.status !== 'active' && batch.status !== 'prepared')
|
|
85
|
+
return 'inactive';
|
|
86
|
+
return undefined;
|
|
61
87
|
}
|
|
62
88
|
function canExpire(batch, now = new Date()) {
|
|
63
|
-
return (batch.status === 'active' || batch.status === 'prepared') &&
|
|
64
|
-
(batch.expiresAt.getTime() <= now.getTime() || batch.hardExpiresAt.getTime() <= now.getTime());
|
|
89
|
+
return ((batch.status === 'active' || batch.status === 'prepared') &&
|
|
90
|
+
(batch.expiresAt.getTime() <= now.getTime() || batch.hardExpiresAt.getTime() <= now.getTime()));
|
|
65
91
|
}
|
|
66
92
|
async function releaseBatchState(storage, batch, status, trx) {
|
|
67
93
|
await storage.deleteActionBatchOutputReservations(batch.actionBatchId, trx);
|
|
@@ -92,11 +118,14 @@ function sourceOutputFromBeef(beef, outpoint) {
|
|
|
92
118
|
const output = tx?.outputs[outpoint.vout];
|
|
93
119
|
if (output == null)
|
|
94
120
|
return undefined;
|
|
95
|
-
return {
|
|
121
|
+
return {
|
|
122
|
+
satoshis: (0, validationHelpers_1.validateSatoshis)(output.satoshis, 'source output satoshis'),
|
|
123
|
+
lockingScript: output.lockingScript
|
|
124
|
+
};
|
|
96
125
|
}
|
|
97
126
|
async function resolveExplicitOutputs(storage, userId, args, allowDeferredProofs) {
|
|
98
127
|
const byOutpoint = await storage.findOutputsByOutpoints(userId, args.inputs.map(input => input.outpoint));
|
|
99
|
-
const beef = args.inputBEEF == null ? new sdk_1.Beef() : sdk_1.Beef.
|
|
128
|
+
const beef = args.inputBEEF == null ? new sdk_1.Beef() : sdk_1.Beef.fromBinaryStrict(args.inputBEEF);
|
|
100
129
|
const outputs = [];
|
|
101
130
|
let inputSatoshis = 0;
|
|
102
131
|
for (const input of args.inputs) {
|
|
@@ -142,12 +171,19 @@ function estimateFirstActionTarget(storage, args, inputSatoshis, outputScriptLen
|
|
|
142
171
|
outputLengths.push(25);
|
|
143
172
|
outputLengths.push(25);
|
|
144
173
|
const fee = (0, StorageProvider_1.validateStorageFeeModel)(storage.feeModel).value ?? 0;
|
|
145
|
-
const minFee = Math.ceil((0, utils_1.transactionSize)([...inputLengths, 107], outputLengths) * fee / 1000);
|
|
174
|
+
const minFee = Math.ceil(((0, utils_1.transactionSize)([...inputLengths, 107], outputLengths) * fee) / 1000);
|
|
146
175
|
return Math.max(1, outputSatoshis + minFee - inputSatoshis);
|
|
147
176
|
}
|
|
177
|
+
function selectReservationChange(candidates, targetSatoshis) {
|
|
178
|
+
for (const status of ['completed', 'unproven', 'sending']) {
|
|
179
|
+
const selected = (0, actionPlanning_1.selectCanonicalChange)(candidates.filter(candidate => candidate.transactionStatus === status), targetSatoshis);
|
|
180
|
+
if (selected != null)
|
|
181
|
+
return selected;
|
|
182
|
+
}
|
|
183
|
+
return undefined;
|
|
184
|
+
}
|
|
148
185
|
function chooseReservationPool(candidates, targetSatoshis, limit, extras, fillLimit, planningCosts) {
|
|
149
|
-
const remaining = candidates
|
|
150
|
-
.filter(output => output.satoshis > planningCosts.marginalInputFee);
|
|
186
|
+
const remaining = candidates.filter(output => output.satoshis > planningCosts.marginalInputFee);
|
|
151
187
|
const chosen = [];
|
|
152
188
|
// A reservation is useful to generateChangeSdk only after it also covers
|
|
153
189
|
// the marginal funding-input fee and leaves an economically viable first
|
|
@@ -155,7 +191,7 @@ function chooseReservationPool(candidates, targetSatoshis, limit, extras, fillLi
|
|
|
155
191
|
// that satisfies the nominal deficit but can never close the real plan.
|
|
156
192
|
let deficit = targetSatoshis + planningCosts.firstChangeCost;
|
|
157
193
|
while (deficit > 0 && chosen.length < limit) {
|
|
158
|
-
const output = (
|
|
194
|
+
const output = selectReservationChange(remaining, deficit + planningCosts.marginalInputFee);
|
|
159
195
|
if (output == null)
|
|
160
196
|
break;
|
|
161
197
|
chosen.push(output);
|
|
@@ -164,7 +200,7 @@ function chooseReservationPool(candidates, targetSatoshis, limit, extras, fillLi
|
|
|
164
200
|
}
|
|
165
201
|
const desiredCount = fillLimit ? limit : Math.min(limit, chosen.length + extras);
|
|
166
202
|
while (remaining.length > 0 && chosen.length < desiredCount) {
|
|
167
|
-
const output = (
|
|
203
|
+
const output = selectReservationChange(remaining, targetSatoshis);
|
|
168
204
|
if (output == null)
|
|
169
205
|
break;
|
|
170
206
|
chosen.push(output);
|
|
@@ -172,17 +208,24 @@ function chooseReservationPool(candidates, targetSatoshis, limit, extras, fillLi
|
|
|
172
208
|
}
|
|
173
209
|
return chosen;
|
|
174
210
|
}
|
|
175
|
-
function
|
|
211
|
+
function reservationOutput(candidate) {
|
|
212
|
+
const { transactionStatus: _transactionStatus, ...output } = candidate;
|
|
213
|
+
return output;
|
|
214
|
+
}
|
|
215
|
+
function reservationPlanningCosts(storage, _basket) {
|
|
176
216
|
const satsPerKb = (0, StorageProvider_1.validateStorageFeeModel)(storage.feeModel).value ?? 0;
|
|
177
217
|
const minimumSpendSize = (0, utils_1.transactionSize)([107], [25]);
|
|
178
|
-
const minimumSpendFee = Math.ceil(minimumSpendSize * satsPerKb / 1000);
|
|
218
|
+
const minimumSpendFee = Math.ceil((minimumSpendSize * satsPerKb) / 1000);
|
|
179
219
|
const dustFloor = Math.max(1, minimumSpendFee * 2);
|
|
180
220
|
const marginalInputSize = (0, utils_1.transactionSize)([107], []) - (0, utils_1.transactionSize)([], []);
|
|
181
221
|
const marginalOutputSize = (0, utils_1.transactionSize)([], [25]) - (0, utils_1.transactionSize)([], []);
|
|
182
|
-
|
|
222
|
+
// Reserving inputs is compulsory-funding work, not pool shaping. Requiring
|
|
223
|
+
// the preferred liquidity value here could consume reservation capacity or
|
|
224
|
+
// reject a batch solely to manufacture optional change.
|
|
225
|
+
const desiredFirstChange = dustFloor;
|
|
183
226
|
return {
|
|
184
|
-
firstChangeCost: desiredFirstChange + Math.ceil(marginalOutputSize * satsPerKb / 1000),
|
|
185
|
-
marginalInputFee: Math.ceil(marginalInputSize * satsPerKb / 1000)
|
|
227
|
+
firstChangeCost: desiredFirstChange + Math.ceil((marginalOutputSize * satsPerKb) / 1000),
|
|
228
|
+
marginalInputFee: Math.ceil((marginalInputSize * satsPerKb) / 1000)
|
|
186
229
|
};
|
|
187
230
|
}
|
|
188
231
|
async function reserveOutputs(storage, batch, outputs, trx) {
|
|
@@ -251,33 +294,48 @@ function newBatch(userId, batchId) {
|
|
|
251
294
|
async function beginActionBatch(storage, auth, args) {
|
|
252
295
|
const userId = (0, utilityHelpers_1.verifyId)(auth.userId);
|
|
253
296
|
await cleanupExpiredActionBatches(storage);
|
|
254
|
-
if (await storage.findActionBatch(userId, args.batchId) != null) {
|
|
297
|
+
if ((await storage.findActionBatch(userId, args.batchId)) != null) {
|
|
255
298
|
throw new WERR_errors_1.WERR_INVALID_PARAMETER('batchId', 'unique');
|
|
256
299
|
}
|
|
257
300
|
const outputScriptLengths = args.firstActionOutputScriptLengths;
|
|
258
|
-
if (outputScriptLengths != null &&
|
|
259
|
-
outputScriptLengths.
|
|
260
|
-
|
|
261
|
-
output.lockingScript.length / 2 !== outputScriptLengths[index]))) {
|
|
301
|
+
if (outputScriptLengths != null &&
|
|
302
|
+
(outputScriptLengths.length !== args.firstAction.outputs.length ||
|
|
303
|
+
outputScriptLengths.some(length => !Number.isSafeInteger(length) || length < 0) ||
|
|
304
|
+
args.firstAction.outputs.some((output, index) => output.lockingScript.length > 0 && output.lockingScript.length / 2 !== outputScriptLengths[index]))) {
|
|
262
305
|
throw new WERR_errors_1.WERR_INVALID_PARAMETER('firstActionOutputScriptLengths', 'valid byte lengths aligned with firstAction outputs');
|
|
263
306
|
}
|
|
264
307
|
const changeBasket = (0, utilityHelpers_1.verifyOne)(await storage.findOutputBaskets({ partial: { userId, name: 'default' } }));
|
|
265
308
|
const explicit = await resolveExplicitOutputs(storage, userId, args.firstAction, outputScriptLengths != null);
|
|
266
309
|
const noSendChange = await resolveNoSendChangeOutputs(storage, userId, args.firstAction);
|
|
267
310
|
const fixedOutputIds = new Set([...explicit.outputs, ...noSendChange.outputs].map(output => output.outputId));
|
|
268
|
-
const
|
|
311
|
+
const availableOutputs = (await storage.findAvailableManagedChangeInputs(userId, changeBasket.basketId, false)).filter(output => !fixedOutputIds.has(output.outputId));
|
|
312
|
+
const availableStatuses = await storage.findTransactionStatusesByIds(userId, availableOutputs.map(output => output.transactionId));
|
|
313
|
+
const available = availableOutputs.map(output => ({
|
|
314
|
+
...output,
|
|
315
|
+
// An orphaned/missing status is never promoted ahead of known settled
|
|
316
|
+
// ancestry. Retain it only in the final last-resort reservation tier.
|
|
317
|
+
transactionStatus: availableStatuses.get(output.transactionId) ?? 'sending'
|
|
318
|
+
}));
|
|
269
319
|
const target = estimateFirstActionTarget(storage, args.firstAction, explicit.inputSatoshis + noSendChange.inputSatoshis, outputScriptLengths);
|
|
270
|
-
const fixedOutputs = [
|
|
271
|
-
|
|
320
|
+
const fixedOutputs = [
|
|
321
|
+
...new Map([...explicit.outputs, ...noSendChange.outputs].map(output => [output.outputId, output])).values()
|
|
322
|
+
];
|
|
323
|
+
const maxReservedOutputs = storage.actionBatchMaxReservedOutputs;
|
|
324
|
+
if (maxReservedOutputs >= 0 && fixedOutputs.length > maxReservedOutputs) {
|
|
325
|
+
throw new WERR_errors_1.WERR_INVALID_PARAMETER('firstAction', `no more than ${maxReservedOutputs} persisted inputs`);
|
|
326
|
+
}
|
|
327
|
+
const initialCapacity = maxReservedOutputs < 0 ? INITIAL_RESERVATION_LIMIT : Math.min(INITIAL_RESERVATION_LIMIT, maxReservedOutputs);
|
|
328
|
+
const requiredCapacity = Math.max(0, initialCapacity - fixedOutputs.length);
|
|
272
329
|
const funding = chooseReservationPool(available, target, requiredCapacity, INITIAL_EXTRA_OUTPUTS, false, reservationPlanningCosts(storage, changeBasket));
|
|
330
|
+
const fundingOutputs = funding.map(reservationOutput);
|
|
273
331
|
const batch = newBatch(userId, args.batchId);
|
|
274
332
|
await storage.transaction(async (trx) => {
|
|
275
333
|
await storage.insertActionBatch(batch, trx);
|
|
276
|
-
await reserveOutputs(storage, batch, [...fixedOutputs, ...
|
|
334
|
+
await reserveOutputs(storage, batch, [...fixedOutputs, ...fundingOutputs], trx);
|
|
277
335
|
});
|
|
278
336
|
let fundingResult;
|
|
279
337
|
try {
|
|
280
|
-
fundingResult = await makeFundingResult(storage, args.firstAction, [...
|
|
338
|
+
fundingResult = await makeFundingResult(storage, args.firstAction, [...fundingOutputs, ...fixedOutputs]);
|
|
281
339
|
}
|
|
282
340
|
catch (error) {
|
|
283
341
|
await storage.transaction(async (trx) => await releaseBatchState(storage, batch, 'aborted', trx));
|
|
@@ -292,55 +350,110 @@ async function beginActionBatch(storage, auth, args) {
|
|
|
292
350
|
feeModel: (0, StorageProvider_1.validateStorageFeeModel)(storage.feeModel),
|
|
293
351
|
commissionSatoshis: storage.commissionSatoshis,
|
|
294
352
|
commissionPubKeyHex: storage.commissionPubKeyHex,
|
|
295
|
-
availableChangeCount: available.length,
|
|
296
|
-
|
|
353
|
+
availableChangeCount: available.filter(output => output.satoshis >= Math.max(1, changeBasket.minimumDesiredUTXOValue)).length,
|
|
354
|
+
managedChangePolicy: {
|
|
355
|
+
maxOutputsPerAction: storage.managedChangePolicy.maxOutputsPerAction,
|
|
356
|
+
migrationInputsPerAction: storage.managedChangePolicy.migrationInputsPerAction
|
|
357
|
+
},
|
|
358
|
+
reservedOutputs: fundingResult.outputs.filter(output => fundingOutputs.some(candidate => candidate.outputId === output.outputId)),
|
|
297
359
|
explicitOutputs: fundingResult.outputs.filter(output => explicitIds.has(output.outputId)),
|
|
298
360
|
inputBeef: fundingResult.beef
|
|
299
361
|
};
|
|
300
362
|
}
|
|
301
|
-
function requireLiveBatch(batch) {
|
|
302
|
-
|
|
303
|
-
|
|
363
|
+
function requireLiveBatch(batch, batchId) {
|
|
364
|
+
const state = actionBatchErrorState(batch);
|
|
365
|
+
if (state != null)
|
|
366
|
+
throw new WERR_errors_1.WERR_ACTION_BATCH_STATE(state, batchId ?? batch?.batchId);
|
|
367
|
+
if (batch == null)
|
|
368
|
+
throw new WERR_errors_1.WERR_ACTION_BATCH_STATE('missing', batchId);
|
|
304
369
|
return batch;
|
|
305
370
|
}
|
|
306
371
|
async function extendActionBatch(storage, auth, args) {
|
|
307
372
|
const userId = (0, utilityHelpers_1.verifyId)(auth.userId);
|
|
308
373
|
await cleanupExpiredActionBatches(storage);
|
|
309
|
-
const batch = requireLiveBatch(await storage.findActionBatch(userId, args.batchId));
|
|
374
|
+
const batch = requireLiveBatch(await storage.findActionBatch(userId, args.batchId), args.batchId);
|
|
310
375
|
const basket = (0, utilityHelpers_1.verifyOne)(await storage.findOutputBaskets({ partial: { userId, name: 'default' } }));
|
|
311
376
|
const alreadyReserved = await storage.findActionBatchOutputIds(batch.actionBatchId);
|
|
312
|
-
const available = await storage.findAvailableManagedChangeInputs(userId, basket.basketId, false);
|
|
313
377
|
if (!Number.isSafeInteger(args.requestedOutputs) || args.requestedOutputs < 0) {
|
|
314
378
|
throw new WERR_errors_1.WERR_INVALID_PARAMETER('requestedOutputs', 'non-negative safe integer');
|
|
315
379
|
}
|
|
316
|
-
|
|
317
|
-
|
|
380
|
+
if (!Number.isSafeInteger(args.targetSatoshis) || args.targetSatoshis < 0) {
|
|
381
|
+
throw new WERR_errors_1.WERR_INVALID_PARAMETER('targetSatoshis', 'non-negative safe integer');
|
|
382
|
+
}
|
|
383
|
+
const maxReservedOutputs = storage.actionBatchMaxReservedOutputs;
|
|
384
|
+
if ((maxReservedOutputs >= 0 && args.explicitOutpoints.length > maxReservedOutputs) ||
|
|
385
|
+
new Set(args.explicitOutpoints.map(outpoint => `${outpoint.txid}.${outpoint.vout}`)).size !==
|
|
386
|
+
args.explicitOutpoints.length ||
|
|
387
|
+
args.explicitOutpoints.some(outpoint => !isValidOutpoint(outpoint))) {
|
|
388
|
+
throw new WERR_errors_1.WERR_INVALID_PARAMETER('explicitOutpoints', `at most ${maxReservedOutputs < 0 ? 'the configured request capacity' : maxReservedOutputs} valid outpoints`);
|
|
389
|
+
}
|
|
390
|
+
const remainingCapacity = maxReservedOutputs < 0 ? Number.MAX_SAFE_INTEGER : maxReservedOutputs - alreadyReserved.length;
|
|
391
|
+
if (remainingCapacity <= 0 && (args.requestedOutputs > 0 || args.explicitOutpoints.length > 0)) {
|
|
392
|
+
throw new WERR_errors_1.WERR_INVALID_OPERATION(`action batch already holds the maximum of ${maxReservedOutputs} outputs`);
|
|
393
|
+
}
|
|
318
394
|
const explicitByOutpoint = await storage.findOutputsByOutpoints(userId, args.explicitOutpoints);
|
|
319
|
-
const explicit =
|
|
320
|
-
|
|
395
|
+
const explicit = [
|
|
396
|
+
...new Map(Object.values(explicitByOutpoint)
|
|
397
|
+
.filter(output => !alreadyReserved.includes(output.outputId))
|
|
398
|
+
.map(output => [output.outputId, output])).values()
|
|
399
|
+
];
|
|
400
|
+
if (explicit.length > remainingCapacity) {
|
|
401
|
+
throw new WERR_errors_1.WERR_INVALID_PARAMETER('explicitOutpoints', `no more than ${remainingCapacity} additional reserved outputs`);
|
|
402
|
+
}
|
|
403
|
+
const explicitIds = new Set(explicit.map(output => output.outputId));
|
|
404
|
+
const availableOutputs = (await storage.findAvailableManagedChangeInputs(userId, basket.basketId, false)).filter(output => !explicitIds.has(output.outputId));
|
|
405
|
+
const availableStatuses = await storage.findTransactionStatusesByIds(userId, availableOutputs.map(output => output.transactionId));
|
|
406
|
+
const available = availableOutputs.map(output => ({
|
|
407
|
+
...output,
|
|
408
|
+
transactionStatus: availableStatuses.get(output.transactionId) ?? 'sending'
|
|
409
|
+
}));
|
|
410
|
+
const requestedCount = Math.min(args.requestedOutputs, exports.ACTION_BATCH_MAX_RESERVATION_EXTENSION_OUTPUTS, remainingCapacity - explicit.length);
|
|
411
|
+
const funding = chooseReservationPool(available, Math.max(1, args.targetSatoshis), requestedCount, 0, true, reservationPlanningCosts(storage, basket));
|
|
412
|
+
const fundingOutputs = funding.map(reservationOutput);
|
|
321
413
|
const fundingShape = argsToFundingShape(args.includeSourceTransactions);
|
|
322
|
-
const fundingResult = await makeFundingResult(storage, fundingShape, [...
|
|
414
|
+
const fundingResult = await makeFundingResult(storage, fundingShape, [...fundingOutputs, ...explicit]);
|
|
323
415
|
const expiresAt = new Date(Math.min(batch.hardExpiresAt.getTime(), Date.now() + exports.ACTION_BATCH_LEASE_MS));
|
|
324
416
|
await storage.transaction(async (trx) => {
|
|
325
|
-
const current = requireLiveBatch(await storage.findActionBatchForUpdate(userId, args.batchId, trx));
|
|
326
|
-
|
|
417
|
+
const current = requireLiveBatch(await storage.findActionBatchForUpdate(userId, args.batchId, trx), args.batchId);
|
|
418
|
+
const additions = [...new Map([...fundingOutputs, ...explicit].map(output => [output.outputId, output])).values()];
|
|
419
|
+
const currentReserved = new Set(await storage.findActionBatchOutputIds(current.actionBatchId, trx));
|
|
420
|
+
const newAdditions = additions.filter(output => !currentReserved.has(output.outputId));
|
|
421
|
+
if (maxReservedOutputs >= 0 && currentReserved.size + newAdditions.length > maxReservedOutputs) {
|
|
422
|
+
throw new WERR_errors_1.WERR_INVALID_OPERATION(`action batch cannot reserve more than ${maxReservedOutputs} outputs`);
|
|
423
|
+
}
|
|
424
|
+
await reserveOutputs(storage, current, newAdditions, trx);
|
|
327
425
|
await storage.updateActionBatch(current.actionBatchId, { expiresAt }, trx);
|
|
328
426
|
});
|
|
329
427
|
return {
|
|
330
428
|
expiresAt: expiresAt.toISOString(),
|
|
331
|
-
reservedOutputs: fundingResult.outputs.filter(output =>
|
|
429
|
+
reservedOutputs: fundingResult.outputs.filter(output => fundingOutputs.some(candidate => candidate.outputId === output.outputId)),
|
|
332
430
|
explicitOutputs: fundingResult.outputs.filter(output => explicit.some(candidate => candidate.outputId === output.outputId)),
|
|
333
431
|
inputBeef: fundingResult.beef
|
|
334
432
|
};
|
|
335
433
|
}
|
|
336
434
|
function argsToFundingShape(includeSourceTransactions) {
|
|
337
435
|
return {
|
|
338
|
-
inputs: [],
|
|
436
|
+
inputs: [],
|
|
437
|
+
outputs: [],
|
|
438
|
+
labels: [],
|
|
439
|
+
description: 'action batch extension',
|
|
440
|
+
version: 1,
|
|
441
|
+
lockTime: 0,
|
|
339
442
|
options: {
|
|
340
|
-
acceptDelayedBroadcast: true,
|
|
341
|
-
|
|
443
|
+
acceptDelayedBroadcast: true,
|
|
444
|
+
returnTXIDOnly: false,
|
|
445
|
+
noSend: true,
|
|
446
|
+
sendWith: [],
|
|
447
|
+
signAndProcess: true,
|
|
448
|
+
knownTxids: [],
|
|
449
|
+
noSendChange: [],
|
|
450
|
+
randomizeOutputs: true
|
|
342
451
|
},
|
|
343
|
-
isSendWith: false,
|
|
452
|
+
isSendWith: false,
|
|
453
|
+
isNewTx: true,
|
|
454
|
+
isRemixChange: false,
|
|
455
|
+
isNoSend: true,
|
|
456
|
+
isDelayed: true,
|
|
344
457
|
isTestWerrReviewActions: false,
|
|
345
458
|
isSignAction: includeSourceTransactions,
|
|
346
459
|
includeAllSourceTransactions: includeSourceTransactions
|
|
@@ -349,24 +462,95 @@ function argsToFundingShape(includeSourceTransactions) {
|
|
|
349
462
|
async function renewActionBatch(storage, auth, batchId) {
|
|
350
463
|
const userId = (0, utilityHelpers_1.verifyId)(auth.userId);
|
|
351
464
|
return await storage.transaction(async (trx) => {
|
|
352
|
-
const batch = requireLiveBatch(await storage.findActionBatchForUpdate(userId, batchId, trx));
|
|
465
|
+
const batch = requireLiveBatch(await storage.findActionBatchForUpdate(userId, batchId, trx), batchId);
|
|
353
466
|
const expiresAt = new Date(Math.min(batch.hardExpiresAt.getTime(), Date.now() + exports.ACTION_BATCH_LEASE_MS));
|
|
354
467
|
await storage.updateActionBatch(batch.actionBatchId, { expiresAt }, trx);
|
|
355
468
|
return { expiresAt: expiresAt.toISOString() };
|
|
356
469
|
});
|
|
357
470
|
}
|
|
471
|
+
function validateResumeOutpoints(storage, args) {
|
|
472
|
+
const unique = new Set(args.outpoints.map(outpoint => `${outpoint.txid}.${outpoint.vout}`));
|
|
473
|
+
const maxReservedOutputs = storage.actionBatchMaxReservedOutputs;
|
|
474
|
+
if ((maxReservedOutputs >= 0 && args.outpoints.length > maxReservedOutputs) ||
|
|
475
|
+
unique.size !== args.outpoints.length ||
|
|
476
|
+
args.outpoints.some(outpoint => !isValidOutpoint(outpoint))) {
|
|
477
|
+
throw new WERR_errors_1.WERR_INVALID_PARAMETER('outpoints', `at most ${maxReservedOutputs < 0 ? 'the configured request capacity' : maxReservedOutputs} unique valid outpoints`);
|
|
478
|
+
}
|
|
479
|
+
}
|
|
480
|
+
/**
|
|
481
|
+
* Reacquire exactly the persisted inputs owned by one expired client
|
|
482
|
+
* workspace. This is deliberately explicit: another action may not become a
|
|
483
|
+
* member merely because it happens to use the same Wallet instance.
|
|
484
|
+
*/
|
|
485
|
+
async function resumeActionBatch(storage, auth, args) {
|
|
486
|
+
const userId = (0, utilityHelpers_1.verifyId)(auth.userId);
|
|
487
|
+
validateResumeOutpoints(storage, args);
|
|
488
|
+
await cleanupExpiredActionBatches(storage);
|
|
489
|
+
return await storage.transaction(async (trx) => {
|
|
490
|
+
const batch = await storage.findActionBatchForUpdate(userId, args.batchId, trx);
|
|
491
|
+
const state = actionBatchErrorState(batch);
|
|
492
|
+
if (state != null && state !== 'expired') {
|
|
493
|
+
throw new WERR_errors_1.WERR_ACTION_BATCH_STATE(state, args.batchId);
|
|
494
|
+
}
|
|
495
|
+
if (batch == null)
|
|
496
|
+
throw new WERR_errors_1.WERR_ACTION_BATCH_STATE('missing', args.batchId);
|
|
497
|
+
const expiresAt = new Date(Math.min(batch.hardExpiresAt.getTime(), Date.now() + exports.ACTION_BATCH_LEASE_MS));
|
|
498
|
+
if (state == null) {
|
|
499
|
+
const reserved = new Set(await storage.findActionBatchOutputIds(batch.actionBatchId, trx));
|
|
500
|
+
const current = await storage.findOutputsByOutpointsForUpdate(userId, args.outpoints, trx);
|
|
501
|
+
if (Object.values(current).some(output => !reserved.has(output.outputId)) ||
|
|
502
|
+
Object.keys(current).length !== args.outpoints.length ||
|
|
503
|
+
reserved.size !== args.outpoints.length) {
|
|
504
|
+
throw new WERR_errors_1.WERR_ACTION_BATCH_STATE('conflicted', args.batchId);
|
|
505
|
+
}
|
|
506
|
+
await storage.updateActionBatch(batch.actionBatchId, { expiresAt }, trx);
|
|
507
|
+
return { expiresAt: expiresAt.toISOString() };
|
|
508
|
+
}
|
|
509
|
+
const stored = await storage.findOutputsByOutpointsForUpdate(userId, args.outpoints, trx);
|
|
510
|
+
const outputs = args.outpoints.map(outpoint => stored[`${outpoint.txid}.${outpoint.vout}`]);
|
|
511
|
+
if (outputs.some(output => output == null || !output.spendable || output.spentBy != null)) {
|
|
512
|
+
throw new WERR_errors_1.WERR_ACTION_BATCH_STATE('conflicted', args.batchId);
|
|
513
|
+
}
|
|
514
|
+
await storage.deleteActionBatchOutputReservations(batch.actionBatchId, trx);
|
|
515
|
+
const exactOutputs = outputs;
|
|
516
|
+
const conflicts = await storage.findReservedActionBatchOutputIds(exactOutputs.map(output => output.outputId), trx);
|
|
517
|
+
if (conflicts.length > 0)
|
|
518
|
+
throw new WERR_errors_1.WERR_ACTION_BATCH_STATE('conflicted', args.batchId);
|
|
519
|
+
const now = new Date();
|
|
520
|
+
await storage.reserveActionBatchOutputs(exactOutputs.map(output => ({
|
|
521
|
+
actionBatchId: batch.actionBatchId,
|
|
522
|
+
outputId: output.outputId,
|
|
523
|
+
created_at: now,
|
|
524
|
+
updated_at: now
|
|
525
|
+
})), trx);
|
|
526
|
+
await storage.updateActionBatch(batch.actionBatchId, {
|
|
527
|
+
status: 'active',
|
|
528
|
+
expiresAt,
|
|
529
|
+
manifest: undefined,
|
|
530
|
+
manifestDigest: undefined,
|
|
531
|
+
uploadDigests: undefined
|
|
532
|
+
}, trx);
|
|
533
|
+
return { expiresAt: expiresAt.toISOString() };
|
|
534
|
+
});
|
|
535
|
+
}
|
|
358
536
|
async function reacquireManifestInputs(storage, userId, batch, validated, trx) {
|
|
359
537
|
if (batch.hardExpiresAt.getTime() <= Date.now()) {
|
|
360
|
-
throw new WERR_errors_1.
|
|
538
|
+
throw new WERR_errors_1.WERR_ACTION_BATCH_STATE('hard-expired', batch.batchId);
|
|
361
539
|
}
|
|
362
540
|
const stagedTxids = new Set(validated.actions.map(({ action }) => action.txid));
|
|
363
|
-
const outpoints = [
|
|
541
|
+
const outpoints = [
|
|
542
|
+
...new Map(validated.actions
|
|
543
|
+
.flatMap(({ action }) => action.plan.inputs)
|
|
364
544
|
.filter(input => !stagedTxids.has(input.sourceTxid))
|
|
365
|
-
.map(input => [
|
|
545
|
+
.map(input => [
|
|
546
|
+
`${input.sourceTxid}.${input.sourceVout}`,
|
|
547
|
+
{
|
|
366
548
|
txid: input.sourceTxid,
|
|
367
549
|
vout: input.sourceVout,
|
|
368
550
|
providedBy: input.providedBy
|
|
369
|
-
}
|
|
551
|
+
}
|
|
552
|
+
])).values()
|
|
553
|
+
];
|
|
370
554
|
const stored = await storage.findOutputsByOutpointsForUpdate(userId, outpoints, trx);
|
|
371
555
|
await storage.deleteActionBatchOutputReservations(batch.actionBatchId, trx);
|
|
372
556
|
const outputs = [];
|
|
@@ -545,7 +729,7 @@ async function persistManifestAtomically(storage, userId, batch, manifest, valid
|
|
|
545
729
|
return await storage.transaction(async (trx) => {
|
|
546
730
|
const current = await storage.findActionBatchForUpdate(userId, batch.batchId, trx);
|
|
547
731
|
if (current == null)
|
|
548
|
-
throw new WERR_errors_1.
|
|
732
|
+
throw new WERR_errors_1.WERR_ACTION_BATCH_STATE('missing', batch.batchId);
|
|
549
733
|
if (current.status === 'committed') {
|
|
550
734
|
if (current.manifestDigest !== manifest.digest) {
|
|
551
735
|
throw new WERR_errors_1.WERR_INVALID_OPERATION('batch committed with another manifest');
|
|
@@ -553,30 +737,36 @@ async function persistManifestAtomically(storage, userId, batch, manifest, valid
|
|
|
553
737
|
return { batch: current, alreadyCommitted: true };
|
|
554
738
|
}
|
|
555
739
|
if (current.status === 'aborted')
|
|
556
|
-
throw new WERR_errors_1.
|
|
740
|
+
throw new WERR_errors_1.WERR_ACTION_BATCH_STATE('aborted', batch.batchId);
|
|
557
741
|
if (current.manifestDigest != null && current.manifestDigest !== manifest.digest) {
|
|
558
742
|
throw new WERR_errors_1.WERR_INVALID_OPERATION('batch prepared with another manifest');
|
|
559
743
|
}
|
|
560
744
|
const needsReacquire = current.status === 'expired' || activeExpiry(current);
|
|
561
745
|
if (needsReacquire) {
|
|
562
746
|
if (current.hardExpiresAt.getTime() <= Date.now()) {
|
|
563
|
-
throw new WERR_errors_1.
|
|
747
|
+
throw new WERR_errors_1.WERR_ACTION_BATCH_STATE('hard-expired', batch.batchId);
|
|
564
748
|
}
|
|
565
749
|
await reacquireManifestInputs(storage, userId, current, validated, trx);
|
|
566
750
|
}
|
|
567
751
|
else {
|
|
568
|
-
requireLiveBatch(current);
|
|
752
|
+
requireLiveBatch(current, batch.batchId);
|
|
569
753
|
}
|
|
570
754
|
const reservedOutputIds = new Set(await storage.findActionBatchOutputIds(current.actionBatchId, trx));
|
|
571
755
|
const stagedTxids = new Set(validated.actions.map(({ action }) => action.txid));
|
|
572
|
-
const inputOutpoints = [
|
|
756
|
+
const inputOutpoints = [
|
|
757
|
+
...new Map(validated.actions
|
|
758
|
+
.flatMap(({ action }) => action.plan.inputs)
|
|
573
759
|
.filter(input => !stagedTxids.has(input.sourceTxid))
|
|
574
|
-
.map(input => [
|
|
760
|
+
.map(input => [
|
|
761
|
+
`${input.sourceTxid}.${input.sourceVout}`,
|
|
762
|
+
{
|
|
575
763
|
txid: input.sourceTxid,
|
|
576
764
|
vout: input.sourceVout
|
|
577
|
-
}
|
|
765
|
+
}
|
|
766
|
+
])).values()
|
|
767
|
+
];
|
|
578
768
|
const storedByOutpoint = await storage.findOutputsByOutpointsForUpdate(userId, inputOutpoints, trx);
|
|
579
|
-
const allBasketNames = validated.actions.flatMap(({ action }) => action.plan.outputs.flatMap(output => output.basket == null ? [] : [output.basket]));
|
|
769
|
+
const allBasketNames = validated.actions.flatMap(({ action }) => action.plan.outputs.flatMap(output => (output.basket == null ? [] : [output.basket])));
|
|
580
770
|
if (validated.actions.some(({ action }) => action.plan.outputs.some(output => output.purpose === 'change')))
|
|
581
771
|
allBasketNames.push('default');
|
|
582
772
|
const baskets = await storage.findOrInsertOutputBasketsBulk(userId, [...new Set(allBasketNames)], trx);
|
|
@@ -651,19 +841,19 @@ async function completeCommittedBatch(storage, userId, batch, manifest, alreadyC
|
|
|
651
841
|
async function commitActionBatchOnce(storage, userId, manifest) {
|
|
652
842
|
const batch = await storage.findActionBatch(userId, manifest.batchId);
|
|
653
843
|
if (batch == null)
|
|
654
|
-
throw new WERR_errors_1.
|
|
844
|
+
throw new WERR_errors_1.WERR_ACTION_BATCH_STATE('missing', manifest.batchId);
|
|
655
845
|
if (batch.status === 'committed') {
|
|
656
846
|
if (batch.manifestDigest !== manifest.digest)
|
|
657
847
|
throw new WERR_errors_1.WERR_INVALID_OPERATION('batch committed with another manifest');
|
|
658
848
|
return await completeCommittedBatch(storage, userId, batch, manifest, true);
|
|
659
849
|
}
|
|
660
850
|
if (batch.status === 'aborted')
|
|
661
|
-
throw new WERR_errors_1.
|
|
851
|
+
throw new WERR_errors_1.WERR_ACTION_BATCH_STATE('aborted', manifest.batchId);
|
|
662
852
|
const needsReacquire = batch.status === 'expired' || activeExpiry(batch);
|
|
663
853
|
if (!needsReacquire)
|
|
664
|
-
requireLiveBatch(batch);
|
|
854
|
+
requireLiveBatch(batch, manifest.batchId);
|
|
665
855
|
else if (batch.hardExpiresAt.getTime() <= Date.now()) {
|
|
666
|
-
throw new WERR_errors_1.
|
|
856
|
+
throw new WERR_errors_1.WERR_ACTION_BATCH_STATE('hard-expired', manifest.batchId);
|
|
667
857
|
}
|
|
668
858
|
if (batch.manifestDigest != null && batch.manifestDigest !== manifest.digest) {
|
|
669
859
|
throw new WERR_errors_1.WERR_INVALID_OPERATION('batch prepared with another manifest');
|
|
@@ -692,8 +882,9 @@ async function commitActionBatch(storage, auth, manifest) {
|
|
|
692
882
|
}
|
|
693
883
|
return await active.promise;
|
|
694
884
|
}
|
|
695
|
-
const promise = commitActionBatchOnce(storage, userId, manifest)
|
|
696
|
-
|
|
885
|
+
const promise = commitActionBatchOnce(storage, userId, manifest).finally(() => {
|
|
886
|
+
commits?.delete(key);
|
|
887
|
+
});
|
|
697
888
|
commits.set(key, { digest: manifest.digest, promise });
|
|
698
889
|
return await promise;
|
|
699
890
|
}
|
|
@@ -704,7 +895,9 @@ async function commitActionBatchByDigest(storage, auth, args) {
|
|
|
704
895
|
throw new WERR_errors_1.WERR_INVALID_OPERATION('prepared action batch manifest was not found');
|
|
705
896
|
}
|
|
706
897
|
const manifest = JSON.parse(batch.manifest);
|
|
707
|
-
if (manifest.format !== 2 ||
|
|
898
|
+
if (manifest.format !== 2 ||
|
|
899
|
+
manifest.batchId !== args.batchId ||
|
|
900
|
+
manifest.digest !== args.digest ||
|
|
708
901
|
!(0, actionBatchDigest_1.verifyActionBatchManifestDigest)(manifest)) {
|
|
709
902
|
throw new WERR_errors_1.WERR_INVALID_OPERATION('prepared action batch manifest is invalid');
|
|
710
903
|
}
|