@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,322 @@
|
|
|
1
|
+
import {
|
|
2
|
+
BEEF,
|
|
3
|
+
CachedKeyDeriver,
|
|
4
|
+
CreateActionArgs,
|
|
5
|
+
CreateActionOptions,
|
|
6
|
+
CreateActionOutput,
|
|
7
|
+
CreateActionResult,
|
|
8
|
+
KeyDeriver,
|
|
9
|
+
KeyDeriverApi,
|
|
10
|
+
LockingScript,
|
|
11
|
+
P2PKH,
|
|
12
|
+
PrivateKey,
|
|
13
|
+
PublicKey,
|
|
14
|
+
ScriptTemplateUnlock,
|
|
15
|
+
WalletInterface
|
|
16
|
+
} from '@bsv/sdk'
|
|
17
|
+
import { KeyPairAddress, SetupClientWalletArgs, SetupWallet, SetupWalletClient } from './SetupWallet'
|
|
18
|
+
import { StorageIdb } from './storage/StorageIdb'
|
|
19
|
+
import { WalletStorageManager } from './storage/WalletStorageManager'
|
|
20
|
+
import { Services } from './services/Services'
|
|
21
|
+
import { Monitor } from './monitor/Monitor'
|
|
22
|
+
import { PrivilegedKeyManager } from './sdk/PrivilegedKeyManager'
|
|
23
|
+
import { Wallet } from './Wallet'
|
|
24
|
+
import { Chain } from './sdk/types'
|
|
25
|
+
import { randomBytesHex } from './utility/utilityHelpers'
|
|
26
|
+
import { StorageClient } from './storage/remoting/StorageClient'
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* The 'Setup` class provides static setup functions to construct BRC-100 compatible
|
|
30
|
+
* wallets in a variety of configurations.
|
|
31
|
+
*
|
|
32
|
+
* It serves as a starting point for experimentation and customization.
|
|
33
|
+
*/
|
|
34
|
+
export abstract class SetupClient {
|
|
35
|
+
/**
|
|
36
|
+
* Create a `Wallet`. Storage can optionally be provided or configured later.
|
|
37
|
+
*
|
|
38
|
+
* The following components are configured: KeyDeriver, WalletStorageManager, WalletService, WalletStorage.
|
|
39
|
+
* Optionally, PrivilegedKeyManager is also configured.
|
|
40
|
+
*
|
|
41
|
+
* @publicbody
|
|
42
|
+
*/
|
|
43
|
+
static async createWallet(args: SetupClientWalletArgs): Promise<SetupWallet> {
|
|
44
|
+
const chain = args.chain
|
|
45
|
+
const rootKey = PrivateKey.fromHex(args.rootKeyHex)
|
|
46
|
+
const identityKey = rootKey.toPublicKey().toString()
|
|
47
|
+
const keyDeriver = new CachedKeyDeriver(rootKey)
|
|
48
|
+
const storage = new WalletStorageManager(identityKey, args.active, args.backups)
|
|
49
|
+
if (storage.canMakeAvailable()) await storage.makeAvailable()
|
|
50
|
+
const serviceOptions = Services.createDefaultOptions(chain)
|
|
51
|
+
serviceOptions.taalApiKey = args.taalApiKey
|
|
52
|
+
const services = new Services(serviceOptions)
|
|
53
|
+
const monopts = Monitor.createDefaultWalletMonitorOptions(chain, storage, services)
|
|
54
|
+
const monitor = new Monitor(monopts)
|
|
55
|
+
monitor.addDefaultTasks()
|
|
56
|
+
const privilegedKeyManager = args.privilegedKeyGetter
|
|
57
|
+
? new PrivilegedKeyManager(args.privilegedKeyGetter)
|
|
58
|
+
: undefined
|
|
59
|
+
const wallet = new Wallet({
|
|
60
|
+
chain,
|
|
61
|
+
keyDeriver,
|
|
62
|
+
storage,
|
|
63
|
+
services,
|
|
64
|
+
monitor,
|
|
65
|
+
privilegedKeyManager
|
|
66
|
+
})
|
|
67
|
+
const r: SetupWallet = {
|
|
68
|
+
rootKey,
|
|
69
|
+
identityKey,
|
|
70
|
+
keyDeriver,
|
|
71
|
+
chain,
|
|
72
|
+
storage,
|
|
73
|
+
services,
|
|
74
|
+
monitor,
|
|
75
|
+
wallet
|
|
76
|
+
}
|
|
77
|
+
return r
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
/**
|
|
81
|
+
* Setup a new `Wallet` without requiring a .env file.
|
|
82
|
+
*
|
|
83
|
+
* @param args.chain - 'main' or 'test'
|
|
84
|
+
* @param args.rootKeyHex - Root private key for wallet's key deriver.
|
|
85
|
+
* @param args.storageUrl - Optional. `StorageClient` and `chain` compatible endpoint URL.
|
|
86
|
+
* @param args.privilegedKeyGetter - Optional. Method that will return the privileged `PrivateKey`, on demand.
|
|
87
|
+
*/
|
|
88
|
+
static async createWalletClientNoEnv(args: {
|
|
89
|
+
chain: Chain
|
|
90
|
+
rootKeyHex: string
|
|
91
|
+
storageUrl?: string
|
|
92
|
+
privilegedKeyGetter?: () => Promise<PrivateKey>
|
|
93
|
+
}): Promise<Wallet> {
|
|
94
|
+
const chain = args.chain
|
|
95
|
+
const endpointUrl = args.storageUrl || `https://${args.chain !== 'main' ? 'staging-' : ''}storage.babbage.systems`
|
|
96
|
+
const rootKey = PrivateKey.fromHex(args.rootKeyHex)
|
|
97
|
+
const keyDeriver = new CachedKeyDeriver(rootKey)
|
|
98
|
+
const storage = new WalletStorageManager(keyDeriver.identityKey)
|
|
99
|
+
const services = new Services(chain)
|
|
100
|
+
const privilegedKeyManager = args.privilegedKeyGetter
|
|
101
|
+
? new PrivilegedKeyManager(args.privilegedKeyGetter)
|
|
102
|
+
: undefined
|
|
103
|
+
const wallet = new Wallet({
|
|
104
|
+
chain,
|
|
105
|
+
keyDeriver,
|
|
106
|
+
storage,
|
|
107
|
+
services,
|
|
108
|
+
privilegedKeyManager
|
|
109
|
+
})
|
|
110
|
+
const client = new StorageClient(wallet, endpointUrl)
|
|
111
|
+
await storage.addWalletStorageProvider(client)
|
|
112
|
+
await storage.makeAvailable()
|
|
113
|
+
return wallet
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
/**
|
|
117
|
+
* @publicbody
|
|
118
|
+
*/
|
|
119
|
+
static async createWalletClient(args: SetupClientWalletClientArgs): Promise<SetupWalletClient> {
|
|
120
|
+
const wo = await SetupClient.createWallet(args)
|
|
121
|
+
|
|
122
|
+
const endpointUrl = args.endpointUrl || `https://${args.chain !== 'main' ? 'staging-' : ''}storage.babbage.systems`
|
|
123
|
+
|
|
124
|
+
const client = new StorageClient(wo.wallet, endpointUrl)
|
|
125
|
+
await wo.storage.addWalletStorageProvider(client)
|
|
126
|
+
await wo.storage.makeAvailable()
|
|
127
|
+
return {
|
|
128
|
+
...wo,
|
|
129
|
+
endpointUrl
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
/**
|
|
134
|
+
* @publicbody
|
|
135
|
+
*/
|
|
136
|
+
static getKeyPair(priv?: string | PrivateKey): KeyPairAddress {
|
|
137
|
+
if (priv === undefined) priv = PrivateKey.fromRandom()
|
|
138
|
+
else if (typeof priv === 'string') priv = new PrivateKey(priv, 'hex')
|
|
139
|
+
|
|
140
|
+
const pub = PublicKey.fromPrivateKey(priv)
|
|
141
|
+
const address = pub.toAddress()
|
|
142
|
+
return { privateKey: priv, publicKey: pub, address }
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
/**
|
|
146
|
+
* @publicbody
|
|
147
|
+
*/
|
|
148
|
+
static getLockP2PKH(address: string): LockingScript {
|
|
149
|
+
const p2pkh = new P2PKH()
|
|
150
|
+
const lock = p2pkh.lock(address)
|
|
151
|
+
return lock
|
|
152
|
+
}
|
|
153
|
+
|
|
154
|
+
/**
|
|
155
|
+
* @publicbody
|
|
156
|
+
*/
|
|
157
|
+
static getUnlockP2PKH(priv: PrivateKey, satoshis: number): ScriptTemplateUnlock {
|
|
158
|
+
const p2pkh = new P2PKH()
|
|
159
|
+
const lock = SetupClient.getLockP2PKH(SetupClient.getKeyPair(priv).address)
|
|
160
|
+
// Prepare to pay with SIGHASH_ALL and without ANYONE_CAN_PAY.
|
|
161
|
+
// In otherwords:
|
|
162
|
+
// - all outputs must remain in the current order, amount and locking scripts.
|
|
163
|
+
// - all inputs must remain from the current outpoints and sequence numbers.
|
|
164
|
+
// (unlock scripts are never signed)
|
|
165
|
+
const unlock = p2pkh.unlock(priv, 'all', false, satoshis, lock)
|
|
166
|
+
return unlock
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
/**
|
|
170
|
+
* @publicbody
|
|
171
|
+
*/
|
|
172
|
+
static createP2PKHOutputs(
|
|
173
|
+
outputs: {
|
|
174
|
+
address: string
|
|
175
|
+
satoshis: number
|
|
176
|
+
outputDescription?: string
|
|
177
|
+
basket?: string
|
|
178
|
+
tags?: string[]
|
|
179
|
+
}[]
|
|
180
|
+
): CreateActionOutput[] {
|
|
181
|
+
const os: CreateActionOutput[] = []
|
|
182
|
+
const count = outputs.length
|
|
183
|
+
for (let i = 0; i < count; i++) {
|
|
184
|
+
const o = outputs[i]
|
|
185
|
+
os.push({
|
|
186
|
+
basket: o.basket,
|
|
187
|
+
tags: o.tags,
|
|
188
|
+
satoshis: o.satoshis,
|
|
189
|
+
lockingScript: SetupClient.getLockP2PKH(o.address).toHex(),
|
|
190
|
+
outputDescription: o.outputDescription || `p2pkh ${i}`
|
|
191
|
+
})
|
|
192
|
+
}
|
|
193
|
+
return os
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
/**
|
|
197
|
+
* @publicbody
|
|
198
|
+
*/
|
|
199
|
+
static async createP2PKHOutputsAction(
|
|
200
|
+
wallet: WalletInterface,
|
|
201
|
+
outputs: {
|
|
202
|
+
address: string
|
|
203
|
+
satoshis: number
|
|
204
|
+
outputDescription?: string
|
|
205
|
+
basket?: string
|
|
206
|
+
tags?: string[]
|
|
207
|
+
}[],
|
|
208
|
+
options?: CreateActionOptions
|
|
209
|
+
): Promise<{
|
|
210
|
+
cr: CreateActionResult
|
|
211
|
+
outpoints: string[] | undefined
|
|
212
|
+
}> {
|
|
213
|
+
const os = SetupClient.createP2PKHOutputs(outputs)
|
|
214
|
+
|
|
215
|
+
const createArgs: CreateActionArgs = {
|
|
216
|
+
description: `createP2PKHOutputs`,
|
|
217
|
+
outputs: os,
|
|
218
|
+
options: {
|
|
219
|
+
...options,
|
|
220
|
+
// Don't randomize so we can simplify outpoint creation
|
|
221
|
+
randomizeOutputs: false
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
|
|
225
|
+
const cr = await wallet.createAction(createArgs)
|
|
226
|
+
|
|
227
|
+
let outpoints: string[] | undefined
|
|
228
|
+
|
|
229
|
+
if (cr.txid) {
|
|
230
|
+
outpoints = os.map((o, i) => `${cr.txid}.${i}`)
|
|
231
|
+
}
|
|
232
|
+
|
|
233
|
+
return { cr, outpoints }
|
|
234
|
+
}
|
|
235
|
+
|
|
236
|
+
/**
|
|
237
|
+
* @publicbody
|
|
238
|
+
*/
|
|
239
|
+
static async fundWalletFromP2PKHOutpoints(
|
|
240
|
+
wallet: WalletInterface,
|
|
241
|
+
outpoints: string[],
|
|
242
|
+
p2pkhKey: KeyPairAddress,
|
|
243
|
+
inputBEEF?: BEEF
|
|
244
|
+
) {
|
|
245
|
+
// TODO
|
|
246
|
+
}
|
|
247
|
+
|
|
248
|
+
/**
|
|
249
|
+
* Adds `indexedDB` based storage to a `Wallet` configured by `SetupClient.createWalletOnly`
|
|
250
|
+
*
|
|
251
|
+
* @param args.databaseName Name for this storage. For MySQL, the schema name within the MySQL instance.
|
|
252
|
+
* @param args.chain Which chain this wallet is on: 'main' or 'test'. Defaults to 'test'.
|
|
253
|
+
* @param args.rootKeyHex
|
|
254
|
+
*
|
|
255
|
+
* @publicbody
|
|
256
|
+
*/
|
|
257
|
+
static async createWalletIdb(args: SetupWalletIdbArgs): Promise<SetupWalletIdb> {
|
|
258
|
+
const wo = await SetupClient.createWallet(args)
|
|
259
|
+
const activeStorage = await SetupClient.createStorageIdb(args)
|
|
260
|
+
await wo.storage.addWalletStorageProvider(activeStorage)
|
|
261
|
+
const { user, isNew } = await activeStorage.findOrInsertUser(wo.identityKey)
|
|
262
|
+
const userId = user.userId
|
|
263
|
+
const r: SetupWalletIdb = {
|
|
264
|
+
...wo,
|
|
265
|
+
activeStorage,
|
|
266
|
+
userId
|
|
267
|
+
}
|
|
268
|
+
return r
|
|
269
|
+
}
|
|
270
|
+
|
|
271
|
+
/**
|
|
272
|
+
* @returns {StorageIdb} - `Knex` based storage provider for a wallet. May be used for either active storage or backup storage.
|
|
273
|
+
*/
|
|
274
|
+
static async createStorageIdb(args: SetupWalletIdbArgs): Promise<StorageIdb> {
|
|
275
|
+
const storage = new StorageIdb({
|
|
276
|
+
chain: args.chain,
|
|
277
|
+
commissionSatoshis: 0,
|
|
278
|
+
commissionPubKeyHex: undefined,
|
|
279
|
+
feeModel: { model: 'sat/kb', value: 1 }
|
|
280
|
+
})
|
|
281
|
+
await storage.migrate(args.databaseName, randomBytesHex(33))
|
|
282
|
+
await storage.makeAvailable()
|
|
283
|
+
return storage
|
|
284
|
+
}
|
|
285
|
+
}
|
|
286
|
+
|
|
287
|
+
/**
|
|
288
|
+
*
|
|
289
|
+
*/
|
|
290
|
+
export interface SetupWalletIdbArgs extends SetupClientWalletArgs {
|
|
291
|
+
databaseName: string
|
|
292
|
+
}
|
|
293
|
+
|
|
294
|
+
/**
|
|
295
|
+
*
|
|
296
|
+
*/
|
|
297
|
+
export interface SetupWalletIdb extends SetupWallet {
|
|
298
|
+
activeStorage: StorageIdb
|
|
299
|
+
userId: number
|
|
300
|
+
|
|
301
|
+
rootKey: PrivateKey
|
|
302
|
+
identityKey: string
|
|
303
|
+
keyDeriver: KeyDeriverApi
|
|
304
|
+
chain: Chain
|
|
305
|
+
storage: WalletStorageManager
|
|
306
|
+
services: Services
|
|
307
|
+
monitor: Monitor
|
|
308
|
+
wallet: Wallet
|
|
309
|
+
}
|
|
310
|
+
|
|
311
|
+
/**
|
|
312
|
+
* Extension `SetupWalletClientArgs` of `SetupWalletArgs` is used by `createWalletClient`
|
|
313
|
+
* to construct a `SetupWalletClient`.
|
|
314
|
+
*/
|
|
315
|
+
export interface SetupClientWalletClientArgs extends SetupClientWalletArgs {
|
|
316
|
+
/**
|
|
317
|
+
* The endpoint URL of a service hosting the `StorageServer` JSON-RPC service to
|
|
318
|
+
* which a `StorageClient` instance should connect to function as
|
|
319
|
+
* the active storage provider of the newly created wallet.
|
|
320
|
+
*/
|
|
321
|
+
endpointUrl?: string
|
|
322
|
+
}
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
import { PrivateKey, KeyDeriver, PublicKey, KeyDeriverApi } from '@bsv/sdk'
|
|
2
|
+
import { Wallet } from './Wallet'
|
|
3
|
+
import { Chain } from './sdk/types'
|
|
4
|
+
import { WalletStorageManager } from './storage/WalletStorageManager'
|
|
5
|
+
import { Services } from './services/Services'
|
|
6
|
+
import { Monitor } from './monitor/Monitor'
|
|
7
|
+
import { WalletStorageProvider } from './sdk/WalletStorage.interfaces'
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* When creating a BRC-100 compatible `Wallet`, many components come into play.
|
|
11
|
+
*
|
|
12
|
+
* All of the `createWallet` functions in the `Setup` and `SetupClient` classes return
|
|
13
|
+
* an object with direct access to each component to facilitate experimentation, testing
|
|
14
|
+
* and customization.
|
|
15
|
+
*/
|
|
16
|
+
|
|
17
|
+
export interface SetupWallet {
|
|
18
|
+
/**
|
|
19
|
+
* The rootKey of the `KeyDeriver`. The private key from which other keys are derived.
|
|
20
|
+
*/
|
|
21
|
+
rootKey: PrivateKey
|
|
22
|
+
/**
|
|
23
|
+
* The pubilc key associated with the `rootKey` which also serves as the wallet's identity.
|
|
24
|
+
*/
|
|
25
|
+
identityKey: string
|
|
26
|
+
/**
|
|
27
|
+
* The `KeyDeriver` component used by the wallet for key derivation and cryptographic functions.
|
|
28
|
+
*/
|
|
29
|
+
keyDeriver: KeyDeriverApi
|
|
30
|
+
/**
|
|
31
|
+
* The chain ('main' or 'test') which the wallet accesses.
|
|
32
|
+
*/
|
|
33
|
+
chain: Chain
|
|
34
|
+
/**
|
|
35
|
+
* The `WalletStorageManager` that manages all the configured storage providers (active and backups)
|
|
36
|
+
* accessed by the wallet.
|
|
37
|
+
*/
|
|
38
|
+
storage: WalletStorageManager
|
|
39
|
+
/**
|
|
40
|
+
* The network `Services` component which provides the wallet with access to external services hosted
|
|
41
|
+
* on the public network.
|
|
42
|
+
*/
|
|
43
|
+
services: Services
|
|
44
|
+
/**
|
|
45
|
+
* The background task `Monitor` component available to the wallet to offload tasks
|
|
46
|
+
* that speed up wallet operations and maintain data integrity.
|
|
47
|
+
*/
|
|
48
|
+
monitor: Monitor
|
|
49
|
+
/**
|
|
50
|
+
* The actual BRC-100 `Wallet` to which all the other properties and components contribute.
|
|
51
|
+
*
|
|
52
|
+
* Note that internally, the wallet is itself linked to all these properties and components.
|
|
53
|
+
* They are included in this interface to facilitate access after wallet construction for
|
|
54
|
+
* experimentation, testing and customization. Any changes made to the configuration of these
|
|
55
|
+
* components after construction may disrupt the normal operation of the wallet.
|
|
56
|
+
*/
|
|
57
|
+
wallet: Wallet
|
|
58
|
+
} /**
|
|
59
|
+
* A private key and associated public key and address.
|
|
60
|
+
*/
|
|
61
|
+
|
|
62
|
+
export interface KeyPairAddress {
|
|
63
|
+
privateKey: PrivateKey
|
|
64
|
+
publicKey: PublicKey
|
|
65
|
+
address: string
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Arguments used by `createWallet` to construct a `SetupWallet`.
|
|
69
|
+
*
|
|
70
|
+
* Extension `SetupWalletClientArgs` used by `createWalletClient` to construct a `SetupWalletClient`.
|
|
71
|
+
*
|
|
72
|
+
* Extension `SetupWalletIdbArgs` used by `createWalletIdb` to construct a `SetupWalletIdb`.
|
|
73
|
+
*/
|
|
74
|
+
|
|
75
|
+
export interface SetupClientWalletArgs {
|
|
76
|
+
chain: Chain
|
|
77
|
+
/**
|
|
78
|
+
* The non-privileged private key used to initialize the `KeyDeriver` and determine the `identityKey`.
|
|
79
|
+
*/
|
|
80
|
+
rootKeyHex: string
|
|
81
|
+
/**
|
|
82
|
+
* Optional. The privileged private key getter used to initialize the `PrivilegedKeyManager`.
|
|
83
|
+
* Defaults to undefined.
|
|
84
|
+
*/
|
|
85
|
+
privilegedKeyGetter?: () => Promise<PrivateKey>
|
|
86
|
+
/**
|
|
87
|
+
* Optional. Active wallet storage. Can be added later.
|
|
88
|
+
*/
|
|
89
|
+
active?: WalletStorageProvider
|
|
90
|
+
/**
|
|
91
|
+
* Optional. One or more storage providers managed as backup destinations. Can be added later.
|
|
92
|
+
*/
|
|
93
|
+
backups?: WalletStorageProvider[]
|
|
94
|
+
|
|
95
|
+
taalApiKey?: string
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
/**
|
|
99
|
+
* Extension `SetupWalletClient` of `SetupWallet` is returned by `createWalletClient`
|
|
100
|
+
*/
|
|
101
|
+
export interface SetupWalletClient extends SetupWallet {
|
|
102
|
+
/**
|
|
103
|
+
* The endpoint URL of the service hosting the `StorageServer` JSON-RPC service to
|
|
104
|
+
* which a `StorageClient` instance is connected to function as
|
|
105
|
+
* the active storage provider of the wallet.
|
|
106
|
+
*/
|
|
107
|
+
endpointUrl: string
|
|
108
|
+
}
|