@arkade-os/sdk 0.4.26 → 0.4.28
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/README.md +36 -125
- package/dist/adapters/asyncStorage.cjs +48 -0
- package/dist/adapters/asyncStorage.cjs.map +1 -0
- package/dist/adapters/asyncStorage.d.cts +16 -0
- package/dist/{types/storage → adapters}/asyncStorage.d.ts +5 -2
- package/dist/adapters/asyncStorage.js +46 -0
- package/dist/adapters/asyncStorage.js.map +1 -0
- package/dist/adapters/expo.cjs +19 -0
- package/dist/adapters/expo.cjs.map +1 -0
- package/dist/adapters/expo.d.cts +48 -0
- package/dist/adapters/expo.d.ts +48 -0
- package/dist/adapters/expo.js +6 -0
- package/dist/adapters/expo.js.map +1 -0
- package/dist/adapters/fileSystem.cjs +116 -0
- package/dist/adapters/fileSystem.cjs.map +1 -0
- package/dist/adapters/fileSystem.d.cts +17 -0
- package/dist/{types/storage → adapters}/fileSystem.d.ts +5 -2
- package/dist/adapters/fileSystem.js +93 -0
- package/dist/adapters/fileSystem.js.map +1 -0
- package/dist/adapters/indexedDB.cjs +103 -0
- package/dist/adapters/indexedDB.cjs.map +1 -0
- package/dist/adapters/indexedDB.d.cts +18 -0
- package/dist/{types/storage → adapters}/indexedDB.d.ts +5 -2
- package/dist/adapters/indexedDB.js +101 -0
- package/dist/adapters/indexedDB.js.map +1 -0
- package/dist/adapters/localStorage.cjs +50 -0
- package/dist/adapters/localStorage.cjs.map +1 -0
- package/dist/{types/storage/inMemory.d.ts → adapters/localStorage.d.cts} +6 -3
- package/dist/{types/storage → adapters}/localStorage.d.ts +5 -2
- package/dist/adapters/localStorage.js +48 -0
- package/dist/adapters/localStorage.js.map +1 -0
- package/dist/ark-TZ1gXAXU.d.cts +3880 -0
- package/dist/ark-TZ1gXAXU.d.ts +3880 -0
- package/dist/{types/worker/expo/asyncStorageTaskQueue.d.ts → asyncStorageTaskQueue-Cb1F_Z9s.d.ts} +6 -3
- package/dist/asyncStorageTaskQueue-EFqSmYTg.d.cts +49 -0
- package/dist/chunk-5BLDMQED.cjs +18 -0
- package/dist/chunk-5BLDMQED.cjs.map +1 -0
- package/dist/chunk-5PG7DV7A.cjs +805 -0
- package/dist/chunk-5PG7DV7A.cjs.map +1 -0
- package/dist/chunk-A3EMF7RN.js +95 -0
- package/dist/chunk-A3EMF7RN.js.map +1 -0
- package/dist/chunk-ADV27S4N.cjs +2701 -0
- package/dist/chunk-ADV27S4N.cjs.map +1 -0
- package/dist/chunk-BQLHADL7.js +13805 -0
- package/dist/chunk-BQLHADL7.js.map +1 -0
- package/dist/chunk-CFZMTDWI.js +209 -0
- package/dist/chunk-CFZMTDWI.js.map +1 -0
- package/dist/chunk-FG5ACJJW.cjs +212 -0
- package/dist/chunk-FG5ACJJW.cjs.map +1 -0
- package/dist/chunk-HW3JJ323.js +768 -0
- package/dist/chunk-HW3JJ323.js.map +1 -0
- package/dist/chunk-I3DGUUCT.cjs +838 -0
- package/dist/chunk-I3DGUUCT.cjs.map +1 -0
- package/dist/chunk-IPX2R7FR.cjs +100 -0
- package/dist/chunk-IPX2R7FR.cjs.map +1 -0
- package/dist/chunk-NSBPE2FW.js +15 -0
- package/dist/chunk-NSBPE2FW.js.map +1 -0
- package/dist/chunk-T64LAI7L.js +829 -0
- package/dist/chunk-T64LAI7L.js.map +1 -0
- package/dist/chunk-ZBUDLTBO.js +2671 -0
- package/dist/chunk-ZBUDLTBO.js.map +1 -0
- package/dist/chunk-ZLO6NETT.cjs +13910 -0
- package/dist/chunk-ZLO6NETT.cjs.map +1 -0
- package/dist/contracts/handlers/index.cjs +26 -0
- package/dist/contracts/handlers/index.cjs.map +1 -0
- package/dist/contracts/handlers/index.d.cts +7 -0
- package/dist/contracts/handlers/index.d.ts +7 -0
- package/dist/contracts/handlers/index.js +5 -0
- package/dist/contracts/handlers/index.js.map +1 -0
- package/dist/delegate-BFZs69hp.d.cts +84 -0
- package/dist/delegate-aaVGfWsV.d.ts +84 -0
- package/dist/index-B22cA64m.d.cts +199 -0
- package/dist/{types/storage/index.d.ts → index-C0IanN1m.d.cts} +3 -1
- package/dist/index-C0IanN1m.d.ts +11 -0
- package/dist/index-NDla_UoJ.d.ts +199 -0
- package/dist/index.cjs +480 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +3343 -0
- package/dist/index.d.ts +3343 -0
- package/dist/index.js +7 -0
- package/dist/index.js.map +1 -0
- package/dist/repositories/realm/index.cjs +513 -0
- package/dist/repositories/realm/index.cjs.map +1 -0
- package/dist/repositories/realm/index.d.cts +217 -0
- package/dist/{types/repositories/realm/schemas.d.ts → repositories/realm/index.d.ts} +80 -112
- package/dist/repositories/realm/index.js +507 -0
- package/dist/repositories/realm/index.js.map +1 -0
- package/dist/repositories/sqlite/index.cjs +588 -0
- package/dist/repositories/sqlite/index.cjs.map +1 -0
- package/dist/repositories/sqlite/index.d.cts +118 -0
- package/dist/{types/repositories/sqlite/walletRepository.d.ts → repositories/sqlite/index.d.ts} +58 -5
- package/dist/repositories/sqlite/index.js +585 -0
- package/dist/repositories/sqlite/index.js.map +1 -0
- package/dist/taskRunner-C6Ff4OaU.d.cts +114 -0
- package/dist/taskRunner-yvPN8Z0K.d.ts +114 -0
- package/dist/wallet/expo/background.cjs +93 -0
- package/dist/wallet/expo/background.cjs.map +1 -0
- package/dist/wallet/expo/background.d.cts +84 -0
- package/dist/wallet/expo/background.d.ts +84 -0
- package/dist/wallet/expo/background.js +68 -0
- package/dist/wallet/expo/background.js.map +1 -0
- package/dist/wallet/expo/index.cjs +171 -0
- package/dist/wallet/expo/index.cjs.map +1 -0
- package/dist/wallet/expo/index.d.cts +122 -0
- package/dist/{types/wallet/expo/wallet.d.ts → wallet/expo/index.d.ts} +45 -22
- package/dist/wallet/expo/index.js +169 -0
- package/dist/wallet/expo/index.js.map +1 -0
- package/dist/wallet-AF-p-OWj.d.cts +774 -0
- package/dist/wallet-D9NBRqvC.d.ts +774 -0
- package/dist/worker/expo/index.cjs +140 -0
- package/dist/worker/expo/index.cjs.map +1 -0
- package/dist/worker/expo/index.d.cts +29 -0
- package/dist/worker/expo/index.d.ts +29 -0
- package/dist/worker/expo/index.js +121 -0
- package/dist/worker/expo/index.js.map +1 -0
- package/package.json +110 -76
- package/dist/cjs/adapters/asyncStorage.js +0 -5
- package/dist/cjs/adapters/expo.js +0 -8
- package/dist/cjs/adapters/fileSystem.js +0 -5
- package/dist/cjs/adapters/indexedDB.js +0 -5
- package/dist/cjs/adapters/localStorage.js +0 -5
- package/dist/cjs/arkfee/celenv.js +0 -43
- package/dist/cjs/arkfee/estimator.js +0 -143
- package/dist/cjs/arkfee/index.js +0 -5
- package/dist/cjs/arkfee/types.js +0 -26
- package/dist/cjs/arknote/index.js +0 -128
- package/dist/cjs/bip322/index.js +0 -270
- package/dist/cjs/contracts/arkcontract.js +0 -147
- package/dist/cjs/contracts/contractManager.js +0 -629
- package/dist/cjs/contracts/contractWatcher.js +0 -598
- package/dist/cjs/contracts/handlers/default.js +0 -93
- package/dist/cjs/contracts/handlers/delegate.js +0 -90
- package/dist/cjs/contracts/handlers/helpers.js +0 -115
- package/dist/cjs/contracts/handlers/index.js +0 -19
- package/dist/cjs/contracts/handlers/registry.js +0 -89
- package/dist/cjs/contracts/handlers/vhtlc.js +0 -194
- package/dist/cjs/contracts/index.js +0 -41
- package/dist/cjs/contracts/types.js +0 -2
- package/dist/cjs/contracts/vtxoOwnership.js +0 -78
- package/dist/cjs/extension/asset/assetGroup.js +0 -228
- package/dist/cjs/extension/asset/assetId.js +0 -152
- package/dist/cjs/extension/asset/assetInput.js +0 -222
- package/dist/cjs/extension/asset/assetOutput.js +0 -174
- package/dist/cjs/extension/asset/assetRef.js +0 -148
- package/dist/cjs/extension/asset/index.js +0 -23
- package/dist/cjs/extension/asset/metadata.js +0 -187
- package/dist/cjs/extension/asset/packet.js +0 -114
- package/dist/cjs/extension/asset/types.js +0 -22
- package/dist/cjs/extension/asset/utils.js +0 -105
- package/dist/cjs/extension/index.js +0 -254
- package/dist/cjs/extension/packet.js +0 -20
- package/dist/cjs/forfeit.js +0 -45
- package/dist/cjs/identity/descriptor.js +0 -169
- package/dist/cjs/identity/descriptorProvider.js +0 -2
- package/dist/cjs/identity/hdCapableIdentity.js +0 -2
- package/dist/cjs/identity/index.js +0 -38
- package/dist/cjs/identity/seedIdentity.js +0 -461
- package/dist/cjs/identity/serialize.js +0 -171
- package/dist/cjs/identity/singleKey.js +0 -126
- package/dist/cjs/identity/staticDescriptorProvider.js +0 -65
- package/dist/cjs/index.js +0 -200
- package/dist/cjs/intent/index.js +0 -259
- package/dist/cjs/musig2/index.js +0 -11
- package/dist/cjs/musig2/keys.js +0 -57
- package/dist/cjs/musig2/nonces.js +0 -48
- package/dist/cjs/musig2/sign.js +0 -102
- package/dist/cjs/networks.js +0 -26
- package/dist/cjs/package.json +0 -3
- package/dist/cjs/providers/ark.js +0 -577
- package/dist/cjs/providers/delegator.js +0 -85
- package/dist/cjs/providers/electrum.js +0 -869
- package/dist/cjs/providers/errors.js +0 -59
- package/dist/cjs/providers/expoArk.js +0 -82
- package/dist/cjs/providers/expoIndexer.js +0 -111
- package/dist/cjs/providers/expoUtils.js +0 -124
- package/dist/cjs/providers/indexer.js +0 -630
- package/dist/cjs/providers/onchain.js +0 -262
- package/dist/cjs/providers/utils.js +0 -121
- package/dist/cjs/repositories/contractRepository.js +0 -2
- package/dist/cjs/repositories/inMemory/contractRepository.js +0 -55
- package/dist/cjs/repositories/inMemory/walletRepository.js +0 -115
- package/dist/cjs/repositories/index.js +0 -34
- package/dist/cjs/repositories/indexedDB/contractRepository.js +0 -187
- package/dist/cjs/repositories/indexedDB/db.js +0 -19
- package/dist/cjs/repositories/indexedDB/manager.js +0 -100
- package/dist/cjs/repositories/indexedDB/schema.js +0 -204
- package/dist/cjs/repositories/indexedDB/walletRepository.js +0 -474
- package/dist/cjs/repositories/indexedDB/websqlAdapter.js +0 -144
- package/dist/cjs/repositories/migrations/contractRepositoryImpl.js +0 -127
- package/dist/cjs/repositories/migrations/fromStorageAdapter.js +0 -66
- package/dist/cjs/repositories/migrations/walletRepositoryImpl.js +0 -184
- package/dist/cjs/repositories/realm/contractRepository.js +0 -116
- package/dist/cjs/repositories/realm/index.js +0 -11
- package/dist/cjs/repositories/realm/schemas.js +0 -157
- package/dist/cjs/repositories/realm/types.js +0 -7
- package/dist/cjs/repositories/realm/walletRepository.js +0 -305
- package/dist/cjs/repositories/scriptFromAddress.js +0 -16
- package/dist/cjs/repositories/serialization.js +0 -82
- package/dist/cjs/repositories/sqlite/contractRepository.js +0 -135
- package/dist/cjs/repositories/sqlite/index.js +0 -7
- package/dist/cjs/repositories/sqlite/types.js +0 -2
- package/dist/cjs/repositories/sqlite/walletRepository.js +0 -441
- package/dist/cjs/repositories/walletRepository.js +0 -2
- package/dist/cjs/script/address.js +0 -108
- package/dist/cjs/script/base.js +0 -185
- package/dist/cjs/script/default.js +0 -57
- package/dist/cjs/script/delegate.js +0 -53
- package/dist/cjs/script/tapscript.js +0 -619
- package/dist/cjs/script/vhtlc.js +0 -170
- package/dist/cjs/storage/asyncStorage.js +0 -50
- package/dist/cjs/storage/fileSystem.js +0 -141
- package/dist/cjs/storage/inMemory.js +0 -24
- package/dist/cjs/storage/index.js +0 -2
- package/dist/cjs/storage/indexedDB.js +0 -101
- package/dist/cjs/storage/localStorage.js +0 -51
- package/dist/cjs/tree/signingSession.js +0 -229
- package/dist/cjs/tree/txTree.js +0 -192
- package/dist/cjs/tree/validation.js +0 -107
- package/dist/cjs/utils/anchor.js +0 -35
- package/dist/cjs/utils/arkTransaction.js +0 -271
- package/dist/cjs/utils/bip21.js +0 -127
- package/dist/cjs/utils/syncCursors.js +0 -128
- package/dist/cjs/utils/timelock.js +0 -59
- package/dist/cjs/utils/transaction.js +0 -28
- package/dist/cjs/utils/transactionHistory.js +0 -183
- package/dist/cjs/utils/txSizeEstimator.js +0 -132
- package/dist/cjs/utils/unknownFields.js +0 -174
- package/dist/cjs/wallet/asset-manager.js +0 -330
- package/dist/cjs/wallet/asset.js +0 -119
- package/dist/cjs/wallet/batch.js +0 -183
- package/dist/cjs/wallet/delegator.js +0 -302
- package/dist/cjs/wallet/expo/background.js +0 -116
- package/dist/cjs/wallet/expo/index.js +0 -9
- package/dist/cjs/wallet/expo/wallet.js +0 -230
- package/dist/cjs/wallet/hdDescriptorProvider.js +0 -159
- package/dist/cjs/wallet/index.js +0 -82
- package/dist/cjs/wallet/onchain.js +0 -290
- package/dist/cjs/wallet/ramps.js +0 -216
- package/dist/cjs/wallet/serviceWorker/wallet-message-handler.js +0 -953
- package/dist/cjs/wallet/serviceWorker/wallet.js +0 -1173
- package/dist/cjs/wallet/unroll.js +0 -289
- package/dist/cjs/wallet/utils.js +0 -111
- package/dist/cjs/wallet/validation.js +0 -154
- package/dist/cjs/wallet/vtxo-manager.js +0 -1142
- package/dist/cjs/wallet/wallet.js +0 -2049
- package/dist/cjs/worker/browser/service-worker-manager.js +0 -183
- package/dist/cjs/worker/browser/utils.js +0 -67
- package/dist/cjs/worker/errors.js +0 -16
- package/dist/cjs/worker/expo/asyncStorageTaskQueue.js +0 -78
- package/dist/cjs/worker/expo/index.js +0 -13
- package/dist/cjs/worker/expo/processors/contractPollProcessor.js +0 -62
- package/dist/cjs/worker/expo/processors/index.js +0 -6
- package/dist/cjs/worker/expo/taskQueue.js +0 -41
- package/dist/cjs/worker/expo/taskRunner.js +0 -73
- package/dist/cjs/worker/messageBus.js +0 -473
- package/dist/esm/adapters/asyncStorage.js +0 -1
- package/dist/esm/adapters/expo.js +0 -3
- package/dist/esm/adapters/fileSystem.js +0 -1
- package/dist/esm/adapters/indexedDB.js +0 -1
- package/dist/esm/adapters/localStorage.js +0 -1
- package/dist/esm/arkfee/celenv.js +0 -40
- package/dist/esm/arkfee/estimator.js +0 -139
- package/dist/esm/arkfee/index.js +0 -1
- package/dist/esm/arkfee/types.js +0 -22
- package/dist/esm/arknote/index.js +0 -124
- package/dist/esm/bip322/index.js +0 -267
- package/dist/esm/contracts/arkcontract.js +0 -140
- package/dist/esm/contracts/contractManager.js +0 -625
- package/dist/esm/contracts/contractWatcher.js +0 -594
- package/dist/esm/contracts/handlers/default.js +0 -90
- package/dist/esm/contracts/handlers/delegate.js +0 -87
- package/dist/esm/contracts/handlers/helpers.js +0 -110
- package/dist/esm/contracts/handlers/index.js +0 -12
- package/dist/esm/contracts/handlers/registry.js +0 -86
- package/dist/esm/contracts/handlers/vhtlc.js +0 -191
- package/dist/esm/contracts/index.js +0 -13
- package/dist/esm/contracts/types.js +0 -1
- package/dist/esm/contracts/vtxoOwnership.js +0 -69
- package/dist/esm/extension/asset/assetGroup.js +0 -224
- package/dist/esm/extension/asset/assetId.js +0 -148
- package/dist/esm/extension/asset/assetInput.js +0 -217
- package/dist/esm/extension/asset/assetOutput.js +0 -169
- package/dist/esm/extension/asset/assetRef.js +0 -144
- package/dist/esm/extension/asset/index.js +0 -8
- package/dist/esm/extension/asset/metadata.js +0 -182
- package/dist/esm/extension/asset/packet.js +0 -110
- package/dist/esm/extension/asset/types.js +0 -19
- package/dist/esm/extension/asset/utils.js +0 -99
- package/dist/esm/extension/index.js +0 -248
- package/dist/esm/extension/packet.js +0 -16
- package/dist/esm/forfeit.js +0 -41
- package/dist/esm/identity/descriptor.js +0 -161
- package/dist/esm/identity/descriptorProvider.js +0 -1
- package/dist/esm/identity/hdCapableIdentity.js +0 -1
- package/dist/esm/identity/index.js +0 -12
- package/dist/esm/identity/seedIdentity.js +0 -453
- package/dist/esm/identity/serialize.js +0 -164
- package/dist/esm/identity/singleKey.js +0 -121
- package/dist/esm/identity/staticDescriptorProvider.js +0 -61
- package/dist/esm/index.js +0 -87
- package/dist/esm/intent/index.js +0 -255
- package/dist/esm/musig2/index.js +0 -3
- package/dist/esm/musig2/keys.js +0 -21
- package/dist/esm/musig2/nonces.js +0 -11
- package/dist/esm/musig2/sign.js +0 -63
- package/dist/esm/networks.js +0 -22
- package/dist/esm/package.json +0 -3
- package/dist/esm/providers/ark.js +0 -572
- package/dist/esm/providers/delegator.js +0 -81
- package/dist/esm/providers/electrum.js +0 -864
- package/dist/esm/providers/errors.js +0 -54
- package/dist/esm/providers/expoArk.js +0 -78
- package/dist/esm/providers/expoIndexer.js +0 -107
- package/dist/esm/providers/expoUtils.js +0 -87
- package/dist/esm/providers/indexer.js +0 -626
- package/dist/esm/providers/onchain.js +0 -258
- package/dist/esm/providers/utils.js +0 -117
- package/dist/esm/repositories/contractRepository.js +0 -1
- package/dist/esm/repositories/inMemory/contractRepository.js +0 -51
- package/dist/esm/repositories/inMemory/walletRepository.js +0 -111
- package/dist/esm/repositories/index.js +0 -10
- package/dist/esm/repositories/indexedDB/contractRepository.js +0 -183
- package/dist/esm/repositories/indexedDB/db.js +0 -4
- package/dist/esm/repositories/indexedDB/manager.js +0 -95
- package/dist/esm/repositories/indexedDB/schema.js +0 -199
- package/dist/esm/repositories/indexedDB/walletRepository.js +0 -470
- package/dist/esm/repositories/indexedDB/websqlAdapter.js +0 -138
- package/dist/esm/repositories/migrations/contractRepositoryImpl.js +0 -121
- package/dist/esm/repositories/migrations/fromStorageAdapter.js +0 -58
- package/dist/esm/repositories/migrations/walletRepositoryImpl.js +0 -180
- package/dist/esm/repositories/realm/contractRepository.js +0 -112
- package/dist/esm/repositories/realm/index.js +0 -3
- package/dist/esm/repositories/realm/schemas.js +0 -153
- package/dist/esm/repositories/realm/types.js +0 -6
- package/dist/esm/repositories/realm/walletRepository.js +0 -301
- package/dist/esm/repositories/scriptFromAddress.js +0 -13
- package/dist/esm/repositories/serialization.js +0 -67
- package/dist/esm/repositories/sqlite/contractRepository.js +0 -131
- package/dist/esm/repositories/sqlite/index.js +0 -2
- package/dist/esm/repositories/sqlite/types.js +0 -1
- package/dist/esm/repositories/sqlite/walletRepository.js +0 -437
- package/dist/esm/repositories/walletRepository.js +0 -1
- package/dist/esm/script/address.js +0 -104
- package/dist/esm/script/base.js +0 -179
- package/dist/esm/script/default.js +0 -54
- package/dist/esm/script/delegate.js +0 -50
- package/dist/esm/script/tapscript.js +0 -615
- package/dist/esm/script/vhtlc.js +0 -167
- package/dist/esm/storage/asyncStorage.js +0 -46
- package/dist/esm/storage/fileSystem.js +0 -104
- package/dist/esm/storage/inMemory.js +0 -20
- package/dist/esm/storage/index.js +0 -1
- package/dist/esm/storage/indexedDB.js +0 -97
- package/dist/esm/storage/localStorage.js +0 -47
- package/dist/esm/tree/signingSession.js +0 -191
- package/dist/esm/tree/txTree.js +0 -188
- package/dist/esm/tree/validation.js +0 -101
- package/dist/esm/utils/anchor.js +0 -31
- package/dist/esm/utils/arkTransaction.js +0 -264
- package/dist/esm/utils/bip21.js +0 -123
- package/dist/esm/utils/syncCursors.js +0 -119
- package/dist/esm/utils/timelock.js +0 -22
- package/dist/esm/utils/transaction.js +0 -24
- package/dist/esm/utils/transactionHistory.js +0 -180
- package/dist/esm/utils/txSizeEstimator.js +0 -128
- package/dist/esm/utils/unknownFields.js +0 -169
- package/dist/esm/wallet/asset-manager.js +0 -325
- package/dist/esm/wallet/asset.js +0 -113
- package/dist/esm/wallet/batch.js +0 -180
- package/dist/esm/wallet/delegator.js +0 -297
- package/dist/esm/wallet/expo/background.js +0 -111
- package/dist/esm/wallet/expo/index.js +0 -2
- package/dist/esm/wallet/expo/wallet.js +0 -193
- package/dist/esm/wallet/hdDescriptorProvider.js +0 -155
- package/dist/esm/wallet/index.js +0 -75
- package/dist/esm/wallet/onchain.js +0 -285
- package/dist/esm/wallet/ramps.js +0 -212
- package/dist/esm/wallet/serviceWorker/wallet-message-handler.js +0 -946
- package/dist/esm/wallet/serviceWorker/wallet.js +0 -1168
- package/dist/esm/wallet/unroll.js +0 -285
- package/dist/esm/wallet/utils.js +0 -103
- package/dist/esm/wallet/validation.js +0 -142
- package/dist/esm/wallet/vtxo-manager.js +0 -1136
- package/dist/esm/wallet/wallet.js +0 -2041
- package/dist/esm/worker/browser/service-worker-manager.js +0 -177
- package/dist/esm/worker/browser/utils.js +0 -63
- package/dist/esm/worker/errors.js +0 -11
- package/dist/esm/worker/expo/asyncStorageTaskQueue.js +0 -74
- package/dist/esm/worker/expo/index.js +0 -4
- package/dist/esm/worker/expo/processors/contractPollProcessor.js +0 -59
- package/dist/esm/worker/expo/processors/index.js +0 -1
- package/dist/esm/worker/expo/taskQueue.js +0 -37
- package/dist/esm/worker/expo/taskRunner.js +0 -69
- package/dist/esm/worker/messageBus.js +0 -469
- package/dist/types/adapters/asyncStorage.d.ts +0 -2
- package/dist/types/adapters/expo.d.ts +0 -4
- package/dist/types/adapters/fileSystem.d.ts +0 -2
- package/dist/types/adapters/indexedDB.d.ts +0 -2
- package/dist/types/adapters/localStorage.d.ts +0 -2
- package/dist/types/arkfee/celenv.d.ts +0 -25
- package/dist/types/arkfee/estimator.d.ts +0 -49
- package/dist/types/arkfee/index.d.ts +0 -2
- package/dist/types/arkfee/types.d.ts +0 -38
- package/dist/types/arknote/index.d.ts +0 -84
- package/dist/types/bip322/index.d.ts +0 -55
- package/dist/types/contracts/arkcontract.d.ts +0 -99
- package/dist/types/contracts/contractManager.d.ts +0 -381
- package/dist/types/contracts/contractWatcher.d.ts +0 -217
- package/dist/types/contracts/handlers/default.d.ts +0 -19
- package/dist/types/contracts/handlers/delegate.d.ts +0 -21
- package/dist/types/contracts/handlers/helpers.d.ts +0 -19
- package/dist/types/contracts/handlers/index.d.ts +0 -7
- package/dist/types/contracts/handlers/registry.d.ts +0 -65
- package/dist/types/contracts/handlers/vhtlc.d.ts +0 -32
- package/dist/types/contracts/index.d.ts +0 -14
- package/dist/types/contracts/types.d.ts +0 -233
- package/dist/types/contracts/vtxoOwnership.d.ts +0 -33
- package/dist/types/extension/asset/assetGroup.d.ts +0 -119
- package/dist/types/extension/asset/assetId.d.ts +0 -83
- package/dist/types/extension/asset/assetInput.d.ts +0 -64
- package/dist/types/extension/asset/assetOutput.d.ts +0 -54
- package/dist/types/extension/asset/assetRef.d.ts +0 -91
- package/dist/types/extension/asset/index.d.ts +0 -8
- package/dist/types/extension/asset/metadata.d.ts +0 -52
- package/dist/types/extension/asset/packet.d.ts +0 -41
- package/dist/types/extension/asset/types.d.ts +0 -16
- package/dist/types/extension/asset/utils.d.ts +0 -21
- package/dist/types/extension/index.d.ts +0 -56
- package/dist/types/extension/packet.d.ts +0 -21
- package/dist/types/forfeit.d.ts +0 -18
- package/dist/types/identity/descriptor.d.ts +0 -61
- package/dist/types/identity/descriptorProvider.d.ts +0 -35
- package/dist/types/identity/hdCapableIdentity.d.ts +0 -44
- package/dist/types/identity/index.d.ts +0 -56
- package/dist/types/identity/seedIdentity.d.ts +0 -254
- package/dist/types/identity/serialize.d.ts +0 -96
- package/dist/types/identity/singleKey.d.ts +0 -62
- package/dist/types/identity/staticDescriptorProvider.d.ts +0 -18
- package/dist/types/index.d.ts +0 -59
- package/dist/types/intent/index.d.ts +0 -86
- package/dist/types/musig2/index.d.ts +0 -4
- package/dist/types/musig2/keys.d.ts +0 -9
- package/dist/types/musig2/nonces.d.ts +0 -14
- package/dist/types/musig2/sign.d.ts +0 -27
- package/dist/types/networks.d.ts +0 -16
- package/dist/types/providers/ark.d.ts +0 -369
- package/dist/types/providers/delegator.d.ts +0 -82
- package/dist/types/providers/electrum.d.ts +0 -312
- package/dist/types/providers/errors.d.ts +0 -13
- package/dist/types/providers/expoArk.d.ts +0 -22
- package/dist/types/providers/expoIndexer.d.ts +0 -18
- package/dist/types/providers/expoUtils.d.ts +0 -18
- package/dist/types/providers/indexer.d.ts +0 -301
- package/dist/types/providers/onchain.d.ts +0 -148
- package/dist/types/providers/utils.d.ts +0 -12
- package/dist/types/repositories/contractRepository.d.ts +0 -32
- package/dist/types/repositories/inMemory/contractRepository.d.ts +0 -17
- package/dist/types/repositories/inMemory/walletRepository.d.ts +0 -29
- package/dist/types/repositories/index.d.ts +0 -9
- package/dist/types/repositories/indexedDB/contractRepository.d.ts +0 -21
- package/dist/types/repositories/indexedDB/db.d.ts +0 -4
- package/dist/types/repositories/indexedDB/manager.d.ts +0 -25
- package/dist/types/repositories/indexedDB/schema.d.ts +0 -9
- package/dist/types/repositories/indexedDB/walletRepository.d.ts +0 -28
- package/dist/types/repositories/indexedDB/websqlAdapter.d.ts +0 -49
- package/dist/types/repositories/migrations/contractRepositoryImpl.d.ts +0 -24
- package/dist/types/repositories/migrations/fromStorageAdapter.d.ts +0 -19
- package/dist/types/repositories/migrations/walletRepositoryImpl.d.ts +0 -27
- package/dist/types/repositories/realm/contractRepository.d.ts +0 -24
- package/dist/types/repositories/realm/index.d.ts +0 -4
- package/dist/types/repositories/realm/types.d.ts +0 -16
- package/dist/types/repositories/realm/walletRepository.d.ts +0 -34
- package/dist/types/repositories/scriptFromAddress.d.ts +0 -9
- package/dist/types/repositories/serialization.d.ts +0 -65
- package/dist/types/repositories/sqlite/contractRepository.d.ts +0 -33
- package/dist/types/repositories/sqlite/index.d.ts +0 -3
- package/dist/types/repositories/sqlite/types.d.ts +0 -18
- package/dist/types/repositories/walletRepository.d.ts +0 -72
- package/dist/types/script/address.d.ts +0 -67
- package/dist/types/script/base.d.ts +0 -105
- package/dist/types/script/default.d.ts +0 -44
- package/dist/types/script/delegate.d.ts +0 -40
- package/dist/types/script/tapscript.d.ts +0 -169
- package/dist/types/script/vhtlc.d.ts +0 -66
- package/dist/types/tree/signingSession.d.ts +0 -37
- package/dist/types/tree/txTree.d.ts +0 -28
- package/dist/types/tree/validation.d.ts +0 -15
- package/dist/types/utils/anchor.d.ts +0 -19
- package/dist/types/utils/arkTransaction.d.ts +0 -49
- package/dist/types/utils/bip21.d.ts +0 -38
- package/dist/types/utils/syncCursors.d.ts +0 -60
- package/dist/types/utils/timelock.d.ts +0 -9
- package/dist/types/utils/transaction.d.ts +0 -13
- package/dist/types/utils/transactionHistory.d.ts +0 -15
- package/dist/types/utils/txSizeEstimator.d.ts +0 -40
- package/dist/types/utils/unknownFields.d.ts +0 -83
- package/dist/types/wallet/asset-manager.d.ts +0 -69
- package/dist/types/wallet/asset.d.ts +0 -21
- package/dist/types/wallet/batch.d.ts +0 -107
- package/dist/types/wallet/delegator.d.ts +0 -48
- package/dist/types/wallet/expo/background.d.ts +0 -66
- package/dist/types/wallet/expo/index.d.ts +0 -4
- package/dist/types/wallet/hdDescriptorProvider.d.ts +0 -93
- package/dist/types/wallet/index.d.ts +0 -755
- package/dist/types/wallet/onchain.d.ts +0 -109
- package/dist/types/wallet/ramps.d.ts +0 -64
- package/dist/types/wallet/serviceWorker/wallet-message-handler.d.ts +0 -543
- package/dist/types/wallet/serviceWorker/wallet.d.ts +0 -238
- package/dist/types/wallet/unroll.d.ts +0 -114
- package/dist/types/wallet/utils.d.ts +0 -36
- package/dist/types/wallet/validation.d.ts +0 -24
- package/dist/types/wallet/vtxo-manager.d.ts +0 -476
- package/dist/types/wallet/wallet.d.ts +0 -360
- package/dist/types/worker/browser/service-worker-manager.d.ts +0 -32
- package/dist/types/worker/browser/utils.d.ts +0 -17
- package/dist/types/worker/errors.d.ts +0 -7
- package/dist/types/worker/expo/index.d.ts +0 -7
- package/dist/types/worker/expo/processors/contractPollProcessor.d.ts +0 -19
- package/dist/types/worker/expo/processors/index.d.ts +0 -1
- package/dist/types/worker/expo/taskQueue.d.ts +0 -50
- package/dist/types/worker/expo/taskRunner.d.ts +0 -66
- package/dist/types/worker/messageBus.d.ts +0 -188
|
@@ -1,193 +0,0 @@
|
|
|
1
|
-
import { hex } from "@scure/base";
|
|
2
|
-
import { Wallet } from "../wallet.js";
|
|
3
|
-
import { RestArkProvider } from "../../providers/ark.js";
|
|
4
|
-
import { runTasks } from "../../worker/expo/taskRunner.js";
|
|
5
|
-
import { contractPollProcessor, CONTRACT_POLL_TASK_TYPE, } from "../../worker/expo/processors/index.js";
|
|
6
|
-
import { extendVirtualCoinForContract, getRandomId } from "../utils.js";
|
|
7
|
-
import { DefaultVtxo } from "../../script/default.js";
|
|
8
|
-
/**
|
|
9
|
-
* Expo/React Native wallet with built-in background task processing.
|
|
10
|
-
*
|
|
11
|
-
* Wraps a standard @see Wallet and adds a lightweight task queue
|
|
12
|
-
* for keeping contract/VTXO state fresh while the app is active and
|
|
13
|
-
* across Expo BackgroundTask wakes.
|
|
14
|
-
*
|
|
15
|
-
* @example
|
|
16
|
-
* ```ts
|
|
17
|
-
* import { ExpoWallet } from "@arkade-os/sdk/wallet/expo";
|
|
18
|
-
* import { AsyncStorageTaskQueue } from "@arkade-os/sdk/worker/expo";
|
|
19
|
-
*
|
|
20
|
-
* const wallet = await ExpoWallet.setup({
|
|
21
|
-
* identity: MnemonicIdentity.fromMnemonic('abandon abandon...'),
|
|
22
|
-
* arkServerUrl: 'https://arkade.computer',
|
|
23
|
-
* esploraUrl: 'https://mempool.space/api',
|
|
24
|
-
* storage: { ... },
|
|
25
|
-
* background: {
|
|
26
|
-
* taskName: "ark-background-poll",
|
|
27
|
-
* taskQueue: new AsyncStorageTaskQueue(AsyncStorage),
|
|
28
|
-
* foregroundIntervalMs: 20_000,
|
|
29
|
-
* minimumBackgroundInterval: 15,
|
|
30
|
-
* },
|
|
31
|
-
* });
|
|
32
|
-
*
|
|
33
|
-
* const balance = await wallet.getBalance();
|
|
34
|
-
* ```
|
|
35
|
-
*/
|
|
36
|
-
export class ExpoWallet {
|
|
37
|
-
constructor(wallet, taskQueue, processors, deps, taskName, foregroundIntervalMs) {
|
|
38
|
-
this.wallet = wallet;
|
|
39
|
-
this.taskQueue = taskQueue;
|
|
40
|
-
this.processors = processors;
|
|
41
|
-
this.deps = deps;
|
|
42
|
-
this.identity = wallet.identity;
|
|
43
|
-
this.arkProvider = wallet.arkProvider;
|
|
44
|
-
this.indexerProvider = wallet.indexerProvider;
|
|
45
|
-
this.taskName = taskName;
|
|
46
|
-
if (foregroundIntervalMs && foregroundIntervalMs > 0) {
|
|
47
|
-
this.startForegroundPolling(foregroundIntervalMs);
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
/**
|
|
51
|
-
* Create an ExpoWallet with background task support.
|
|
52
|
-
*
|
|
53
|
-
* 1. Creates the inner @see Wallet via `Wallet.create()`.
|
|
54
|
-
* 2. Wires up processors (defaults to @see contractPollProcessor).
|
|
55
|
-
* 3. Persists background config for the background handler (if the queue supports it).
|
|
56
|
-
* 4. Seeds the task queue with a `contract-poll` task.
|
|
57
|
-
* 5. Registers the background task with the OS scheduler (if `minimumBackgroundInterval` is set).
|
|
58
|
-
* 6. Starts foreground polling if `foregroundIntervalMs` is set.
|
|
59
|
-
*/
|
|
60
|
-
static async setup(config) {
|
|
61
|
-
const wallet = await Wallet.create(config);
|
|
62
|
-
const processors = config.background.processors ?? [
|
|
63
|
-
contractPollProcessor,
|
|
64
|
-
];
|
|
65
|
-
const deps = {
|
|
66
|
-
walletRepository: wallet.walletRepository,
|
|
67
|
-
contractRepository: wallet.contractRepository,
|
|
68
|
-
indexerProvider: wallet.indexerProvider,
|
|
69
|
-
arkProvider: wallet.arkProvider,
|
|
70
|
-
extendVtxo: (vtxo, contract) => extendVirtualCoinForContract(vtxo, contract),
|
|
71
|
-
};
|
|
72
|
-
const { taskQueue } = config.background;
|
|
73
|
-
// Persist wallet params so the background handler can rehydrate
|
|
74
|
-
// without a network call. Only works with AsyncStorageTaskQueue.
|
|
75
|
-
if ("persistConfig" in taskQueue) {
|
|
76
|
-
const arkServerUrl = config.arkServerUrl ??
|
|
77
|
-
(wallet.arkProvider instanceof RestArkProvider
|
|
78
|
-
? wallet.arkProvider.serverUrl
|
|
79
|
-
: undefined);
|
|
80
|
-
if (arkServerUrl) {
|
|
81
|
-
const timelock = wallet.offchainTapscript.options.csvTimelock ??
|
|
82
|
-
DefaultVtxo.Script.DEFAULT_TIMELOCK;
|
|
83
|
-
const bgConfig = {
|
|
84
|
-
arkServerUrl,
|
|
85
|
-
pubkeyHex: hex.encode(wallet.offchainTapscript.options.pubKey),
|
|
86
|
-
serverPubKeyHex: hex.encode(wallet.offchainTapscript.options.serverPubKey),
|
|
87
|
-
exitTimelockValue: timelock.value.toString(),
|
|
88
|
-
exitTimelockType: timelock.type,
|
|
89
|
-
};
|
|
90
|
-
await taskQueue.persistConfig(bgConfig);
|
|
91
|
-
}
|
|
92
|
-
}
|
|
93
|
-
const expoWallet = new ExpoWallet(wallet, taskQueue, processors, deps, config.background.taskName, config.background.foregroundIntervalMs);
|
|
94
|
-
// Seed the queue so the first tick (or background wake) has work to do
|
|
95
|
-
await expoWallet.seedContractPollTask();
|
|
96
|
-
// Activate OS-level background scheduling
|
|
97
|
-
if (config.background.minimumBackgroundInterval) {
|
|
98
|
-
try {
|
|
99
|
-
const { registerExpoBackgroundTask } = await import("./background.js");
|
|
100
|
-
await registerExpoBackgroundTask(config.background.taskName, {
|
|
101
|
-
minimumInterval: config.background.minimumBackgroundInterval,
|
|
102
|
-
});
|
|
103
|
-
}
|
|
104
|
-
catch {
|
|
105
|
-
// expo-background-task not installed — foreground-only mode
|
|
106
|
-
}
|
|
107
|
-
}
|
|
108
|
-
return expoWallet;
|
|
109
|
-
}
|
|
110
|
-
// ── Foreground polling ───────────────────────────────────────────
|
|
111
|
-
startForegroundPolling(intervalMs) {
|
|
112
|
-
this.foregroundIntervalId = setInterval(() => {
|
|
113
|
-
this.runForegroundPoll().catch(console.error);
|
|
114
|
-
}, intervalMs);
|
|
115
|
-
}
|
|
116
|
-
async runForegroundPoll() {
|
|
117
|
-
await runTasks(this.taskQueue, this.processors, this.deps);
|
|
118
|
-
// Consume results immediately (no background handoff needed)
|
|
119
|
-
const results = await this.taskQueue.getResults();
|
|
120
|
-
if (results.length > 0) {
|
|
121
|
-
await this.taskQueue.acknowledgeResults(results.map((r) => r.id));
|
|
122
|
-
}
|
|
123
|
-
// Re-seed for the next tick
|
|
124
|
-
await this.seedContractPollTask();
|
|
125
|
-
}
|
|
126
|
-
async seedContractPollTask() {
|
|
127
|
-
const existing = await this.taskQueue.getTasks(CONTRACT_POLL_TASK_TYPE);
|
|
128
|
-
if (existing.length > 0)
|
|
129
|
-
return;
|
|
130
|
-
const task = {
|
|
131
|
-
id: getRandomId(),
|
|
132
|
-
type: CONTRACT_POLL_TASK_TYPE,
|
|
133
|
-
data: {},
|
|
134
|
-
createdAt: Date.now(),
|
|
135
|
-
};
|
|
136
|
-
await this.taskQueue.addTask(task);
|
|
137
|
-
}
|
|
138
|
-
// ── Lifecycle ────────────────────────────────────────────────────
|
|
139
|
-
/**
|
|
140
|
-
* Stop foreground polling and unregister the background task.
|
|
141
|
-
*/
|
|
142
|
-
async dispose() {
|
|
143
|
-
if (this.foregroundIntervalId) {
|
|
144
|
-
clearInterval(this.foregroundIntervalId);
|
|
145
|
-
this.foregroundIntervalId = undefined;
|
|
146
|
-
}
|
|
147
|
-
try {
|
|
148
|
-
const { unregisterExpoBackgroundTask } = await import("./background.js");
|
|
149
|
-
await unregisterExpoBackgroundTask(this.taskName);
|
|
150
|
-
}
|
|
151
|
-
catch {
|
|
152
|
-
// expo-background-task not installed — nothing to unregister
|
|
153
|
-
}
|
|
154
|
-
await this.wallet.dispose();
|
|
155
|
-
}
|
|
156
|
-
// ── IWallet delegation ───────────────────────────────────────────
|
|
157
|
-
getAddress() {
|
|
158
|
-
return this.wallet.getAddress();
|
|
159
|
-
}
|
|
160
|
-
getBoardingAddress() {
|
|
161
|
-
return this.wallet.getBoardingAddress();
|
|
162
|
-
}
|
|
163
|
-
getBalance() {
|
|
164
|
-
return this.wallet.getBalance();
|
|
165
|
-
}
|
|
166
|
-
getVtxos(filter) {
|
|
167
|
-
return this.wallet.getVtxos(filter);
|
|
168
|
-
}
|
|
169
|
-
getBoardingUtxos() {
|
|
170
|
-
return this.wallet.getBoardingUtxos();
|
|
171
|
-
}
|
|
172
|
-
getTransactionHistory() {
|
|
173
|
-
return this.wallet.getTransactionHistory();
|
|
174
|
-
}
|
|
175
|
-
getContractManager() {
|
|
176
|
-
return this.wallet.getContractManager();
|
|
177
|
-
}
|
|
178
|
-
getDelegatorManager() {
|
|
179
|
-
return this.wallet.getDelegatorManager();
|
|
180
|
-
}
|
|
181
|
-
sendBitcoin(params) {
|
|
182
|
-
return this.wallet.sendBitcoin(params);
|
|
183
|
-
}
|
|
184
|
-
settle(params, eventCallback) {
|
|
185
|
-
return this.wallet.settle(params, eventCallback);
|
|
186
|
-
}
|
|
187
|
-
send(...recipients) {
|
|
188
|
-
return this.wallet.send(...recipients);
|
|
189
|
-
}
|
|
190
|
-
get assetManager() {
|
|
191
|
-
return this.wallet.assetManager;
|
|
192
|
-
}
|
|
193
|
-
}
|
|
@@ -1,155 +0,0 @@
|
|
|
1
|
-
import { expand, networks } from "@bitcoinerlab/descriptors-scure";
|
|
2
|
-
import { isMainnetDescriptor } from "../identity/descriptor.js";
|
|
3
|
-
import { updateWalletState } from "../utils/syncCursors.js";
|
|
4
|
-
/** Settings key under {@link WalletState.settings} where HD state lives. */
|
|
5
|
-
const HD_SETTINGS_KEY = "hd";
|
|
6
|
-
/**
|
|
7
|
-
* HD-wallet {@link DescriptorProvider} that allocates a fresh signing
|
|
8
|
-
* descriptor on every call. The provider holds no notion of "current" — it
|
|
9
|
-
* is a pure rotating allocator. The question of "which descriptor is the
|
|
10
|
-
* wallet currently bound to?" is answered by querying the contract
|
|
11
|
-
* repository for active contracts, not by asking this provider.
|
|
12
|
-
*
|
|
13
|
-
* State is persisted under `WalletRepository.getWalletState().settings.hd` so
|
|
14
|
-
* that no storage-schema migration is required when switching a wallet from
|
|
15
|
-
* single-key to HD. The provider is backed by an {@link HDCapableIdentity},
|
|
16
|
-
* which carries the wildcard account descriptor template (for derivation)
|
|
17
|
-
* and the signing primitives.
|
|
18
|
-
*
|
|
19
|
-
* The read-modify-write of the persisted index runs inside the shared per-
|
|
20
|
-
* repo `updateWalletState` mutex, so two `getNextSigningDescriptor` callers
|
|
21
|
-
* — including those driving separate `HDDescriptorProvider` instances on
|
|
22
|
-
* the same repo — can never observe the same index.
|
|
23
|
-
*
|
|
24
|
-
* @example
|
|
25
|
-
* ```ts
|
|
26
|
-
* const provider = await HDDescriptorProvider.create(identity, walletRepo);
|
|
27
|
-
* const descriptor = await provider.getNextSigningDescriptor();
|
|
28
|
-
* // descriptor: tr([fp/86'/0'/0']xpub/0/0)
|
|
29
|
-
* const next = await provider.getNextSigningDescriptor();
|
|
30
|
-
* // next: tr([fp/86'/0'/0']xpub/0/1)
|
|
31
|
-
* ```
|
|
32
|
-
*/
|
|
33
|
-
export class HDDescriptorProvider {
|
|
34
|
-
constructor(identity, walletRepository) {
|
|
35
|
-
this.identity = identity;
|
|
36
|
-
this.walletRepository = walletRepository;
|
|
37
|
-
}
|
|
38
|
-
/**
|
|
39
|
-
* Construct an HDDescriptorProvider. No I/O is performed here;
|
|
40
|
-
* persisted state is read lazily on the first call to
|
|
41
|
-
* `getNextSigningDescriptor`. A descriptor-mismatch error surfaces on
|
|
42
|
-
* first use rather than at boot.
|
|
43
|
-
*/
|
|
44
|
-
static async create(identity, walletRepository) {
|
|
45
|
-
return new HDDescriptorProvider(identity, walletRepository);
|
|
46
|
-
}
|
|
47
|
-
/**
|
|
48
|
-
* Allocate the next descriptor and return it. The first call on a fresh
|
|
49
|
-
* wallet returns descriptor at index 0; subsequent calls return 1, 2, 3,
|
|
50
|
-
* ... in order. Each call is atomic with respect to other rotations on
|
|
51
|
-
* the same repo: two concurrent callers can never observe the same
|
|
52
|
-
* index.
|
|
53
|
-
*/
|
|
54
|
-
async getNextSigningDescriptor() {
|
|
55
|
-
return this.mutate((settings) => {
|
|
56
|
-
const next = settings.lastIndexUsed === undefined
|
|
57
|
-
? 0
|
|
58
|
-
: settings.lastIndexUsed + 1;
|
|
59
|
-
settings.lastIndexUsed = next;
|
|
60
|
-
return this.materializeAt(next);
|
|
61
|
-
});
|
|
62
|
-
}
|
|
63
|
-
/**
|
|
64
|
-
* Returns true when the given descriptor is derivable from this wallet's
|
|
65
|
-
* seed. Delegates to the underlying identity, which handles both HD and
|
|
66
|
-
* simple `tr(pubkey)` descriptors.
|
|
67
|
-
*/
|
|
68
|
-
isOurs(descriptor) {
|
|
69
|
-
return this.identity.isOurs(descriptor);
|
|
70
|
-
}
|
|
71
|
-
/**
|
|
72
|
-
* Signs each request with the key derived from its descriptor. Delegates
|
|
73
|
-
* to the identity's signing primitives — the identity, not the provider,
|
|
74
|
-
* holds the seed.
|
|
75
|
-
*/
|
|
76
|
-
async signWithDescriptor(requests) {
|
|
77
|
-
return this.identity.signWithDescriptor(requests);
|
|
78
|
-
}
|
|
79
|
-
/** Signs a message using the key derived from `descriptor`. */
|
|
80
|
-
async signMessageWithDescriptor(descriptor, message, signatureType = "schnorr") {
|
|
81
|
-
return this.identity.signMessageWithDescriptor(descriptor, message, signatureType);
|
|
82
|
-
}
|
|
83
|
-
// ── internals ────────────────────────────────────────────────────
|
|
84
|
-
/**
|
|
85
|
-
* Substitute the wildcard in the identity's account-descriptor template
|
|
86
|
-
* with a concrete index, going through the descriptors-scure parser
|
|
87
|
-
* rather than ad-hoc string substitution. The parser's `expand({ index })`
|
|
88
|
-
* call validates that the input is a ranged template AND produces a
|
|
89
|
-
* canonical materialized key expression at the given index.
|
|
90
|
-
*/
|
|
91
|
-
materializeAt(index) {
|
|
92
|
-
const descriptor = this.identity.descriptor;
|
|
93
|
-
const network = isMainnetDescriptor(descriptor)
|
|
94
|
-
? networks.bitcoin
|
|
95
|
-
: networks.testnet;
|
|
96
|
-
const expansion = expand({ descriptor, network, index });
|
|
97
|
-
const keyInfo = expansion.expansionMap?.["@0"];
|
|
98
|
-
if (!keyInfo?.keyExpression) {
|
|
99
|
-
throw new Error(`HDDescriptorProvider: cannot materialize descriptor at index ${index}`);
|
|
100
|
-
}
|
|
101
|
-
return `tr(${keyInfo.keyExpression})`;
|
|
102
|
-
}
|
|
103
|
-
/**
|
|
104
|
-
* Run the read-modify-write of HD settings inside the shared per-repo
|
|
105
|
-
* wallet-state mutex. The closure receives a freshly-validated settings
|
|
106
|
-
* snapshot, mutates it, and returns whatever value the caller wants to
|
|
107
|
-
* surface; the mutated settings are then persisted as part of the same
|
|
108
|
-
* atomic update.
|
|
109
|
-
*
|
|
110
|
-
* Doing the read inside the lock is what prevents two providers (or two
|
|
111
|
-
* concurrent callers on the same provider) from racing on a stale index.
|
|
112
|
-
*/
|
|
113
|
-
async mutate(fn) {
|
|
114
|
-
let result;
|
|
115
|
-
await updateWalletState(this.walletRepository, (state) => {
|
|
116
|
-
const settings = this.parseSettings(state);
|
|
117
|
-
result = fn(settings);
|
|
118
|
-
return {
|
|
119
|
-
...state,
|
|
120
|
-
settings: {
|
|
121
|
-
...(state.settings ?? {}),
|
|
122
|
-
[HD_SETTINGS_KEY]: settings,
|
|
123
|
-
},
|
|
124
|
-
};
|
|
125
|
-
});
|
|
126
|
-
return result;
|
|
127
|
-
}
|
|
128
|
-
/**
|
|
129
|
-
* Validate the persisted HD settings (or initialize a fresh record when
|
|
130
|
-
* absent) and return a clone safe for the caller to mutate.
|
|
131
|
-
*
|
|
132
|
-
* The cast to `HDWalletSettings` trusts storage; a corrupted or
|
|
133
|
-
* partially-migrated repo could otherwise produce `NaN` descriptors.
|
|
134
|
-
* Fail loud rather than silently derive garbage.
|
|
135
|
-
*/
|
|
136
|
-
parseSettings(state) {
|
|
137
|
-
const stored = state.settings?.[HD_SETTINGS_KEY];
|
|
138
|
-
const expected = this.identity.descriptor;
|
|
139
|
-
if (!stored) {
|
|
140
|
-
return { descriptor: expected };
|
|
141
|
-
}
|
|
142
|
-
if (stored.descriptor !== expected) {
|
|
143
|
-
throw new Error(`HD descriptor mismatch: stored "${stored.descriptor}", expected "${expected}". ` +
|
|
144
|
-
`Refusing to reuse HD state from a different identity.`);
|
|
145
|
-
}
|
|
146
|
-
if (stored.lastIndexUsed !== undefined &&
|
|
147
|
-
(typeof stored.lastIndexUsed !== "number" ||
|
|
148
|
-
!Number.isInteger(stored.lastIndexUsed) ||
|
|
149
|
-
stored.lastIndexUsed < 0)) {
|
|
150
|
-
throw new Error(`Corrupt HD settings: lastIndexUsed is not a non-negative integer (got ${String(stored.lastIndexUsed)}).`);
|
|
151
|
-
}
|
|
152
|
-
// Shallow clone so the closure may mutate without aliasing the repo's copy.
|
|
153
|
-
return { ...stored };
|
|
154
|
-
}
|
|
155
|
-
}
|
package/dist/esm/wallet/index.js
DELETED
|
@@ -1,75 +0,0 @@
|
|
|
1
|
-
/** Defaults */
|
|
2
|
-
export const DEFAULT_ARKADE_SERVER_URL = "https://arkade.computer";
|
|
3
|
-
export const DEFAULT_ARKADE_HRP = "ark";
|
|
4
|
-
export const DEFAULT_NETWORK_NAME = "bitcoin";
|
|
5
|
-
/** Wallet transaction direction. */
|
|
6
|
-
export var TxType;
|
|
7
|
-
(function (TxType) {
|
|
8
|
-
TxType["TxSent"] = "SENT";
|
|
9
|
-
TxType["TxReceived"] = "RECEIVED";
|
|
10
|
-
})(TxType || (TxType = {}));
|
|
11
|
-
/**
|
|
12
|
-
* Return whether a virtual output is still spendable.
|
|
13
|
-
*
|
|
14
|
-
* @param vtxo - virtual output to inspect
|
|
15
|
-
* @returns `true` when the virtual output is not marked as spent
|
|
16
|
-
*
|
|
17
|
-
* @see isRecoverable
|
|
18
|
-
* @see isExpired
|
|
19
|
-
*/
|
|
20
|
-
export function isSpendable(vtxo) {
|
|
21
|
-
return !vtxo.isSpent;
|
|
22
|
-
}
|
|
23
|
-
/**
|
|
24
|
-
* Return whether a virtual output is recoverable.
|
|
25
|
-
*
|
|
26
|
-
* @param vtxo - virtual output to inspect
|
|
27
|
-
* @returns `true` when the virtual output is swept but still spendable
|
|
28
|
-
*
|
|
29
|
-
* @remarks
|
|
30
|
-
* Recoverable virtual outputs are typically re-settled into fresh virtual outputs by the virtual output manager.
|
|
31
|
-
*
|
|
32
|
-
* @see isSpendable
|
|
33
|
-
* @see isExpired
|
|
34
|
-
*/
|
|
35
|
-
export function isRecoverable(vtxo) {
|
|
36
|
-
return vtxo.virtualStatus.state === "swept" && isSpendable(vtxo);
|
|
37
|
-
}
|
|
38
|
-
/**
|
|
39
|
-
* Return whether a virtual output should be treated as expired.
|
|
40
|
-
*
|
|
41
|
-
* @param vtxo - virtual output to inspect
|
|
42
|
-
* @returns `true` when the virtual output is swept or its batch expiry has passed
|
|
43
|
-
* @remarks
|
|
44
|
-
* On regtest-like environments the upstream expiry value may be expressed as a block
|
|
45
|
-
* height instead of a timestamp. This helper intentionally ignores obviously non-time
|
|
46
|
-
* values to avoid false positives.
|
|
47
|
-
*
|
|
48
|
-
* @see VirtualStatus.batchExpiry
|
|
49
|
-
*/
|
|
50
|
-
export function isExpired(vtxo) {
|
|
51
|
-
if (vtxo.virtualStatus.state === "swept")
|
|
52
|
-
return true; // swept by server = expired
|
|
53
|
-
const expiry = vtxo.virtualStatus.batchExpiry;
|
|
54
|
-
if (!expiry)
|
|
55
|
-
return false;
|
|
56
|
-
// we use this as a workaround to avoid issue on regtest where expiry date is expressed in blockheight instead of timestamp
|
|
57
|
-
// if expiry, as Date, is before 2025, then we admit it's too small to be a timestamp
|
|
58
|
-
// TODO: API should return the expiry unit
|
|
59
|
-
const expireAt = new Date(expiry);
|
|
60
|
-
if (expireAt.getFullYear() < 2025)
|
|
61
|
-
return false;
|
|
62
|
-
return expiry <= Date.now();
|
|
63
|
-
}
|
|
64
|
-
/**
|
|
65
|
-
* Return whether a virtual output is below the dust threshold.
|
|
66
|
-
*
|
|
67
|
-
* @param vtxo - virtual output to inspect
|
|
68
|
-
* @param dust - dust threshold in satoshis
|
|
69
|
-
* @returns `true` when the virtual output value is below `dust`
|
|
70
|
-
*
|
|
71
|
-
* @see isRecoverable
|
|
72
|
-
*/
|
|
73
|
-
export function isSubdust(vtxo, dust) {
|
|
74
|
-
return vtxo.value < dust;
|
|
75
|
-
}
|