@bopen-io/wallet-toolbox 2.6.2-brc153.5 → 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 +390 -105
- package/out/src/storage/methods/createAction.js.map +1 -1
- package/out/src/storage/methods/generateChange.d.ts +15 -5
- package/out/src/storage/methods/generateChange.d.ts.map +1 -1
- package/out/src/storage/methods/generateChange.js +187 -27
- package/out/src/storage/methods/generateChange.js.map +1 -1
- package/out/src/storage/methods/getBeefForTransaction.js +5 -7
- package/out/src/storage/methods/getBeefForTransaction.js.map +1 -1
- package/out/src/storage/methods/getSyncChunk.d.ts.map +1 -1
- package/out/src/storage/methods/getSyncChunk.js +42 -11
- package/out/src/storage/methods/getSyncChunk.js.map +1 -1
- package/out/src/storage/methods/internalizeAction.d.ts +3 -3
- package/out/src/storage/methods/internalizeAction.d.ts.map +1 -1
- package/out/src/storage/methods/internalizeAction.js +171 -133
- package/out/src/storage/methods/internalizeAction.js.map +1 -1
- package/out/src/storage/methods/listActionsIdb.d.ts +3 -2
- package/out/src/storage/methods/listActionsIdb.d.ts.map +1 -1
- package/out/src/storage/methods/listActionsIdb.js +2 -2
- package/out/src/storage/methods/listActionsIdb.js.map +1 -1
- package/out/src/storage/methods/listActionsKnex.d.ts +3 -2
- package/out/src/storage/methods/listActionsKnex.d.ts.map +1 -1
- package/out/src/storage/methods/listActionsKnex.js +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 +16 -0
- package/out/src/utility/brc153ReferenceLabels.d.ts.map +1 -1
- package/out/src/utility/brc153ReferenceLabels.js +20 -5
- package/out/src/utility/brc153ReferenceLabels.js.map +1 -1
- package/out/src/utility/brc177NoSendExpiry.d.ts +34 -0
- package/out/src/utility/brc177NoSendExpiry.d.ts.map +1 -0
- package/out/src/utility/brc177NoSendExpiry.js +81 -0
- package/out/src/utility/brc177NoSendExpiry.js.map +1 -0
- package/out/src/utility/canonicalizeAtomicBeef.d.ts +12 -0
- package/out/src/utility/canonicalizeAtomicBeef.d.ts.map +1 -0
- package/out/src/utility/canonicalizeAtomicBeef.js +23 -0
- package/out/src/utility/canonicalizeAtomicBeef.js.map +1 -0
- package/out/src/utility/exactActionSpend.d.ts +9 -0
- package/out/src/utility/exactActionSpend.d.ts.map +1 -0
- package/out/src/utility/exactActionSpend.js +26 -0
- package/out/src/utility/exactActionSpend.js.map +1 -0
- package/out/src/utility/hashWasm.d.ts +1 -1
- package/out/src/utility/hashWasm.d.ts.map +1 -1
- package/out/src/utility/hashWasm.js +83 -1
- package/out/src/utility/hashWasm.js.map +1 -1
- package/out/src/utility/identityUtils.d.ts +44 -4
- package/out/src/utility/identityUtils.d.ts.map +1 -1
- package/out/src/utility/identityUtils.js +523 -61
- package/out/src/utility/identityUtils.js.map +1 -1
- package/out/src/utility/index.all.d.ts +2 -0
- package/out/src/utility/index.all.d.ts.map +1 -1
- package/out/src/utility/index.all.js +2 -0
- package/out/src/utility/index.all.js.map +1 -1
- package/out/src/utility/index.client.d.ts +2 -0
- package/out/src/utility/index.client.d.ts.map +1 -1
- package/out/src/utility/index.client.js +2 -0
- package/out/src/utility/index.client.js.map +1 -1
- package/out/src/utility/parseTxScriptOffsets.d.ts.map +1 -1
- package/out/src/utility/parseTxScriptOffsets.js +1 -19
- package/out/src/utility/parseTxScriptOffsets.js.map +1 -1
- package/out/src/utility/tscProofToMerklePath.d.ts.map +1 -1
- package/out/src/utility/tscProofToMerklePath.js +35 -4
- package/out/src/utility/tscProofToMerklePath.js.map +1 -1
- package/out/src/utility/utilityHelpers.d.ts +1 -1
- package/out/src/utility/utilityHelpers.d.ts.map +1 -1
- package/out/src/utility/utilityHelpers.js +10 -7
- package/out/src/utility/utilityHelpers.js.map +1 -1
- package/out/src/utility/utilityHelpers.noBuffer.d.ts.map +1 -1
- package/out/src/utility/utilityHelpers.noBuffer.js +6 -6
- package/out/src/utility/utilityHelpers.noBuffer.js.map +1 -1
- package/out/src/utility/verifyOverlayOutput.d.ts +12 -0
- package/out/src/utility/verifyOverlayOutput.d.ts.map +1 -0
- package/out/src/utility/verifyOverlayOutput.js +22 -0
- package/out/src/utility/verifyOverlayOutput.js.map +1 -0
- package/out/src/utility/walletResultGuards.d.ts +14 -0
- package/out/src/utility/walletResultGuards.d.ts.map +1 -0
- package/out/src/utility/walletResultGuards.js +28 -0
- package/out/src/utility/walletResultGuards.js.map +1 -0
- package/out/src/wab-client/WABClient.d.ts +4 -17
- package/out/src/wab-client/WABClient.d.ts.map +1 -1
- package/out/src/wab-client/WABClient.js +35 -12
- package/out/src/wab-client/WABClient.js.map +1 -1
- package/out/src/wab-client/WABResponseValidation.d.ts +48 -0
- package/out/src/wab-client/WABResponseValidation.d.ts.map +1 -0
- package/out/src/wab-client/WABResponseValidation.js +321 -0
- package/out/src/wab-client/WABResponseValidation.js.map +1 -0
- package/out/src/wab-client/WABTransport.d.ts +17 -23
- package/out/src/wab-client/WABTransport.d.ts.map +1 -1
- package/out/src/wab-client/WABTransport.js +130 -142
- package/out/src/wab-client/WABTransport.js.map +1 -1
- package/out/src/wab-client/auth-method-interactors/AuthMethodInteractor.d.ts +8 -0
- package/out/src/wab-client/auth-method-interactors/AuthMethodInteractor.d.ts.map +1 -1
- package/out/src/wab-client/auth-method-interactors/AuthMethodInteractor.js +3 -2
- package/out/src/wab-client/auth-method-interactors/AuthMethodInteractor.js.map +1 -1
- package/package.json +36 -32
- package/docs/open-rpc/index.html +0 -46
|
@@ -3,12 +3,170 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.WalletAuthenticationManager = exports.WABAccountContinuityError = void 0;
|
|
4
4
|
const CWIStyleWalletManager_1 = require("./CWIStyleWalletManager");
|
|
5
5
|
const sdk_1 = require("@bsv/sdk");
|
|
6
|
+
const utils_1 = require("@bsv/sdk/primitives/utils");
|
|
6
7
|
const WABTransport_1 = require("./wab-client/WABTransport");
|
|
8
|
+
const WABResponseValidation_1 = require("./wab-client/WABResponseValidation");
|
|
9
|
+
const ScriptTemplateBRC29_1 = require("./utility/ScriptTemplateBRC29");
|
|
10
|
+
const generateChange_1 = require("./storage/methods/generateChange");
|
|
7
11
|
const DEFAULT_AUTH_SESSION_TTL_MS = 10 * 60 * 1000;
|
|
8
12
|
const MAX_AUTH_SESSION_TTL_MS = 60 * 60 * 1000;
|
|
13
|
+
const AUTH_COMPONENT = 'wallet-toolbox.authentication-manager';
|
|
14
|
+
const AUTH_EVENT = 'wallet-toolbox.authentication.';
|
|
15
|
+
const EXISTING_USER = 'existing-user';
|
|
16
|
+
const NEW_USER = 'new-user';
|
|
17
|
+
const PENDING_REGISTRATION = 'pending';
|
|
18
|
+
const WAB_FAUCET_RECOVERY_BASKET = 'wab faucet recovery';
|
|
19
|
+
const WAB_FAUCET_RECOVERY_VERSION = 1;
|
|
20
|
+
const MAX_WAB_FAUCET_RECOVERY_BEEF_BYTES = 16 * 1024 * 1024;
|
|
21
|
+
function parseFaucetRecoveryInstructions(value) {
|
|
22
|
+
if (typeof value !== 'string' || value.length === 0 || value.length > 2048)
|
|
23
|
+
return undefined;
|
|
24
|
+
let parsed;
|
|
25
|
+
try {
|
|
26
|
+
parsed = JSON.parse(value);
|
|
27
|
+
}
|
|
28
|
+
catch {
|
|
29
|
+
return undefined;
|
|
30
|
+
}
|
|
31
|
+
if (parsed == null || typeof parsed !== 'object' || Array.isArray(parsed))
|
|
32
|
+
return undefined;
|
|
33
|
+
const record = parsed;
|
|
34
|
+
if (record.version !== WAB_FAUCET_RECOVERY_VERSION ||
|
|
35
|
+
typeof record.faucetOutpoint !== 'string' ||
|
|
36
|
+
!/^[0-9a-f]{64}\.(?:0|[1-9]\d*)$/i.test(record.faucetOutpoint) ||
|
|
37
|
+
typeof record.derivationPrefix !== 'string' ||
|
|
38
|
+
typeof record.derivationSuffix !== 'string' ||
|
|
39
|
+
typeof record.senderIdentityKey !== 'string') {
|
|
40
|
+
return undefined;
|
|
41
|
+
}
|
|
42
|
+
try {
|
|
43
|
+
const prefix = (0, utils_1.toArray)(record.derivationPrefix, 'base64');
|
|
44
|
+
const suffix = (0, utils_1.toArray)(record.derivationSuffix, 'base64');
|
|
45
|
+
if (prefix.length === 0 ||
|
|
46
|
+
prefix.length > 64 ||
|
|
47
|
+
suffix.length === 0 ||
|
|
48
|
+
suffix.length > 64 ||
|
|
49
|
+
(0, utils_1.toBase64)(prefix) !== record.derivationPrefix ||
|
|
50
|
+
(0, utils_1.toBase64)(suffix) !== record.derivationSuffix ||
|
|
51
|
+
sdk_1.PublicKey.fromString(record.senderIdentityKey).toString() !== record.senderIdentityKey) {
|
|
52
|
+
return undefined;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
catch {
|
|
56
|
+
return undefined;
|
|
57
|
+
}
|
|
58
|
+
return record;
|
|
59
|
+
}
|
|
60
|
+
function transactionInputOutpoint(transaction, inputIndex) {
|
|
61
|
+
const input = transaction.inputs[inputIndex];
|
|
62
|
+
if (input == null || !Number.isSafeInteger(input.sourceOutputIndex) || input.sourceOutputIndex < 0)
|
|
63
|
+
return undefined;
|
|
64
|
+
const sourceTxid = input.sourceTXID ?? input.sourceTransaction?.id('hex');
|
|
65
|
+
if (sourceTxid == null || !/^[0-9a-f]{64}$/i.test(sourceTxid))
|
|
66
|
+
return undefined;
|
|
67
|
+
return `${sourceTxid.toLowerCase()}.${input.sourceOutputIndex}`;
|
|
68
|
+
}
|
|
69
|
+
async function recoverWABFaucetPayment(wallet, faucetOutpoint, adminOriginator, resumeNosend = true) {
|
|
70
|
+
const label = `wab faucet ${faucetOutpoint.slice(0, 64)}`;
|
|
71
|
+
const listed = await wallet.listOutputs({
|
|
72
|
+
basket: WAB_FAUCET_RECOVERY_BASKET,
|
|
73
|
+
include: 'entire transactions',
|
|
74
|
+
includeCustomInstructions: true,
|
|
75
|
+
limit: 100
|
|
76
|
+
}, adminOriginator);
|
|
77
|
+
if (!Array.isArray(listed.outputs))
|
|
78
|
+
throw new Error('Wallet returned invalid faucet recovery outputs.');
|
|
79
|
+
const candidates = listed.outputs.flatMap(output => {
|
|
80
|
+
const instructions = parseFaucetRecoveryInstructions(output.customInstructions);
|
|
81
|
+
return instructions?.faucetOutpoint.toLowerCase() === faucetOutpoint ? [{ output, instructions }] : [];
|
|
82
|
+
});
|
|
83
|
+
if (candidates.length > 1)
|
|
84
|
+
throw new Error('Wallet returned ambiguous faucet recovery outputs.');
|
|
85
|
+
if (candidates.length === 1) {
|
|
86
|
+
if (!Array.isArray(listed.BEEF) ||
|
|
87
|
+
listed.BEEF.length === 0 ||
|
|
88
|
+
listed.BEEF.length > MAX_WAB_FAUCET_RECOVERY_BEEF_BYTES) {
|
|
89
|
+
throw new Error('Wallet omitted bounded faucet recovery transaction evidence.');
|
|
90
|
+
}
|
|
91
|
+
const { output, instructions } = candidates[0];
|
|
92
|
+
const match = /^([0-9a-f]{64})\.(0|[1-9]\d*)$/i.exec(output.outpoint);
|
|
93
|
+
if (match == null)
|
|
94
|
+
throw new Error('Wallet returned an invalid faucet recovery outpoint.');
|
|
95
|
+
const outputIndex = Number(match[2]);
|
|
96
|
+
if (!Number.isSafeInteger(outputIndex) || outputIndex > 0xffffffff) {
|
|
97
|
+
throw new Error('Wallet returned an invalid faucet recovery output index.');
|
|
98
|
+
}
|
|
99
|
+
const beef = sdk_1.Beef.fromBinaryStrict(listed.BEEF);
|
|
100
|
+
const transaction = beef.findTxid(match[1].toLowerCase())?.tx;
|
|
101
|
+
const transactionOutput = transaction?.outputs[outputIndex];
|
|
102
|
+
if (transaction == null ||
|
|
103
|
+
transactionOutput == null ||
|
|
104
|
+
transactionOutput.satoshis !== output.satoshis ||
|
|
105
|
+
transaction.inputs.filter((_, index) => transactionInputOutpoint(transaction, index) === faucetOutpoint)
|
|
106
|
+
.length !== 1) {
|
|
107
|
+
throw new Error('Wallet returned unrelated faucet recovery transaction evidence.');
|
|
108
|
+
}
|
|
109
|
+
const result = await wallet.internalizeAction({
|
|
110
|
+
tx: beef.toBinaryAtomic(transaction.id('hex')),
|
|
111
|
+
outputs: [
|
|
112
|
+
{
|
|
113
|
+
outputIndex,
|
|
114
|
+
protocol: 'wallet payment',
|
|
115
|
+
paymentRemittance: {
|
|
116
|
+
derivationPrefix: instructions.derivationPrefix,
|
|
117
|
+
derivationSuffix: instructions.derivationSuffix,
|
|
118
|
+
senderIdentityKey: instructions.senderIdentityKey
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
],
|
|
122
|
+
description: 'Recover WAB faucet funding'
|
|
123
|
+
}, adminOriginator);
|
|
124
|
+
if (result.accepted !== true)
|
|
125
|
+
throw new Error('Wallet did not accept its recovered WAB faucet payment.');
|
|
126
|
+
return true;
|
|
127
|
+
}
|
|
128
|
+
const actions = await wallet.listActions({
|
|
129
|
+
labels: [label],
|
|
130
|
+
includeLabels: true,
|
|
131
|
+
includeInputs: true,
|
|
132
|
+
includeOutputs: true,
|
|
133
|
+
includeOutputLockingScripts: true,
|
|
134
|
+
limit: 10
|
|
135
|
+
}, adminOriginator);
|
|
136
|
+
if (!Array.isArray(actions.actions))
|
|
137
|
+
throw new Error('Wallet returned invalid faucet recovery actions.');
|
|
138
|
+
const matchingActions = actions.actions.filter(action => action.labels?.includes(label));
|
|
139
|
+
if (matchingActions.length === 0)
|
|
140
|
+
return false;
|
|
141
|
+
if (matchingActions.length !== 1)
|
|
142
|
+
throw new Error('Wallet returned ambiguous faucet recovery actions.');
|
|
143
|
+
const action = matchingActions[0];
|
|
144
|
+
const matchingInputs = action.inputs?.filter(input => input.sourceOutpoint.toLowerCase() === faucetOutpoint) ?? [];
|
|
145
|
+
const matchingOutputs = action.outputs?.filter(output => {
|
|
146
|
+
const instructions = parseFaucetRecoveryInstructions(output.customInstructions);
|
|
147
|
+
return instructions?.faucetOutpoint.toLowerCase() === faucetOutpoint;
|
|
148
|
+
}) ?? [];
|
|
149
|
+
if (matchingInputs.length !== 1 || matchingOutputs.length !== 1) {
|
|
150
|
+
throw new Error('Wallet returned unrelated faucet recovery action evidence.');
|
|
151
|
+
}
|
|
152
|
+
if ((action.status === 'completed' || action.status === 'sending' || action.status === 'unproven') &&
|
|
153
|
+
matchingOutputs[0].basket === 'default') {
|
|
154
|
+
return true;
|
|
155
|
+
}
|
|
156
|
+
if (action.status === 'nosend') {
|
|
157
|
+
if (!resumeNosend)
|
|
158
|
+
throw new Error('Prior WAB faucet action remained unsent after broadcast retry.');
|
|
159
|
+
await wallet.createAction({
|
|
160
|
+
description: 'Resume WAB faucet broadcast',
|
|
161
|
+
options: { sendWith: [action.txid], acceptDelayedBroadcast: false }
|
|
162
|
+
}, adminOriginator);
|
|
163
|
+
return await recoverWABFaucetPayment(wallet, faucetOutpoint, adminOriginator, false);
|
|
164
|
+
}
|
|
165
|
+
throw new Error('Prior WAB faucet action requires reconciliation before retrying.');
|
|
166
|
+
}
|
|
9
167
|
class WABAccountContinuityError extends Error {
|
|
10
168
|
code = 'WERR_WAB_ACCOUNT_CONTINUITY';
|
|
11
|
-
constructor(message = 'WAB and UMP
|
|
169
|
+
constructor(message = 'WAB and UMP accounts disagree; retry or recover.') {
|
|
12
170
|
super(message);
|
|
13
171
|
this.name = 'WABAccountContinuityError';
|
|
14
172
|
}
|
|
@@ -24,12 +182,14 @@ class WalletAuthenticationManager extends CWIStyleWalletManager_1.CWIStyleWallet
|
|
|
24
182
|
wabClient; // instance of WABClient
|
|
25
183
|
authMethod; // chosen AuthMethod interactor
|
|
26
184
|
authSession;
|
|
185
|
+
phoneChangeSession;
|
|
186
|
+
pendingRegistrationPresentationKey;
|
|
27
187
|
authSessionTtlMs;
|
|
28
188
|
constructor(...[adminOriginator, walletBuilder, interactor, recoveryKeySaver, passwordRetriever, wabClient, authMethod, stateSnapshot, options = {}]) {
|
|
29
189
|
super(adminOriginator, walletBuilder, interactor, recoveryKeySaver, passwordRetriever,
|
|
30
190
|
// Here, we provide a custom new wallet funder that uses the Secret Server
|
|
31
191
|
async (presentationKey, wallet, adminOriginator) => {
|
|
32
|
-
const faucetResponse = await this.wabClient.requestFaucet(
|
|
192
|
+
const faucetResponse = await this.wabClient.requestFaucet((0, utils_1.toHex)(presentationKey));
|
|
33
193
|
const paymentData = faucetResponse.paymentData;
|
|
34
194
|
const faucetSucceeded = faucetResponse.success;
|
|
35
195
|
if (faucetSucceeded !== true || paymentData == null) {
|
|
@@ -47,37 +207,139 @@ class WalletAuthenticationManager extends CWIStyleWalletManager_1.CWIStyleWallet
|
|
|
47
207
|
throw new Error('Faucet response missing required fields: k, tx, or txid');
|
|
48
208
|
}
|
|
49
209
|
try {
|
|
210
|
+
if (!/^[0-9a-f]{64}$/i.test(paymentData.txid)) {
|
|
211
|
+
throw new Error('Faucet transaction ID is invalid.');
|
|
212
|
+
}
|
|
213
|
+
if (!/^[0-9a-f]{1,64}$/i.test(paymentData.k)) {
|
|
214
|
+
throw new Error('Faucet R-puzzle scalar is invalid.');
|
|
215
|
+
}
|
|
216
|
+
const faucetK = new sdk_1.PrivateKey(paymentData.k, 16, 'be', 'error');
|
|
217
|
+
if (faucetK.isZero()) {
|
|
218
|
+
throw new Error('Faucet R-puzzle scalar is invalid.');
|
|
219
|
+
}
|
|
50
220
|
const tx = sdk_1.Transaction.fromAtomicBEEF(paymentData.tx);
|
|
51
|
-
const
|
|
221
|
+
const txid = tx.id('hex');
|
|
222
|
+
if (txid !== paymentData.txid.toLowerCase()) {
|
|
223
|
+
throw new Error('Faucet transaction ID does not match its transaction data.');
|
|
224
|
+
}
|
|
225
|
+
const faucetOutput = tx.outputs[0];
|
|
226
|
+
if (faucetOutput == null) {
|
|
227
|
+
throw new Error('Faucet transaction output 0 is missing.');
|
|
228
|
+
}
|
|
229
|
+
const faucetSatoshis = faucetOutput.satoshis;
|
|
230
|
+
if (typeof faucetSatoshis !== 'number' ||
|
|
231
|
+
!Number.isSafeInteger(faucetSatoshis) ||
|
|
232
|
+
faucetSatoshis <= 0 ||
|
|
233
|
+
faucetSatoshis > 21e14) {
|
|
234
|
+
throw new Error('Faucet transaction output 0 has an invalid amount.');
|
|
235
|
+
}
|
|
236
|
+
let rValue = faucetK.toPublicKey().getX().toArray();
|
|
237
|
+
if (rValue[0] > 127)
|
|
238
|
+
rValue = [0, ...rValue];
|
|
239
|
+
const faucetRedemptionPuzzle = new sdk_1.RPuzzle();
|
|
240
|
+
if (faucetOutput.lockingScript.toHex() !== faucetRedemptionPuzzle.lock(rValue).toHex()) {
|
|
241
|
+
throw new Error('Faucet transaction output 0 does not match its R-puzzle scalar.');
|
|
242
|
+
}
|
|
243
|
+
const randomRedemptionPrivateKey = sdk_1.PrivateKey.fromRandom();
|
|
244
|
+
const faucetRedeemUnlocker = faucetRedemptionPuzzle.unlock(faucetK, randomRedemptionPrivateKey);
|
|
245
|
+
const outpoint = `${txid}.0`;
|
|
246
|
+
if (paymentData.outputIndex !== undefined && paymentData.outputIndex !== 0) {
|
|
247
|
+
throw new Error('Faucet response output index does not match output 0.');
|
|
248
|
+
}
|
|
249
|
+
if (paymentData.amount !== undefined && paymentData.amount !== faucetSatoshis) {
|
|
250
|
+
throw new Error('Faucet response amount does not match output 0.');
|
|
251
|
+
}
|
|
252
|
+
if (await recoverWABFaucetPayment(wallet, outpoint, adminOriginator))
|
|
253
|
+
return;
|
|
254
|
+
const identityResult = await wallet.getPublicKey({ identityKey: true }, adminOriginator);
|
|
255
|
+
const identityKey = sdk_1.PublicKey.fromString(identityResult.publicKey).toString();
|
|
256
|
+
const paymentSender = sdk_1.PrivateKey.fromRandom();
|
|
257
|
+
const derivationPrefix = (0, utils_1.toBase64)((0, sdk_1.Random)(16));
|
|
258
|
+
const derivationSuffix = (0, utils_1.toBase64)((0, sdk_1.Random)(16));
|
|
259
|
+
const paymentTemplate = new ScriptTemplateBRC29_1.ScriptTemplateBRC29({
|
|
260
|
+
derivationPrefix,
|
|
261
|
+
derivationSuffix,
|
|
262
|
+
keyDeriver: new sdk_1.CachedKeyDeriver(paymentSender)
|
|
263
|
+
});
|
|
264
|
+
const paymentLock = paymentTemplate.lock(paymentSender.toString(), identityKey).toHex();
|
|
265
|
+
const recoveryInstructions = JSON.stringify({
|
|
266
|
+
version: 1,
|
|
267
|
+
faucetOutpoint: outpoint,
|
|
268
|
+
derivationPrefix,
|
|
269
|
+
derivationSuffix,
|
|
270
|
+
senderIdentityKey: paymentSender.toPublicKey().toString()
|
|
271
|
+
});
|
|
272
|
+
const signed = await (0, sdk_1.completeBoundAction)(wallet, {
|
|
52
273
|
inputBEEF: tx.toBEEF(),
|
|
53
274
|
inputs: [
|
|
54
275
|
{
|
|
55
|
-
outpoint
|
|
276
|
+
outpoint,
|
|
56
277
|
unlockingScriptLength: 108,
|
|
57
278
|
inputDescription: 'Fund from faucet'
|
|
58
279
|
}
|
|
59
280
|
],
|
|
281
|
+
outputs: [
|
|
282
|
+
{
|
|
283
|
+
lockingScript: paymentLock,
|
|
284
|
+
satoshis: generateChange_1.maxPossibleSatoshis,
|
|
285
|
+
outputDescription: 'Receive WAB faucet funds',
|
|
286
|
+
basket: 'wab faucet recovery',
|
|
287
|
+
customInstructions: recoveryInstructions
|
|
288
|
+
}
|
|
289
|
+
],
|
|
290
|
+
labels: [`wab faucet ${txid}`],
|
|
60
291
|
description: 'Fund wallet',
|
|
61
292
|
options: {
|
|
62
|
-
acceptDelayedBroadcast: false
|
|
293
|
+
acceptDelayedBroadcast: false,
|
|
294
|
+
noSend: true,
|
|
295
|
+
randomizeOutputs: false
|
|
63
296
|
}
|
|
64
|
-
},
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
const faucetRedemptionPuzzle = new sdk_1.RPuzzle();
|
|
70
|
-
const randomRedemptionPrivateKey = sdk_1.PrivateKey.fromRandom();
|
|
71
|
-
const faucetRedeemUnlocker = faucetRedemptionPuzzle.unlock(new sdk_1.BigNumber(paymentData.k, 16), randomRedemptionPrivateKey);
|
|
72
|
-
const faucetRedeemUnlockingScript = await faucetRedeemUnlocker.sign(faucetRedeemTX, 0);
|
|
73
|
-
await wallet.signAction({
|
|
74
|
-
reference: faucetRedeemTXCreationResult.signableTransaction.reference,
|
|
75
|
-
spends: {
|
|
297
|
+
}, {
|
|
298
|
+
inputSigners: {
|
|
299
|
+
[outpoint]: async (transaction, inputIndex) => await faucetRedeemUnlocker.sign(transaction, inputIndex)
|
|
300
|
+
},
|
|
301
|
+
outputSatoshisRanges: {
|
|
76
302
|
0: {
|
|
77
|
-
|
|
303
|
+
minimumSatoshis: 1,
|
|
304
|
+
maximumSatoshis: faucetSatoshis
|
|
78
305
|
}
|
|
79
306
|
}
|
|
307
|
+
}, adminOriginator);
|
|
308
|
+
const matches = signed.outputs.flatMap((output, outputIndex) => {
|
|
309
|
+
const outputSatoshis = output.satoshis;
|
|
310
|
+
return output.lockingScript.toHex() === paymentLock &&
|
|
311
|
+
typeof outputSatoshis === 'number' &&
|
|
312
|
+
outputSatoshis >= 1 &&
|
|
313
|
+
outputSatoshis <= faucetSatoshis
|
|
314
|
+
? [outputIndex]
|
|
315
|
+
: [];
|
|
80
316
|
});
|
|
317
|
+
if (matches.length !== 1) {
|
|
318
|
+
throw new Error('Faucet redemption omitted or duplicated its wallet-owned output.');
|
|
319
|
+
}
|
|
320
|
+
const redemptionTxid = signed.id('hex');
|
|
321
|
+
await wallet.createAction({
|
|
322
|
+
description: 'Broadcast WAB faucet funding',
|
|
323
|
+
options: { sendWith: [redemptionTxid], acceptDelayedBroadcast: false }
|
|
324
|
+
}, adminOriginator);
|
|
325
|
+
const internalized = await wallet.internalizeAction({
|
|
326
|
+
tx: signed.toAtomicBEEF(),
|
|
327
|
+
outputs: [
|
|
328
|
+
{
|
|
329
|
+
outputIndex: matches[0],
|
|
330
|
+
protocol: 'wallet payment',
|
|
331
|
+
paymentRemittance: {
|
|
332
|
+
derivationPrefix,
|
|
333
|
+
derivationSuffix,
|
|
334
|
+
senderIdentityKey: paymentSender.toPublicKey().toString()
|
|
335
|
+
}
|
|
336
|
+
}
|
|
337
|
+
],
|
|
338
|
+
description: 'Receive WAB faucet funding'
|
|
339
|
+
}, adminOriginator);
|
|
340
|
+
if (internalized.accepted !== true) {
|
|
341
|
+
throw new Error('Wallet did not accept its WAB faucet payment.');
|
|
342
|
+
}
|
|
81
343
|
}
|
|
82
344
|
catch (error) {
|
|
83
345
|
const message = error instanceof Error ? error.message : String(error);
|
|
@@ -87,9 +349,7 @@ class WalletAuthenticationManager extends CWIStyleWalletManager_1.CWIStyleWallet
|
|
|
87
349
|
this.wabClient = wabClient;
|
|
88
350
|
this.authMethod = authMethod;
|
|
89
351
|
const authSessionTtlMs = options.authSessionTtlMs ?? DEFAULT_AUTH_SESSION_TTL_MS;
|
|
90
|
-
if (!Number.isInteger(authSessionTtlMs) ||
|
|
91
|
-
authSessionTtlMs <= 0 ||
|
|
92
|
-
authSessionTtlMs > MAX_AUTH_SESSION_TTL_MS) {
|
|
352
|
+
if (!Number.isInteger(authSessionTtlMs) || authSessionTtlMs <= 0 || authSessionTtlMs > MAX_AUTH_SESSION_TTL_MS) {
|
|
93
353
|
throw new TypeError(`authSessionTtlMs must be between 1 and ${MAX_AUTH_SESSION_TTL_MS}.`);
|
|
94
354
|
}
|
|
95
355
|
this.authSessionTtlMs = authSessionTtlMs;
|
|
@@ -109,12 +369,13 @@ class WalletAuthenticationManager extends CWIStyleWalletManager_1.CWIStyleWallet
|
|
|
109
369
|
*/
|
|
110
370
|
async startAuth(payload) {
|
|
111
371
|
if (this.authMethod == null) {
|
|
112
|
-
throw new Error('No
|
|
372
|
+
throw new Error('No WAB authentication method selected.');
|
|
113
373
|
}
|
|
114
374
|
const authMethod = this.authMethod;
|
|
115
375
|
if (this.authenticated)
|
|
116
376
|
throw new Error('User is already authenticated');
|
|
117
377
|
this.cancelAuth();
|
|
378
|
+
this.pendingRegistrationPresentationKey = undefined;
|
|
118
379
|
const presentationKey = this.generateTemporaryPresentationKey();
|
|
119
380
|
const correlationId = this.telemetry.enabled === true ? this.telemetry.createCorrelationId() : undefined;
|
|
120
381
|
this.authSession = {
|
|
@@ -124,8 +385,8 @@ class WalletAuthenticationManager extends CWIStyleWalletManager_1.CWIStyleWallet
|
|
|
124
385
|
...(correlationId !== undefined ? { correlationId } : {})
|
|
125
386
|
};
|
|
126
387
|
this.telemetry.capture({
|
|
127
|
-
name:
|
|
128
|
-
component:
|
|
388
|
+
name: `${AUTH_EVENT}wab-start.started`,
|
|
389
|
+
component: AUTH_COMPONENT,
|
|
129
390
|
severity: 'debug',
|
|
130
391
|
correlationId,
|
|
131
392
|
attributes: { methodType: authMethod.methodType }
|
|
@@ -134,14 +395,12 @@ class WalletAuthenticationManager extends CWIStyleWalletManager_1.CWIStyleWallet
|
|
|
134
395
|
const startRes = await this.wabClient.startAuthMethod(authMethod, presentationKey, payload, correlationId);
|
|
135
396
|
const startSucceeded = startRes.success;
|
|
136
397
|
if (startSucceeded !== true) {
|
|
137
|
-
const message = startRes.message != null && startRes.message.length > 0
|
|
138
|
-
? startRes.message
|
|
139
|
-
: 'Failed to start WAB auth method';
|
|
398
|
+
const message = startRes.message != null && startRes.message.length > 0 ? startRes.message : 'Failed to start WAB auth method';
|
|
140
399
|
throw new Error(message);
|
|
141
400
|
}
|
|
142
401
|
this.telemetry.capture({
|
|
143
|
-
name:
|
|
144
|
-
component:
|
|
402
|
+
name: `${AUTH_EVENT}wab-start.completed`,
|
|
403
|
+
component: AUTH_COMPONENT,
|
|
145
404
|
severity: 'info',
|
|
146
405
|
correlationId,
|
|
147
406
|
attributes: { methodType: authMethod.methodType }
|
|
@@ -150,14 +409,12 @@ class WalletAuthenticationManager extends CWIStyleWalletManager_1.CWIStyleWallet
|
|
|
150
409
|
catch (error) {
|
|
151
410
|
this.cancelAuth();
|
|
152
411
|
this.telemetry.capture({
|
|
153
|
-
name:
|
|
154
|
-
component:
|
|
412
|
+
name: `${AUTH_EVENT}wab-start.failed`,
|
|
413
|
+
component: AUTH_COMPONENT,
|
|
155
414
|
severity: 'warn',
|
|
156
415
|
correlationId,
|
|
157
416
|
attributes: { methodType: authMethod.methodType },
|
|
158
|
-
error: error instanceof WABTransport_1.WABClientError
|
|
159
|
-
? error
|
|
160
|
-
: new Error('WAB authentication start failed.')
|
|
417
|
+
error: error instanceof WABTransport_1.WABClientError ? error : new Error('WAB authentication start failed.')
|
|
161
418
|
});
|
|
162
419
|
throw error;
|
|
163
420
|
}
|
|
@@ -167,31 +424,29 @@ class WalletAuthenticationManager extends CWIStyleWalletManager_1.CWIStyleWallet
|
|
|
167
424
|
*/
|
|
168
425
|
async completeAuth(payload) {
|
|
169
426
|
if (this.authMethod == null || this.authSession == null) {
|
|
170
|
-
throw new Error('
|
|
427
|
+
throw new Error('Start WAB authentication first.');
|
|
171
428
|
}
|
|
172
429
|
const authMethod = this.authMethod;
|
|
173
430
|
if (this.authSession.methodType !== authMethod.methodType) {
|
|
174
431
|
this.cancelAuth();
|
|
175
|
-
throw new Error('
|
|
432
|
+
throw new Error('WAB authentication method changed; restart.');
|
|
176
433
|
}
|
|
177
434
|
if (Date.now() >= this.authSession.expiresAt) {
|
|
178
435
|
this.cancelAuth();
|
|
179
|
-
throw new Error('
|
|
436
|
+
throw new Error('WAB authentication expired; restart.');
|
|
180
437
|
}
|
|
181
438
|
const session = this.authSession;
|
|
182
439
|
const result = await this.wabClient.completeAuthMethod(authMethod, session.presentationKey, payload, session.correlationId);
|
|
183
440
|
const authSucceeded = result.success;
|
|
184
441
|
if (authSucceeded !== true || result.presentationKey == null || result.presentationKey.length === 0) {
|
|
185
442
|
this.telemetry.capture({
|
|
186
|
-
name:
|
|
187
|
-
component:
|
|
443
|
+
name: `${AUTH_EVENT}wab-complete.rejected`,
|
|
444
|
+
component: AUTH_COMPONENT,
|
|
188
445
|
severity: 'warn',
|
|
189
446
|
correlationId: session.correlationId,
|
|
190
447
|
attributes: { methodType: session.methodType }
|
|
191
448
|
});
|
|
192
|
-
const message = result.message != null && result.message.length > 0
|
|
193
|
-
? result.message
|
|
194
|
-
: 'Failed to complete WAB auth';
|
|
449
|
+
const message = result.message != null && result.message.length > 0 ? result.message : 'Failed to complete WAB auth';
|
|
195
450
|
throw new Error(message);
|
|
196
451
|
}
|
|
197
452
|
if (!/^[0-9a-fA-F]{64}$/.test(result.presentationKey)) {
|
|
@@ -200,13 +455,14 @@ class WalletAuthenticationManager extends CWIStyleWalletManager_1.CWIStyleWallet
|
|
|
200
455
|
}
|
|
201
456
|
this.cancelAuth();
|
|
202
457
|
const wabAccountStatus = this.inferAccountStatus(result, session.presentationKey);
|
|
458
|
+
const registrationStatus = this.readRegistrationStatus(result);
|
|
203
459
|
try {
|
|
204
|
-
await this.
|
|
460
|
+
await this.provideWABPresentationKey(result, wabAccountStatus);
|
|
205
461
|
}
|
|
206
462
|
catch (error) {
|
|
207
463
|
this.telemetry.capture({
|
|
208
|
-
name:
|
|
209
|
-
component:
|
|
464
|
+
name: `${AUTH_EVENT}ump-continuity.failed`,
|
|
465
|
+
component: AUTH_COMPONENT,
|
|
210
466
|
severity: 'warn',
|
|
211
467
|
correlationId: session.correlationId,
|
|
212
468
|
attributes: {
|
|
@@ -217,27 +473,12 @@ class WalletAuthenticationManager extends CWIStyleWalletManager_1.CWIStyleWallet
|
|
|
217
473
|
});
|
|
218
474
|
throw error;
|
|
219
475
|
}
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
this.telemetry.capture({
|
|
224
|
-
name: 'wallet-toolbox.authentication.account-continuity.mismatch',
|
|
225
|
-
component: 'wallet-toolbox.authentication-manager',
|
|
226
|
-
severity: 'error',
|
|
227
|
-
correlationId: session.correlationId,
|
|
228
|
-
attributes: {
|
|
229
|
-
methodType: session.methodType,
|
|
230
|
-
wabAccountStatus,
|
|
231
|
-
umpAccountStatus: 'new-user'
|
|
232
|
-
},
|
|
233
|
-
error
|
|
234
|
-
});
|
|
235
|
-
throw error;
|
|
236
|
-
}
|
|
237
|
-
const continuity = wabAccountStatus === this.authenticationFlow ? 'matched' : 'ump-existing';
|
|
476
|
+
this.assertAccountContinuity(wabAccountStatus, registrationStatus, session);
|
|
477
|
+
await this.reconcilePendingRegistration(result, registrationStatus);
|
|
478
|
+
const continuity = this.describeContinuity(wabAccountStatus, registrationStatus);
|
|
238
479
|
this.telemetry.capture({
|
|
239
|
-
name:
|
|
240
|
-
component:
|
|
480
|
+
name: `${AUTH_EVENT}completed`,
|
|
481
|
+
component: AUTH_COMPONENT,
|
|
241
482
|
severity: continuity === 'matched' ? 'info' : 'warn',
|
|
242
483
|
correlationId: session.correlationId,
|
|
243
484
|
attributes: {
|
|
@@ -251,40 +492,252 @@ class WalletAuthenticationManager extends CWIStyleWalletManager_1.CWIStyleWallet
|
|
|
251
492
|
cancelAuth() {
|
|
252
493
|
this.authSession = undefined;
|
|
253
494
|
}
|
|
495
|
+
/**
|
|
496
|
+
* Publishes a new UMP token before committing WAB's registration state.
|
|
497
|
+
* Finalization is deliberately best-effort: if its response is lost, the
|
|
498
|
+
* next verified login finds the UMP token and repairs WAB idempotently.
|
|
499
|
+
*/
|
|
500
|
+
async providePassword(password) {
|
|
501
|
+
const shouldFinalize = this.pendingRegistrationPresentationKey != null && this.authenticationFlow === NEW_USER;
|
|
502
|
+
await super.providePassword(password);
|
|
503
|
+
if (shouldFinalize)
|
|
504
|
+
await this.finalizePendingRegistration();
|
|
505
|
+
}
|
|
506
|
+
readRegistrationStatus(result) {
|
|
507
|
+
const status = result.registrationStatus;
|
|
508
|
+
if (status === undefined)
|
|
509
|
+
return 'active';
|
|
510
|
+
if (status !== 'pending' && status !== 'active') {
|
|
511
|
+
throw new WABAccountContinuityError('WAB returned an invalid registration status.');
|
|
512
|
+
}
|
|
513
|
+
return status;
|
|
514
|
+
}
|
|
515
|
+
assertAccountContinuity(wabAccountStatus, registrationStatus, session) {
|
|
516
|
+
const mismatch = wabAccountStatus === EXISTING_USER && this.authenticationFlow !== EXISTING_USER;
|
|
517
|
+
if (!mismatch || registrationStatus === PENDING_REGISTRATION)
|
|
518
|
+
return;
|
|
519
|
+
super.destroy();
|
|
520
|
+
const error = new WABAccountContinuityError();
|
|
521
|
+
this.telemetry.capture({
|
|
522
|
+
name: `${AUTH_EVENT}account-continuity.mismatch`,
|
|
523
|
+
component: AUTH_COMPONENT,
|
|
524
|
+
severity: 'error',
|
|
525
|
+
correlationId: session.correlationId,
|
|
526
|
+
attributes: {
|
|
527
|
+
methodType: session.methodType,
|
|
528
|
+
wabAccountStatus,
|
|
529
|
+
umpAccountStatus: NEW_USER
|
|
530
|
+
},
|
|
531
|
+
error
|
|
532
|
+
});
|
|
533
|
+
throw error;
|
|
534
|
+
}
|
|
535
|
+
async reconcilePendingRegistration(result, registrationStatus) {
|
|
536
|
+
if (registrationStatus !== PENDING_REGISTRATION)
|
|
537
|
+
return;
|
|
538
|
+
this.pendingRegistrationPresentationKey = result.presentationKey;
|
|
539
|
+
if (this.authenticationFlow === EXISTING_USER)
|
|
540
|
+
await this.finalizePendingRegistration();
|
|
541
|
+
}
|
|
542
|
+
describeContinuity(wabAccountStatus, registrationStatus) {
|
|
543
|
+
if (registrationStatus === PENDING_REGISTRATION && this.authenticationFlow === NEW_USER) {
|
|
544
|
+
return 'registration-resumed';
|
|
545
|
+
}
|
|
546
|
+
if (wabAccountStatus === this.authenticationFlow)
|
|
547
|
+
return 'matched';
|
|
548
|
+
return 'ump-existing';
|
|
549
|
+
}
|
|
550
|
+
async finalizePendingRegistration() {
|
|
551
|
+
const presentationKey = this.pendingRegistrationPresentationKey;
|
|
552
|
+
if (presentationKey == null)
|
|
553
|
+
return;
|
|
554
|
+
try {
|
|
555
|
+
const result = await this.wabClient.finalizeRegistration(presentationKey);
|
|
556
|
+
if (result.success !== true || result.registrationStatus !== 'active') {
|
|
557
|
+
throw new Error(result.message || 'WAB registration finalization was not acknowledged.');
|
|
558
|
+
}
|
|
559
|
+
this.pendingRegistrationPresentationKey = undefined;
|
|
560
|
+
this.telemetry.capture({
|
|
561
|
+
name: `${AUTH_EVENT}registration-finalize.completed`,
|
|
562
|
+
component: AUTH_COMPONENT,
|
|
563
|
+
severity: 'info'
|
|
564
|
+
});
|
|
565
|
+
}
|
|
566
|
+
catch (error) {
|
|
567
|
+
this.telemetry.capture({
|
|
568
|
+
name: `${AUTH_EVENT}registration-finalize.deferred`,
|
|
569
|
+
component: AUTH_COMPONENT,
|
|
570
|
+
severity: 'warn',
|
|
571
|
+
error: new Error('WAB registration finalization was deferred.', { cause: error })
|
|
572
|
+
});
|
|
573
|
+
}
|
|
574
|
+
}
|
|
575
|
+
readPendingPhoneChange(result) {
|
|
576
|
+
const presentationKey = result.pendingPresentationKey;
|
|
577
|
+
const changeId = result.pendingPhoneChangeId;
|
|
578
|
+
if (presentationKey === undefined && changeId === undefined)
|
|
579
|
+
return undefined;
|
|
580
|
+
if (!/^[0-9a-fA-F]{64}$/.test(presentationKey ?? '') || !Number.isSafeInteger(changeId) || changeId <= 0) {
|
|
581
|
+
throw new WABAccountContinuityError('WAB returned invalid pending phone-change data.');
|
|
582
|
+
}
|
|
583
|
+
return { presentationKey: presentationKey, changeId: changeId };
|
|
584
|
+
}
|
|
585
|
+
async provideWABPresentationKey(result, wabAccountStatus) {
|
|
586
|
+
const umpTokenOutpoint = typeof result.umpTokenOutpoint === 'string' ? result.umpTokenOutpoint : undefined;
|
|
587
|
+
const lookupOptions = umpTokenOutpoint == null ? undefined : { pinnedOutpoint: umpTokenOutpoint };
|
|
588
|
+
const pending = this.readPendingPhoneChange(result);
|
|
589
|
+
let usePending = false;
|
|
590
|
+
try {
|
|
591
|
+
await this.providePresentationKey((0, utils_1.toArray)(result.presentationKey, 'hex'), lookupOptions);
|
|
592
|
+
}
|
|
593
|
+
catch (error) {
|
|
594
|
+
if (pending == null)
|
|
595
|
+
throw error;
|
|
596
|
+
usePending = true;
|
|
597
|
+
}
|
|
598
|
+
if (pending != null &&
|
|
599
|
+
(usePending || (wabAccountStatus === EXISTING_USER && this.authenticationFlow !== EXISTING_USER))) {
|
|
600
|
+
await this.providePresentationKey((0, utils_1.toArray)(pending.presentationKey, 'hex'), lookupOptions);
|
|
601
|
+
if (this.authenticationFlow === EXISTING_USER) {
|
|
602
|
+
await this.finalizePendingPhoneChange(result.presentationKey, pending);
|
|
603
|
+
}
|
|
604
|
+
}
|
|
605
|
+
}
|
|
606
|
+
async finalizePendingPhoneChange(currentPresentationKey, pending) {
|
|
607
|
+
const finalized = await this.phoneChange('finalize', {
|
|
608
|
+
changeId: pending.changeId,
|
|
609
|
+
presentationKey: currentPresentationKey,
|
|
610
|
+
newPresentationKey: pending.presentationKey
|
|
611
|
+
});
|
|
612
|
+
if (finalized.success !== true || finalized.changeId !== pending.changeId) {
|
|
613
|
+
throw new WABAccountContinuityError(finalized.message || 'WAB could not finalize the pending phone change.');
|
|
614
|
+
}
|
|
615
|
+
}
|
|
616
|
+
/**
|
|
617
|
+
* Starts OTP verification for a replacement phone number. The same number
|
|
618
|
+
* is valid and intentionally produces a fresh presentation key/hash.
|
|
619
|
+
*/
|
|
620
|
+
async startPhoneNumberChange(phoneNumber) {
|
|
621
|
+
if (!this.authenticated)
|
|
622
|
+
throw new Error('Not authenticated');
|
|
623
|
+
const normalizedPhone = phoneNumber.trim();
|
|
624
|
+
const currentPresentationKey = (0, utils_1.toHex)(await this.getFactor('presentationKey'));
|
|
625
|
+
const response = await this.phoneChange('start', {
|
|
626
|
+
presentationKey: currentPresentationKey,
|
|
627
|
+
phoneNumber: normalizedPhone
|
|
628
|
+
});
|
|
629
|
+
if (response.success !== true)
|
|
630
|
+
throw new Error(response.message || 'Phone change failed');
|
|
631
|
+
this.phoneChangeSession = {
|
|
632
|
+
phoneNumber: normalizedPhone,
|
|
633
|
+
presentationKey: currentPresentationKey
|
|
634
|
+
};
|
|
635
|
+
}
|
|
636
|
+
/**
|
|
637
|
+
* Completes phone verification and stages the WAB association before
|
|
638
|
+
* publishing the UMP key rotation. WAB retains both the current and pending
|
|
639
|
+
* presentation keys until finalization, so either side of an interrupted
|
|
640
|
+
* transition remains recoverable on the next verified login.
|
|
641
|
+
*/
|
|
642
|
+
async completePhoneNumberChange(otp) {
|
|
643
|
+
const session = this.phoneChangeSession;
|
|
644
|
+
if (session == null)
|
|
645
|
+
throw new Error('No phone change');
|
|
646
|
+
if (session.changeToken == null) {
|
|
647
|
+
const authorization = await this.phoneChange('complete', {
|
|
648
|
+
presentationKey: session.presentationKey,
|
|
649
|
+
phoneNumber: session.phoneNumber,
|
|
650
|
+
otp: otp.trim()
|
|
651
|
+
});
|
|
652
|
+
if (authorization.success !== true) {
|
|
653
|
+
throw new Error(authorization.message || 'Phone change failed');
|
|
654
|
+
}
|
|
655
|
+
const resumable = /^[0-9a-fA-F]{64}$/.test(authorization.pendingPresentationKey ?? '') &&
|
|
656
|
+
Number.isSafeInteger(authorization.pendingPhoneChangeId) &&
|
|
657
|
+
authorization.pendingPhoneChangeId > 0;
|
|
658
|
+
if (resumable) {
|
|
659
|
+
session.newKey = (0, utils_1.toArray)(authorization.pendingPresentationKey, 'hex');
|
|
660
|
+
session.changeId = authorization.pendingPhoneChangeId;
|
|
661
|
+
}
|
|
662
|
+
else if (typeof authorization.changeToken === 'string' && authorization.changeToken.length > 0) {
|
|
663
|
+
session.changeToken = authorization.changeToken;
|
|
664
|
+
}
|
|
665
|
+
else {
|
|
666
|
+
throw new Error(authorization.message || 'Phone change failed');
|
|
667
|
+
}
|
|
668
|
+
}
|
|
669
|
+
session.newKey ??= (0, sdk_1.Random)(32);
|
|
670
|
+
if (session.changeId == null) {
|
|
671
|
+
const committed = await this.phoneChange('commit', {
|
|
672
|
+
changeToken: session.changeToken,
|
|
673
|
+
presentationKey: session.presentationKey,
|
|
674
|
+
newPresentationKey: (0, utils_1.toHex)(session.newKey)
|
|
675
|
+
});
|
|
676
|
+
if (committed.success !== true || !Number.isSafeInteger(committed.changeId) || committed.changeId <= 0) {
|
|
677
|
+
throw new Error(committed.message || 'Phone change failed');
|
|
678
|
+
}
|
|
679
|
+
session.changeId = committed.changeId;
|
|
680
|
+
}
|
|
681
|
+
const changeId = session.changeId;
|
|
682
|
+
if (session.umpUpdated !== true) {
|
|
683
|
+
await this.changePresentationKey(session.newKey);
|
|
684
|
+
session.umpUpdated = true;
|
|
685
|
+
}
|
|
686
|
+
const finalized = await this.phoneChange('finalize', {
|
|
687
|
+
changeId,
|
|
688
|
+
presentationKey: session.presentationKey,
|
|
689
|
+
newPresentationKey: (0, utils_1.toHex)(session.newKey)
|
|
690
|
+
});
|
|
691
|
+
if (finalized.success !== true || finalized.changeId !== changeId) {
|
|
692
|
+
throw new Error(finalized.message || 'Phone change failed');
|
|
693
|
+
}
|
|
694
|
+
this.phoneChangeSession = undefined;
|
|
695
|
+
return { changeId };
|
|
696
|
+
}
|
|
697
|
+
cancelPhoneNumberChange() {
|
|
698
|
+
this.phoneChangeSession = undefined;
|
|
699
|
+
}
|
|
254
700
|
destroy() {
|
|
255
701
|
this.cancelAuth();
|
|
702
|
+
this.cancelPhoneNumberChange();
|
|
703
|
+
this.pendingRegistrationPresentationKey = undefined;
|
|
256
704
|
super.destroy();
|
|
257
705
|
}
|
|
706
|
+
async phoneChange(phase, body) {
|
|
707
|
+
const response = await this.wabClient.transport.request(`/auth/phone-change/${phase}`, {
|
|
708
|
+
operation: 'phone-change',
|
|
709
|
+
body
|
|
710
|
+
});
|
|
711
|
+
return (0, WABResponseValidation_1.validateWABOperationResponse)(response, `phone-change-${phase}`);
|
|
712
|
+
}
|
|
258
713
|
inferAccountStatus(result, temporaryPresentationKey) {
|
|
259
714
|
if (result.presentationKey == null) {
|
|
260
715
|
throw new WABAccountContinuityError('WAB did not return a presentation key.');
|
|
261
716
|
}
|
|
262
717
|
const keyMatchesTemporary = this.constantTimeHexEqual(result.presentationKey, temporaryPresentationKey);
|
|
263
718
|
const rawAccountStatus = result.accountStatus;
|
|
264
|
-
if (rawAccountStatus !== undefined &&
|
|
265
|
-
|
|
266
|
-
rawAccountStatus !== 'existing-user') {
|
|
267
|
-
throw new WABAccountContinuityError('WAB returned an invalid account-continuity status.');
|
|
719
|
+
if (rawAccountStatus !== undefined && rawAccountStatus !== NEW_USER && rawAccountStatus !== EXISTING_USER) {
|
|
720
|
+
throw new WABAccountContinuityError('WAB returned an invalid account status.');
|
|
268
721
|
}
|
|
269
722
|
const rawExistingUser = result.existingUser;
|
|
270
723
|
if (rawExistingUser !== undefined && typeof rawExistingUser !== 'boolean') {
|
|
271
|
-
throw new WABAccountContinuityError('WAB returned
|
|
724
|
+
throw new WABAccountContinuityError('WAB returned invalid existing-user data.');
|
|
272
725
|
}
|
|
273
726
|
if (rawAccountStatus !== undefined &&
|
|
274
727
|
rawExistingUser !== undefined &&
|
|
275
|
-
(rawAccountStatus ===
|
|
276
|
-
throw new WABAccountContinuityError('WAB returned
|
|
728
|
+
(rawAccountStatus === EXISTING_USER) !== rawExistingUser) {
|
|
729
|
+
throw new WABAccountContinuityError('WAB returned conflicting account status.');
|
|
277
730
|
}
|
|
278
731
|
let compatibilityStatus;
|
|
279
732
|
if (typeof rawExistingUser === 'boolean') {
|
|
280
|
-
compatibilityStatus = rawExistingUser ?
|
|
733
|
+
compatibilityStatus = rawExistingUser ? EXISTING_USER : NEW_USER;
|
|
281
734
|
}
|
|
282
735
|
const explicitStatus = rawAccountStatus ?? compatibilityStatus;
|
|
283
|
-
if ((explicitStatus ===
|
|
284
|
-
(explicitStatus ===
|
|
285
|
-
throw new WABAccountContinuityError('WAB returned
|
|
736
|
+
if ((explicitStatus === NEW_USER && !keyMatchesTemporary) ||
|
|
737
|
+
(explicitStatus === EXISTING_USER && keyMatchesTemporary)) {
|
|
738
|
+
throw new WABAccountContinuityError('WAB returned conflicting account status.');
|
|
286
739
|
}
|
|
287
|
-
return explicitStatus ?? (keyMatchesTemporary ?
|
|
740
|
+
return explicitStatus ?? (keyMatchesTemporary ? NEW_USER : EXISTING_USER);
|
|
288
741
|
}
|
|
289
742
|
constantTimeHexEqual(left, right) {
|
|
290
743
|
if (left.length !== right.length)
|
|
@@ -300,7 +753,7 @@ class WalletAuthenticationManager extends CWIStyleWalletManager_1.CWIStyleWallet
|
|
|
300
753
|
generateTemporaryPresentationKey() {
|
|
301
754
|
// For the 'startAuth' call, we can generate a random 32 bytes → 64 hex chars.
|
|
302
755
|
const randomBytes = (0, sdk_1.Random)(32); // array of length 32
|
|
303
|
-
return
|
|
756
|
+
return (0, utils_1.toHex)(randomBytes);
|
|
304
757
|
}
|
|
305
758
|
}
|
|
306
759
|
exports.WalletAuthenticationManager = WalletAuthenticationManager;
|