@arkade-os/sdk 0.4.27 → 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 +31 -100
- 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 -649
- 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 -20
- package/dist/cjs/identity/index.js +0 -40
- package/dist/cjs/identity/seedIdentity.js +0 -477
- 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 -202
- 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 -308
- 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 -188
- package/dist/cjs/wallet/index.js +0 -82
- package/dist/cjs/wallet/inputSignerRouter.js +0 -98
- 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 -1174
- package/dist/cjs/wallet/signingErrors.js +0 -32
- package/dist/cjs/wallet/unroll.js +0 -293
- 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 -2195
- package/dist/cjs/wallet/walletReceiveRotator.js +0 -547
- 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 -474
- 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 -645
- 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 -17
- package/dist/esm/identity/index.js +0 -13
- package/dist/esm/identity/seedIdentity.js +0 -469
- 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 -303
- 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 -184
- package/dist/esm/wallet/index.js +0 -75
- package/dist/esm/wallet/inputSignerRouter.js +0 -94
- 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 -1169
- package/dist/esm/wallet/signingErrors.js +0 -27
- package/dist/esm/wallet/unroll.js +0 -289
- 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 -2186
- package/dist/esm/wallet/walletReceiveRotator.js +0 -540
- 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 -470
- 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 -411
- 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 -250
- 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 -42
- package/dist/types/identity/hdCapableIdentity.d.ts +0 -71
- package/dist/types/identity/index.d.ts +0 -57
- package/dist/types/identity/seedIdentity.d.ts +0 -270
- 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 -114
- package/dist/types/wallet/index.d.ts +0 -789
- package/dist/types/wallet/inputSignerRouter.d.ts +0 -35
- 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 -248
- package/dist/types/wallet/signingErrors.d.ts +0 -19
- 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 -409
- package/dist/types/wallet/walletReceiveRotator.d.ts +0 -306
- 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 -189
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import { contractPollProcessor, createTaskDependencies, runTasks, CONTRACT_POLL_TASK_TYPE } from '../../chunk-A3EMF7RN.js';
|
|
2
|
+
import { ExpoIndexerProvider, ExpoArkProvider } from '../../chunk-CFZMTDWI.js';
|
|
3
|
+
import { getRandomId } from '../../chunk-BQLHADL7.js';
|
|
4
|
+
import '../../chunk-ZBUDLTBO.js';
|
|
5
|
+
import '../../chunk-T64LAI7L.js';
|
|
6
|
+
import '../../chunk-HW3JJ323.js';
|
|
7
|
+
import '../../chunk-NSBPE2FW.js';
|
|
8
|
+
import * as TaskManager from 'expo-task-manager';
|
|
9
|
+
import * as BackgroundTask from 'expo-background-task';
|
|
10
|
+
|
|
11
|
+
function defineExpoBackgroundTask(taskName, options) {
|
|
12
|
+
const {
|
|
13
|
+
taskQueue,
|
|
14
|
+
walletRepository,
|
|
15
|
+
contractRepository,
|
|
16
|
+
processors = [contractPollProcessor]
|
|
17
|
+
} = options;
|
|
18
|
+
TaskManager.defineTask(taskName, async () => {
|
|
19
|
+
try {
|
|
20
|
+
const config = await taskQueue.loadConfig();
|
|
21
|
+
if (!config) {
|
|
22
|
+
return BackgroundTask.BackgroundTaskResult.Success;
|
|
23
|
+
}
|
|
24
|
+
const indexerProvider = new ExpoIndexerProvider(config.arkServerUrl);
|
|
25
|
+
const arkProvider = new ExpoArkProvider(config.arkServerUrl);
|
|
26
|
+
const deps = createTaskDependencies({
|
|
27
|
+
walletRepository,
|
|
28
|
+
contractRepository,
|
|
29
|
+
indexerProvider,
|
|
30
|
+
arkProvider
|
|
31
|
+
});
|
|
32
|
+
await runTasks(taskQueue, processors, deps);
|
|
33
|
+
const results = await taskQueue.getResults();
|
|
34
|
+
if (results.length > 0) {
|
|
35
|
+
await taskQueue.acknowledgeResults(results.map((r) => r.id));
|
|
36
|
+
}
|
|
37
|
+
const existing = await taskQueue.getTasks(CONTRACT_POLL_TASK_TYPE);
|
|
38
|
+
if (existing.length === 0) {
|
|
39
|
+
const task = {
|
|
40
|
+
id: getRandomId(),
|
|
41
|
+
type: CONTRACT_POLL_TASK_TYPE,
|
|
42
|
+
data: {},
|
|
43
|
+
createdAt: Date.now()
|
|
44
|
+
};
|
|
45
|
+
await taskQueue.addTask(task);
|
|
46
|
+
}
|
|
47
|
+
return BackgroundTask.BackgroundTaskResult.Success;
|
|
48
|
+
} catch (error) {
|
|
49
|
+
console.error(
|
|
50
|
+
"[ark-sdk] Background task failed:",
|
|
51
|
+
error instanceof Error ? error.message : error
|
|
52
|
+
);
|
|
53
|
+
return BackgroundTask.BackgroundTaskResult.Failed;
|
|
54
|
+
}
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
async function registerExpoBackgroundTask(taskName, options) {
|
|
58
|
+
await BackgroundTask.registerTaskAsync(taskName, {
|
|
59
|
+
minimumInterval: (options?.minimumInterval ?? 15) * 60
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
async function unregisterExpoBackgroundTask(taskName) {
|
|
63
|
+
await BackgroundTask.unregisterTaskAsync(taskName);
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
export { defineExpoBackgroundTask, registerExpoBackgroundTask, unregisterExpoBackgroundTask };
|
|
67
|
+
//# sourceMappingURL=background.js.map
|
|
68
|
+
//# sourceMappingURL=background.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/wallet/expo/background.ts"],"names":[],"mappings":";;;;;;;;;;AAyFO,SAAS,wBAAA,CACZ,UACA,OAAA,EACI;AACJ,EAAA,MAAM;AAAA,IACF,SAAA;AAAA,IACA,gBAAA;AAAA,IACA,kBAAA;AAAA,IACA,UAAA,GAAa,CAAC,qBAAqB;AAAA,GACvC,GAAI,OAAA;AAEJ,EAAY,WAAA,CAAA,UAAA,CAAW,UAAU,YAAY;AACzC,IAAA,IAAI;AACA,MAAA,MAAM,MAAA,GAAS,MAAM,SAAA,CAAU,UAAA,EAAsC;AACrE,MAAA,IAAI,CAAC,MAAA,EAAQ;AAGT,QAAA,OAAsB,cAAA,CAAA,oBAAA,CAAqB,OAAA;AAAA,MAC/C;AAEA,MAAA,MAAM,eAAA,GAAkB,IAAI,mBAAA,CAAoB,MAAA,CAAO,YAAY,CAAA;AACnE,MAAA,MAAM,WAAA,GAAc,IAAI,eAAA,CAAgB,MAAA,CAAO,YAAY,CAAA;AAE3D,MAAA,MAAM,OAAO,sBAAA,CAAuB;AAAA,QAChC,gBAAA;AAAA,QACA,kBAAA;AAAA,QACA,eAAA;AAAA,QACA;AAAA,OACH,CAAA;AAED,MAAA,MAAM,QAAA,CAAS,SAAA,EAAW,UAAA,EAAY,IAAI,CAAA;AAG1C,MAAA,MAAM,OAAA,GAAU,MAAM,SAAA,CAAU,UAAA,EAAW;AAC3C,MAAA,IAAI,OAAA,CAAQ,SAAS,CAAA,EAAG;AACpB,QAAA,MAAM,SAAA,CAAU,mBAAmB,OAAA,CAAQ,GAAA,CAAI,CAAC,CAAA,KAAM,CAAA,CAAE,EAAE,CAAC,CAAA;AAAA,MAC/D;AAGA,MAAA,MAAM,QAAA,GAAW,MAAM,SAAA,CAAU,QAAA,CAAS,uBAAuB,CAAA;AACjE,MAAA,IAAI,QAAA,CAAS,WAAW,CAAA,EAAG;AACvB,QAAA,MAAM,IAAA,GAAiB;AAAA,UACnB,IAAI,WAAA,EAAY;AAAA,UAChB,IAAA,EAAM,uBAAA;AAAA,UACN,MAAM,EAAC;AAAA,UACP,SAAA,EAAW,KAAK,GAAA;AAAI,SACxB;AACA,QAAA,MAAM,SAAA,CAAU,QAAQ,IAAI,CAAA;AAAA,MAChC;AAEA,MAAA,OAAsB,cAAA,CAAA,oBAAA,CAAqB,OAAA;AAAA,IAC/C,SAAS,KAAA,EAAO;AACZ,MAAA,OAAA,CAAQ,KAAA;AAAA,QACJ,mCAAA;AAAA,QACA,KAAA,YAAiB,KAAA,GAAQ,KAAA,CAAM,OAAA,GAAU;AAAA,OAC7C;AACA,MAAA,OAAsB,cAAA,CAAA,oBAAA,CAAqB,MAAA;AAAA,IAC/C;AAAA,EACJ,CAAC,CAAA;AACL;AAcA,eAAsB,0BAAA,CAClB,UACA,OAAA,EACa;AACb,EAAA,MAAqB,iCAAkB,QAAA,EAAU;AAAA,IAC7C,eAAA,EAAA,CAAkB,OAAA,EAAS,eAAA,IAAmB,EAAA,IAAM;AAAA,GACvD,CAAA;AACL;AASA,eAAsB,6BAA6B,QAAA,EAAiC;AAChF,EAAA,MAAqB,mCAAoB,QAAQ,CAAA;AACrD","file":"background.js","sourcesContent":["/**\n * Expo background task entrypoint — `@arkade-os/sdk/wallet/expo/background`.\n *\n * This subpath is the **only** module in the package that touches\n * `expo-task-manager` / `expo-background-task`. It is split out from\n * `/wallet/expo` on purpose: those packages have no web platform and\n * are declared as optional peer dependencies, so importing them from\n * `/wallet/expo` would regress react-native-web / Node consumers who\n * only need the foreground APIs.\n *\n * The imports are static (not lazy `require()`) because Metro's static\n * dependency collector cannot see modules hidden behind `__require()`\n * in the ESM build — without static imports the packages never enter\n * the bundle graph and resolution fails at runtime. See\n * https://github.com/arkade-os/ts-sdk/issues/486 for details.\n *\n * Consumers install the peers in their Expo app:\n * npx expo install expo-task-manager expo-background-task\n */\nimport * as TaskManager from \"expo-task-manager\";\nimport * as BackgroundTask from \"expo-background-task\";\n\nimport type { WalletRepository } from \"../../repositories/walletRepository\";\nimport type { ContractRepository } from \"../../repositories/contractRepository\";\nimport type { AsyncStorageTaskQueue } from \"../../worker/expo/asyncStorageTaskQueue\";\nimport type { TaskProcessor } from \"../../worker/expo/taskRunner\";\nimport type { TaskItem } from \"../../worker/expo/taskQueue\";\nimport { runTasks, createTaskDependencies } from \"../../worker/expo/taskRunner\";\nimport { contractPollProcessor, CONTRACT_POLL_TASK_TYPE } from \"../../worker/expo/processors\";\nimport { ExpoArkProvider } from \"../../providers/expoArk\";\nimport { ExpoIndexerProvider } from \"../../providers/expoIndexer\";\nimport { getRandomId } from \"../utils\";\n\n// ── Persisted config ─────────────────────────────────────────────\n\n/**\n * Wallet parameters persisted by @see ExpoWallet.setup and read\n * by the background handler to reconstruct providers and `extendVtxo`\n * without a network call.\n */\nexport interface PersistedBackgroundConfig {\n arkServerUrl: string;\n pubkeyHex: string;\n serverPubKeyHex: string;\n exitTimelockValue: string;\n exitTimelockType: \"blocks\" | \"seconds\";\n}\n\n// ── Public API ───────────────────────────────────────────────────\n\n/**\n * Options for @see defineExpoBackgroundTask.\n */\nexport interface DefineBackgroundTaskOptions {\n /** AsyncStorage-backed queue (must match the one passed to ExpoWallet.setup). */\n taskQueue: AsyncStorageTaskQueue;\n /** Wallet repository (fresh instance is fine — connects to the same DB). */\n walletRepository: WalletRepository;\n /** Contract repository (fresh instance is fine — connects to the same DB). */\n contractRepository: ContractRepository;\n /** Processors to run. Defaults to `[contractPollProcessor]`. */\n processors?: TaskProcessor[];\n}\n\n/**\n * Define the Expo background task handler.\n *\n * **Must be called at module/global scope** (before React mounts) so\n * Expo's TaskManager can resume the task on cold start.\n *\n * Pair with @see registerExpoBackgroundTask to activate the OS\n * scheduler — `ExpoWallet.setup()` no longer registers the task for\n * you.\n *\n * @example\n * ```ts\n * // App entry (e.g. _layout.tsx) — module scope\n * import { defineExpoBackgroundTask } from \"@arkade-os/sdk/wallet/expo/background\";\n * import { AsyncStorageTaskQueue } from \"@arkade-os/sdk/worker/expo\";\n * import AsyncStorage from \"@react-native-async-storage/async-storage\";\n *\n * const taskQueue = new AsyncStorageTaskQueue(AsyncStorage);\n * defineExpoBackgroundTask(\"ark-background-poll\", {\n * taskQueue,\n * walletRepository: new IndexedDBWalletRepository(),\n * contractRepository: new IndexedDBContractRepository(),\n * });\n * ```\n */\nexport function defineExpoBackgroundTask(\n taskName: string,\n options: DefineBackgroundTaskOptions,\n): void {\n const {\n taskQueue,\n walletRepository,\n contractRepository,\n processors = [contractPollProcessor],\n } = options;\n\n TaskManager.defineTask(taskName, async () => {\n try {\n const config = await taskQueue.loadConfig<PersistedBackgroundConfig>();\n if (!config) {\n // No config persisted yet — ExpoWallet.setup() hasn't run.\n // Nothing to do.\n return BackgroundTask.BackgroundTaskResult.Success;\n }\n\n const indexerProvider = new ExpoIndexerProvider(config.arkServerUrl);\n const arkProvider = new ExpoArkProvider(config.arkServerUrl);\n\n const deps = createTaskDependencies({\n walletRepository,\n contractRepository,\n indexerProvider,\n arkProvider,\n });\n\n await runTasks(taskQueue, processors, deps);\n\n // Acknowledge outbox results (no foreground to consume them)\n const results = await taskQueue.getResults();\n if (results.length > 0) {\n await taskQueue.acknowledgeResults(results.map((r) => r.id));\n }\n\n // Re-seed the contract-poll task for the next OS wake\n const existing = await taskQueue.getTasks(CONTRACT_POLL_TASK_TYPE);\n if (existing.length === 0) {\n const task: TaskItem = {\n id: getRandomId(),\n type: CONTRACT_POLL_TASK_TYPE,\n data: {},\n createdAt: Date.now(),\n };\n await taskQueue.addTask(task);\n }\n\n return BackgroundTask.BackgroundTaskResult.Success;\n } catch (error) {\n console.error(\n \"[ark-sdk] Background task failed:\",\n error instanceof Error ? error.message : error,\n );\n return BackgroundTask.BackgroundTaskResult.Failed;\n }\n });\n}\n\n/**\n * Activate the OS-level background task scheduler.\n *\n * Call once after @see defineExpoBackgroundTask — typically right after\n * `ExpoWallet.setup()`. Safe to call again to update the interval.\n *\n * @param taskName - The task name passed to {@link defineExpoBackgroundTask}.\n * @param options.minimumInterval - Minimum interval in **minutes** (default\n * 15, the floor enforced by `expo-background-task`).\n *\n * @see https://docs.expo.dev/versions/latest/sdk/background-task/#backgroundtaskoptions\n */\nexport async function registerExpoBackgroundTask(\n taskName: string,\n options?: { minimumInterval?: number },\n): Promise<void> {\n await BackgroundTask.registerTaskAsync(taskName, {\n minimumInterval: (options?.minimumInterval ?? 15) * 60,\n });\n}\n\n/**\n * Unregister the background task from the OS scheduler.\n *\n * `ExpoWallet.dispose()` does **not** call this — the OS-level task\n * lifecycle is the consumer's responsibility, matching the explicit\n * `register` step.\n */\nexport async function unregisterExpoBackgroundTask(taskName: string): Promise<void> {\n await BackgroundTask.unregisterTaskAsync(taskName);\n}\n"]}
|
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var chunkIPX2R7FR_cjs = require('../../chunk-IPX2R7FR.cjs');
|
|
4
|
+
var chunkZLO6NETT_cjs = require('../../chunk-ZLO6NETT.cjs');
|
|
5
|
+
var chunkADV27S4N_cjs = require('../../chunk-ADV27S4N.cjs');
|
|
6
|
+
var chunkI3DGUUCT_cjs = require('../../chunk-I3DGUUCT.cjs');
|
|
7
|
+
require('../../chunk-5PG7DV7A.cjs');
|
|
8
|
+
require('../../chunk-5BLDMQED.cjs');
|
|
9
|
+
var base = require('@scure/base');
|
|
10
|
+
|
|
11
|
+
function warnOnRemovedBackgroundFields(bg) {
|
|
12
|
+
if (!bg || typeof bg !== "object") return;
|
|
13
|
+
const removed = [];
|
|
14
|
+
if ("taskName" in bg) removed.push("taskName");
|
|
15
|
+
if ("minimumBackgroundInterval" in bg) {
|
|
16
|
+
removed.push("minimumBackgroundInterval");
|
|
17
|
+
}
|
|
18
|
+
if (removed.length === 0) return;
|
|
19
|
+
console.warn(
|
|
20
|
+
`[ark-sdk] ExpoWallet.setup: ignoring removed background field(s): ${removed.join(", ")}. OS-task registration moved to "@arkade-os/sdk/wallet/expo/background". See https://github.com/arkade-os/ts-sdk/issues/486`
|
|
21
|
+
);
|
|
22
|
+
}
|
|
23
|
+
var ExpoWallet = class _ExpoWallet {
|
|
24
|
+
constructor(wallet, taskQueue, processors, deps, foregroundIntervalMs) {
|
|
25
|
+
this.wallet = wallet;
|
|
26
|
+
this.taskQueue = taskQueue;
|
|
27
|
+
this.processors = processors;
|
|
28
|
+
this.deps = deps;
|
|
29
|
+
this.identity = wallet.identity;
|
|
30
|
+
this.arkProvider = wallet.arkProvider;
|
|
31
|
+
this.indexerProvider = wallet.indexerProvider;
|
|
32
|
+
if (foregroundIntervalMs && foregroundIntervalMs > 0) {
|
|
33
|
+
this.startForegroundPolling(foregroundIntervalMs);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
identity;
|
|
37
|
+
arkProvider;
|
|
38
|
+
indexerProvider;
|
|
39
|
+
foregroundIntervalId;
|
|
40
|
+
/**
|
|
41
|
+
* Create an ExpoWallet with foreground/background queue handoff.
|
|
42
|
+
*
|
|
43
|
+
* 1. Creates the inner @see Wallet via `Wallet.create()`.
|
|
44
|
+
* 2. Wires up processors (defaults to @see contractPollProcessor).
|
|
45
|
+
* 3. Persists background config for the background handler (if the queue supports it).
|
|
46
|
+
* 4. Seeds the task queue with a `contract-poll` task.
|
|
47
|
+
* 5. Starts the foreground interval if `foregroundIntervalMs` is set.
|
|
48
|
+
*
|
|
49
|
+
* OS-level scheduling lives in
|
|
50
|
+
* `@arkade-os/sdk/wallet/expo/background` and is invoked separately
|
|
51
|
+
* by the consumer.
|
|
52
|
+
*/
|
|
53
|
+
static async setup(config) {
|
|
54
|
+
warnOnRemovedBackgroundFields(config.background);
|
|
55
|
+
const wallet = await chunkZLO6NETT_cjs.Wallet.create(config);
|
|
56
|
+
const processors = config.background.processors ?? [chunkIPX2R7FR_cjs.contractPollProcessor];
|
|
57
|
+
const deps = {
|
|
58
|
+
walletRepository: wallet.walletRepository,
|
|
59
|
+
contractRepository: wallet.contractRepository,
|
|
60
|
+
indexerProvider: wallet.indexerProvider,
|
|
61
|
+
arkProvider: wallet.arkProvider,
|
|
62
|
+
extendVtxo: (vtxo, contract) => chunkZLO6NETT_cjs.extendVirtualCoinForContract(vtxo, contract)
|
|
63
|
+
};
|
|
64
|
+
const { taskQueue } = config.background;
|
|
65
|
+
if ("persistConfig" in taskQueue) {
|
|
66
|
+
const arkServerUrl = config.arkServerUrl ?? (wallet.arkProvider instanceof chunkADV27S4N_cjs.RestArkProvider ? wallet.arkProvider.serverUrl : void 0);
|
|
67
|
+
if (arkServerUrl) {
|
|
68
|
+
const timelock = wallet.offchainTapscript.options.csvTimelock ?? chunkI3DGUUCT_cjs.DefaultVtxo.Script.DEFAULT_TIMELOCK;
|
|
69
|
+
const bgConfig = {
|
|
70
|
+
arkServerUrl,
|
|
71
|
+
pubkeyHex: base.hex.encode(wallet.offchainTapscript.options.pubKey),
|
|
72
|
+
serverPubKeyHex: base.hex.encode(wallet.offchainTapscript.options.serverPubKey),
|
|
73
|
+
exitTimelockValue: timelock.value.toString(),
|
|
74
|
+
exitTimelockType: timelock.type
|
|
75
|
+
};
|
|
76
|
+
await taskQueue.persistConfig(bgConfig);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
const expoWallet = new _ExpoWallet(
|
|
80
|
+
wallet,
|
|
81
|
+
taskQueue,
|
|
82
|
+
processors,
|
|
83
|
+
deps,
|
|
84
|
+
config.background.foregroundIntervalMs
|
|
85
|
+
);
|
|
86
|
+
await expoWallet.seedContractPollTask();
|
|
87
|
+
return expoWallet;
|
|
88
|
+
}
|
|
89
|
+
// ── Foreground polling ───────────────────────────────────────────
|
|
90
|
+
startForegroundPolling(intervalMs) {
|
|
91
|
+
this.foregroundIntervalId = setInterval(() => {
|
|
92
|
+
this.runForegroundPoll().catch(console.error);
|
|
93
|
+
}, intervalMs);
|
|
94
|
+
}
|
|
95
|
+
async runForegroundPoll() {
|
|
96
|
+
await chunkIPX2R7FR_cjs.runTasks(this.taskQueue, this.processors, this.deps);
|
|
97
|
+
const results = await this.taskQueue.getResults();
|
|
98
|
+
if (results.length > 0) {
|
|
99
|
+
await this.taskQueue.acknowledgeResults(results.map((r) => r.id));
|
|
100
|
+
}
|
|
101
|
+
await this.seedContractPollTask();
|
|
102
|
+
}
|
|
103
|
+
async seedContractPollTask() {
|
|
104
|
+
const existing = await this.taskQueue.getTasks(chunkIPX2R7FR_cjs.CONTRACT_POLL_TASK_TYPE);
|
|
105
|
+
if (existing.length > 0) return;
|
|
106
|
+
const task = {
|
|
107
|
+
id: chunkZLO6NETT_cjs.getRandomId(),
|
|
108
|
+
type: chunkIPX2R7FR_cjs.CONTRACT_POLL_TASK_TYPE,
|
|
109
|
+
data: {},
|
|
110
|
+
createdAt: Date.now()
|
|
111
|
+
};
|
|
112
|
+
await this.taskQueue.addTask(task);
|
|
113
|
+
}
|
|
114
|
+
// ── Lifecycle ────────────────────────────────────────────────────
|
|
115
|
+
/**
|
|
116
|
+
* Stop foreground polling and dispose the inner wallet.
|
|
117
|
+
*
|
|
118
|
+
* Does **not** unregister the OS background task — call
|
|
119
|
+
* `unregisterExpoBackgroundTask` from
|
|
120
|
+
* `@arkade-os/sdk/wallet/expo/background` yourself, matching the
|
|
121
|
+
* explicit `register` step.
|
|
122
|
+
*/
|
|
123
|
+
async dispose() {
|
|
124
|
+
if (this.foregroundIntervalId) {
|
|
125
|
+
clearInterval(this.foregroundIntervalId);
|
|
126
|
+
this.foregroundIntervalId = void 0;
|
|
127
|
+
}
|
|
128
|
+
await this.wallet.dispose();
|
|
129
|
+
}
|
|
130
|
+
// ── IWallet delegation ───────────────────────────────────────────
|
|
131
|
+
getAddress() {
|
|
132
|
+
return this.wallet.getAddress();
|
|
133
|
+
}
|
|
134
|
+
getBoardingAddress() {
|
|
135
|
+
return this.wallet.getBoardingAddress();
|
|
136
|
+
}
|
|
137
|
+
getBalance() {
|
|
138
|
+
return this.wallet.getBalance();
|
|
139
|
+
}
|
|
140
|
+
getVtxos(filter) {
|
|
141
|
+
return this.wallet.getVtxos(filter);
|
|
142
|
+
}
|
|
143
|
+
getBoardingUtxos() {
|
|
144
|
+
return this.wallet.getBoardingUtxos();
|
|
145
|
+
}
|
|
146
|
+
getTransactionHistory() {
|
|
147
|
+
return this.wallet.getTransactionHistory();
|
|
148
|
+
}
|
|
149
|
+
getContractManager() {
|
|
150
|
+
return this.wallet.getContractManager();
|
|
151
|
+
}
|
|
152
|
+
getDelegatorManager() {
|
|
153
|
+
return this.wallet.getDelegatorManager();
|
|
154
|
+
}
|
|
155
|
+
sendBitcoin(params) {
|
|
156
|
+
return this.wallet.sendBitcoin(params);
|
|
157
|
+
}
|
|
158
|
+
settle(params, eventCallback) {
|
|
159
|
+
return this.wallet.settle(params, eventCallback);
|
|
160
|
+
}
|
|
161
|
+
send(...recipients) {
|
|
162
|
+
return this.wallet.send(...recipients);
|
|
163
|
+
}
|
|
164
|
+
get assetManager() {
|
|
165
|
+
return this.wallet.assetManager;
|
|
166
|
+
}
|
|
167
|
+
};
|
|
168
|
+
|
|
169
|
+
exports.ExpoWallet = ExpoWallet;
|
|
170
|
+
//# sourceMappingURL=index.cjs.map
|
|
171
|
+
//# sourceMappingURL=index.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/wallet/expo/wallet.ts"],"names":["Wallet","contractPollProcessor","extendVirtualCoinForContract","RestArkProvider","DefaultVtxo","hex","runTasks","CONTRACT_POLL_TASK_TYPE","getRandomId"],"mappings":"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","file":"index.cjs","sourcesContent":["import { hex } from \"@scure/base\";\nimport { Wallet } from \"../wallet\";\nimport { RestArkProvider } from \"../../providers/ark\";\nimport type {\n IWallet,\n IAssetManager,\n WalletBalance,\n WalletConfig,\n SendBitcoinParams,\n SettleParams,\n GetVtxosFilter,\n ArkTransaction,\n ExtendedCoin,\n ExtendedVirtualCoin,\n Recipient,\n} from \"..\";\nimport type { VirtualCoin } from \"..\";\nimport type { SettlementEvent } from \"../../providers/ark\";\nimport type { Identity } from \"../../identity\";\nimport type { IContractManager } from \"../../contracts/contractManager\";\nimport type { IDelegatorManager } from \"../delegator\";\nimport type { TaskQueue, TaskItem } from \"../../worker/expo/taskQueue\";\nimport type { TaskProcessor, TaskDependencies } from \"../../worker/expo/taskRunner\";\nimport { runTasks } from \"../../worker/expo/taskRunner\";\nimport { contractPollProcessor, CONTRACT_POLL_TASK_TYPE } from \"../../worker/expo/processors\";\nimport { extendVirtualCoinForContract, getRandomId } from \"../utils\";\nimport { DefaultVtxo } from \"../../script/default\";\nimport type { PersistedBackgroundConfig } from \"./background\";\nimport type { AsyncStorageTaskQueue } from \"../../worker/expo/asyncStorageTaskQueue\";\n\n/**\n * Background processing configuration for @see ExpoWallet.\n *\n * OS-level task registration is **not** part of this config — call\n * `registerExpoBackgroundTask` from `@arkade-os/sdk/wallet/expo/background`\n * explicitly. Splitting that step out keeps `/wallet/expo` free of the\n * `expo-task-manager` / `expo-background-task` dependencies, so\n * react-native-web and Node consumers can use `ExpoWallet` without\n * those native packages. See\n * https://github.com/arkade-os/ts-sdk/issues/486 for details.\n */\nexport interface ExpoBackgroundConfig {\n /** Persistence layer for foreground ↔ background handoff. */\n taskQueue: TaskQueue;\n /** Processors to run on each tick. Defaults to `[contractPollProcessor]`. */\n processors?: TaskProcessor[];\n /** If set, automatically polls at this interval (ms) while the app is in the foreground. */\n foregroundIntervalMs?: number;\n}\n\n/**\n * Configuration for @see ExpoWallet.setup.\n */\nexport interface ExpoWalletConfig extends WalletConfig {\n background: ExpoBackgroundConfig;\n}\n\n/**\n * Catches JS callers still passing the pre-fix-#486 fields: TypeScript\n * blocks these at compile time, but compiled JS silently dropped them\n * and consumers would never realize the OS task wasn't scheduled.\n *\n * @internal Exported for tests; not part of the public API surface.\n */\nexport function warnOnRemovedBackgroundFields(bg: unknown): void {\n if (!bg || typeof bg !== \"object\") return;\n const removed: string[] = [];\n if (\"taskName\" in bg) removed.push(\"taskName\");\n if (\"minimumBackgroundInterval\" in bg) {\n removed.push(\"minimumBackgroundInterval\");\n }\n if (removed.length === 0) return;\n console.warn(\n `[ark-sdk] ExpoWallet.setup: ignoring removed background field(s): ${removed.join(\", \")}. ` +\n 'OS-task registration moved to \"@arkade-os/sdk/wallet/expo/background\". ' +\n \"See https://github.com/arkade-os/ts-sdk/issues/486\",\n );\n}\n\n/**\n * Expo/React Native wallet with built-in background task processing.\n *\n * Wraps a standard @see Wallet and adds a lightweight task queue\n * for keeping contract/VTXO state fresh while the app is active and\n * across Expo BackgroundTask wakes.\n *\n * OS-level task registration is the consumer's responsibility — call\n * `registerExpoBackgroundTask` from\n * `@arkade-os/sdk/wallet/expo/background` after `setup()`. Keeping\n * registration out of `setup()` lets this entrypoint avoid pulling\n * `expo-task-manager` / `expo-background-task` into the `/wallet/expo`\n * bundle.\n *\n * @example\n * ```ts\n * import { ExpoWallet } from \"@arkade-os/sdk/wallet/expo\";\n * import { registerExpoBackgroundTask } from \"@arkade-os/sdk/wallet/expo/background\";\n * import { AsyncStorageTaskQueue } from \"@arkade-os/sdk/worker/expo\";\n *\n * const wallet = await ExpoWallet.setup({\n * identity: MnemonicIdentity.fromMnemonic('abandon abandon...'),\n * arkServerUrl: 'https://arkade.computer',\n * esploraUrl: 'https://mempool.space/api',\n * storage: { ... },\n * background: {\n * taskQueue: new AsyncStorageTaskQueue(AsyncStorage),\n * foregroundIntervalMs: 20_000,\n * },\n * });\n *\n * // Activate the OS scheduler (Expo Android/iOS only)\n * await registerExpoBackgroundTask(\"ark-background-poll\", { minimumInterval: 15 });\n *\n * const balance = await wallet.getBalance();\n * ```\n */\nexport class ExpoWallet implements IWallet {\n readonly identity: Identity;\n readonly arkProvider: Wallet[\"arkProvider\"];\n readonly indexerProvider: Wallet[\"indexerProvider\"];\n\n private foregroundIntervalId?: ReturnType<typeof setInterval>;\n\n private constructor(\n private readonly wallet: Wallet,\n private readonly taskQueue: TaskQueue,\n private readonly processors: TaskProcessor[],\n private readonly deps: TaskDependencies,\n foregroundIntervalMs?: number,\n ) {\n this.identity = wallet.identity;\n this.arkProvider = wallet.arkProvider;\n this.indexerProvider = wallet.indexerProvider;\n\n if (foregroundIntervalMs && foregroundIntervalMs > 0) {\n this.startForegroundPolling(foregroundIntervalMs);\n }\n }\n\n /**\n * Create an ExpoWallet with foreground/background queue handoff.\n *\n * 1. Creates the inner @see Wallet via `Wallet.create()`.\n * 2. Wires up processors (defaults to @see contractPollProcessor).\n * 3. Persists background config for the background handler (if the queue supports it).\n * 4. Seeds the task queue with a `contract-poll` task.\n * 5. Starts the foreground interval if `foregroundIntervalMs` is set.\n *\n * OS-level scheduling lives in\n * `@arkade-os/sdk/wallet/expo/background` and is invoked separately\n * by the consumer.\n */\n static async setup(config: ExpoWalletConfig): Promise<ExpoWallet> {\n warnOnRemovedBackgroundFields(config.background);\n\n const wallet = await Wallet.create(config);\n\n const processors = config.background.processors ?? [contractPollProcessor];\n\n const deps: TaskDependencies = {\n walletRepository: wallet.walletRepository,\n contractRepository: wallet.contractRepository,\n indexerProvider: wallet.indexerProvider,\n arkProvider: wallet.arkProvider,\n extendVtxo: (vtxo, contract) => extendVirtualCoinForContract(vtxo, contract),\n };\n\n const { taskQueue } = config.background;\n\n // Persist wallet params so the background handler can rehydrate\n // without a network call. Only works with AsyncStorageTaskQueue.\n if (\"persistConfig\" in taskQueue) {\n const arkServerUrl =\n config.arkServerUrl ??\n (wallet.arkProvider instanceof RestArkProvider\n ? wallet.arkProvider.serverUrl\n : undefined);\n\n if (arkServerUrl) {\n const timelock =\n wallet.offchainTapscript.options.csvTimelock ??\n DefaultVtxo.Script.DEFAULT_TIMELOCK;\n\n const bgConfig: PersistedBackgroundConfig = {\n arkServerUrl,\n pubkeyHex: hex.encode(wallet.offchainTapscript.options.pubKey),\n serverPubKeyHex: hex.encode(wallet.offchainTapscript.options.serverPubKey),\n exitTimelockValue: timelock.value.toString(),\n exitTimelockType: timelock.type,\n };\n\n await (taskQueue as AsyncStorageTaskQueue).persistConfig(bgConfig);\n }\n }\n\n const expoWallet = new ExpoWallet(\n wallet,\n taskQueue,\n processors,\n deps,\n config.background.foregroundIntervalMs,\n );\n\n // Seed the queue so the first tick (or background wake) has work to do\n await expoWallet.seedContractPollTask();\n\n return expoWallet;\n }\n\n // ── Foreground polling ───────────────────────────────────────────\n\n private startForegroundPolling(intervalMs: number): void {\n this.foregroundIntervalId = setInterval(() => {\n this.runForegroundPoll().catch(console.error);\n }, intervalMs);\n }\n\n private async runForegroundPoll(): Promise<void> {\n await runTasks(this.taskQueue, this.processors, this.deps);\n\n // Consume results immediately (no background handoff needed)\n const results = await this.taskQueue.getResults();\n if (results.length > 0) {\n await this.taskQueue.acknowledgeResults(results.map((r) => r.id));\n }\n\n // Re-seed for the next tick\n await this.seedContractPollTask();\n }\n\n private async seedContractPollTask(): Promise<void> {\n const existing = await this.taskQueue.getTasks(CONTRACT_POLL_TASK_TYPE);\n if (existing.length > 0) return;\n\n const task: TaskItem = {\n id: getRandomId(),\n type: CONTRACT_POLL_TASK_TYPE,\n data: {},\n createdAt: Date.now(),\n };\n await this.taskQueue.addTask(task);\n }\n\n // ── Lifecycle ────────────────────────────────────────────────────\n\n /**\n * Stop foreground polling and dispose the inner wallet.\n *\n * Does **not** unregister the OS background task — call\n * `unregisterExpoBackgroundTask` from\n * `@arkade-os/sdk/wallet/expo/background` yourself, matching the\n * explicit `register` step.\n */\n async dispose(): Promise<void> {\n if (this.foregroundIntervalId) {\n clearInterval(this.foregroundIntervalId);\n this.foregroundIntervalId = undefined;\n }\n\n await this.wallet.dispose();\n }\n\n // ── IWallet delegation ───────────────────────────────────────────\n\n getAddress(): Promise<string> {\n return this.wallet.getAddress();\n }\n\n getBoardingAddress(): Promise<string> {\n return this.wallet.getBoardingAddress();\n }\n\n getBalance(): Promise<WalletBalance> {\n return this.wallet.getBalance();\n }\n\n getVtxos(filter?: GetVtxosFilter): Promise<ExtendedVirtualCoin[]> {\n return this.wallet.getVtxos(filter);\n }\n\n getBoardingUtxos(): Promise<ExtendedCoin[]> {\n return this.wallet.getBoardingUtxos();\n }\n\n getTransactionHistory(): Promise<ArkTransaction[]> {\n return this.wallet.getTransactionHistory();\n }\n\n getContractManager(): Promise<IContractManager> {\n return this.wallet.getContractManager();\n }\n\n getDelegatorManager(): Promise<IDelegatorManager | undefined> {\n return this.wallet.getDelegatorManager();\n }\n\n sendBitcoin(params: SendBitcoinParams): Promise<string> {\n return this.wallet.sendBitcoin(params);\n }\n\n settle(\n params?: SettleParams,\n eventCallback?: (event: SettlementEvent) => void,\n ): Promise<string> {\n return this.wallet.settle(params, eventCallback);\n }\n\n send(...recipients: [Recipient, ...Recipient[]]): Promise<string> {\n return this.wallet.send(...recipients);\n }\n\n get assetManager(): IAssetManager {\n return this.wallet.assetManager;\n }\n}\n"]}
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
import { W as Wallet } from '../../wallet-AF-p-OWj.cjs';
|
|
2
|
+
import { I as IWallet, a as Identity, b as WalletConfig, c as WalletBalance, G as GetVtxosFilter, E as ExtendedVirtualCoin, d as ExtendedCoin, A as ArkTransaction, e as IContractManager, f as IDelegatorManager, S as SendBitcoinParams, g as SettleParams, h as SettlementEvent, R as Recipient, i as IAssetManager } from '../../ark-TZ1gXAXU.cjs';
|
|
3
|
+
import { c as TaskQueue, T as TaskProcessor } from '../../taskRunner-C6Ff4OaU.cjs';
|
|
4
|
+
import '@scure/btc-signer/utils.js';
|
|
5
|
+
import '@scure/btc-signer/psbt.js';
|
|
6
|
+
import '../../delegate-BFZs69hp.cjs';
|
|
7
|
+
import '@scure/btc-signer/transaction.js';
|
|
8
|
+
import '@scure/btc-signer';
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* Background processing configuration for @see ExpoWallet.
|
|
12
|
+
*
|
|
13
|
+
* OS-level task registration is **not** part of this config — call
|
|
14
|
+
* `registerExpoBackgroundTask` from `@arkade-os/sdk/wallet/expo/background`
|
|
15
|
+
* explicitly. Splitting that step out keeps `/wallet/expo` free of the
|
|
16
|
+
* `expo-task-manager` / `expo-background-task` dependencies, so
|
|
17
|
+
* react-native-web and Node consumers can use `ExpoWallet` without
|
|
18
|
+
* those native packages. See
|
|
19
|
+
* https://github.com/arkade-os/ts-sdk/issues/486 for details.
|
|
20
|
+
*/
|
|
21
|
+
interface ExpoBackgroundConfig {
|
|
22
|
+
/** Persistence layer for foreground ↔ background handoff. */
|
|
23
|
+
taskQueue: TaskQueue;
|
|
24
|
+
/** Processors to run on each tick. Defaults to `[contractPollProcessor]`. */
|
|
25
|
+
processors?: TaskProcessor[];
|
|
26
|
+
/** If set, automatically polls at this interval (ms) while the app is in the foreground. */
|
|
27
|
+
foregroundIntervalMs?: number;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Configuration for @see ExpoWallet.setup.
|
|
31
|
+
*/
|
|
32
|
+
interface ExpoWalletConfig extends WalletConfig {
|
|
33
|
+
background: ExpoBackgroundConfig;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Expo/React Native wallet with built-in background task processing.
|
|
37
|
+
*
|
|
38
|
+
* Wraps a standard @see Wallet and adds a lightweight task queue
|
|
39
|
+
* for keeping contract/VTXO state fresh while the app is active and
|
|
40
|
+
* across Expo BackgroundTask wakes.
|
|
41
|
+
*
|
|
42
|
+
* OS-level task registration is the consumer's responsibility — call
|
|
43
|
+
* `registerExpoBackgroundTask` from
|
|
44
|
+
* `@arkade-os/sdk/wallet/expo/background` after `setup()`. Keeping
|
|
45
|
+
* registration out of `setup()` lets this entrypoint avoid pulling
|
|
46
|
+
* `expo-task-manager` / `expo-background-task` into the `/wallet/expo`
|
|
47
|
+
* bundle.
|
|
48
|
+
*
|
|
49
|
+
* @example
|
|
50
|
+
* ```ts
|
|
51
|
+
* import { ExpoWallet } from "@arkade-os/sdk/wallet/expo";
|
|
52
|
+
* import { registerExpoBackgroundTask } from "@arkade-os/sdk/wallet/expo/background";
|
|
53
|
+
* import { AsyncStorageTaskQueue } from "@arkade-os/sdk/worker/expo";
|
|
54
|
+
*
|
|
55
|
+
* const wallet = await ExpoWallet.setup({
|
|
56
|
+
* identity: MnemonicIdentity.fromMnemonic('abandon abandon...'),
|
|
57
|
+
* arkServerUrl: 'https://arkade.computer',
|
|
58
|
+
* esploraUrl: 'https://mempool.space/api',
|
|
59
|
+
* storage: { ... },
|
|
60
|
+
* background: {
|
|
61
|
+
* taskQueue: new AsyncStorageTaskQueue(AsyncStorage),
|
|
62
|
+
* foregroundIntervalMs: 20_000,
|
|
63
|
+
* },
|
|
64
|
+
* });
|
|
65
|
+
*
|
|
66
|
+
* // Activate the OS scheduler (Expo Android/iOS only)
|
|
67
|
+
* await registerExpoBackgroundTask("ark-background-poll", { minimumInterval: 15 });
|
|
68
|
+
*
|
|
69
|
+
* const balance = await wallet.getBalance();
|
|
70
|
+
* ```
|
|
71
|
+
*/
|
|
72
|
+
declare class ExpoWallet implements IWallet {
|
|
73
|
+
private readonly wallet;
|
|
74
|
+
private readonly taskQueue;
|
|
75
|
+
private readonly processors;
|
|
76
|
+
private readonly deps;
|
|
77
|
+
readonly identity: Identity;
|
|
78
|
+
readonly arkProvider: Wallet["arkProvider"];
|
|
79
|
+
readonly indexerProvider: Wallet["indexerProvider"];
|
|
80
|
+
private foregroundIntervalId?;
|
|
81
|
+
private constructor();
|
|
82
|
+
/**
|
|
83
|
+
* Create an ExpoWallet with foreground/background queue handoff.
|
|
84
|
+
*
|
|
85
|
+
* 1. Creates the inner @see Wallet via `Wallet.create()`.
|
|
86
|
+
* 2. Wires up processors (defaults to @see contractPollProcessor).
|
|
87
|
+
* 3. Persists background config for the background handler (if the queue supports it).
|
|
88
|
+
* 4. Seeds the task queue with a `contract-poll` task.
|
|
89
|
+
* 5. Starts the foreground interval if `foregroundIntervalMs` is set.
|
|
90
|
+
*
|
|
91
|
+
* OS-level scheduling lives in
|
|
92
|
+
* `@arkade-os/sdk/wallet/expo/background` and is invoked separately
|
|
93
|
+
* by the consumer.
|
|
94
|
+
*/
|
|
95
|
+
static setup(config: ExpoWalletConfig): Promise<ExpoWallet>;
|
|
96
|
+
private startForegroundPolling;
|
|
97
|
+
private runForegroundPoll;
|
|
98
|
+
private seedContractPollTask;
|
|
99
|
+
/**
|
|
100
|
+
* Stop foreground polling and dispose the inner wallet.
|
|
101
|
+
*
|
|
102
|
+
* Does **not** unregister the OS background task — call
|
|
103
|
+
* `unregisterExpoBackgroundTask` from
|
|
104
|
+
* `@arkade-os/sdk/wallet/expo/background` yourself, matching the
|
|
105
|
+
* explicit `register` step.
|
|
106
|
+
*/
|
|
107
|
+
dispose(): Promise<void>;
|
|
108
|
+
getAddress(): Promise<string>;
|
|
109
|
+
getBoardingAddress(): Promise<string>;
|
|
110
|
+
getBalance(): Promise<WalletBalance>;
|
|
111
|
+
getVtxos(filter?: GetVtxosFilter): Promise<ExtendedVirtualCoin[]>;
|
|
112
|
+
getBoardingUtxos(): Promise<ExtendedCoin[]>;
|
|
113
|
+
getTransactionHistory(): Promise<ArkTransaction[]>;
|
|
114
|
+
getContractManager(): Promise<IContractManager>;
|
|
115
|
+
getDelegatorManager(): Promise<IDelegatorManager | undefined>;
|
|
116
|
+
sendBitcoin(params: SendBitcoinParams): Promise<string>;
|
|
117
|
+
settle(params?: SettleParams, eventCallback?: (event: SettlementEvent) => void): Promise<string>;
|
|
118
|
+
send(...recipients: [Recipient, ...Recipient[]]): Promise<string>;
|
|
119
|
+
get assetManager(): IAssetManager;
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
export { type ExpoBackgroundConfig, ExpoWallet, type ExpoWalletConfig };
|
|
@@ -1,30 +1,35 @@
|
|
|
1
|
-
import { Wallet } from
|
|
2
|
-
import
|
|
3
|
-
import
|
|
4
|
-
import
|
|
5
|
-
import
|
|
6
|
-
import
|
|
7
|
-
import
|
|
8
|
-
import
|
|
1
|
+
import { W as Wallet } from '../../wallet-D9NBRqvC.js';
|
|
2
|
+
import { I as IWallet, a as Identity, b as WalletConfig, c as WalletBalance, G as GetVtxosFilter, E as ExtendedVirtualCoin, d as ExtendedCoin, A as ArkTransaction, e as IContractManager, f as IDelegatorManager, S as SendBitcoinParams, g as SettleParams, h as SettlementEvent, R as Recipient, i as IAssetManager } from '../../ark-TZ1gXAXU.js';
|
|
3
|
+
import { c as TaskQueue, T as TaskProcessor } from '../../taskRunner-yvPN8Z0K.js';
|
|
4
|
+
import '@scure/btc-signer/utils.js';
|
|
5
|
+
import '@scure/btc-signer/psbt.js';
|
|
6
|
+
import '../../delegate-aaVGfWsV.js';
|
|
7
|
+
import '@scure/btc-signer/transaction.js';
|
|
8
|
+
import '@scure/btc-signer';
|
|
9
|
+
|
|
9
10
|
/**
|
|
10
11
|
* Background processing configuration for @see ExpoWallet.
|
|
12
|
+
*
|
|
13
|
+
* OS-level task registration is **not** part of this config — call
|
|
14
|
+
* `registerExpoBackgroundTask` from `@arkade-os/sdk/wallet/expo/background`
|
|
15
|
+
* explicitly. Splitting that step out keeps `/wallet/expo` free of the
|
|
16
|
+
* `expo-task-manager` / `expo-background-task` dependencies, so
|
|
17
|
+
* react-native-web and Node consumers can use `ExpoWallet` without
|
|
18
|
+
* those native packages. See
|
|
19
|
+
* https://github.com/arkade-os/ts-sdk/issues/486 for details.
|
|
11
20
|
*/
|
|
12
|
-
|
|
13
|
-
/** Identifier registered with expo-background-task. */
|
|
14
|
-
taskName: string;
|
|
21
|
+
interface ExpoBackgroundConfig {
|
|
15
22
|
/** Persistence layer for foreground ↔ background handoff. */
|
|
16
23
|
taskQueue: TaskQueue;
|
|
17
24
|
/** Processors to run on each tick. Defaults to `[contractPollProcessor]`. */
|
|
18
25
|
processors?: TaskProcessor[];
|
|
19
26
|
/** If set, automatically polls at this interval (ms) while the app is in the foreground. */
|
|
20
27
|
foregroundIntervalMs?: number;
|
|
21
|
-
/** If set, registers the background task with the OS at this interval (minutes, min 15). */
|
|
22
|
-
minimumBackgroundInterval?: number;
|
|
23
28
|
}
|
|
24
29
|
/**
|
|
25
30
|
* Configuration for @see ExpoWallet.setup.
|
|
26
31
|
*/
|
|
27
|
-
|
|
32
|
+
interface ExpoWalletConfig extends WalletConfig {
|
|
28
33
|
background: ExpoBackgroundConfig;
|
|
29
34
|
}
|
|
30
35
|
/**
|
|
@@ -34,9 +39,17 @@ export interface ExpoWalletConfig extends WalletConfig {
|
|
|
34
39
|
* for keeping contract/VTXO state fresh while the app is active and
|
|
35
40
|
* across Expo BackgroundTask wakes.
|
|
36
41
|
*
|
|
42
|
+
* OS-level task registration is the consumer's responsibility — call
|
|
43
|
+
* `registerExpoBackgroundTask` from
|
|
44
|
+
* `@arkade-os/sdk/wallet/expo/background` after `setup()`. Keeping
|
|
45
|
+
* registration out of `setup()` lets this entrypoint avoid pulling
|
|
46
|
+
* `expo-task-manager` / `expo-background-task` into the `/wallet/expo`
|
|
47
|
+
* bundle.
|
|
48
|
+
*
|
|
37
49
|
* @example
|
|
38
50
|
* ```ts
|
|
39
51
|
* import { ExpoWallet } from "@arkade-os/sdk/wallet/expo";
|
|
52
|
+
* import { registerExpoBackgroundTask } from "@arkade-os/sdk/wallet/expo/background";
|
|
40
53
|
* import { AsyncStorageTaskQueue } from "@arkade-os/sdk/worker/expo";
|
|
41
54
|
*
|
|
42
55
|
* const wallet = await ExpoWallet.setup({
|
|
@@ -45,17 +58,18 @@ export interface ExpoWalletConfig extends WalletConfig {
|
|
|
45
58
|
* esploraUrl: 'https://mempool.space/api',
|
|
46
59
|
* storage: { ... },
|
|
47
60
|
* background: {
|
|
48
|
-
* taskName: "ark-background-poll",
|
|
49
61
|
* taskQueue: new AsyncStorageTaskQueue(AsyncStorage),
|
|
50
62
|
* foregroundIntervalMs: 20_000,
|
|
51
|
-
* minimumBackgroundInterval: 15,
|
|
52
63
|
* },
|
|
53
64
|
* });
|
|
54
65
|
*
|
|
66
|
+
* // Activate the OS scheduler (Expo Android/iOS only)
|
|
67
|
+
* await registerExpoBackgroundTask("ark-background-poll", { minimumInterval: 15 });
|
|
68
|
+
*
|
|
55
69
|
* const balance = await wallet.getBalance();
|
|
56
70
|
* ```
|
|
57
71
|
*/
|
|
58
|
-
|
|
72
|
+
declare class ExpoWallet implements IWallet {
|
|
59
73
|
private readonly wallet;
|
|
60
74
|
private readonly taskQueue;
|
|
61
75
|
private readonly processors;
|
|
@@ -64,24 +78,31 @@ export declare class ExpoWallet implements IWallet {
|
|
|
64
78
|
readonly arkProvider: Wallet["arkProvider"];
|
|
65
79
|
readonly indexerProvider: Wallet["indexerProvider"];
|
|
66
80
|
private foregroundIntervalId?;
|
|
67
|
-
private readonly taskName;
|
|
68
81
|
private constructor();
|
|
69
82
|
/**
|
|
70
|
-
* Create an ExpoWallet with background
|
|
83
|
+
* Create an ExpoWallet with foreground/background queue handoff.
|
|
71
84
|
*
|
|
72
85
|
* 1. Creates the inner @see Wallet via `Wallet.create()`.
|
|
73
86
|
* 2. Wires up processors (defaults to @see contractPollProcessor).
|
|
74
87
|
* 3. Persists background config for the background handler (if the queue supports it).
|
|
75
88
|
* 4. Seeds the task queue with a `contract-poll` task.
|
|
76
|
-
* 5.
|
|
77
|
-
*
|
|
89
|
+
* 5. Starts the foreground interval if `foregroundIntervalMs` is set.
|
|
90
|
+
*
|
|
91
|
+
* OS-level scheduling lives in
|
|
92
|
+
* `@arkade-os/sdk/wallet/expo/background` and is invoked separately
|
|
93
|
+
* by the consumer.
|
|
78
94
|
*/
|
|
79
95
|
static setup(config: ExpoWalletConfig): Promise<ExpoWallet>;
|
|
80
96
|
private startForegroundPolling;
|
|
81
97
|
private runForegroundPoll;
|
|
82
98
|
private seedContractPollTask;
|
|
83
99
|
/**
|
|
84
|
-
* Stop foreground polling and
|
|
100
|
+
* Stop foreground polling and dispose the inner wallet.
|
|
101
|
+
*
|
|
102
|
+
* Does **not** unregister the OS background task — call
|
|
103
|
+
* `unregisterExpoBackgroundTask` from
|
|
104
|
+
* `@arkade-os/sdk/wallet/expo/background` yourself, matching the
|
|
105
|
+
* explicit `register` step.
|
|
85
106
|
*/
|
|
86
107
|
dispose(): Promise<void>;
|
|
87
108
|
getAddress(): Promise<string>;
|
|
@@ -97,3 +118,5 @@ export declare class ExpoWallet implements IWallet {
|
|
|
97
118
|
send(...recipients: [Recipient, ...Recipient[]]): Promise<string>;
|
|
98
119
|
get assetManager(): IAssetManager;
|
|
99
120
|
}
|
|
121
|
+
|
|
122
|
+
export { type ExpoBackgroundConfig, ExpoWallet, type ExpoWalletConfig };
|