@bopen-io/wallet-toolbox 2.6.2-brc153.3 → 2.14.5
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 +4 -3
- package/out/src/signer/methods/createAction.d.ts.map +1 -1
- package/out/src/signer/methods/createAction.js +3 -1
- package/out/src/signer/methods/createAction.js.map +1 -1
- package/out/src/signer/methods/createNoSendExpiryAction.d.ts +7 -0
- package/out/src/signer/methods/createNoSendExpiryAction.d.ts.map +1 -0
- package/out/src/signer/methods/createNoSendExpiryAction.js +254 -0
- package/out/src/signer/methods/createNoSendExpiryAction.js.map +1 -0
- package/out/src/signer/methods/internalizeAction.d.ts.map +1 -1
- package/out/src/signer/methods/internalizeAction.js +9 -5
- package/out/src/signer/methods/internalizeAction.js.map +1 -1
- package/out/src/signer/methods/proveCertificate.d.ts +3 -2
- package/out/src/signer/methods/proveCertificate.d.ts.map +1 -1
- package/out/src/signer/methods/proveCertificate.js.map +1 -1
- package/out/src/signer/methods/signAction.d.ts.map +1 -1
- package/out/src/signer/methods/signAction.js +12 -2
- package/out/src/signer/methods/signAction.js.map +1 -1
- package/out/src/signer/methods/verifyUnlockScripts.d.ts.map +1 -1
- package/out/src/signer/methods/verifyUnlockScripts.js +12 -17
- package/out/src/signer/methods/verifyUnlockScripts.js.map +1 -1
- package/out/src/storage/StorageIdb.d.ts +11 -3
- package/out/src/storage/StorageIdb.d.ts.map +1 -1
- package/out/src/storage/StorageIdb.js +134 -44
- package/out/src/storage/StorageIdb.js.map +1 -1
- package/out/src/storage/StorageKnex.d.ts +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 +391 -107
- package/out/src/storage/methods/createAction.js.map +1 -1
- package/out/src/storage/methods/generateChange.d.ts +15 -5
- package/out/src/storage/methods/generateChange.d.ts.map +1 -1
- package/out/src/storage/methods/generateChange.js +187 -27
- package/out/src/storage/methods/generateChange.js.map +1 -1
- package/out/src/storage/methods/getBeefForTransaction.js +5 -7
- package/out/src/storage/methods/getBeefForTransaction.js.map +1 -1
- package/out/src/storage/methods/getSyncChunk.d.ts.map +1 -1
- package/out/src/storage/methods/getSyncChunk.js +42 -11
- package/out/src/storage/methods/getSyncChunk.js.map +1 -1
- package/out/src/storage/methods/internalizeAction.d.ts +3 -3
- package/out/src/storage/methods/internalizeAction.d.ts.map +1 -1
- package/out/src/storage/methods/internalizeAction.js +172 -135
- 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 +32 -30
- package/out/src/storage/methods/listOutputsKnex.js.map +1 -1
- package/out/src/storage/methods/managedChangePolicy.d.ts +44 -0
- package/out/src/storage/methods/managedChangePolicy.d.ts.map +1 -0
- package/out/src/storage/methods/managedChangePolicy.js +58 -0
- package/out/src/storage/methods/managedChangePolicy.js.map +1 -0
- package/out/src/storage/methods/maxPossibleSatoshis.d.ts +13 -0
- package/out/src/storage/methods/maxPossibleSatoshis.d.ts.map +1 -0
- package/out/src/storage/methods/maxPossibleSatoshis.js +16 -0
- package/out/src/storage/methods/maxPossibleSatoshis.js.map +1 -0
- package/out/src/storage/methods/noSendExpiry.d.ts +11 -0
- package/out/src/storage/methods/noSendExpiry.d.ts.map +1 -0
- package/out/src/storage/methods/noSendExpiry.js +359 -0
- package/out/src/storage/methods/noSendExpiry.js.map +1 -0
- package/out/src/storage/methods/noSendExpiryLifecycle.d.ts +14 -0
- package/out/src/storage/methods/noSendExpiryLifecycle.d.ts.map +1 -0
- package/out/src/storage/methods/noSendExpiryLifecycle.js +691 -0
- package/out/src/storage/methods/noSendExpiryLifecycle.js.map +1 -0
- package/out/src/storage/methods/preparedBeef.d.ts +104 -0
- package/out/src/storage/methods/preparedBeef.d.ts.map +1 -0
- package/out/src/storage/methods/preparedBeef.js +524 -0
- package/out/src/storage/methods/preparedBeef.js.map +1 -0
- package/out/src/storage/methods/processAction.d.ts.map +1 -1
- package/out/src/storage/methods/processAction.js +144 -32
- package/out/src/storage/methods/processAction.js.map +1 -1
- package/out/src/storage/methods/purgeData.d.ts.map +1 -1
- package/out/src/storage/methods/purgeData.js +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 +372 -9
- package/out/src/storage/remoting/StorageClientBase.js.map +1 -1
- package/out/src/storage/remoting/StorageMobile.d.ts +5 -0
- package/out/src/storage/remoting/StorageMobile.d.ts.map +1 -1
- package/out/src/storage/remoting/StorageMobile.js +13 -11
- package/out/src/storage/remoting/StorageMobile.js.map +1 -1
- package/out/src/storage/remoting/StorageServer.d.ts +10 -1
- package/out/src/storage/remoting/StorageServer.d.ts.map +1 -1
- package/out/src/storage/remoting/StorageServer.js +221 -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 +4 -0
- package/out/src/storage/remoting/syncChunkBinary.d.ts.map +1 -0
- package/out/src/storage/remoting/syncChunkBinary.js +38 -0
- package/out/src/storage/remoting/syncChunkBinary.js.map +1 -0
- package/out/src/storage/remoting/validateRpcSyncProofs.d.ts +5 -0
- package/out/src/storage/remoting/validateRpcSyncProofs.d.ts.map +1 -0
- package/out/src/storage/remoting/validateRpcSyncProofs.js +82 -0
- package/out/src/storage/remoting/validateRpcSyncProofs.js.map +1 -0
- package/out/src/storage/schema/KnexMigrations.d.ts +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 +3 -5
- package/out/src/utility/brc153ReferenceLabels.d.ts.map +1 -1
- package/out/src/utility/brc153ReferenceLabels.js +8 -14
- 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 +40 -33
- package/docs/open-rpc/index.html +0 -46
|
@@ -2,19 +2,23 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.setDisableDoubleSpendCheckForTest = setDisableDoubleSpendCheckForTest;
|
|
4
4
|
exports.createAction = createAction;
|
|
5
|
+
exports.validateRequiredOutputs = validateRequiredOutputs;
|
|
6
|
+
exports.validateRequiredInputs = validateRequiredInputs;
|
|
7
|
+
const validationHelpers_1 = require("@bsv/sdk/wallet/validationHelpers");
|
|
5
8
|
const sdk_1 = require("@bsv/sdk");
|
|
9
|
+
const utils_1 = require("@bsv/sdk/primitives/utils");
|
|
6
10
|
const generateChange_1 = require("./generateChange");
|
|
7
11
|
const StorageProvider_1 = require("../StorageProvider");
|
|
8
12
|
const WERR_errors_1 = require("../../sdk/WERR_errors");
|
|
9
13
|
const utilityHelpers_1 = require("../../utility/utilityHelpers");
|
|
10
14
|
const utilityHelpers_noBuffer_1 = require("../../utility/utilityHelpers.noBuffer");
|
|
11
|
-
const brc153ReferenceLabels_1 = require("../../utility/brc153ReferenceLabels");
|
|
12
15
|
const EntityProvenTx_1 = require("../schema/entities/EntityProvenTx");
|
|
13
16
|
const Wallet_1 = require("../../Wallet");
|
|
14
17
|
const offsetKey_1 = require("./offsetKey");
|
|
15
18
|
const sdk_2 = require("../../sdk");
|
|
16
19
|
const managedChange_1 = require("./managedChange");
|
|
17
20
|
const actionPlanning_1 = require("./actionPlanning");
|
|
21
|
+
const beefForTxids_1 = require("../../utility/beefForTxids");
|
|
18
22
|
let disableDoubleSpendCheckForTest = true;
|
|
19
23
|
function setDisableDoubleSpendCheckForTest(v) {
|
|
20
24
|
disableDoubleSpendCheckForTest = v;
|
|
@@ -50,6 +54,9 @@ async function createActionCore(storage, auth, vargs, parent) {
|
|
|
50
54
|
// stampLog(vargs, `start storage createTransactionSdk`)
|
|
51
55
|
if (vargs.isTestWerrReviewActions)
|
|
52
56
|
(0, Wallet_1.throwDummyReviewActions)();
|
|
57
|
+
if (vargs.brc177 != null && auth.isActive !== true) {
|
|
58
|
+
throw new WERR_errors_1.WERR_NOT_ACTIVE('BRC-177 requires the active storage provider');
|
|
59
|
+
}
|
|
53
60
|
if (!vargs.isNewTx)
|
|
54
61
|
// The purpose of this function is to create the initial storage records associated
|
|
55
62
|
// with a new transaction. It's an error if we have no new inputs or outputs...
|
|
@@ -69,7 +76,7 @@ async function createActionCore(storage, auth, vargs, parent) {
|
|
|
69
76
|
* - Create result inputs with source locking scripts
|
|
70
77
|
* - Create result outputs with new locking scripts.
|
|
71
78
|
* - Create and return result.
|
|
72
|
-
|
|
79
|
+
*/
|
|
73
80
|
const userId = auth.userId;
|
|
74
81
|
const validated = await traceStorageStep(storage, 'wallet.storage.create_action.validate', parent, {
|
|
75
82
|
'action.fixed_input_count': vargs.inputs.length,
|
|
@@ -99,13 +106,14 @@ async function createActionCore(storage, auth, vargs, parent) {
|
|
|
99
106
|
const { storageBeef, beef, xinputs, xoutputs, changeBasket, noSendChangeIn } = validated;
|
|
100
107
|
const feeModel = (0, StorageProvider_1.validateStorageFeeModel)(storage.feeModel);
|
|
101
108
|
logger?.log(`validated fee model ${JSON.stringify(feeModel)}`);
|
|
102
|
-
const initialFundingPlan = await
|
|
109
|
+
const initialFundingPlan = await prepareFundingPlanWithLiquidityPolicy(storage, [userId, vargs, xinputs, xoutputs, changeBasket, noSendChangeIn, feeModel], parent);
|
|
110
|
+
validateBrc177FundingPlan(vargs, initialFundingPlan);
|
|
103
111
|
logger?.log(`planned funding from ${initialFundingPlan.availableChangeCount} change inputs`);
|
|
104
112
|
// The selected source txids are known before the write transaction begins.
|
|
105
113
|
// Start their one batched proof read now so PXC/network wait and BEEF
|
|
106
114
|
// assembly overlap the independent transaction-record/funding/output writes.
|
|
107
115
|
// A funding-claim retry is handled below by fetching only any residual roots.
|
|
108
|
-
const allocatedBeefPrefetch = startAllocatedChangeBeefPrefetch(storage, vargs, initialFundingPlan.selected, beef, parent);
|
|
116
|
+
const allocatedBeefPrefetch = startAllocatedChangeBeefPrefetch(storage, userId, vargs, initialFundingPlan.selected, beef, parent);
|
|
109
117
|
const storageBeefBytes = storageBeef.toBinary();
|
|
110
118
|
let newTx;
|
|
111
119
|
let newTxCommitted = false;
|
|
@@ -138,7 +146,11 @@ async function createActionCore(storage, auth, vargs, parent) {
|
|
|
138
146
|
ctx.xoutputs[adjustment.fixedOutputIndex].satoshis = adjustment.satoshis;
|
|
139
147
|
logger?.log('adjusted change outputs to max possible');
|
|
140
148
|
}
|
|
141
|
-
const
|
|
149
|
+
const fixedManagedChangeSatoshis = ctx.xoutputs
|
|
150
|
+
.filter(output => output.purpose === 'change')
|
|
151
|
+
.reduce((sum, output) => sum + output.satoshis, 0);
|
|
152
|
+
const satoshis = fixedManagedChangeSatoshis +
|
|
153
|
+
funded.changeOutputs.reduce((sum, output) => sum + output.satoshis, 0) -
|
|
142
154
|
funded.allocatedChange.reduce((sum, output) => sum + output.satoshis, 0);
|
|
143
155
|
if (satoshis !== initialSatoshis) {
|
|
144
156
|
await storage.updateTransaction(newTx.transactionId, { satoshis }, trx);
|
|
@@ -158,7 +170,7 @@ async function createActionCore(storage, auth, vargs, parent) {
|
|
|
158
170
|
const committedTx = (0, utilityHelpers_1.verifyTruthy)(newTx);
|
|
159
171
|
const { allocatedChange, derivationPrefix, outputs, changeVouts, ctx } = persisted;
|
|
160
172
|
logger?.log('created new output records');
|
|
161
|
-
const
|
|
173
|
+
const preparedInputBeef = await mergeAllocatedChangeBeefs(storage, userId, vargs, allocatedChange, beef, allocatedBeefPrefetch, parent);
|
|
162
174
|
logger?.log('merged allocated change beefs');
|
|
163
175
|
const inputs = await traceStorageStep(storage, 'wallet.storage.create_action.assemble_inputs', parent, {
|
|
164
176
|
'action.fixed_input_count': ctx.xinputs.length,
|
|
@@ -177,9 +189,13 @@ async function createActionCore(storage, auth, vargs, parent) {
|
|
|
177
189
|
inputs,
|
|
178
190
|
outputs,
|
|
179
191
|
derivationPrefix,
|
|
180
|
-
inputBeef,
|
|
192
|
+
inputBeef: preparedInputBeef.inputBeef,
|
|
181
193
|
noSendChangeOutputVouts: vargs.isNoSend ? changeVouts : undefined
|
|
182
194
|
};
|
|
195
|
+
// This is intentionally the last foreground operation. The coordinator
|
|
196
|
+
// starts on a timer, so the createAction promise and HTTP response can
|
|
197
|
+
// resolve before any COOK verification or persistence begins.
|
|
198
|
+
enqueuePreparedBeefs(storage, preparedInputBeef.preparations);
|
|
183
199
|
logger?.groupEnd();
|
|
184
200
|
return r;
|
|
185
201
|
}
|
|
@@ -352,7 +368,7 @@ function describeNewOutput(o, tags, txBaskets) {
|
|
|
352
368
|
const changeVout = o.change && o.purpose === 'change' && o.providedBy === 'storage' ? o.vout : undefined;
|
|
353
369
|
const ro = {
|
|
354
370
|
vout: (0, utilityHelpers_1.verifyInteger)(o.vout),
|
|
355
|
-
satoshis:
|
|
371
|
+
satoshis: (0, validationHelpers_1.validateSatoshis)(o.satoshis, 'o.satoshis'),
|
|
356
372
|
lockingScript: o.lockingScript == null ? '' : (0, utilityHelpers_noBuffer_1.asString)(o.lockingScript),
|
|
357
373
|
providedBy: (0, utilityHelpers_1.verifyTruthy)(o.providedBy),
|
|
358
374
|
purpose: o.purpose || undefined,
|
|
@@ -379,6 +395,49 @@ async function persistNewOutput(storage, o, tags, txTags, txBaskets, trx) {
|
|
|
379
395
|
}
|
|
380
396
|
return describeNewOutput(o, tags, txBaskets);
|
|
381
397
|
}
|
|
398
|
+
async function createRequiredOutput(storage, userId, xo, ctx, txBaskets, trx) {
|
|
399
|
+
const o = makeDefaultOutput(userId, ctx.transactionId, xo.satoshis, xo.vout);
|
|
400
|
+
if (xo.purpose === 'service-charge') {
|
|
401
|
+
const lockingScript = (0, utilityHelpers_noBuffer_1.asArray)(xo.lockingScript);
|
|
402
|
+
const now = new Date();
|
|
403
|
+
await storage.insertCommission({
|
|
404
|
+
userId,
|
|
405
|
+
transactionId: ctx.transactionId,
|
|
406
|
+
lockingScript,
|
|
407
|
+
satoshis: xo.satoshis,
|
|
408
|
+
isRedeemed: false,
|
|
409
|
+
keyOffset: (0, utilityHelpers_1.verifyTruthy)(xo.keyOffset),
|
|
410
|
+
created_at: now,
|
|
411
|
+
updated_at: now,
|
|
412
|
+
commissionId: 0
|
|
413
|
+
}, trx);
|
|
414
|
+
o.lockingScript = lockingScript;
|
|
415
|
+
o.providedBy = 'storage';
|
|
416
|
+
o.purpose = 'storage-commission';
|
|
417
|
+
o.type = 'custom';
|
|
418
|
+
o.spendable = false;
|
|
419
|
+
return { o, tags: [] };
|
|
420
|
+
}
|
|
421
|
+
if (xo.purpose === 'change') {
|
|
422
|
+
o.basketId = ctx.changeBasket.basketId;
|
|
423
|
+
o.change = true;
|
|
424
|
+
o.derivationPrefix = (0, utilityHelpers_1.verifyTruthy)(ctx.derivationPrefix);
|
|
425
|
+
o.derivationSuffix = (0, utilityHelpers_1.verifyTruthy)(xo.derivationSuffix);
|
|
426
|
+
o.providedBy = 'storage';
|
|
427
|
+
o.purpose = 'change';
|
|
428
|
+
o.type = 'P2PKH';
|
|
429
|
+
o.spendable = true;
|
|
430
|
+
return { o, tags: [] };
|
|
431
|
+
}
|
|
432
|
+
o.lockingScript = (0, utilityHelpers_noBuffer_1.asArray)(xo.lockingScript);
|
|
433
|
+
o.basketId = xo.basket ? txBaskets[xo.basket].basketId : undefined;
|
|
434
|
+
o.customInstructions = xo.customInstructions;
|
|
435
|
+
o.outputDescription = xo.outputDescription;
|
|
436
|
+
o.providedBy = xo.providedBy;
|
|
437
|
+
o.purpose = xo.purpose || '';
|
|
438
|
+
o.type = 'custom';
|
|
439
|
+
return { o, tags: xo.tags };
|
|
440
|
+
}
|
|
382
441
|
async function createNewOutputs(storage, userId, vargs, ctx, changeOutputs, trx) {
|
|
383
442
|
const txBaskets = {};
|
|
384
443
|
const basketNames = [...new Set(ctx.xoutputs.map(x => x.basket).filter((v) => !!v))];
|
|
@@ -388,39 +447,7 @@ async function createNewOutputs(storage, userId, vargs, ctx, changeOutputs, trx)
|
|
|
388
447
|
Object.assign(txTags, await storage.findOrInsertOutputTagsBulk(userId, tagNames, trx));
|
|
389
448
|
const newOutputs = [];
|
|
390
449
|
for (const xo of ctx.xoutputs) {
|
|
391
|
-
|
|
392
|
-
if (xo.purpose === 'service-charge') {
|
|
393
|
-
const now = new Date();
|
|
394
|
-
await storage.insertCommission({
|
|
395
|
-
userId,
|
|
396
|
-
transactionId: ctx.transactionId,
|
|
397
|
-
lockingScript,
|
|
398
|
-
satoshis: xo.satoshis,
|
|
399
|
-
isRedeemed: false,
|
|
400
|
-
keyOffset: (0, utilityHelpers_1.verifyTruthy)(xo.keyOffset),
|
|
401
|
-
created_at: now,
|
|
402
|
-
updated_at: now,
|
|
403
|
-
commissionId: 0
|
|
404
|
-
}, trx);
|
|
405
|
-
const o = makeDefaultOutput(userId, ctx.transactionId, xo.satoshis, xo.vout);
|
|
406
|
-
o.lockingScript = lockingScript;
|
|
407
|
-
o.providedBy = 'storage';
|
|
408
|
-
o.purpose = 'storage-commission';
|
|
409
|
-
o.type = 'custom';
|
|
410
|
-
o.spendable = false;
|
|
411
|
-
newOutputs.push({ o, tags: [] });
|
|
412
|
-
}
|
|
413
|
-
else {
|
|
414
|
-
const o = makeDefaultOutput(userId, ctx.transactionId, xo.satoshis, xo.vout);
|
|
415
|
-
o.lockingScript = lockingScript;
|
|
416
|
-
o.basketId = xo.basket ? txBaskets[xo.basket].basketId : undefined;
|
|
417
|
-
o.customInstructions = xo.customInstructions;
|
|
418
|
-
o.outputDescription = xo.outputDescription;
|
|
419
|
-
o.providedBy = xo.providedBy;
|
|
420
|
-
o.purpose = xo.purpose || '';
|
|
421
|
-
o.type = 'custom';
|
|
422
|
-
newOutputs.push({ o, tags: xo.tags });
|
|
423
|
-
}
|
|
450
|
+
newOutputs.push(await createRequiredOutput(storage, userId, xo, ctx, txBaskets, trx));
|
|
424
451
|
}
|
|
425
452
|
for (const o of changeOutputs) {
|
|
426
453
|
o.spendable = true;
|
|
@@ -464,8 +491,17 @@ async function createNewTxRecord(storage, userId, vargs, storageBeef, satoshis =
|
|
|
464
491
|
txid: undefined,
|
|
465
492
|
rawTx: undefined
|
|
466
493
|
};
|
|
494
|
+
const brc177 = vargs.brc177;
|
|
495
|
+
if (brc177?.kind === 'protected') {
|
|
496
|
+
newTx.noSendExpiryMode = brc177.expiry.mode;
|
|
497
|
+
newTx.noSendExpiryValue = brc177.expiry.value;
|
|
498
|
+
newTx.noSendExpiryDeadline = brc177.deadline;
|
|
499
|
+
newTx.noSendExpiryState = 'preparing';
|
|
500
|
+
newTx.noSendExpiryAnchorTxid = brc177.anchorTxid;
|
|
501
|
+
newTx.noSendExpiryAnchorVout = brc177.anchorVout;
|
|
502
|
+
}
|
|
467
503
|
newTx.transactionId = await storage.insertTransaction(newTx, trx);
|
|
468
|
-
const labelNames = [...new Set(
|
|
504
|
+
const labelNames = [...new Set(vargs.labels)];
|
|
469
505
|
const labels = await storage.findOrInsertTxLabelsBulk(userId, labelNames, trx);
|
|
470
506
|
for (const label of labelNames) {
|
|
471
507
|
const txLabel = labels[label];
|
|
@@ -525,6 +561,22 @@ function validateRequiredOutputs(storage, userId, vargs) {
|
|
|
525
561
|
keyOffset
|
|
526
562
|
});
|
|
527
563
|
}
|
|
564
|
+
const brc177 = vargs.brc177;
|
|
565
|
+
if (brc177?.kind === 'funding') {
|
|
566
|
+
vout++;
|
|
567
|
+
xoutputs.push({
|
|
568
|
+
lockingScript: '00'.repeat(25),
|
|
569
|
+
satoshis: brc177.anchorSatoshis,
|
|
570
|
+
outputDescription: '',
|
|
571
|
+
basket: undefined,
|
|
572
|
+
tags: [],
|
|
573
|
+
vout,
|
|
574
|
+
providedBy: 'storage',
|
|
575
|
+
purpose: 'change',
|
|
576
|
+
derivationSuffix: undefined,
|
|
577
|
+
keyOffset: undefined
|
|
578
|
+
});
|
|
579
|
+
}
|
|
528
580
|
return xoutputs;
|
|
529
581
|
}
|
|
530
582
|
/**
|
|
@@ -550,7 +602,7 @@ function validateRequiredOutputs(storage, userId, vargs) {
|
|
|
550
602
|
*/
|
|
551
603
|
async function validateRequiredInputs(storage, userId, vargs) {
|
|
552
604
|
// stampLog(vargs, `start storage verifyInputBeef`)
|
|
553
|
-
|
|
605
|
+
let beef = new sdk_1.Beef();
|
|
554
606
|
if (vargs.inputs.length === 0)
|
|
555
607
|
return { storageBeef: beef, beef, xinputs: [] };
|
|
556
608
|
if (vargs.inputBEEF != null)
|
|
@@ -573,6 +625,10 @@ async function validateRequiredInputs(storage, userId, vargs) {
|
|
|
573
625
|
inputsByTxid[input.outpoint.txid] ||= [];
|
|
574
626
|
inputsByTxid[input.outpoint.txid].push(input);
|
|
575
627
|
}
|
|
628
|
+
// inputBEEF is an untrusted proof-data container, not a declaration of
|
|
629
|
+
// additional inputs. Retain only the transactions needed to prove the
|
|
630
|
+
// declared inputs so unrelated branches are neither validated nor stored.
|
|
631
|
+
beef = (0, beefForTxids_1.beefForTxids)(beef, Object.keys(inputsByTxid));
|
|
576
632
|
const localKnownInputTxids = {};
|
|
577
633
|
for (const [txid, txInputs] of Object.entries(inputsByTxid)) {
|
|
578
634
|
localKnownInputTxids[txid] = txInputs.every(input => {
|
|
@@ -583,7 +639,7 @@ async function validateRequiredInputs(storage, userId, vargs) {
|
|
|
583
639
|
await validateBeefTxidOnlyEntries(beef, inputsByTxid, trustSelf, storage);
|
|
584
640
|
await ensureBeefContainsAllInputTxids(beef, inputsByTxid, localKnownInputTxids, trustSelf, storage);
|
|
585
641
|
if (!(await beef.verify(await storage.getServices().getChainTracker(), true))) {
|
|
586
|
-
|
|
642
|
+
vargs.logger?.error('inputBEEF failed independent validation');
|
|
587
643
|
throw new WERR_errors_1.WERR_INVALID_PARAMETER('inputBEEF', 'valid Beef when factoring options.trustSelf');
|
|
588
644
|
}
|
|
589
645
|
const storageBeef = beef.clone();
|
|
@@ -634,7 +690,7 @@ function applyStoredInputScript(output, input, vargs) {
|
|
|
634
690
|
if (!disableDoubleSpendCheckForTest && !output.spendable && !vargs.isNoSend) {
|
|
635
691
|
throw new WERR_errors_1.WERR_INVALID_PARAMETER(`${txid}.${vout}`, 'spendable output unless noSend is true');
|
|
636
692
|
}
|
|
637
|
-
input.satoshis =
|
|
693
|
+
input.satoshis = (0, validationHelpers_1.validateSatoshis)(output.satoshis, 'output.satoshis');
|
|
638
694
|
input.lockingScript = sdk_1.Script.fromBinary((0, utilityHelpers_noBuffer_1.asArray)(output.lockingScript));
|
|
639
695
|
}
|
|
640
696
|
async function applyBeefInputScript(storage, beef, input) {
|
|
@@ -653,7 +709,7 @@ async function applyBeefInputScript(storage, beef, input) {
|
|
|
653
709
|
throw new WERR_errors_1.WERR_INVALID_PARAMETER(`${txid}.${vout}`, 'valid outpoint');
|
|
654
710
|
}
|
|
655
711
|
const sourceOutput = beefTx.tx.outputs[vout];
|
|
656
|
-
input.satoshis =
|
|
712
|
+
input.satoshis = (0, validationHelpers_1.validateSatoshis)(sourceOutput.satoshis, 'so.satoshis');
|
|
657
713
|
input.lockingScript = sourceOutput.lockingScript;
|
|
658
714
|
}
|
|
659
715
|
async function resolveInputScript(storage, userId, vargs, input, beef, preloadedOutputsByOutpoint) {
|
|
@@ -698,8 +754,8 @@ async function validateNoSendChange(storage, userId, vargs, changeBasket) {
|
|
|
698
754
|
return r;
|
|
699
755
|
}
|
|
700
756
|
function fundingPlanSatoshis(plan) {
|
|
701
|
-
return plan.result.changeOutputs.reduce((sum, output) => sum + output.satoshis, 0) -
|
|
702
|
-
plan.selected.reduce((sum, output) => sum + output.satoshis, 0);
|
|
757
|
+
return (plan.result.changeOutputs.reduce((sum, output) => sum + output.satoshis, 0) -
|
|
758
|
+
plan.selected.reduce((sum, output) => sum + output.satoshis, 0));
|
|
703
759
|
}
|
|
704
760
|
class FundingClaimConflict extends Error {
|
|
705
761
|
conflict;
|
|
@@ -713,7 +769,10 @@ async function traceStorageStep(storage, name, parent, attributes, callback) {
|
|
|
713
769
|
return await callback();
|
|
714
770
|
return await storage.telemetry.withSpan(name, { component: 'wallet-storage', parent: parent?.context, attributes }, async (span) => await callback(span));
|
|
715
771
|
}
|
|
716
|
-
function makeFundingParams(
|
|
772
|
+
function makeFundingParams(args) {
|
|
773
|
+
const { storage, vargs, xinputs, xoutputs, changeBasket, feeModel, healthyChangeCount, compatibilityFallback } = args;
|
|
774
|
+
const preferredSatoshis = Math.max(1, changeBasket.minimumDesiredUTXOValue);
|
|
775
|
+
const brc177 = vargs.brc177;
|
|
717
776
|
return {
|
|
718
777
|
fixedInputs: xinputs.map(input => ({
|
|
719
778
|
satoshis: input.satoshis,
|
|
@@ -724,40 +783,65 @@ function makeFundingParams(vargs, xinputs, xoutputs, changeBasket, feeModel, ava
|
|
|
724
783
|
lockingScriptLength: output.lockingScript.length / 2
|
|
725
784
|
})),
|
|
726
785
|
feeModel,
|
|
727
|
-
changeInitialSatoshis:
|
|
728
|
-
|
|
786
|
+
changeInitialSatoshis: preferredSatoshis,
|
|
787
|
+
// The final compatibility shape uses the allocator's economic floor. This
|
|
788
|
+
// remains at least as permissive as every historical basket preference,
|
|
789
|
+
// including an exact 144/32 basket that has just migrated to 144/5000.
|
|
790
|
+
changeFirstSatoshis: compatibilityFallback ? 1 : preferredSatoshis,
|
|
729
791
|
changeLockingScriptLength: 25,
|
|
730
792
|
changeUnlockingScriptLength: 107,
|
|
731
|
-
targetNetCount: changeBasket.numberOfDesiredUTXOs -
|
|
793
|
+
targetNetCount: changeBasket.numberOfDesiredUTXOs - healthyChangeCount,
|
|
794
|
+
// The planner requires a positive cap. The exact anchor leaves no surplus,
|
|
795
|
+
// and validateBrc177FundingPlan below independently rejects any change.
|
|
796
|
+
maxChangeOutputs: brc177?.kind === 'protected' ? 1 : storage.managedChangePolicy.maxOutputsPerAction,
|
|
797
|
+
surplusPoolShaping: !compatibilityFallback,
|
|
798
|
+
maxMigrationInputs: compatibilityFallback ? 0 : storage.managedChangePolicy.migrationInputsPerAction,
|
|
732
799
|
randomVals: vargs.randomVals
|
|
733
800
|
};
|
|
734
801
|
}
|
|
735
|
-
async function
|
|
736
|
-
const [userId, vargs, xinputs, xoutputs, changeBasket, noSendChangeIn, feeModel
|
|
737
|
-
const excludeSending = !vargs.isDelayed;
|
|
738
|
-
const candidates = await traceStorageStep(storage, 'wallet.storage.create_action.funding_candidates', parent, { 'funding.exclude_sending': excludeSending }, async (span) => {
|
|
739
|
-
const outputs = await storage.findAvailableManagedChangeInputCandidates(userId, changeBasket.basketId, excludeSending, trx);
|
|
740
|
-
span?.end({
|
|
741
|
-
attributes: {
|
|
742
|
-
'funding.candidate_count': outputs.length,
|
|
743
|
-
'funding.candidate_satoshis': outputs.reduce((sum, output) => sum + output.satoshis, 0)
|
|
744
|
-
}
|
|
745
|
-
});
|
|
746
|
-
return outputs;
|
|
747
|
-
});
|
|
802
|
+
async function buildFundingPlan(storage, context, candidates, eligibleStatuses, policyTier, compatibilityFallback, parent) {
|
|
803
|
+
const [userId, vargs, xinputs, xoutputs, changeBasket, noSendChangeIn, feeModel] = context;
|
|
748
804
|
const noSendIds = new Set(noSendChangeIn.map(output => output.outputId));
|
|
749
|
-
const
|
|
750
|
-
|
|
751
|
-
|
|
752
|
-
|
|
805
|
+
const brc177 = vargs.brc177;
|
|
806
|
+
const available = candidates.filter(output => !noSendIds.has(output.outputId) && eligibleStatuses.includes(output.transactionStatus));
|
|
807
|
+
if (brc177?.kind === 'protected')
|
|
808
|
+
available.length = 0;
|
|
809
|
+
const preferredSatoshis = Math.max(1, changeBasket.minimumDesiredUTXOValue);
|
|
810
|
+
const healthyChangeCount = compatibilityFallback
|
|
811
|
+
? // Preserve the legacy target-count input exactly, including noSendChange
|
|
812
|
+
// that is removed from the allocator below but still belongs to this tier.
|
|
813
|
+
candidates.filter(output => eligibleStatuses.includes(output.transactionStatus)).length
|
|
814
|
+
: candidates.filter(output => output.satoshis >= preferredSatoshis).length;
|
|
815
|
+
const params = makeFundingParams({
|
|
816
|
+
storage,
|
|
817
|
+
vargs,
|
|
818
|
+
xinputs,
|
|
819
|
+
xoutputs,
|
|
820
|
+
changeBasket,
|
|
821
|
+
feeModel,
|
|
822
|
+
healthyChangeCount,
|
|
823
|
+
compatibilityFallback
|
|
824
|
+
});
|
|
825
|
+
const noSendStatuses = await storage.findTransactionStatusesByIds(userId, noSendChangeIn.map(output => output.transactionId));
|
|
826
|
+
const plannedNoSend = noSendChangeIn.map(output => ({
|
|
827
|
+
outputId: output.outputId,
|
|
828
|
+
transactionId: output.transactionId,
|
|
829
|
+
satoshis: output.satoshis,
|
|
830
|
+
txid: output.txid,
|
|
831
|
+
vout: output.vout,
|
|
832
|
+
transactionStatus: noSendStatuses.get(output.transactionId) ?? 'nosend'
|
|
833
|
+
}));
|
|
834
|
+
const claimStatuses = [...new Set([...eligibleStatuses, ...plannedNoSend.map(output => output.transactionStatus)])];
|
|
753
835
|
return await traceStorageStep(storage, 'wallet.storage.create_action.funding_plan', parent, {
|
|
754
836
|
'funding.candidate_count': available.length,
|
|
755
|
-
'funding.no_send_change_count': noSendChangeIn.length
|
|
837
|
+
'funding.no_send_change_count': noSendChangeIn.length,
|
|
838
|
+
'funding.policy_tier': policyTier,
|
|
839
|
+
'funding.compatibility_fallback': compatibilityFallback
|
|
756
840
|
}, async (span) => {
|
|
757
841
|
const allocated = new Map();
|
|
758
842
|
const availableSelector = new actionPlanning_1.CanonicalChangeSelector(available);
|
|
759
|
-
const noSend = [...
|
|
760
|
-
const noSendById = new Map(
|
|
843
|
+
const noSend = [...plannedNoSend];
|
|
844
|
+
const noSendById = new Map(plannedNoSend.map(output => [output.outputId, output]));
|
|
761
845
|
const allocate = async (targetSatoshis, exactSatoshis) => {
|
|
762
846
|
let output = noSend.pop();
|
|
763
847
|
output ??= availableSelector.take(targetSatoshis, exactSatoshis);
|
|
@@ -790,21 +874,137 @@ async function prepareFundingPlan(storage, context) {
|
|
|
790
874
|
params,
|
|
791
875
|
result,
|
|
792
876
|
selected,
|
|
793
|
-
availableChangeCount: candidates.length
|
|
877
|
+
availableChangeCount: candidates.length,
|
|
878
|
+
eligibleStatuses: claimStatuses,
|
|
879
|
+
policyTier,
|
|
880
|
+
compatibilityFallback
|
|
794
881
|
};
|
|
795
882
|
});
|
|
796
883
|
}
|
|
884
|
+
async function fundingPlanSerializedCost(storage, plan, knownTxids) {
|
|
885
|
+
const txids = [...new Set(plan.selected.map(candidate => (0, utilityHelpers_1.verifyTruthy)(candidate.txid)))];
|
|
886
|
+
if (txids.length === 0)
|
|
887
|
+
return plan.result.size;
|
|
888
|
+
try {
|
|
889
|
+
const beef = await storage.getBeefForTransactions(txids, {
|
|
890
|
+
knownTxids,
|
|
891
|
+
ignoreStorage: false,
|
|
892
|
+
ignoreServices: true,
|
|
893
|
+
ignoreNewProven: false
|
|
894
|
+
});
|
|
895
|
+
return plan.result.size + beef.toUint8Array().length;
|
|
896
|
+
}
|
|
897
|
+
catch {
|
|
898
|
+
return Number.MAX_SAFE_INTEGER;
|
|
899
|
+
}
|
|
900
|
+
}
|
|
901
|
+
const FUNDING_TIERS = [
|
|
902
|
+
{ policyTier: 'completed', statuses: ['completed'] },
|
|
903
|
+
{ policyTier: 'unproven', statuses: ['completed', 'unproven'] },
|
|
904
|
+
{ policyTier: 'sending', statuses: ['completed', 'unproven', 'sending'] }
|
|
905
|
+
];
|
|
906
|
+
async function resolveFundingCandidates(storage, userId, basketId, parent, trx) {
|
|
907
|
+
const rawCandidates = await traceStorageStep(storage, 'wallet.storage.create_action.funding_candidates', parent, { 'funding.include_pending': true }, async (span) => {
|
|
908
|
+
const outputs = await storage.findAvailableManagedChangeInputCandidates(userId, basketId, false, trx);
|
|
909
|
+
span?.end({
|
|
910
|
+
attributes: {
|
|
911
|
+
'funding.candidate_count': outputs.length,
|
|
912
|
+
'funding.candidate_satoshis': outputs.reduce((sum, output) => sum + output.satoshis, 0),
|
|
913
|
+
'funding.completed_candidate_count': outputs.filter(output => output.transactionStatus === 'completed')
|
|
914
|
+
.length,
|
|
915
|
+
'funding.unproven_candidate_count': outputs.filter(output => output.transactionStatus === 'unproven').length,
|
|
916
|
+
'funding.sending_candidate_count': outputs.filter(output => output.transactionStatus === 'sending').length
|
|
917
|
+
}
|
|
918
|
+
});
|
|
919
|
+
return outputs;
|
|
920
|
+
});
|
|
921
|
+
const missingStatusIds = rawCandidates
|
|
922
|
+
.filter(output => output.transactionStatus == null)
|
|
923
|
+
.map(output => output.transactionId);
|
|
924
|
+
const missingStatuses = await storage.findTransactionStatusesByIds(userId, missingStatusIds, trx);
|
|
925
|
+
const candidates = rawCandidates.map(output => ({
|
|
926
|
+
...output,
|
|
927
|
+
transactionStatus: output.transactionStatus ?? missingStatuses.get(output.transactionId)
|
|
928
|
+
}));
|
|
929
|
+
if (candidates.some(output => output.transactionStatus == null)) {
|
|
930
|
+
throw new WERR_errors_1.WERR_INTERNAL('managed change candidate is missing its source transaction status');
|
|
931
|
+
}
|
|
932
|
+
return candidates;
|
|
933
|
+
}
|
|
934
|
+
async function buildFundingPlanForTier(storage, context, candidates, tier, parent) {
|
|
935
|
+
try {
|
|
936
|
+
return {
|
|
937
|
+
plan: await buildFundingPlan(storage, context, candidates, tier.statuses, tier.policyTier, false, parent)
|
|
938
|
+
};
|
|
939
|
+
}
|
|
940
|
+
catch (error) {
|
|
941
|
+
if (!(error instanceof WERR_errors_1.WERR_INSUFFICIENT_FUNDS))
|
|
942
|
+
throw error;
|
|
943
|
+
}
|
|
944
|
+
// Pool shaping is optional. Before widening ancestry to unproven or sending
|
|
945
|
+
// parents, retry the same status tier with the former funding shape. This is
|
|
946
|
+
// the one-way compatibility guarantee: a preferred minimum can never
|
|
947
|
+
// manufacture starvation or force a pending chain.
|
|
948
|
+
try {
|
|
949
|
+
return {
|
|
950
|
+
plan: await buildFundingPlan(storage, context, candidates, tier.statuses, 'compatibility', true, parent)
|
|
951
|
+
};
|
|
952
|
+
}
|
|
953
|
+
catch (error) {
|
|
954
|
+
if (!(error instanceof WERR_errors_1.WERR_INSUFFICIENT_FUNDS))
|
|
955
|
+
throw error;
|
|
956
|
+
return { fundingError: error };
|
|
957
|
+
}
|
|
958
|
+
}
|
|
959
|
+
function firstPlanNeedsNoPendingComparison(storage, plan) {
|
|
960
|
+
const threshold = storage.managedChangePolicy.pendingComparisonInputs;
|
|
961
|
+
return threshold === -1 || plan.selected.length <= threshold;
|
|
962
|
+
}
|
|
963
|
+
async function chooseLowestSerializedFundingPlan(storage, plans, knownTxids) {
|
|
964
|
+
let chosen = plans[0];
|
|
965
|
+
let chosenCost = await fundingPlanSerializedCost(storage, chosen, knownTxids);
|
|
966
|
+
for (const alternative of plans.slice(1)) {
|
|
967
|
+
const cost = await fundingPlanSerializedCost(storage, alternative, knownTxids);
|
|
968
|
+
if (cost < chosenCost) {
|
|
969
|
+
chosen = alternative;
|
|
970
|
+
chosenCost = cost;
|
|
971
|
+
}
|
|
972
|
+
}
|
|
973
|
+
return chosen;
|
|
974
|
+
}
|
|
975
|
+
async function prepareFundingPlanWithLiquidityPolicy(storage, context, parent, trx) {
|
|
976
|
+
const [userId, vargs, , , changeBasket] = context;
|
|
977
|
+
const candidates = await resolveFundingCandidates(storage, userId, changeBasket.basketId, parent, trx);
|
|
978
|
+
const successful = [];
|
|
979
|
+
let fundingError;
|
|
980
|
+
for (const tier of FUNDING_TIERS) {
|
|
981
|
+
const attempted = await buildFundingPlanForTier(storage, context, candidates, tier, parent);
|
|
982
|
+
fundingError = attempted.fundingError ?? fundingError;
|
|
983
|
+
const plan = attempted.plan;
|
|
984
|
+
if (plan != null) {
|
|
985
|
+
successful.push(plan);
|
|
986
|
+
if (successful.length === 1 && firstPlanNeedsNoPendingComparison(storage, plan))
|
|
987
|
+
return plan;
|
|
988
|
+
}
|
|
989
|
+
}
|
|
990
|
+
if (successful.length > 0) {
|
|
991
|
+
if (successful.length === 1)
|
|
992
|
+
return successful[0];
|
|
993
|
+
return await chooseLowestSerializedFundingPlan(storage, successful, vargs.options.knownTxids);
|
|
994
|
+
}
|
|
995
|
+
if (fundingError != null)
|
|
996
|
+
throw fundingError;
|
|
997
|
+
throw new WERR_errors_1.WERR_INTERNAL('funding policy produced neither a plan nor an error');
|
|
998
|
+
}
|
|
797
999
|
async function claimFundingPlan(storage, request) {
|
|
798
|
-
const [userId, basketId,
|
|
1000
|
+
const [userId, basketId, eligibleStatuses, transactionId, noSendChangeIn, plan, trx] = request;
|
|
799
1001
|
if (plan.selected.length === 0) {
|
|
800
1002
|
return { outputs: [], sourceTransactionCount: 0, hydratedScriptCount: 0, scriptSourceTransactionCount: 0 };
|
|
801
1003
|
}
|
|
802
1004
|
const noSendIds = new Set(noSendChangeIn.map(output => output.outputId));
|
|
803
|
-
const
|
|
804
|
-
|
|
805
|
-
|
|
806
|
-
const claim = await storage.transaction(async (claimTrx) => {
|
|
807
|
-
const currentById = await storage.findFundingOutputsForUpdate(userId, plan.selected.map(output => output.outputId), statuses, claimTrx);
|
|
1005
|
+
const claim = await storage
|
|
1006
|
+
.transaction(async (claimTrx) => {
|
|
1007
|
+
const currentById = await storage.findFundingOutputsForUpdate(userId, plan.selected.map(output => output.outputId), eligibleStatuses, claimTrx);
|
|
808
1008
|
const transactionIds = [...new Set(Object.values(currentById).map(output => output.transactionId))];
|
|
809
1009
|
const claimed = [];
|
|
810
1010
|
for (const planned of plan.selected) {
|
|
@@ -828,7 +1028,8 @@ async function claimFundingPlan(storage, request) {
|
|
|
828
1028
|
output.spentBy = transactionId;
|
|
829
1029
|
}
|
|
830
1030
|
return { outputs: claimed, sourceTransactionCount: transactionIds.length };
|
|
831
|
-
}, trx)
|
|
1031
|
+
}, trx)
|
|
1032
|
+
.catch(error => {
|
|
832
1033
|
if (error instanceof FundingClaimConflict)
|
|
833
1034
|
return { conflict: error.conflict };
|
|
834
1035
|
throw error;
|
|
@@ -844,9 +1045,12 @@ async function claimFundingPlan(storage, request) {
|
|
|
844
1045
|
}
|
|
845
1046
|
async function hydrateFundingInputScripts(storage, outputs, trx) {
|
|
846
1047
|
const missing = outputs.filter(output => output.lockingScript?.length !== output.scriptLength &&
|
|
847
|
-
output.scriptLength != null &&
|
|
848
|
-
output.
|
|
849
|
-
output.
|
|
1048
|
+
output.scriptLength != null &&
|
|
1049
|
+
output.scriptLength > 0 &&
|
|
1050
|
+
output.scriptOffset != null &&
|
|
1051
|
+
output.scriptOffset > 0 &&
|
|
1052
|
+
output.txid != null &&
|
|
1053
|
+
output.txid !== '');
|
|
850
1054
|
if (missing.length === 0)
|
|
851
1055
|
return { hydratedScriptCount: 0, scriptSourceTransactionCount: 0 };
|
|
852
1056
|
const byTxid = new Map();
|
|
@@ -891,7 +1095,7 @@ async function fundNewTransactionSdk(storage, userId, vargs, ctx, initialPlan, p
|
|
|
891
1095
|
const claim = await claimFundingPlan(storage, [
|
|
892
1096
|
userId,
|
|
893
1097
|
ctx.changeBasket.basketId,
|
|
894
|
-
|
|
1098
|
+
plan.eligibleStatuses,
|
|
895
1099
|
ctx.transactionId,
|
|
896
1100
|
ctx.noSendChangeIn,
|
|
897
1101
|
plan,
|
|
@@ -913,17 +1117,7 @@ async function fundNewTransactionSdk(storage, userId, vargs, ctx, initialPlan, p
|
|
|
913
1117
|
throw new WERR_errors_1.WERR_INVALID_PARAMETER('noSendChange', 'outputs that remain spendable during action planning');
|
|
914
1118
|
}
|
|
915
1119
|
retryCount++;
|
|
916
|
-
plan = await
|
|
917
|
-
userId,
|
|
918
|
-
vargs,
|
|
919
|
-
ctx.xinputs,
|
|
920
|
-
ctx.xoutputs,
|
|
921
|
-
ctx.changeBasket,
|
|
922
|
-
ctx.noSendChangeIn,
|
|
923
|
-
ctx.feeModel,
|
|
924
|
-
parent,
|
|
925
|
-
trx
|
|
926
|
-
]);
|
|
1120
|
+
plan = await prepareFundingPlanWithLiquidityPolicy(storage, [userId, vargs, ctx.xinputs, ctx.xoutputs, ctx.changeBasket, ctx.noSendChangeIn, ctx.feeModel], parent, trx);
|
|
927
1121
|
}
|
|
928
1122
|
throw new WERR_errors_1.WERR_INVALID_OPERATION('wallet funding changed repeatedly during action planning; retry createAction');
|
|
929
1123
|
});
|
|
@@ -960,10 +1154,16 @@ async function fundNewTransactionSdk(storage, userId, vargs, ctx, initialPlan, p
|
|
|
960
1154
|
for (let i = 0; i < count; i++)
|
|
961
1155
|
val.push(rand(0, 255));
|
|
962
1156
|
}
|
|
963
|
-
return
|
|
1157
|
+
return (0, utils_1.toBase64)(val);
|
|
964
1158
|
};
|
|
965
1159
|
// Generate a derivation prefix for the payment
|
|
966
1160
|
const derivationPrefix = randomDerivation(16);
|
|
1161
|
+
ctx.derivationPrefix = derivationPrefix;
|
|
1162
|
+
for (const output of ctx.xoutputs) {
|
|
1163
|
+
if (output.purpose === 'change' && output.derivationSuffix == null) {
|
|
1164
|
+
output.derivationSuffix = randomDerivation(16);
|
|
1165
|
+
}
|
|
1166
|
+
}
|
|
967
1167
|
const r = {
|
|
968
1168
|
maxPossibleSatoshisAdjustment: gcr.maxPossibleSatoshisAdjustment,
|
|
969
1169
|
allocatedChange,
|
|
@@ -998,6 +1198,21 @@ async function fundNewTransactionSdk(storage, userId, vargs, ctx, initialPlan, p
|
|
|
998
1198
|
};
|
|
999
1199
|
return r;
|
|
1000
1200
|
}
|
|
1201
|
+
function validateBrc177FundingPlan(vargs, plan) {
|
|
1202
|
+
if (vargs.brc177?.kind !== 'protected')
|
|
1203
|
+
return;
|
|
1204
|
+
if (plan.selected.length !== 1 || vargs.options.noSendChange.length !== 1) {
|
|
1205
|
+
throw new WERR_errors_1.WERR_INVALID_OPERATION('BRC-177 protected action must use exactly one revocation anchor');
|
|
1206
|
+
}
|
|
1207
|
+
const selected = plan.selected[0];
|
|
1208
|
+
const anchor = vargs.options.noSendChange[0];
|
|
1209
|
+
if (selected.txid !== anchor.txid || selected.vout !== anchor.vout) {
|
|
1210
|
+
throw new WERR_errors_1.WERR_INVALID_OPERATION('BRC-177 protected action selected a non-anchor wallet input');
|
|
1211
|
+
}
|
|
1212
|
+
if (plan.result.changeOutputs.length !== 0) {
|
|
1213
|
+
throw new WERR_errors_1.WERR_INVALID_OPERATION('BRC-177 protected action must not create wallet change');
|
|
1214
|
+
}
|
|
1215
|
+
}
|
|
1001
1216
|
/**
|
|
1002
1217
|
* Avoid returning any known raw transaction data by converting any known transaction
|
|
1003
1218
|
* in the `beef` to txidOnly.
|
|
@@ -1030,19 +1245,77 @@ function makeKnownTxidLookup(knownTxids) {
|
|
|
1030
1245
|
return knownTxids.includes(txid);
|
|
1031
1246
|
};
|
|
1032
1247
|
}
|
|
1248
|
+
function preparedBeefStorage(storage) {
|
|
1249
|
+
return storage;
|
|
1250
|
+
}
|
|
1251
|
+
function appendPreparedBeefPreparation(preparations, writeEnabled, userId, rootTxids) {
|
|
1252
|
+
if (!writeEnabled)
|
|
1253
|
+
return;
|
|
1254
|
+
preparations.push({ userId, rootTxids });
|
|
1255
|
+
}
|
|
1256
|
+
function enqueuePreparedBeefs(storage, preparations) {
|
|
1257
|
+
const extension = preparedBeefStorage(storage);
|
|
1258
|
+
if (typeof extension.enqueuePreparedBeef !== 'function')
|
|
1259
|
+
return;
|
|
1260
|
+
for (const preparation of preparations)
|
|
1261
|
+
extension.enqueuePreparedBeef.call(storage, preparation);
|
|
1262
|
+
}
|
|
1263
|
+
async function loadAllocatedChangeBeef(storage, userId, txids, options, parent) {
|
|
1264
|
+
const extension = preparedBeefStorage(storage);
|
|
1265
|
+
const readEnabled = extension.preparedBeefReadsEnabled?.call(storage) === true;
|
|
1266
|
+
const writeEnabled = extension.preparedBeefWritesEnabled?.call(storage) === true;
|
|
1267
|
+
const lookup = readEnabled && typeof extension.lookupPreparedBeefs === 'function'
|
|
1268
|
+
? await extension.lookupPreparedBeefs.call(storage, userId, txids, parent)
|
|
1269
|
+
: {
|
|
1270
|
+
beef: new sdk_1.Beef(),
|
|
1271
|
+
hitTxids: [],
|
|
1272
|
+
missingTxids: [...new Set(txids)],
|
|
1273
|
+
corruptCount: 0,
|
|
1274
|
+
byteLength: 0
|
|
1275
|
+
};
|
|
1276
|
+
const beef = lookup.beef;
|
|
1277
|
+
const preparations = [];
|
|
1278
|
+
if (lookup.missingTxids.length > 0) {
|
|
1279
|
+
const fetched = await storage.getBeefForTransactions(lookup.missingTxids, {
|
|
1280
|
+
...options,
|
|
1281
|
+
mergeToBeef: undefined
|
|
1282
|
+
});
|
|
1283
|
+
if (lookup.hitTxids.length === 0) {
|
|
1284
|
+
// Preserve the original disabled/cold path without merging into an
|
|
1285
|
+
// otherwise empty BEEF solely for this optimization.
|
|
1286
|
+
appendPreparedBeefPreparation(preparations, writeEnabled, userId, lookup.missingTxids);
|
|
1287
|
+
return {
|
|
1288
|
+
beef: fetched,
|
|
1289
|
+
preparations,
|
|
1290
|
+
preparedHitCount: 0,
|
|
1291
|
+
canonicalFetchCount: lookup.missingTxids.length
|
|
1292
|
+
};
|
|
1293
|
+
}
|
|
1294
|
+
beef.mergeBeef(fetched);
|
|
1295
|
+
// A caller's knownTxids may leave placeholders which are unsuitable for a
|
|
1296
|
+
// reusable artifact. Rebuild those roots strictly in the worker.
|
|
1297
|
+
appendPreparedBeefPreparation(preparations, writeEnabled, userId, lookup.missingTxids);
|
|
1298
|
+
}
|
|
1299
|
+
return {
|
|
1300
|
+
beef,
|
|
1301
|
+
preparations,
|
|
1302
|
+
preparedHitCount: lookup.hitTxids.length,
|
|
1303
|
+
canonicalFetchCount: lookup.missingTxids.length
|
|
1304
|
+
};
|
|
1305
|
+
}
|
|
1033
1306
|
function missingAllocatedChangeTxids(allocatedChange, beef, knownTxids) {
|
|
1034
1307
|
const hasKnownTxid = makeKnownTxidLookup(knownTxids);
|
|
1035
1308
|
return Array.from(new Set(allocatedChange
|
|
1036
1309
|
.map(output => (0, utilityHelpers_1.verifyTruthy)(output.txid))
|
|
1037
1310
|
.filter(txid => beef.findTxid(txid) == null && !hasKnownTxid(txid))));
|
|
1038
1311
|
}
|
|
1039
|
-
function startAllocatedChangeBeefPrefetch(storage, vargs, allocatedChange, beef, parent) {
|
|
1312
|
+
function startAllocatedChangeBeefPrefetch(storage, userId, vargs, allocatedChange, beef, parent) {
|
|
1040
1313
|
if (vargs.options.returnTXIDOnly)
|
|
1041
|
-
return Promise.resolve({ sourceCount: 0, txids: [] });
|
|
1314
|
+
return Promise.resolve({ sourceCount: 0, txids: [], preparations: [] });
|
|
1042
1315
|
const knownTxids = vargs.options.knownTxids ?? [];
|
|
1043
1316
|
const missing = missingAllocatedChangeTxids(allocatedChange, beef, knownTxids);
|
|
1044
1317
|
if (missing.length === 0)
|
|
1045
|
-
return Promise.resolve({ sourceCount: 0, txids: [] });
|
|
1318
|
+
return Promise.resolve({ sourceCount: 0, txids: [], preparations: [] });
|
|
1046
1319
|
const options = {
|
|
1047
1320
|
trustSelf: undefined,
|
|
1048
1321
|
knownTxids,
|
|
@@ -1056,15 +1329,22 @@ function startAllocatedChangeBeefPrefetch(storage, vargs, allocatedChange, beef,
|
|
|
1056
1329
|
'beef.missing_source_count': missing.length,
|
|
1057
1330
|
'beef.storage_batch_count': missing.length === 0 ? 0 : 1
|
|
1058
1331
|
}, async (span) => {
|
|
1059
|
-
const fetched = await storage
|
|
1332
|
+
const fetched = await loadAllocatedChangeBeef(storage, userId, missing, options, parent);
|
|
1060
1333
|
span?.end({
|
|
1061
1334
|
attributes: {
|
|
1062
|
-
'beef.fetched_tx_count': fetched.txs.length,
|
|
1063
|
-
'beef.fetched_bump_count': fetched.bumps.length
|
|
1335
|
+
'beef.fetched_tx_count': fetched.beef.txs.length,
|
|
1336
|
+
'beef.fetched_bump_count': fetched.beef.bumps.length,
|
|
1337
|
+
'beef.prepared_hit_count': fetched.preparedHitCount,
|
|
1338
|
+
'beef.canonical_fetch_count': fetched.canonicalFetchCount
|
|
1064
1339
|
}
|
|
1065
1340
|
});
|
|
1066
1341
|
return fetched;
|
|
1067
|
-
}).then(prefetched => ({
|
|
1342
|
+
}).then(prefetched => ({
|
|
1343
|
+
beef: prefetched.beef,
|
|
1344
|
+
preparations: prefetched.preparations,
|
|
1345
|
+
sourceCount: missing.length,
|
|
1346
|
+
txids: missing
|
|
1347
|
+
}), error => ({ error, preparations: [], sourceCount: missing.length, txids: missing }));
|
|
1068
1348
|
}
|
|
1069
1349
|
function sameTxids(left, right) {
|
|
1070
1350
|
if (left.length !== right.length)
|
|
@@ -1072,7 +1352,7 @@ function sameTxids(left, right) {
|
|
|
1072
1352
|
const expected = new Set(left);
|
|
1073
1353
|
return right.every(txid => expected.has(txid));
|
|
1074
1354
|
}
|
|
1075
|
-
async function mergeAllocatedChangeBeefs(storage, vargs, allocatedChange, beef, prefetch, parent) {
|
|
1355
|
+
async function mergeAllocatedChangeBeefs(storage, userId, vargs, allocatedChange, beef, prefetch, parent) {
|
|
1076
1356
|
const options = {
|
|
1077
1357
|
trustSelf: undefined,
|
|
1078
1358
|
knownTxids: vargs.options.knownTxids,
|
|
@@ -1083,7 +1363,7 @@ async function mergeAllocatedChangeBeefs(storage, vargs, allocatedChange, beef,
|
|
|
1083
1363
|
minProofLevel: undefined
|
|
1084
1364
|
};
|
|
1085
1365
|
if (vargs.options.returnTXIDOnly)
|
|
1086
|
-
return undefined;
|
|
1366
|
+
return { inputBeef: undefined, preparations: [] };
|
|
1087
1367
|
const knownTxids = vargs.options.knownTxids ?? [];
|
|
1088
1368
|
const requiredBeforePrefetch = missingAllocatedChangeTxids(allocatedChange, beef, knownTxids);
|
|
1089
1369
|
const prefetched = await traceStorageStep(storage, 'wallet.storage.create_action.beef_prefetch_join', parent, { 'beef.prefetch_source_count': 0 }, async (span) => {
|
|
@@ -1099,6 +1379,7 @@ async function mergeAllocatedChangeBeefs(storage, vargs, allocatedChange, beef,
|
|
|
1099
1379
|
throw prefetched.error;
|
|
1100
1380
|
if (usePrefetch && prefetched.beef != null)
|
|
1101
1381
|
beef.mergeBeef(prefetched.beef);
|
|
1382
|
+
const preparations = usePrefetch ? [...prefetched.preparations] : [];
|
|
1102
1383
|
// If a concurrent spender forced the funding claim to be replanned, only
|
|
1103
1384
|
// the newly selected roots remain. The normal uncontended path is empty.
|
|
1104
1385
|
const missing = missingAllocatedChangeTxids(allocatedChange, beef, knownTxids);
|
|
@@ -1112,7 +1393,9 @@ async function mergeAllocatedChangeBeefs(storage, vargs, allocatedChange, beef,
|
|
|
1112
1393
|
'beef.prefetch_reused': usePrefetch
|
|
1113
1394
|
}, async (span) => {
|
|
1114
1395
|
if (missing.length > 0) {
|
|
1115
|
-
|
|
1396
|
+
const loaded = await loadAllocatedChangeBeef(storage, userId, missing, options, parent);
|
|
1397
|
+
fetched = loaded.beef;
|
|
1398
|
+
preparations.push(...loaded.preparations);
|
|
1116
1399
|
}
|
|
1117
1400
|
span?.end({
|
|
1118
1401
|
attributes: {
|
|
@@ -1132,7 +1415,7 @@ async function mergeAllocatedChangeBeefs(storage, vargs, allocatedChange, beef,
|
|
|
1132
1415
|
}
|
|
1133
1416
|
});
|
|
1134
1417
|
});
|
|
1135
|
-
|
|
1418
|
+
const inputBeef = await traceStorageStep(storage, 'wallet.storage.create_action.beef_trim_serialize', parent, {
|
|
1136
1419
|
'beef.tx_count': beef.txs.length,
|
|
1137
1420
|
'beef.bump_count': beef.bumps.length,
|
|
1138
1421
|
'beef.known_txid_count': knownTxids.length
|
|
@@ -1141,5 +1424,6 @@ async function mergeAllocatedChangeBeefs(storage, vargs, allocatedChange, beef,
|
|
|
1141
1424
|
span?.end({ attributes: { 'beef.result_bytes': result?.length ?? 0 } });
|
|
1142
1425
|
return result;
|
|
1143
1426
|
});
|
|
1427
|
+
return { inputBeef, preparations };
|
|
1144
1428
|
}
|
|
1145
1429
|
//# sourceMappingURL=createAction.js.map
|