@bopen-io/wallet-toolbox 1.7.18
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/.claude/settings.local.json +10 -0
- package/.env.template +22 -0
- package/.github/ISSUE_TEMPLATE/bug_report.md +40 -0
- package/.github/ISSUE_TEMPLATE/discussion.md +24 -0
- package/.github/pull_request_template.md +22 -0
- package/.github/workflows/push.yaml +145 -0
- package/.prettierrc +10 -0
- package/CHANGELOG.md +280 -0
- package/CONTRIBUTING.md +89 -0
- package/README.md +43 -0
- package/docs/README.md +85 -0
- package/docs/client.md +19627 -0
- package/docs/monitor.md +953 -0
- package/docs/open-rpc/index.html +46 -0
- package/docs/services.md +6377 -0
- package/docs/setup.md +1268 -0
- package/docs/storage.md +5367 -0
- package/docs/wallet.md +19626 -0
- package/jest.config.ts +25 -0
- package/license.md +28 -0
- package/out/tsconfig.all.tsbuildinfo +1 -0
- package/package.json +63 -0
- package/src/CWIStyleWalletManager.ts +1999 -0
- package/src/Setup.ts +579 -0
- package/src/SetupClient.ts +322 -0
- package/src/SetupWallet.ts +108 -0
- package/src/SimpleWalletManager.ts +526 -0
- package/src/Wallet.ts +1169 -0
- package/src/WalletAuthenticationManager.ts +153 -0
- package/src/WalletLogger.ts +213 -0
- package/src/WalletPermissionsManager.ts +3660 -0
- package/src/WalletSettingsManager.ts +114 -0
- package/src/__tests/CWIStyleWalletManager.test.d.ts.map +1 -0
- package/src/__tests/CWIStyleWalletManager.test.js.map +1 -0
- package/src/__tests/CWIStyleWalletManager.test.ts +675 -0
- package/src/__tests/WalletPermissionsManager.callbacks.test.ts +323 -0
- package/src/__tests/WalletPermissionsManager.checks.test.ts +844 -0
- package/src/__tests/WalletPermissionsManager.encryption.test.ts +412 -0
- package/src/__tests/WalletPermissionsManager.fixtures.ts +307 -0
- package/src/__tests/WalletPermissionsManager.flows.test.ts +462 -0
- package/src/__tests/WalletPermissionsManager.initialization.test.ts +300 -0
- package/src/__tests/WalletPermissionsManager.pmodules.test.ts +798 -0
- package/src/__tests/WalletPermissionsManager.proxying.test.ts +724 -0
- package/src/__tests/WalletPermissionsManager.tokens.test.ts +503 -0
- package/src/index.all.ts +27 -0
- package/src/index.client.ts +25 -0
- package/src/index.mobile.ts +21 -0
- package/src/index.ts +1 -0
- package/src/monitor/Monitor.ts +412 -0
- package/src/monitor/MonitorDaemon.ts +188 -0
- package/src/monitor/README.md +3 -0
- package/src/monitor/__test/MonitorDaemon.man.test.ts +45 -0
- package/src/monitor/tasks/TaskCheckForProofs.ts +243 -0
- package/src/monitor/tasks/TaskCheckNoSends.ts +73 -0
- package/src/monitor/tasks/TaskClock.ts +33 -0
- package/src/monitor/tasks/TaskFailAbandoned.ts +54 -0
- package/src/monitor/tasks/TaskMonitorCallHistory.ts +26 -0
- package/src/monitor/tasks/TaskNewHeader.ts +93 -0
- package/src/monitor/tasks/TaskPurge.ts +68 -0
- package/src/monitor/tasks/TaskReorg.ts +89 -0
- package/src/monitor/tasks/TaskReviewStatus.ts +48 -0
- package/src/monitor/tasks/TaskSendWaiting.ts +122 -0
- package/src/monitor/tasks/TaskSyncWhenIdle.ts +26 -0
- package/src/monitor/tasks/TaskUnFail.ts +151 -0
- package/src/monitor/tasks/WalletMonitorTask.ts +47 -0
- package/src/sdk/CertOpsWallet.ts +18 -0
- package/src/sdk/PrivilegedKeyManager.ts +372 -0
- package/src/sdk/README.md +13 -0
- package/src/sdk/WERR_errors.ts +234 -0
- package/src/sdk/WalletError.ts +170 -0
- package/src/sdk/WalletErrorFromJson.ts +80 -0
- package/src/sdk/WalletServices.interfaces.ts +700 -0
- package/src/sdk/WalletSigner.interfaces.ts +11 -0
- package/src/sdk/WalletStorage.interfaces.ts +606 -0
- package/src/sdk/__test/CertificateLifeCycle.test.ts +131 -0
- package/src/sdk/__test/PrivilegedKeyManager.test.ts +738 -0
- package/src/sdk/__test/WalletError.test.ts +318 -0
- package/src/sdk/__test/validationHelpers.test.ts +21 -0
- package/src/sdk/index.ts +10 -0
- package/src/sdk/types.ts +226 -0
- package/src/services/README.md +11 -0
- package/src/services/ServiceCollection.ts +248 -0
- package/src/services/Services.ts +603 -0
- package/src/services/__tests/ARC.man.test.ts +123 -0
- package/src/services/__tests/ARC.timeout.man.test.ts +79 -0
- package/src/services/__tests/ArcGorillaPool.man.test.ts +108 -0
- package/src/services/__tests/arcServices.test.ts +8 -0
- package/src/services/__tests/bitrails.test.ts +56 -0
- package/src/services/__tests/getMerklePath.test.ts +15 -0
- package/src/services/__tests/getRawTx.test.ts +13 -0
- package/src/services/__tests/postBeef.test.ts +104 -0
- package/src/services/__tests/verifyBeef.test.ts +50 -0
- package/src/services/chaintracker/BHServiceClient.ts +212 -0
- package/src/services/chaintracker/ChaintracksChainTracker.ts +71 -0
- package/src/services/chaintracker/__tests/ChaintracksChainTracker.test.ts +33 -0
- package/src/services/chaintracker/__tests/ChaintracksServiceClient.test.ts +29 -0
- package/src/services/chaintracker/chaintracks/Api/BlockHeaderApi.ts +72 -0
- package/src/services/chaintracker/chaintracks/Api/BulkIngestorApi.ts +83 -0
- package/src/services/chaintracker/chaintracks/Api/BulkStorageApi.ts +92 -0
- package/src/services/chaintracker/chaintracks/Api/ChaintracksApi.ts +64 -0
- package/src/services/chaintracker/chaintracks/Api/ChaintracksClientApi.ts +189 -0
- package/src/services/chaintracker/chaintracks/Api/ChaintracksFetchApi.ts +18 -0
- package/src/services/chaintracker/chaintracks/Api/ChaintracksFsApi.ts +58 -0
- package/src/services/chaintracker/chaintracks/Api/ChaintracksStorageApi.ts +386 -0
- package/src/services/chaintracker/chaintracks/Api/LiveIngestorApi.ts +25 -0
- package/src/services/chaintracker/chaintracks/Chaintracks.ts +609 -0
- package/src/services/chaintracker/chaintracks/ChaintracksService.ts +199 -0
- package/src/services/chaintracker/chaintracks/ChaintracksServiceClient.ts +154 -0
- package/src/services/chaintracker/chaintracks/Ingest/BulkIngestorBase.ts +176 -0
- package/src/services/chaintracker/chaintracks/Ingest/BulkIngestorCDN.ts +174 -0
- package/src/services/chaintracker/chaintracks/Ingest/BulkIngestorCDNBabbage.ts +18 -0
- package/src/services/chaintracker/chaintracks/Ingest/BulkIngestorWhatsOnChainCdn.ts +113 -0
- package/src/services/chaintracker/chaintracks/Ingest/BulkIngestorWhatsOnChainWs.ts +81 -0
- package/src/services/chaintracker/chaintracks/Ingest/LiveIngestorBase.ts +86 -0
- package/src/services/chaintracker/chaintracks/Ingest/LiveIngestorTeranodeP2P.ts +59 -0
- package/src/services/chaintracker/chaintracks/Ingest/LiveIngestorWhatsOnChainPoll.ts +104 -0
- package/src/services/chaintracker/chaintracks/Ingest/LiveIngestorWhatsOnChainWs.ts +66 -0
- package/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainIngestorWs.ts +566 -0
- package/src/services/chaintracker/chaintracks/Ingest/WhatsOnChainServices.ts +219 -0
- package/src/services/chaintracker/chaintracks/Ingest/__tests/BulkIngestorCDNBabbage.test.ts +54 -0
- package/src/services/chaintracker/chaintracks/Ingest/__tests/LiveIngestorWhatsOnChainPoll.test.ts +33 -0
- package/src/services/chaintracker/chaintracks/Ingest/__tests/WhatsOnChainServices.test.ts +124 -0
- package/src/services/chaintracker/chaintracks/Storage/BulkStorageBase.ts +92 -0
- package/src/services/chaintracker/chaintracks/Storage/ChaintracksKnexMigrations.ts +104 -0
- package/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageBase.ts +382 -0
- package/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageIdb.ts +574 -0
- package/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageKnex.ts +438 -0
- package/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageMemory.ts +29 -0
- package/src/services/chaintracker/chaintracks/Storage/ChaintracksStorageNoDb.ts +304 -0
- package/src/services/chaintracker/chaintracks/Storage/__tests/ChaintracksStorageIdb.test.ts +102 -0
- package/src/services/chaintracker/chaintracks/Storage/__tests/ChaintracksStorageKnex.test.ts +45 -0
- package/src/services/chaintracker/chaintracks/__tests/Chaintracks.test.ts +77 -0
- package/src/services/chaintracker/chaintracks/__tests/ChaintracksClientApi.test.ts +192 -0
- package/src/services/chaintracker/chaintracks/__tests/LocalCdnServer.ts +75 -0
- package/src/services/chaintracker/chaintracks/__tests/createIdbChaintracks.test.ts +62 -0
- package/src/services/chaintracker/chaintracks/__tests/data/cdnTest349/mainNetBlockHeaders.json +1 -0
- package/src/services/chaintracker/chaintracks/__tests/data/cdnTest349/mainNet_0.headers +0 -0
- package/src/services/chaintracker/chaintracks/__tests/data/cdnTest349/mainNet_1.headers +0 -0
- package/src/services/chaintracker/chaintracks/__tests/data/cdnTest349/mainNet_2.headers +0 -0
- package/src/services/chaintracker/chaintracks/__tests/data/cdnTest349/mainNet_3.headers +0 -0
- package/src/services/chaintracker/chaintracks/__tests/data/cdnTest379/mainNetBlockHeaders.json +1 -0
- package/src/services/chaintracker/chaintracks/__tests/data/cdnTest379/mainNet_0.headers +0 -0
- package/src/services/chaintracker/chaintracks/__tests/data/cdnTest379/mainNet_1.headers +0 -0
- package/src/services/chaintracker/chaintracks/__tests/data/cdnTest379/mainNet_2.headers +0 -0
- package/src/services/chaintracker/chaintracks/__tests/data/cdnTest379/mainNet_3.headers +0 -0
- package/src/services/chaintracker/chaintracks/__tests/data/cdnTest399/mainNetBlockHeaders.json +1 -0
- package/src/services/chaintracker/chaintracks/__tests/data/cdnTest399/mainNet_0.headers +0 -0
- package/src/services/chaintracker/chaintracks/__tests/data/cdnTest399/mainNet_1.headers +0 -0
- package/src/services/chaintracker/chaintracks/__tests/data/cdnTest399/mainNet_2.headers +0 -0
- package/src/services/chaintracker/chaintracks/__tests/data/cdnTest399/mainNet_3.headers +0 -0
- package/src/services/chaintracker/chaintracks/__tests/data/cdnTest402/mainNetBlockHeaders.json +1 -0
- package/src/services/chaintracker/chaintracks/__tests/data/cdnTest402/mainNet_0.headers +0 -0
- package/src/services/chaintracker/chaintracks/__tests/data/cdnTest402/mainNet_1.headers +0 -0
- package/src/services/chaintracker/chaintracks/__tests/data/cdnTest402/mainNet_2.headers +0 -0
- package/src/services/chaintracker/chaintracks/__tests/data/cdnTest402/mainNet_3.headers +0 -0
- package/src/services/chaintracker/chaintracks/__tests/data/cdnTest402/mainNet_4.headers +0 -0
- package/src/services/chaintracker/chaintracks/__tests/data/cdnTest499/mainNetBlockHeaders.json +1 -0
- package/src/services/chaintracker/chaintracks/__tests/data/cdnTest499/mainNet_0.headers +0 -0
- package/src/services/chaintracker/chaintracks/__tests/data/cdnTest499/mainNet_1.headers +0 -0
- package/src/services/chaintracker/chaintracks/__tests/data/cdnTest499/mainNet_2.headers +0 -0
- package/src/services/chaintracker/chaintracks/__tests/data/cdnTest499/mainNet_3.headers +0 -0
- package/src/services/chaintracker/chaintracks/__tests/data/cdnTest499/mainNet_4.headers +0 -0
- package/src/services/chaintracker/chaintracks/createDefaultIdbChaintracksOptions.ts +92 -0
- package/src/services/chaintracker/chaintracks/createDefaultKnexChaintracksOptions.ts +111 -0
- package/src/services/chaintracker/chaintracks/createDefaultNoDbChaintracksOptions.ts +91 -0
- package/src/services/chaintracker/chaintracks/createIdbChaintracks.ts +60 -0
- package/src/services/chaintracker/chaintracks/createKnexChaintracks.ts +65 -0
- package/src/services/chaintracker/chaintracks/createNoDbChaintracks.ts +60 -0
- package/src/services/chaintracker/chaintracks/index.all.ts +12 -0
- package/src/services/chaintracker/chaintracks/index.client.ts +4 -0
- package/src/services/chaintracker/chaintracks/index.mobile.ts +37 -0
- package/src/services/chaintracker/chaintracks/util/BulkFileDataManager.ts +975 -0
- package/src/services/chaintracker/chaintracks/util/BulkFileDataReader.ts +60 -0
- package/src/services/chaintracker/chaintracks/util/BulkFilesReader.ts +336 -0
- package/src/services/chaintracker/chaintracks/util/BulkHeaderFile.ts +247 -0
- package/src/services/chaintracker/chaintracks/util/ChaintracksFetch.ts +69 -0
- package/src/services/chaintracker/chaintracks/util/ChaintracksFs.ts +141 -0
- package/src/services/chaintracker/chaintracks/util/HeightRange.ts +153 -0
- package/src/services/chaintracker/chaintracks/util/SingleWriterMultiReaderLock.ts +76 -0
- package/src/services/chaintracker/chaintracks/util/__tests/BulkFileDataManager.test.ts +304 -0
- package/src/services/chaintracker/chaintracks/util/__tests/ChaintracksFetch.test.ts +60 -0
- package/src/services/chaintracker/chaintracks/util/__tests/HeightRange.test.ts +67 -0
- package/src/services/chaintracker/chaintracks/util/__tests/SingleWriterMultiReaderLock.test.ts +49 -0
- package/src/services/chaintracker/chaintracks/util/blockHeaderUtilities.ts +573 -0
- package/src/services/chaintracker/chaintracks/util/dirtyHashes.ts +29 -0
- package/src/services/chaintracker/chaintracks/util/validBulkHeaderFilesByFileHash.ts +432 -0
- package/src/services/chaintracker/index.all.ts +4 -0
- package/src/services/chaintracker/index.client.ts +4 -0
- package/src/services/chaintracker/index.mobile.ts +4 -0
- package/src/services/createDefaultWalletServicesOptions.ts +77 -0
- package/src/services/index.ts +1 -0
- package/src/services/processingErrors/arcSuccessError.json +76 -0
- package/src/services/providers/ARC.ts +350 -0
- package/src/services/providers/Bitails.ts +256 -0
- package/src/services/providers/SdkWhatsOnChain.ts +83 -0
- package/src/services/providers/WhatsOnChain.ts +883 -0
- package/src/services/providers/__tests/WhatsOnChain.test.ts +242 -0
- package/src/services/providers/__tests/exchangeRates.test.ts +18 -0
- package/src/services/providers/exchangeRates.ts +265 -0
- package/src/services/providers/getBeefForTxid.ts +369 -0
- package/src/signer/README.md +5 -0
- package/src/signer/WalletSigner.ts +17 -0
- package/src/signer/methods/acquireDirectCertificate.ts +52 -0
- package/src/signer/methods/buildSignableTransaction.ts +183 -0
- package/src/signer/methods/completeSignedTransaction.ts +117 -0
- package/src/signer/methods/createAction.ts +172 -0
- package/src/signer/methods/internalizeAction.ts +106 -0
- package/src/signer/methods/proveCertificate.ts +43 -0
- package/src/signer/methods/signAction.ts +54 -0
- package/src/storage/README.md +14 -0
- package/src/storage/StorageIdb.ts +2304 -0
- package/src/storage/StorageKnex.ts +1425 -0
- package/src/storage/StorageProvider.ts +810 -0
- package/src/storage/StorageReader.ts +194 -0
- package/src/storage/StorageReaderWriter.ts +432 -0
- package/src/storage/StorageSyncReader.ts +34 -0
- package/src/storage/WalletStorageManager.ts +943 -0
- package/src/storage/__test/StorageIdb.test.ts +43 -0
- package/src/storage/__test/WalletStorageManager.test.ts +275 -0
- package/src/storage/__test/adminStats.man.test.ts +89 -0
- package/src/storage/__test/getBeefForTransaction.test.ts +385 -0
- package/src/storage/index.all.ts +11 -0
- package/src/storage/index.client.ts +7 -0
- package/src/storage/index.mobile.ts +6 -0
- package/src/storage/methods/ListActionsSpecOp.ts +70 -0
- package/src/storage/methods/ListOutputsSpecOp.ts +129 -0
- package/src/storage/methods/__test/GenerateChange/generateChangeSdk.test.ts +1057 -0
- package/src/storage/methods/__test/GenerateChange/randomValsUsed1.ts +20 -0
- package/src/storage/methods/__test/offsetKey.test.ts +274 -0
- package/src/storage/methods/attemptToPostReqsToNetwork.ts +389 -0
- package/src/storage/methods/createAction.ts +947 -0
- package/src/storage/methods/generateChange.ts +556 -0
- package/src/storage/methods/getBeefForTransaction.ts +139 -0
- package/src/storage/methods/getSyncChunk.ts +293 -0
- package/src/storage/methods/internalizeAction.ts +562 -0
- package/src/storage/methods/listActionsIdb.ts +183 -0
- package/src/storage/methods/listActionsKnex.ts +226 -0
- package/src/storage/methods/listCertificates.ts +73 -0
- package/src/storage/methods/listOutputsIdb.ts +203 -0
- package/src/storage/methods/listOutputsKnex.ts +263 -0
- package/src/storage/methods/offsetKey.ts +89 -0
- package/src/storage/methods/processAction.ts +420 -0
- package/src/storage/methods/purgeData.ts +251 -0
- package/src/storage/methods/purgeDataIdb.ts +10 -0
- package/src/storage/methods/reviewStatus.ts +101 -0
- package/src/storage/methods/reviewStatusIdb.ts +43 -0
- package/src/storage/methods/utils.Buffer.ts +33 -0
- package/src/storage/methods/utils.ts +56 -0
- package/src/storage/remoting/StorageClient.ts +567 -0
- package/src/storage/remoting/StorageMobile.ts +544 -0
- package/src/storage/remoting/StorageServer.ts +291 -0
- package/src/storage/remoting/__test/StorageClient.test.ts +113 -0
- package/src/storage/schema/KnexMigrations.ts +489 -0
- package/src/storage/schema/StorageIdbSchema.ts +150 -0
- package/src/storage/schema/entities/EntityBase.ts +210 -0
- package/src/storage/schema/entities/EntityCertificate.ts +188 -0
- package/src/storage/schema/entities/EntityCertificateField.ts +136 -0
- package/src/storage/schema/entities/EntityCommission.ts +148 -0
- package/src/storage/schema/entities/EntityOutput.ts +290 -0
- package/src/storage/schema/entities/EntityOutputBasket.ts +153 -0
- package/src/storage/schema/entities/EntityOutputTag.ts +121 -0
- package/src/storage/schema/entities/EntityOutputTagMap.ts +123 -0
- package/src/storage/schema/entities/EntityProvenTx.ts +319 -0
- package/src/storage/schema/entities/EntityProvenTxReq.ts +580 -0
- package/src/storage/schema/entities/EntitySyncState.ts +389 -0
- package/src/storage/schema/entities/EntityTransaction.ts +306 -0
- package/src/storage/schema/entities/EntityTxLabel.ts +121 -0
- package/src/storage/schema/entities/EntityTxLabelMap.ts +123 -0
- package/src/storage/schema/entities/EntityUser.ts +112 -0
- package/src/storage/schema/entities/MergeEntity.ts +73 -0
- package/src/storage/schema/entities/__tests/CertificateFieldTests.test.ts +353 -0
- package/src/storage/schema/entities/__tests/CertificateTests.test.ts +354 -0
- package/src/storage/schema/entities/__tests/CommissionTests.test.ts +371 -0
- package/src/storage/schema/entities/__tests/OutputBasketTests.test.ts +278 -0
- package/src/storage/schema/entities/__tests/OutputTagMapTests.test.ts +242 -0
- package/src/storage/schema/entities/__tests/OutputTagTests.test.ts +288 -0
- package/src/storage/schema/entities/__tests/OutputTests.test.ts +464 -0
- package/src/storage/schema/entities/__tests/ProvenTxReqTests.test.ts +340 -0
- package/src/storage/schema/entities/__tests/ProvenTxTests.test.ts +504 -0
- package/src/storage/schema/entities/__tests/SyncStateTests.test.ts +288 -0
- package/src/storage/schema/entities/__tests/TransactionTests.test.ts +604 -0
- package/src/storage/schema/entities/__tests/TxLabelMapTests.test.ts +361 -0
- package/src/storage/schema/entities/__tests/TxLabelTests.test.ts +198 -0
- package/src/storage/schema/entities/__tests/stampLogTests.test.ts +90 -0
- package/src/storage/schema/entities/__tests/usersTests.test.ts +340 -0
- package/src/storage/schema/entities/index.ts +16 -0
- package/src/storage/schema/tables/TableCertificate.ts +21 -0
- package/src/storage/schema/tables/TableCertificateField.ts +12 -0
- package/src/storage/schema/tables/TableCommission.ts +13 -0
- package/src/storage/schema/tables/TableMonitorEvent.ts +9 -0
- package/src/storage/schema/tables/TableOutput.ts +64 -0
- package/src/storage/schema/tables/TableOutputBasket.ts +12 -0
- package/src/storage/schema/tables/TableOutputTag.ts +10 -0
- package/src/storage/schema/tables/TableOutputTagMap.ts +9 -0
- package/src/storage/schema/tables/TableProvenTx.ts +14 -0
- package/src/storage/schema/tables/TableProvenTxReq.ts +65 -0
- package/src/storage/schema/tables/TableSettings.ts +17 -0
- package/src/storage/schema/tables/TableSyncState.ts +18 -0
- package/src/storage/schema/tables/TableTransaction.ts +54 -0
- package/src/storage/schema/tables/TableTxLabel.ts +10 -0
- package/src/storage/schema/tables/TableTxLabelMap.ts +9 -0
- package/src/storage/schema/tables/TableUser.ts +16 -0
- package/src/storage/schema/tables/index.ts +16 -0
- package/src/storage/sync/StorageMySQLDojoReader.ts +696 -0
- package/src/storage/sync/index.ts +1 -0
- package/src/utility/Format.ts +133 -0
- package/src/utility/README.md +3 -0
- package/src/utility/ReaderUint8Array.ts +187 -0
- package/src/utility/ScriptTemplateBRC29.ts +73 -0
- package/src/utility/__tests/utilityHelpers.noBuffer.test.ts +109 -0
- package/src/utility/aggregateResults.ts +68 -0
- package/src/utility/identityUtils.ts +159 -0
- package/src/utility/index.all.ts +7 -0
- package/src/utility/index.client.ts +7 -0
- package/src/utility/parseTxScriptOffsets.ts +29 -0
- package/src/utility/stampLog.ts +69 -0
- package/src/utility/tscProofToMerklePath.ts +48 -0
- package/src/utility/utilityHelpers.buffer.ts +34 -0
- package/src/utility/utilityHelpers.noBuffer.ts +60 -0
- package/src/utility/utilityHelpers.ts +275 -0
- package/src/wab-client/WABClient.ts +94 -0
- package/src/wab-client/__tests/WABClient.man.test.ts +59 -0
- package/src/wab-client/auth-method-interactors/AuthMethodInteractor.ts +47 -0
- package/src/wab-client/auth-method-interactors/DevConsoleInteractor.ts +73 -0
- package/src/wab-client/auth-method-interactors/PersonaIDInteractor.ts +35 -0
- package/src/wab-client/auth-method-interactors/TwilioPhoneInteractor.ts +72 -0
- package/syncVersions.js +71 -0
- package/test/Wallet/StorageClient/storageClient.man.test.ts +75 -0
- package/test/Wallet/action/abortAction.test.ts +47 -0
- package/test/Wallet/action/createAction.test.ts +299 -0
- package/test/Wallet/action/createAction2.test.ts +1273 -0
- package/test/Wallet/action/createActionToGenerateBeefs.man.test.ts +293 -0
- package/test/Wallet/action/internalizeAction.a.test.ts +286 -0
- package/test/Wallet/action/internalizeAction.test.ts +682 -0
- package/test/Wallet/action/relinquishOutput.test.ts +37 -0
- package/test/Wallet/certificate/acquireCertificate.test.ts +298 -0
- package/test/Wallet/certificate/listCertificates.test.ts +346 -0
- package/test/Wallet/construct/Wallet.constructor.test.ts +57 -0
- package/test/Wallet/get/getHeaderForHeight.test.ts +82 -0
- package/test/Wallet/get/getHeight.test.ts +52 -0
- package/test/Wallet/get/getKnownTxids.test.ts +86 -0
- package/test/Wallet/get/getNetwork.test.ts +27 -0
- package/test/Wallet/get/getVersion.test.ts +27 -0
- package/test/Wallet/list/listActions.test.ts +279 -0
- package/test/Wallet/list/listActions2.test.ts +1381 -0
- package/test/Wallet/list/listCertificates.test.ts +118 -0
- package/test/Wallet/list/listOutputs.test.ts +447 -0
- package/test/Wallet/live/walletLive.man.test.ts +521 -0
- package/test/Wallet/local/localWallet.man.test.ts +93 -0
- package/test/Wallet/local/localWallet2.man.test.ts +277 -0
- package/test/Wallet/signAction/mountaintop.man.test.ts +130 -0
- package/test/Wallet/specOps/specOps.man.test.ts +220 -0
- package/test/Wallet/support/janitor.man.test.ts +40 -0
- package/test/Wallet/support/operations.man.test.ts +407 -0
- package/test/Wallet/support/reqErrorReview.2025.05.06.man.test.ts +347 -0
- package/test/Wallet/sync/Wallet.sync.test.ts +215 -0
- package/test/Wallet/sync/Wallet.updateWalletLegacyTestData.man.test.ts +203 -0
- package/test/Wallet/sync/setActive.test.ts +170 -0
- package/test/WalletClient/LocalKVStore.man.test.ts +114 -0
- package/test/WalletClient/WERR.man.test.ts +35 -0
- package/test/bsv-ts-sdk/LocalKVStore.test.ts +102 -0
- package/test/checkDB.ts +57 -0
- package/test/checkdb +0 -0
- package/test/examples/backup.man.test.ts +59 -0
- package/test/examples/pushdrop.test.ts +282 -0
- package/test/monitor/Monitor.test.ts +620 -0
- package/test/services/Services.test.ts +263 -0
- package/test/storage/KnexMigrations.test.ts +86 -0
- package/test/storage/StorageMySQLDojoReader.man.test.ts +60 -0
- package/test/storage/count.test.ts +177 -0
- package/test/storage/find.test.ts +195 -0
- package/test/storage/findLegacy.test.ts +67 -0
- package/test/storage/idb/allocateChange.test.ts +251 -0
- package/test/storage/idb/count.test.ts +158 -0
- package/test/storage/idb/find.test.ts +177 -0
- package/test/storage/idb/idbSpeed.test.ts +36 -0
- package/test/storage/idb/insert.test.ts +268 -0
- package/test/storage/idb/transactionAbort.test.ts +108 -0
- package/test/storage/idb/update.test.ts +999 -0
- package/test/storage/insert.test.ts +278 -0
- package/test/storage/update.test.ts +1021 -0
- package/test/storage/update2.test.ts +897 -0
- package/test/utils/TestUtilsWalletStorage.ts +2526 -0
- package/test/utils/localWalletMethods.ts +363 -0
- package/test/utils/removeFailedFromDatabase.sql +17 -0
- package/ts2md.json +44 -0
- package/tsconfig.all.json +31 -0
- package/tsconfig.client.json +29 -0
- package/tsconfig.json +17 -0
- package/tsconfig.mobile.json +28 -0
|
@@ -0,0 +1,606 @@
|
|
|
1
|
+
import {
|
|
2
|
+
AbortActionArgs,
|
|
3
|
+
AbortActionResult,
|
|
4
|
+
Beef,
|
|
5
|
+
ChainTracker,
|
|
6
|
+
InternalizeActionArgs,
|
|
7
|
+
InternalizeActionResult,
|
|
8
|
+
ListActionsArgs,
|
|
9
|
+
ListActionsResult,
|
|
10
|
+
ListCertificatesResult,
|
|
11
|
+
ListOutputsArgs,
|
|
12
|
+
ListOutputsResult,
|
|
13
|
+
RelinquishCertificateArgs,
|
|
14
|
+
RelinquishOutputArgs,
|
|
15
|
+
SendWithResult,
|
|
16
|
+
TXIDHexString,
|
|
17
|
+
Validation,
|
|
18
|
+
WalletLoggerInterface
|
|
19
|
+
} from '@bsv/sdk'
|
|
20
|
+
import {
|
|
21
|
+
TableCertificate,
|
|
22
|
+
TableCertificateField,
|
|
23
|
+
TableCertificateX,
|
|
24
|
+
TableCommission,
|
|
25
|
+
TableMonitorEvent,
|
|
26
|
+
TableOutput,
|
|
27
|
+
TableOutputBasket,
|
|
28
|
+
TableOutputTag,
|
|
29
|
+
TableOutputTagMap,
|
|
30
|
+
TableProvenTx,
|
|
31
|
+
TableProvenTxReq,
|
|
32
|
+
TableSettings,
|
|
33
|
+
TableSyncState,
|
|
34
|
+
TableTransaction,
|
|
35
|
+
TableTxLabel,
|
|
36
|
+
TableTxLabelMap,
|
|
37
|
+
TableUser
|
|
38
|
+
} from '../storage/schema/tables'
|
|
39
|
+
import { WalletServices } from './WalletServices.interfaces'
|
|
40
|
+
import { Chain, Paged, ProvenTxReqStatus, TransactionStatus } from './types'
|
|
41
|
+
import { WalletError } from './WalletError'
|
|
42
|
+
|
|
43
|
+
/**
|
|
44
|
+
* This is the `WalletStorage` interface implemented by a class such as `WalletStorageManager`,
|
|
45
|
+
* which manges an active and set of backup storage providers.
|
|
46
|
+
*
|
|
47
|
+
* Access and conrol is not directly managed. Typically each request is made with an associated identityKey
|
|
48
|
+
* and it is left to the providers: physical access or remote channel authentication.
|
|
49
|
+
*/
|
|
50
|
+
export interface WalletStorage {
|
|
51
|
+
/**
|
|
52
|
+
* @returns false
|
|
53
|
+
*/
|
|
54
|
+
isStorageProvider(): boolean
|
|
55
|
+
|
|
56
|
+
isAvailable(): boolean
|
|
57
|
+
makeAvailable(): Promise<TableSettings>
|
|
58
|
+
migrate(storageName: string, storageIdentityKey: string): Promise<string>
|
|
59
|
+
destroy(): Promise<void>
|
|
60
|
+
|
|
61
|
+
setServices(v: WalletServices): void
|
|
62
|
+
getServices(): WalletServices
|
|
63
|
+
getSettings(): TableSettings
|
|
64
|
+
|
|
65
|
+
getAuth(): Promise<AuthId>
|
|
66
|
+
|
|
67
|
+
findOrInsertUser(identityKey: string): Promise<{ user: TableUser; isNew: boolean }>
|
|
68
|
+
|
|
69
|
+
abortAction(args: AbortActionArgs): Promise<AbortActionResult>
|
|
70
|
+
createAction(args: Validation.ValidCreateActionArgs): Promise<StorageCreateActionResult>
|
|
71
|
+
processAction(args: StorageProcessActionArgs): Promise<StorageProcessActionResults>
|
|
72
|
+
internalizeAction(args: InternalizeActionArgs): Promise<InternalizeActionResult>
|
|
73
|
+
|
|
74
|
+
findCertificates(args: FindCertificatesArgs): Promise<TableCertificateX[]>
|
|
75
|
+
findOutputBaskets(args: FindOutputBasketsArgs): Promise<TableOutputBasket[]>
|
|
76
|
+
findOutputs(args: FindOutputsArgs): Promise<TableOutput[]>
|
|
77
|
+
findProvenTxReqs(args: FindProvenTxReqsArgs): Promise<TableProvenTxReq[]>
|
|
78
|
+
|
|
79
|
+
listActions(args: ListActionsArgs): Promise<ListActionsResult>
|
|
80
|
+
listCertificates(args: Validation.ValidListCertificatesArgs): Promise<ListCertificatesResult>
|
|
81
|
+
listOutputs(args: ListOutputsArgs): Promise<ListOutputsResult>
|
|
82
|
+
|
|
83
|
+
insertCertificate(certificate: TableCertificateX): Promise<number>
|
|
84
|
+
|
|
85
|
+
relinquishCertificate(args: RelinquishCertificateArgs): Promise<number>
|
|
86
|
+
relinquishOutput(args: RelinquishOutputArgs): Promise<number>
|
|
87
|
+
|
|
88
|
+
getStores(): WalletStorageInfo[]
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
/**
|
|
92
|
+
* Snapshot of the current state of a storage provider configured for an `WalletStorageManager`.
|
|
93
|
+
*/
|
|
94
|
+
export interface WalletStorageInfo {
|
|
95
|
+
isActive: boolean
|
|
96
|
+
isEnabled: boolean
|
|
97
|
+
isBackup: boolean
|
|
98
|
+
isConflicting: boolean
|
|
99
|
+
userId: number
|
|
100
|
+
storageIdentityKey: string
|
|
101
|
+
storageName: string
|
|
102
|
+
storageClass: string
|
|
103
|
+
endpointURL?: string
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
/**
|
|
107
|
+
* This is the `WalletStorage` interface implemented with authentication checking and
|
|
108
|
+
* is the actual minimal interface implemented by storage and remoted storage providers.
|
|
109
|
+
*/
|
|
110
|
+
export interface WalletStorageProvider extends WalletStorageSync {
|
|
111
|
+
/**
|
|
112
|
+
* @returns true if this object's interface can be extended to the full `StorageProvider` interface
|
|
113
|
+
*/
|
|
114
|
+
isStorageProvider(): boolean
|
|
115
|
+
setServices(v: WalletServices): void
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
export interface WalletStorageSync extends WalletStorageWriter {
|
|
119
|
+
findOrInsertSyncStateAuth(
|
|
120
|
+
auth: AuthId,
|
|
121
|
+
storageIdentityKey: string,
|
|
122
|
+
storageName: string
|
|
123
|
+
): Promise<{ syncState: TableSyncState; isNew: boolean }>
|
|
124
|
+
|
|
125
|
+
/**
|
|
126
|
+
* Updagte the `activeStorage` property of the authenticated user by their `userId`.
|
|
127
|
+
* @param auth
|
|
128
|
+
* @param newActiveStorageIdentityKey
|
|
129
|
+
*/
|
|
130
|
+
setActive(auth: AuthId, newActiveStorageIdentityKey: string): Promise<number>
|
|
131
|
+
|
|
132
|
+
getSyncChunk(args: RequestSyncChunkArgs): Promise<SyncChunk>
|
|
133
|
+
processSyncChunk(args: RequestSyncChunkArgs, chunk: SyncChunk): Promise<ProcessSyncChunkResult>
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
/**
|
|
137
|
+
* This is the minimal interface required for a WalletStorageProvider to export data to another provider.
|
|
138
|
+
*/
|
|
139
|
+
export interface WalletStorageSyncReader {
|
|
140
|
+
makeAvailable(): Promise<TableSettings>
|
|
141
|
+
getSyncChunk(args: RequestSyncChunkArgs): Promise<SyncChunk>
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
export interface WalletStorageWriter extends WalletStorageReader {
|
|
145
|
+
makeAvailable(): Promise<TableSettings>
|
|
146
|
+
migrate(storageName: string, storageIdentityKey: string): Promise<string>
|
|
147
|
+
destroy(): Promise<void>
|
|
148
|
+
|
|
149
|
+
findOrInsertUser(identityKey: string): Promise<{ user: TableUser; isNew: boolean }>
|
|
150
|
+
|
|
151
|
+
abortAction(auth: AuthId, args: AbortActionArgs): Promise<AbortActionResult>
|
|
152
|
+
createAction(auth: AuthId, args: Validation.ValidCreateActionArgs): Promise<StorageCreateActionResult>
|
|
153
|
+
processAction(auth: AuthId, args: StorageProcessActionArgs): Promise<StorageProcessActionResults>
|
|
154
|
+
internalizeAction(auth: AuthId, args: InternalizeActionArgs): Promise<StorageInternalizeActionResult>
|
|
155
|
+
|
|
156
|
+
insertCertificateAuth(auth: AuthId, certificate: TableCertificateX): Promise<number>
|
|
157
|
+
|
|
158
|
+
relinquishCertificate(auth: AuthId, args: RelinquishCertificateArgs): Promise<number>
|
|
159
|
+
relinquishOutput(auth: AuthId, args: RelinquishOutputArgs): Promise<number>
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
export interface WalletStorageReader {
|
|
163
|
+
isAvailable(): boolean
|
|
164
|
+
|
|
165
|
+
getServices(): WalletServices
|
|
166
|
+
getSettings(): TableSettings
|
|
167
|
+
|
|
168
|
+
findCertificatesAuth(auth: AuthId, args: FindCertificatesArgs): Promise<TableCertificateX[]>
|
|
169
|
+
findOutputBasketsAuth(auth: AuthId, args: FindOutputBasketsArgs): Promise<TableOutputBasket[]>
|
|
170
|
+
findOutputsAuth(auth: AuthId, args: FindOutputsArgs): Promise<TableOutput[]>
|
|
171
|
+
findProvenTxReqs(args: FindProvenTxReqsArgs): Promise<TableProvenTxReq[]>
|
|
172
|
+
|
|
173
|
+
listActions(auth: AuthId, vargs: Validation.ValidListActionsArgs): Promise<ListActionsResult>
|
|
174
|
+
listCertificates(auth: AuthId, vargs: Validation.ValidListCertificatesArgs): Promise<ListCertificatesResult>
|
|
175
|
+
listOutputs(auth: AuthId, vargs: Validation.ValidListOutputsArgs): Promise<ListOutputsResult>
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
export interface AuthId {
|
|
179
|
+
identityKey: string
|
|
180
|
+
userId?: number
|
|
181
|
+
isActive?: boolean
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
export interface FindSincePagedArgs {
|
|
185
|
+
since?: Date
|
|
186
|
+
paged?: Paged
|
|
187
|
+
trx?: TrxToken
|
|
188
|
+
/**
|
|
189
|
+
* Support for orderDescending is implemented in StorageKnex for basic table find methods,
|
|
190
|
+
* excluding certificate_fields table, map tables, and settings (singleton row table).
|
|
191
|
+
*/
|
|
192
|
+
orderDescending?: boolean
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
export interface FindForUserSincePagedArgs extends FindSincePagedArgs {
|
|
196
|
+
userId: number
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
export interface FindPartialSincePagedArgs<T extends object> extends FindSincePagedArgs {
|
|
200
|
+
partial: Partial<T>
|
|
201
|
+
}
|
|
202
|
+
|
|
203
|
+
export interface FindCertificatesArgs extends FindSincePagedArgs {
|
|
204
|
+
partial: Partial<TableCertificate>
|
|
205
|
+
certifiers?: string[]
|
|
206
|
+
types?: string[]
|
|
207
|
+
includeFields?: boolean
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
export interface FindOutputBasketsArgs extends FindSincePagedArgs {
|
|
211
|
+
partial: Partial<TableOutputBasket>
|
|
212
|
+
}
|
|
213
|
+
|
|
214
|
+
export interface FindOutputsArgs extends FindSincePagedArgs {
|
|
215
|
+
partial: Partial<TableOutput>
|
|
216
|
+
noScript?: boolean
|
|
217
|
+
txStatus?: TransactionStatus[]
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
export type StorageProvidedBy = 'you' | 'storage' | 'you-and-storage'
|
|
221
|
+
|
|
222
|
+
export interface StorageCreateTransactionSdkInput {
|
|
223
|
+
vin: number
|
|
224
|
+
sourceTxid: string
|
|
225
|
+
sourceVout: number
|
|
226
|
+
sourceSatoshis: number
|
|
227
|
+
sourceLockingScript: string
|
|
228
|
+
/**
|
|
229
|
+
*
|
|
230
|
+
*/
|
|
231
|
+
sourceTransaction?: number[]
|
|
232
|
+
unlockingScriptLength: number
|
|
233
|
+
providedBy: StorageProvidedBy
|
|
234
|
+
type: string
|
|
235
|
+
spendingDescription?: string
|
|
236
|
+
derivationPrefix?: string
|
|
237
|
+
derivationSuffix?: string
|
|
238
|
+
senderIdentityKey?: string
|
|
239
|
+
}
|
|
240
|
+
|
|
241
|
+
export interface StorageCreateTransactionSdkOutput extends Validation.ValidCreateActionOutput {
|
|
242
|
+
vout: number
|
|
243
|
+
providedBy: StorageProvidedBy
|
|
244
|
+
purpose?: string
|
|
245
|
+
derivationSuffix?: string
|
|
246
|
+
}
|
|
247
|
+
|
|
248
|
+
export interface StorageCreateActionResult {
|
|
249
|
+
inputBeef?: number[]
|
|
250
|
+
inputs: StorageCreateTransactionSdkInput[]
|
|
251
|
+
outputs: StorageCreateTransactionSdkOutput[]
|
|
252
|
+
noSendChangeOutputVouts?: number[]
|
|
253
|
+
derivationPrefix: string
|
|
254
|
+
version: number
|
|
255
|
+
lockTime: number
|
|
256
|
+
reference: string
|
|
257
|
+
}
|
|
258
|
+
|
|
259
|
+
export interface StorageProcessActionArgs {
|
|
260
|
+
isNewTx: boolean
|
|
261
|
+
isSendWith: boolean
|
|
262
|
+
isNoSend: boolean
|
|
263
|
+
isDelayed: boolean
|
|
264
|
+
reference?: string
|
|
265
|
+
txid?: string
|
|
266
|
+
rawTx?: number[]
|
|
267
|
+
sendWith: string[]
|
|
268
|
+
logger?: WalletLoggerInterface
|
|
269
|
+
}
|
|
270
|
+
|
|
271
|
+
export interface StorageInternalizeActionResult extends InternalizeActionResult {
|
|
272
|
+
/** true if internalizing outputs on an existing storage transaction */
|
|
273
|
+
isMerge: boolean
|
|
274
|
+
/** txid of transaction being internalized */
|
|
275
|
+
txid: string
|
|
276
|
+
/** net change in change balance for user due to this internalization */
|
|
277
|
+
satoshis: number
|
|
278
|
+
|
|
279
|
+
/** valid iff not isMerge and txid was unknown to storage and non-delayed broadcast was not success */
|
|
280
|
+
sendWithResults?: SendWithResult[]
|
|
281
|
+
/** valid iff not isMerge and txid was unknown to storage and non-delayed broadcast was not success */
|
|
282
|
+
notDelayedResults?: ReviewActionResult[]
|
|
283
|
+
}
|
|
284
|
+
|
|
285
|
+
/**
|
|
286
|
+
* Indicates status of a new Action following a `createAction` or `signAction` in immediate mode:
|
|
287
|
+
* When `acceptDelayedBroadcast` is falses.
|
|
288
|
+
*
|
|
289
|
+
* 'success': The action has been broadcast and accepted by the bitcoin processing network.
|
|
290
|
+
* 'doulbeSpend': The action has been confirmed to double spend one or more inputs, and by the "first-seen-rule" is the loosing transaction.
|
|
291
|
+
* 'invalidTx': The action was rejected by the processing network as an invalid bitcoin transaction.
|
|
292
|
+
* 'serviceError': The broadcast services are currently unable to reach the bitcoin network. The action is now queued for delayed retries.
|
|
293
|
+
*/
|
|
294
|
+
export type ReviewActionResultStatus = 'success' | 'doubleSpend' | 'serviceError' | 'invalidTx'
|
|
295
|
+
|
|
296
|
+
export interface ReviewActionResult {
|
|
297
|
+
txid: TXIDHexString
|
|
298
|
+
status: ReviewActionResultStatus
|
|
299
|
+
/**
|
|
300
|
+
* Any competing txids reported for this txid, valid when status is 'doubleSpend'.
|
|
301
|
+
*/
|
|
302
|
+
competingTxs?: string[]
|
|
303
|
+
/**
|
|
304
|
+
* Merged beef of competingTxs, valid when status is 'doubleSpend'.
|
|
305
|
+
*/
|
|
306
|
+
competingBeef?: number[]
|
|
307
|
+
}
|
|
308
|
+
|
|
309
|
+
export interface StorageProcessActionResults {
|
|
310
|
+
sendWithResults?: SendWithResult[]
|
|
311
|
+
notDelayedResults?: ReviewActionResult[]
|
|
312
|
+
log?: string
|
|
313
|
+
}
|
|
314
|
+
|
|
315
|
+
export interface ProvenOrRawTx {
|
|
316
|
+
proven?: TableProvenTx
|
|
317
|
+
rawTx?: number[]
|
|
318
|
+
inputBEEF?: number[]
|
|
319
|
+
}
|
|
320
|
+
|
|
321
|
+
export interface PurgeParams {
|
|
322
|
+
purgeCompleted: boolean
|
|
323
|
+
purgeFailed: boolean
|
|
324
|
+
purgeSpent: boolean
|
|
325
|
+
|
|
326
|
+
/**
|
|
327
|
+
* Minimum age in msecs for transient completed transaction data purge.
|
|
328
|
+
* Default is 14 days.
|
|
329
|
+
*/
|
|
330
|
+
purgeCompletedAge?: number
|
|
331
|
+
/**
|
|
332
|
+
* Minimum age in msecs for failed transaction data purge.
|
|
333
|
+
* Default is 14 days.
|
|
334
|
+
*/
|
|
335
|
+
purgeFailedAge?: number
|
|
336
|
+
/**
|
|
337
|
+
* Minimum age in msecs for failed transaction data purge.
|
|
338
|
+
* Default is 14 days.
|
|
339
|
+
*/
|
|
340
|
+
purgeSpentAge?: number
|
|
341
|
+
}
|
|
342
|
+
|
|
343
|
+
export interface PurgeResults {
|
|
344
|
+
count: number
|
|
345
|
+
log: string
|
|
346
|
+
}
|
|
347
|
+
|
|
348
|
+
export interface StorageProvenOrReq {
|
|
349
|
+
proven?: TableProvenTx
|
|
350
|
+
req?: TableProvenTxReq
|
|
351
|
+
isNew?: boolean
|
|
352
|
+
}
|
|
353
|
+
|
|
354
|
+
/**
|
|
355
|
+
* Specifies the available options for computing transaction fees.
|
|
356
|
+
*/
|
|
357
|
+
export interface StorageFeeModel {
|
|
358
|
+
/**
|
|
359
|
+
* Available models. Currently only "sat/kb" is supported.
|
|
360
|
+
*/
|
|
361
|
+
model: 'sat/kb'
|
|
362
|
+
/**
|
|
363
|
+
* When "fee.model" is "sat/kb", this is an integer representing the number of satoshis per kb of block space
|
|
364
|
+
* the transaction will pay in fees.
|
|
365
|
+
*
|
|
366
|
+
* If undefined, the default value is used.
|
|
367
|
+
*/
|
|
368
|
+
value?: number
|
|
369
|
+
}
|
|
370
|
+
|
|
371
|
+
export interface StorageGetBeefOptions {
|
|
372
|
+
/** if 'known', txids known to local storage as valid are included as txidOnly */
|
|
373
|
+
trustSelf?: 'known'
|
|
374
|
+
/** list of txids to be included as txidOnly if referenced. Validity is known to caller. */
|
|
375
|
+
knownTxids?: string[]
|
|
376
|
+
/** optional. If defined, raw transactions and merkle paths required by txid are merged to this instance and returned. Otherwise a new Beef is constructed and returned. */
|
|
377
|
+
mergeToBeef?: Beef | number[]
|
|
378
|
+
/** optional. Default is false. `storage` is used for raw transaction and merkle proof lookup */
|
|
379
|
+
ignoreStorage?: boolean
|
|
380
|
+
/** optional. Default is false. `getServices` is used for raw transaction and merkle proof lookup */
|
|
381
|
+
ignoreServices?: boolean
|
|
382
|
+
/** optional. Default is false. If true, raw transactions with proofs missing from `storage` and obtained from `getServices` are not inserted to `storage`. */
|
|
383
|
+
ignoreNewProven?: boolean
|
|
384
|
+
/** optional. Default is zero. Ignores available merkle paths until recursion detpth equals or exceeds value */
|
|
385
|
+
minProofLevel?: number
|
|
386
|
+
/** optional. If valid, any merkleRoot that fails to validate will result in an exception without merging to `mergeToBeef`. */
|
|
387
|
+
chainTracker?: ChainTracker
|
|
388
|
+
/** optional. Default is false. If chainTracker is valid and an invalid proof is found: if true, pursues deeper beef. If false, throws WERR_INVALID_MERKLE_ROOT. */
|
|
389
|
+
skipInvalidProofs?: boolean
|
|
390
|
+
}
|
|
391
|
+
|
|
392
|
+
export interface StorageSyncReaderOptions {
|
|
393
|
+
chain: Chain
|
|
394
|
+
}
|
|
395
|
+
|
|
396
|
+
export interface FindCertificateFieldsArgs extends FindSincePagedArgs {
|
|
397
|
+
partial: Partial<TableCertificateField>
|
|
398
|
+
}
|
|
399
|
+
|
|
400
|
+
export interface FindCommissionsArgs extends FindSincePagedArgs {
|
|
401
|
+
partial: Partial<TableCommission>
|
|
402
|
+
}
|
|
403
|
+
export interface FindOutputTagMapsArgs extends FindSincePagedArgs {
|
|
404
|
+
partial: Partial<TableOutputTagMap>
|
|
405
|
+
tagIds?: number[]
|
|
406
|
+
}
|
|
407
|
+
export interface FindOutputTagsArgs extends FindSincePagedArgs {
|
|
408
|
+
partial: Partial<TableOutputTag>
|
|
409
|
+
}
|
|
410
|
+
export interface FindProvenTxReqsArgs extends FindSincePagedArgs {
|
|
411
|
+
partial: Partial<TableProvenTxReq>
|
|
412
|
+
status?: ProvenTxReqStatus[]
|
|
413
|
+
txids?: string[]
|
|
414
|
+
}
|
|
415
|
+
export interface FindProvenTxsArgs extends FindSincePagedArgs {
|
|
416
|
+
partial: Partial<TableProvenTx>
|
|
417
|
+
}
|
|
418
|
+
export interface FindSyncStatesArgs extends FindSincePagedArgs {
|
|
419
|
+
partial: Partial<TableSyncState>
|
|
420
|
+
}
|
|
421
|
+
export interface FindTransactionsArgs extends FindSincePagedArgs {
|
|
422
|
+
partial: Partial<TableTransaction>
|
|
423
|
+
status?: TransactionStatus[]
|
|
424
|
+
noRawTx?: boolean
|
|
425
|
+
}
|
|
426
|
+
export interface FindTxLabelMapsArgs extends FindSincePagedArgs {
|
|
427
|
+
partial: Partial<TableTxLabelMap>
|
|
428
|
+
labelIds?: number[]
|
|
429
|
+
}
|
|
430
|
+
export interface FindTxLabelsArgs extends FindSincePagedArgs {
|
|
431
|
+
partial: Partial<TableTxLabel>
|
|
432
|
+
}
|
|
433
|
+
export interface FindUsersArgs extends FindSincePagedArgs {
|
|
434
|
+
partial: Partial<TableUser>
|
|
435
|
+
}
|
|
436
|
+
export interface FindMonitorEventsArgs extends FindSincePagedArgs {
|
|
437
|
+
partial: Partial<TableMonitorEvent>
|
|
438
|
+
}
|
|
439
|
+
/**
|
|
440
|
+
* Place holder for the transaction control object used by actual storage provider implementation.
|
|
441
|
+
*/
|
|
442
|
+
// eslint-disable-next-line @typescript-eslint/no-empty-interface
|
|
443
|
+
export interface TrxToken {}
|
|
444
|
+
|
|
445
|
+
export interface UpdateProvenTxReqWithNewProvenTxArgs {
|
|
446
|
+
provenTxReqId: number
|
|
447
|
+
txid: string
|
|
448
|
+
attempts: number
|
|
449
|
+
status: ProvenTxReqStatus
|
|
450
|
+
history: string
|
|
451
|
+
height: number
|
|
452
|
+
index: number
|
|
453
|
+
blockHash: string
|
|
454
|
+
merkleRoot: string
|
|
455
|
+
merklePath: number[]
|
|
456
|
+
}
|
|
457
|
+
|
|
458
|
+
export interface UpdateProvenTxReqWithNewProvenTxResult {
|
|
459
|
+
status: ProvenTxReqStatus
|
|
460
|
+
history: string
|
|
461
|
+
provenTxId: number
|
|
462
|
+
log?: string
|
|
463
|
+
}
|
|
464
|
+
|
|
465
|
+
/**
|
|
466
|
+
* success: Last sync of this user from this storage was successful.
|
|
467
|
+
*
|
|
468
|
+
* error: Last sync protocol operation for this user to this storage threw and error.
|
|
469
|
+
*
|
|
470
|
+
* identified: Configured sync storage has been identified but not sync'ed.
|
|
471
|
+
*
|
|
472
|
+
* unknown: Sync protocol state is unknown.
|
|
473
|
+
*/
|
|
474
|
+
export type SyncStatus = 'success' | 'error' | 'identified' | 'updated' | 'unknown'
|
|
475
|
+
|
|
476
|
+
export type SyncProtocolVersion = '0.1.0'
|
|
477
|
+
|
|
478
|
+
export interface RequestSyncChunkArgs {
|
|
479
|
+
/**
|
|
480
|
+
* The storageIdentityKey of the storage supplying the update SyncChunk data.
|
|
481
|
+
*/
|
|
482
|
+
fromStorageIdentityKey: string
|
|
483
|
+
/**
|
|
484
|
+
* The storageIdentityKey of the storage consuming the update SyncChunk data.
|
|
485
|
+
*/
|
|
486
|
+
toStorageIdentityKey: string
|
|
487
|
+
|
|
488
|
+
/**
|
|
489
|
+
* The identity of whose data is being requested
|
|
490
|
+
*/
|
|
491
|
+
identityKey: string
|
|
492
|
+
/**
|
|
493
|
+
* The max updated_at time received from the storage service receiving the request.
|
|
494
|
+
* Will be undefiend if this is the first request or if no data was previously sync'ed.
|
|
495
|
+
*
|
|
496
|
+
* `since` must include items if 'updated_at' is greater or equal. Thus, when not undefined, a sync request should always return at least one item already seen.
|
|
497
|
+
*/
|
|
498
|
+
since?: Date
|
|
499
|
+
/**
|
|
500
|
+
* A rough limit on how large the response should be.
|
|
501
|
+
* The item that exceeds the limit is included and ends adding more items.
|
|
502
|
+
*/
|
|
503
|
+
maxRoughSize: number
|
|
504
|
+
/**
|
|
505
|
+
* The maximum number of items (records) to be returned.
|
|
506
|
+
*/
|
|
507
|
+
maxItems: number
|
|
508
|
+
/**
|
|
509
|
+
* For each entity in dependency order, the offset at which to start returning items
|
|
510
|
+
* from `since`.
|
|
511
|
+
*
|
|
512
|
+
* The entity order is:
|
|
513
|
+
* 0 ProvenTxs
|
|
514
|
+
* 1 ProvenTxReqs
|
|
515
|
+
* 2 OutputBaskets
|
|
516
|
+
* 3 TxLabels
|
|
517
|
+
* 4 OutputTags
|
|
518
|
+
* 5 Transactions
|
|
519
|
+
* 6 TxLabelMaps
|
|
520
|
+
* 7 Commissions
|
|
521
|
+
* 8 Outputs
|
|
522
|
+
* 9 OutputTagMaps
|
|
523
|
+
* 10 Certificates
|
|
524
|
+
* 11 CertificateFields
|
|
525
|
+
*/
|
|
526
|
+
offsets: { name: string; offset: number }[]
|
|
527
|
+
}
|
|
528
|
+
|
|
529
|
+
/**
|
|
530
|
+
* Result received from remote `WalletStorage` in response to a `RequestSyncChunkArgs` request.
|
|
531
|
+
*
|
|
532
|
+
* Each property is undefined if there was no attempt to update it. Typically this is caused by size and count limits on this result.
|
|
533
|
+
*
|
|
534
|
+
* If all properties are empty arrays the sync process has received all available new and updated items.
|
|
535
|
+
*/
|
|
536
|
+
export interface SyncChunk {
|
|
537
|
+
fromStorageIdentityKey: string
|
|
538
|
+
toStorageIdentityKey: string
|
|
539
|
+
userIdentityKey: string
|
|
540
|
+
|
|
541
|
+
user?: TableUser
|
|
542
|
+
provenTxs?: TableProvenTx[]
|
|
543
|
+
provenTxReqs?: TableProvenTxReq[]
|
|
544
|
+
outputBaskets?: TableOutputBasket[]
|
|
545
|
+
txLabels?: TableTxLabel[]
|
|
546
|
+
outputTags?: TableOutputTag[]
|
|
547
|
+
transactions?: TableTransaction[]
|
|
548
|
+
txLabelMaps?: TableTxLabelMap[]
|
|
549
|
+
commissions?: TableCommission[]
|
|
550
|
+
outputs?: TableOutput[]
|
|
551
|
+
outputTagMaps?: TableOutputTagMap[]
|
|
552
|
+
certificates?: TableCertificate[]
|
|
553
|
+
certificateFields?: TableCertificateField[]
|
|
554
|
+
}
|
|
555
|
+
|
|
556
|
+
export interface ProcessSyncChunkResult {
|
|
557
|
+
done: boolean
|
|
558
|
+
maxUpdated_at: Date | undefined
|
|
559
|
+
updates: number
|
|
560
|
+
inserts: number
|
|
561
|
+
error?: WalletError
|
|
562
|
+
}
|
|
563
|
+
|
|
564
|
+
/**
|
|
565
|
+
* Returned results from WalletStorageManager reproveHeader method.
|
|
566
|
+
*/
|
|
567
|
+
export interface ReproveHeaderResult {
|
|
568
|
+
/**
|
|
569
|
+
* Human readable log of the reproveHeader process.
|
|
570
|
+
*/
|
|
571
|
+
log: string
|
|
572
|
+
/**
|
|
573
|
+
* List of proven_txs records that were updated with new proof data.
|
|
574
|
+
*/
|
|
575
|
+
updated: { was: TableProvenTx; update: Partial<TableProvenTx>; logUpdate: string }[]
|
|
576
|
+
/**
|
|
577
|
+
* List of proven_txs records that were checked but currently available proof is unchanged.
|
|
578
|
+
*/
|
|
579
|
+
unchanged: TableProvenTx[]
|
|
580
|
+
/**
|
|
581
|
+
* List of proven_txs records that were checked but currently proof data is unavailable.
|
|
582
|
+
*/
|
|
583
|
+
unavailable: TableProvenTx[]
|
|
584
|
+
}
|
|
585
|
+
|
|
586
|
+
/**
|
|
587
|
+
* Returned results from WalletStorageManager reproveProven method.
|
|
588
|
+
*/
|
|
589
|
+
export interface ReproveProvenResult {
|
|
590
|
+
/**
|
|
591
|
+
* Human readable log of the reproveProven process.
|
|
592
|
+
*/
|
|
593
|
+
log: string
|
|
594
|
+
/**
|
|
595
|
+
* Valid if proof data for proven_txs record is available and has changed.
|
|
596
|
+
*/
|
|
597
|
+
updated?: { update: Partial<TableProvenTx>; logUpdate: string }
|
|
598
|
+
/**
|
|
599
|
+
* True if proof data for proven_txs record was found to be unchanged.
|
|
600
|
+
*/
|
|
601
|
+
unchanged: boolean
|
|
602
|
+
/**
|
|
603
|
+
* True if proof data for proven_txs record is currently unavailable.
|
|
604
|
+
*/
|
|
605
|
+
unavailable: boolean
|
|
606
|
+
}
|