@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,838 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var chunk5PG7DV7A_cjs = require('./chunk-5PG7DV7A.cjs');
|
|
4
|
+
var base = require('@scure/base');
|
|
5
|
+
var descriptorsScure = require('@bitcoinerlab/descriptors-scure');
|
|
6
|
+
var btcSigner = require('@scure/btc-signer');
|
|
7
|
+
|
|
8
|
+
// src/contracts/handlers/registry.ts
|
|
9
|
+
var ContractHandlerRegistry = class {
|
|
10
|
+
handlers = /* @__PURE__ */ new Map();
|
|
11
|
+
/**
|
|
12
|
+
* Register a contract handler.
|
|
13
|
+
*
|
|
14
|
+
* @param handler - The handler to register
|
|
15
|
+
* @throws If a handler for this type is already registered
|
|
16
|
+
*/
|
|
17
|
+
register(handler) {
|
|
18
|
+
if (this.handlers.has(handler.type)) {
|
|
19
|
+
throw new Error(`Contract handler for type '${handler.type}' is already registered`);
|
|
20
|
+
}
|
|
21
|
+
this.handlers.set(handler.type, handler);
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Get a handler by type.
|
|
25
|
+
*
|
|
26
|
+
* @param type - The contract type
|
|
27
|
+
* @returns The handler, or undefined if not found
|
|
28
|
+
*/
|
|
29
|
+
get(type) {
|
|
30
|
+
return this.handlers.get(type);
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Get a handler by type, throwing if not found.
|
|
34
|
+
*
|
|
35
|
+
* @param type - The contract type
|
|
36
|
+
* @returns The handler
|
|
37
|
+
* @throws If no handler is registered for this type
|
|
38
|
+
*/
|
|
39
|
+
getOrThrow(type) {
|
|
40
|
+
const handler = this.get(type);
|
|
41
|
+
if (!handler) {
|
|
42
|
+
throw new Error(`No contract handler registered for type '${type}'`);
|
|
43
|
+
}
|
|
44
|
+
return handler;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Check if a handler is registered.
|
|
48
|
+
*
|
|
49
|
+
* @param type - The contract type
|
|
50
|
+
*/
|
|
51
|
+
has(type) {
|
|
52
|
+
return this.handlers.has(type);
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Get all registered types.
|
|
56
|
+
*/
|
|
57
|
+
getRegisteredTypes() {
|
|
58
|
+
return Array.from(this.handlers.keys());
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Unregister a handler (mainly for testing).
|
|
62
|
+
*/
|
|
63
|
+
unregister(type) {
|
|
64
|
+
return this.handlers.delete(type);
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Clear all handlers (mainly for testing).
|
|
68
|
+
*/
|
|
69
|
+
clear() {
|
|
70
|
+
this.handlers.clear();
|
|
71
|
+
}
|
|
72
|
+
};
|
|
73
|
+
var contractHandlers = new ContractHandlerRegistry();
|
|
74
|
+
exports.DefaultVtxo = void 0;
|
|
75
|
+
((DefaultVtxo2) => {
|
|
76
|
+
class Script2 extends chunk5PG7DV7A_cjs.VtxoScript {
|
|
77
|
+
/** Create the default virtual output script with one forfeit path and one exit path. */
|
|
78
|
+
constructor(options) {
|
|
79
|
+
const { pubKey, serverPubKey, csvTimelock = Script2.DEFAULT_TIMELOCK } = options;
|
|
80
|
+
const forfeitScript = chunk5PG7DV7A_cjs.MultisigTapscript.encode({
|
|
81
|
+
pubkeys: [pubKey, serverPubKey]
|
|
82
|
+
}).script;
|
|
83
|
+
const exitScript = chunk5PG7DV7A_cjs.CSVMultisigTapscript.encode({
|
|
84
|
+
timelock: csvTimelock,
|
|
85
|
+
pubkeys: [pubKey]
|
|
86
|
+
}).script;
|
|
87
|
+
super([forfeitScript, exitScript]);
|
|
88
|
+
this.options = options;
|
|
89
|
+
this.forfeitScript = base.hex.encode(forfeitScript);
|
|
90
|
+
this.exitScript = base.hex.encode(exitScript);
|
|
91
|
+
}
|
|
92
|
+
static DEFAULT_TIMELOCK = {
|
|
93
|
+
value: 144n,
|
|
94
|
+
type: "blocks"
|
|
95
|
+
};
|
|
96
|
+
// 1 day in blocks
|
|
97
|
+
forfeitScript;
|
|
98
|
+
exitScript;
|
|
99
|
+
/** Return the forfeit tapleaf script. */
|
|
100
|
+
forfeit() {
|
|
101
|
+
return this.findLeaf(this.forfeitScript);
|
|
102
|
+
}
|
|
103
|
+
/** Return the unilateral exit tapleaf script. */
|
|
104
|
+
exit() {
|
|
105
|
+
return this.findLeaf(this.exitScript);
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
DefaultVtxo2.Script = Script2;
|
|
109
|
+
})(exports.DefaultVtxo || (exports.DefaultVtxo = {}));
|
|
110
|
+
function isMainnetDescriptor(descriptor) {
|
|
111
|
+
return !descriptor.includes("tpub");
|
|
112
|
+
}
|
|
113
|
+
function descriptorIsOurs(candidate, ourDescriptor, ourXOnlyPubkey) {
|
|
114
|
+
if (!isDescriptor(candidate)) return false;
|
|
115
|
+
try {
|
|
116
|
+
const candidateInfo = descriptorsScure.expand({
|
|
117
|
+
descriptor: candidate,
|
|
118
|
+
network: isMainnetDescriptor(candidate) ? descriptorsScure.networks.bitcoin : descriptorsScure.networks.testnet
|
|
119
|
+
}).expansionMap?.["@0"];
|
|
120
|
+
if (!candidateInfo) return false;
|
|
121
|
+
if (candidateInfo.bip32) {
|
|
122
|
+
const ourBip32 = descriptorsScure.expand({
|
|
123
|
+
descriptor: ourDescriptor,
|
|
124
|
+
network: isMainnetDescriptor(ourDescriptor) ? descriptorsScure.networks.bitcoin : descriptorsScure.networks.testnet
|
|
125
|
+
}).expansionMap?.["@0"]?.bip32;
|
|
126
|
+
if (!ourBip32) return false;
|
|
127
|
+
return ourBip32.toBase58() === candidateInfo.bip32.toBase58();
|
|
128
|
+
}
|
|
129
|
+
if (candidateInfo.pubkey) {
|
|
130
|
+
const candidatePub = candidateInfo.pubkey.length === 33 ? candidateInfo.pubkey.subarray(1) : candidateInfo.pubkey;
|
|
131
|
+
if (candidatePub.length !== ourXOnlyPubkey.length) return false;
|
|
132
|
+
return base.hex.encode(candidatePub) === base.hex.encode(ourXOnlyPubkey);
|
|
133
|
+
}
|
|
134
|
+
return false;
|
|
135
|
+
} catch {
|
|
136
|
+
return false;
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
function isDescriptor(value) {
|
|
140
|
+
if (typeof value !== "string") return false;
|
|
141
|
+
if (!value.startsWith("tr(") || !value.endsWith(")")) return false;
|
|
142
|
+
return value.length > "tr()".length;
|
|
143
|
+
}
|
|
144
|
+
function normalizeToDescriptor(value) {
|
|
145
|
+
if (typeof value !== "string" || value.length === 0) {
|
|
146
|
+
throw new Error("normalizeToDescriptor: expected a non-empty string value");
|
|
147
|
+
}
|
|
148
|
+
if (isDescriptor(value)) {
|
|
149
|
+
return value;
|
|
150
|
+
}
|
|
151
|
+
return `tr(${value})`;
|
|
152
|
+
}
|
|
153
|
+
function extractPubKey(descriptor) {
|
|
154
|
+
if (!isDescriptor(descriptor)) {
|
|
155
|
+
return descriptor;
|
|
156
|
+
}
|
|
157
|
+
const network = isMainnetDescriptor(descriptor) ? descriptorsScure.networks.bitcoin : descriptorsScure.networks.testnet;
|
|
158
|
+
const expansion = descriptorsScure.expand({ descriptor, network });
|
|
159
|
+
if (!expansion.expansionMap) {
|
|
160
|
+
throw new Error("Cannot extract pubkey from descriptor: expansion failed.");
|
|
161
|
+
}
|
|
162
|
+
const key = expansion.expansionMap["@0"];
|
|
163
|
+
if (key?.bip32) {
|
|
164
|
+
throw new Error(
|
|
165
|
+
"Cannot extract pubkey from HD descriptor without derivation. Use DescriptorProvider to derive the key from the xpub."
|
|
166
|
+
);
|
|
167
|
+
}
|
|
168
|
+
if (!key?.pubkey) {
|
|
169
|
+
throw new Error("Cannot extract pubkey from descriptor: no key found.");
|
|
170
|
+
}
|
|
171
|
+
return base.hex.encode(key.pubkey);
|
|
172
|
+
}
|
|
173
|
+
function deriveDescriptorLeafPubKey(descriptor) {
|
|
174
|
+
const network = isMainnetDescriptor(descriptor) ? descriptorsScure.networks.bitcoin : descriptorsScure.networks.testnet;
|
|
175
|
+
let expansion;
|
|
176
|
+
try {
|
|
177
|
+
expansion = descriptorsScure.expand({ descriptor, network });
|
|
178
|
+
} catch (e) {
|
|
179
|
+
throw new Error(
|
|
180
|
+
`Cannot derive leaf pubkey from descriptor (length=${descriptor.length}): ensure it is materialized (no wildcard) and parsable.`,
|
|
181
|
+
{ cause: e }
|
|
182
|
+
);
|
|
183
|
+
}
|
|
184
|
+
const key = expansion.expansionMap?.["@0"];
|
|
185
|
+
if (!key?.pubkey) {
|
|
186
|
+
throw new Error(
|
|
187
|
+
`Cannot derive leaf pubkey from descriptor (length=${descriptor.length}): parsed but no '@0' pubkey in the expansion map.`
|
|
188
|
+
);
|
|
189
|
+
}
|
|
190
|
+
return key.pubkey;
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
// src/contracts/handlers/helpers.ts
|
|
194
|
+
function extractRawPubKey(value) {
|
|
195
|
+
if (!isDescriptor(value)) {
|
|
196
|
+
return value.toLowerCase();
|
|
197
|
+
}
|
|
198
|
+
try {
|
|
199
|
+
return extractPubKey(value).toLowerCase();
|
|
200
|
+
} catch {
|
|
201
|
+
return void 0;
|
|
202
|
+
}
|
|
203
|
+
}
|
|
204
|
+
function resolveRole(contract, context) {
|
|
205
|
+
if (context.role === "sender" || context.role === "receiver") {
|
|
206
|
+
return context.role;
|
|
207
|
+
}
|
|
208
|
+
const senderKey = contract.params.sender ? extractRawPubKey(contract.params.sender) : void 0;
|
|
209
|
+
const receiverKey = contract.params.receiver ? extractRawPubKey(contract.params.receiver) : void 0;
|
|
210
|
+
const matchRole = (rawWalletKey) => {
|
|
211
|
+
if (!rawWalletKey) return void 0;
|
|
212
|
+
if (senderKey && rawWalletKey === senderKey) {
|
|
213
|
+
return "sender";
|
|
214
|
+
}
|
|
215
|
+
if (receiverKey && rawWalletKey === receiverKey) {
|
|
216
|
+
return "receiver";
|
|
217
|
+
}
|
|
218
|
+
return void 0;
|
|
219
|
+
};
|
|
220
|
+
if (context.walletDescriptor) {
|
|
221
|
+
const walletDescriptorKey = extractRawPubKey(context.walletDescriptor);
|
|
222
|
+
const matchedRole = matchRole(walletDescriptorKey);
|
|
223
|
+
if (matchedRole) {
|
|
224
|
+
return matchedRole;
|
|
225
|
+
}
|
|
226
|
+
if (!walletDescriptorKey && context.walletPubKey) {
|
|
227
|
+
return matchRole(extractRawPubKey(context.walletPubKey));
|
|
228
|
+
}
|
|
229
|
+
return void 0;
|
|
230
|
+
}
|
|
231
|
+
if (context.walletPubKey) {
|
|
232
|
+
return matchRole(extractRawPubKey(context.walletPubKey));
|
|
233
|
+
}
|
|
234
|
+
return void 0;
|
|
235
|
+
}
|
|
236
|
+
var CLTV_HEIGHT_THRESHOLD = 500000000n;
|
|
237
|
+
function isCltvSatisfied(context, locktime) {
|
|
238
|
+
if (locktime < CLTV_HEIGHT_THRESHOLD) {
|
|
239
|
+
if (context.blockHeight === void 0) return false;
|
|
240
|
+
return BigInt(context.blockHeight) >= locktime;
|
|
241
|
+
}
|
|
242
|
+
const currentTimeSec = BigInt(Math.floor(context.currentTime / 1e3));
|
|
243
|
+
return currentTimeSec >= locktime;
|
|
244
|
+
}
|
|
245
|
+
function isCsvSpendable(context, sequence) {
|
|
246
|
+
if (sequence === void 0) return true;
|
|
247
|
+
if (!context.vtxo) return false;
|
|
248
|
+
const timelock = chunk5PG7DV7A_cjs.sequenceToTimelock(sequence);
|
|
249
|
+
if (timelock.type === "blocks") {
|
|
250
|
+
if (context.blockHeight === void 0 || context.vtxo.status.block_height === void 0) {
|
|
251
|
+
return false;
|
|
252
|
+
}
|
|
253
|
+
return context.blockHeight - context.vtxo.status.block_height >= Number(timelock.value);
|
|
254
|
+
}
|
|
255
|
+
if (timelock.type === "seconds") {
|
|
256
|
+
const blockTime = context.vtxo.status.block_time;
|
|
257
|
+
if (blockTime === void 0) return false;
|
|
258
|
+
return context.currentTime / 1e3 - blockTime >= Number(timelock.value);
|
|
259
|
+
}
|
|
260
|
+
return false;
|
|
261
|
+
}
|
|
262
|
+
|
|
263
|
+
// src/contracts/metadata.ts
|
|
264
|
+
var WALLET_RECEIVE_SOURCE = "wallet-receive";
|
|
265
|
+
|
|
266
|
+
// src/contracts/handlers/default.ts
|
|
267
|
+
function extractPubKeyBytes(value) {
|
|
268
|
+
return base.hex.decode(extractPubKey(normalizeToDescriptor(value)));
|
|
269
|
+
}
|
|
270
|
+
var DefaultContractHandler = {
|
|
271
|
+
type: "default",
|
|
272
|
+
createScript(params) {
|
|
273
|
+
const typed = this.deserializeParams(params);
|
|
274
|
+
return new exports.DefaultVtxo.Script(typed);
|
|
275
|
+
},
|
|
276
|
+
serializeParams(params) {
|
|
277
|
+
return {
|
|
278
|
+
pubKey: base.hex.encode(params.pubKey),
|
|
279
|
+
serverPubKey: base.hex.encode(params.serverPubKey),
|
|
280
|
+
csvTimelock: chunk5PG7DV7A_cjs.timelockToSequence(params.csvTimelock).toString()
|
|
281
|
+
};
|
|
282
|
+
},
|
|
283
|
+
deserializeParams(params) {
|
|
284
|
+
const csvTimelock = params.csvTimelock ? chunk5PG7DV7A_cjs.sequenceToTimelock(Number(params.csvTimelock)) : exports.DefaultVtxo.Script.DEFAULT_TIMELOCK;
|
|
285
|
+
return {
|
|
286
|
+
pubKey: extractPubKeyBytes(params.pubKey),
|
|
287
|
+
serverPubKey: extractPubKeyBytes(params.serverPubKey),
|
|
288
|
+
csvTimelock
|
|
289
|
+
};
|
|
290
|
+
},
|
|
291
|
+
selectPath(script, contract, context) {
|
|
292
|
+
if (context.collaborative) {
|
|
293
|
+
return { leaf: script.forfeit() };
|
|
294
|
+
}
|
|
295
|
+
const sequence = contract.params.csvTimelock ? Number(contract.params.csvTimelock) : void 0;
|
|
296
|
+
if (!isCsvSpendable(context, sequence)) {
|
|
297
|
+
return null;
|
|
298
|
+
}
|
|
299
|
+
return {
|
|
300
|
+
leaf: script.exit(),
|
|
301
|
+
sequence
|
|
302
|
+
};
|
|
303
|
+
},
|
|
304
|
+
getAllSpendingPaths(script, contract, context) {
|
|
305
|
+
const paths = [];
|
|
306
|
+
if (context.collaborative) {
|
|
307
|
+
paths.push({ leaf: script.forfeit() });
|
|
308
|
+
}
|
|
309
|
+
const exitPath = { leaf: script.exit() };
|
|
310
|
+
if (contract.params.csvTimelock) {
|
|
311
|
+
exitPath.sequence = Number(contract.params.csvTimelock);
|
|
312
|
+
}
|
|
313
|
+
paths.push(exitPath);
|
|
314
|
+
return paths;
|
|
315
|
+
},
|
|
316
|
+
getSpendablePaths(script, contract, context) {
|
|
317
|
+
const paths = [];
|
|
318
|
+
if (context.collaborative) {
|
|
319
|
+
paths.push({ leaf: script.forfeit() });
|
|
320
|
+
}
|
|
321
|
+
const exitSequence = contract.params.csvTimelock ? Number(contract.params.csvTimelock) : void 0;
|
|
322
|
+
if (isCsvSpendable(context, exitSequence)) {
|
|
323
|
+
const exitPath = { leaf: script.exit() };
|
|
324
|
+
if (exitSequence !== void 0) {
|
|
325
|
+
exitPath.sequence = exitSequence;
|
|
326
|
+
}
|
|
327
|
+
paths.push(exitPath);
|
|
328
|
+
}
|
|
329
|
+
return paths;
|
|
330
|
+
},
|
|
331
|
+
async discoverAt(index, descriptor, deps) {
|
|
332
|
+
const pubKey = deriveDescriptorLeafPubKey(descriptor);
|
|
333
|
+
const out = [];
|
|
334
|
+
for (const csvTimelock of deps.csvTimelocks) {
|
|
335
|
+
const script = new exports.DefaultVtxo.Script({
|
|
336
|
+
pubKey,
|
|
337
|
+
serverPubKey: deps.serverPubKey,
|
|
338
|
+
csvTimelock
|
|
339
|
+
});
|
|
340
|
+
const scriptHex = base.hex.encode(script.pkScript);
|
|
341
|
+
const { vtxos } = await deps.indexerProvider.getVtxos({
|
|
342
|
+
scripts: [scriptHex]
|
|
343
|
+
});
|
|
344
|
+
if (vtxos.length === 0) continue;
|
|
345
|
+
out.push({
|
|
346
|
+
type: "default",
|
|
347
|
+
params: {
|
|
348
|
+
pubKey: base.hex.encode(pubKey),
|
|
349
|
+
serverPubKey: base.hex.encode(deps.serverPubKey),
|
|
350
|
+
csvTimelock: chunk5PG7DV7A_cjs.timelockToSequence(csvTimelock).toString()
|
|
351
|
+
},
|
|
352
|
+
script: scriptHex,
|
|
353
|
+
address: script.address(deps.network.hrp, deps.serverPubKey).encode(),
|
|
354
|
+
...index > 0 ? {
|
|
355
|
+
metadata: {
|
|
356
|
+
source: WALLET_RECEIVE_SOURCE,
|
|
357
|
+
signingDescriptor: descriptor
|
|
358
|
+
}
|
|
359
|
+
} : {}
|
|
360
|
+
});
|
|
361
|
+
}
|
|
362
|
+
return out;
|
|
363
|
+
}
|
|
364
|
+
};
|
|
365
|
+
exports.DelegateVtxo = void 0;
|
|
366
|
+
((DelegateVtxo2) => {
|
|
367
|
+
class Script2 extends chunk5PG7DV7A_cjs.VtxoScript {
|
|
368
|
+
/** Create a delegated virtual output script with forfeit, exit, and delegate paths. */
|
|
369
|
+
constructor(options) {
|
|
370
|
+
const defaultVtxo = new exports.DefaultVtxo.Script(options);
|
|
371
|
+
const { delegatePubKey, pubKey, serverPubKey } = options;
|
|
372
|
+
const delegateScript = chunk5PG7DV7A_cjs.MultisigTapscript.encode({
|
|
373
|
+
pubkeys: [pubKey, delegatePubKey, serverPubKey]
|
|
374
|
+
}).script;
|
|
375
|
+
super([...defaultVtxo.scripts, delegateScript]);
|
|
376
|
+
this.options = options;
|
|
377
|
+
this.defaultVtxo = defaultVtxo;
|
|
378
|
+
this.delegateScript = base.hex.encode(delegateScript);
|
|
379
|
+
}
|
|
380
|
+
defaultVtxo;
|
|
381
|
+
delegateScript;
|
|
382
|
+
/** Return the forfeit tapleaf script. */
|
|
383
|
+
forfeit() {
|
|
384
|
+
return this.findLeaf(this.defaultVtxo.forfeitScript);
|
|
385
|
+
}
|
|
386
|
+
/** Return the unilateral exit tapleaf script. */
|
|
387
|
+
exit() {
|
|
388
|
+
return this.findLeaf(this.defaultVtxo.exitScript);
|
|
389
|
+
}
|
|
390
|
+
/** Return the delegate tapleaf script. */
|
|
391
|
+
delegate() {
|
|
392
|
+
return this.findLeaf(this.delegateScript);
|
|
393
|
+
}
|
|
394
|
+
}
|
|
395
|
+
DelegateVtxo2.Script = Script2;
|
|
396
|
+
})(exports.DelegateVtxo || (exports.DelegateVtxo = {}));
|
|
397
|
+
|
|
398
|
+
// src/contracts/handlers/delegate.ts
|
|
399
|
+
var DelegateContractHandler = {
|
|
400
|
+
type: "delegate",
|
|
401
|
+
createScript(params) {
|
|
402
|
+
const typed = this.deserializeParams(params);
|
|
403
|
+
return new exports.DelegateVtxo.Script(typed);
|
|
404
|
+
},
|
|
405
|
+
serializeParams(params) {
|
|
406
|
+
return {
|
|
407
|
+
pubKey: base.hex.encode(params.pubKey),
|
|
408
|
+
serverPubKey: base.hex.encode(params.serverPubKey),
|
|
409
|
+
delegatePubKey: base.hex.encode(params.delegatePubKey),
|
|
410
|
+
csvTimelock: chunk5PG7DV7A_cjs.timelockToSequence(params.csvTimelock).toString()
|
|
411
|
+
};
|
|
412
|
+
},
|
|
413
|
+
deserializeParams(params) {
|
|
414
|
+
const csvTimelock = params.csvTimelock ? chunk5PG7DV7A_cjs.sequenceToTimelock(Number(params.csvTimelock)) : exports.DefaultVtxo.Script.DEFAULT_TIMELOCK;
|
|
415
|
+
return {
|
|
416
|
+
pubKey: base.hex.decode(params.pubKey),
|
|
417
|
+
serverPubKey: base.hex.decode(params.serverPubKey),
|
|
418
|
+
delegatePubKey: base.hex.decode(params.delegatePubKey),
|
|
419
|
+
csvTimelock
|
|
420
|
+
};
|
|
421
|
+
},
|
|
422
|
+
selectPath(script, contract, context) {
|
|
423
|
+
if (context.collaborative) {
|
|
424
|
+
return { leaf: script.forfeit() };
|
|
425
|
+
}
|
|
426
|
+
const sequence = contract.params.csvTimelock ? Number(contract.params.csvTimelock) : void 0;
|
|
427
|
+
if (!isCsvSpendable(context, sequence)) {
|
|
428
|
+
return null;
|
|
429
|
+
}
|
|
430
|
+
return {
|
|
431
|
+
leaf: script.exit(),
|
|
432
|
+
sequence
|
|
433
|
+
};
|
|
434
|
+
},
|
|
435
|
+
getAllSpendingPaths(script, contract, context) {
|
|
436
|
+
const paths = [];
|
|
437
|
+
if (context.collaborative) {
|
|
438
|
+
paths.push({ leaf: script.forfeit() });
|
|
439
|
+
}
|
|
440
|
+
const exitPath = { leaf: script.exit() };
|
|
441
|
+
if (contract.params.csvTimelock) {
|
|
442
|
+
exitPath.sequence = Number(contract.params.csvTimelock);
|
|
443
|
+
}
|
|
444
|
+
paths.push(exitPath);
|
|
445
|
+
if (context.collaborative) {
|
|
446
|
+
paths.push({ leaf: script.delegate() });
|
|
447
|
+
}
|
|
448
|
+
return paths;
|
|
449
|
+
},
|
|
450
|
+
getSpendablePaths(script, contract, context) {
|
|
451
|
+
const paths = [];
|
|
452
|
+
if (context.collaborative) {
|
|
453
|
+
paths.push({ leaf: script.forfeit() });
|
|
454
|
+
}
|
|
455
|
+
const exitSequence = contract.params.csvTimelock ? Number(contract.params.csvTimelock) : void 0;
|
|
456
|
+
if (isCsvSpendable(context, exitSequence)) {
|
|
457
|
+
const exitPath = { leaf: script.exit() };
|
|
458
|
+
if (exitSequence !== void 0) {
|
|
459
|
+
exitPath.sequence = exitSequence;
|
|
460
|
+
}
|
|
461
|
+
paths.push(exitPath);
|
|
462
|
+
}
|
|
463
|
+
return paths;
|
|
464
|
+
},
|
|
465
|
+
async discoverAt(index, descriptor, deps) {
|
|
466
|
+
if (!deps.delegatePubKey) return [];
|
|
467
|
+
const pubKey = deriveDescriptorLeafPubKey(descriptor);
|
|
468
|
+
const out = [];
|
|
469
|
+
for (const csvTimelock of deps.csvTimelocks) {
|
|
470
|
+
const script = new exports.DelegateVtxo.Script({
|
|
471
|
+
pubKey,
|
|
472
|
+
serverPubKey: deps.serverPubKey,
|
|
473
|
+
delegatePubKey: deps.delegatePubKey,
|
|
474
|
+
csvTimelock
|
|
475
|
+
});
|
|
476
|
+
const scriptHex = base.hex.encode(script.pkScript);
|
|
477
|
+
const { vtxos } = await deps.indexerProvider.getVtxos({
|
|
478
|
+
scripts: [scriptHex]
|
|
479
|
+
});
|
|
480
|
+
if (vtxos.length === 0) continue;
|
|
481
|
+
out.push({
|
|
482
|
+
type: "delegate",
|
|
483
|
+
params: {
|
|
484
|
+
pubKey: base.hex.encode(pubKey),
|
|
485
|
+
serverPubKey: base.hex.encode(deps.serverPubKey),
|
|
486
|
+
delegatePubKey: base.hex.encode(deps.delegatePubKey),
|
|
487
|
+
csvTimelock: chunk5PG7DV7A_cjs.timelockToSequence(csvTimelock).toString()
|
|
488
|
+
},
|
|
489
|
+
script: scriptHex,
|
|
490
|
+
address: script.address(deps.network.hrp, deps.serverPubKey).encode(),
|
|
491
|
+
...index > 0 ? {
|
|
492
|
+
metadata: {
|
|
493
|
+
source: WALLET_RECEIVE_SOURCE,
|
|
494
|
+
signingDescriptor: descriptor
|
|
495
|
+
}
|
|
496
|
+
} : {}
|
|
497
|
+
});
|
|
498
|
+
}
|
|
499
|
+
return out;
|
|
500
|
+
}
|
|
501
|
+
};
|
|
502
|
+
exports.VHTLC = void 0;
|
|
503
|
+
((VHTLC2) => {
|
|
504
|
+
class Script2 extends chunk5PG7DV7A_cjs.VtxoScript {
|
|
505
|
+
/** Create a VHTLC script from the supplied participant keys, hash, and timelocks. */
|
|
506
|
+
constructor(options) {
|
|
507
|
+
validateOptions(options);
|
|
508
|
+
const {
|
|
509
|
+
sender,
|
|
510
|
+
receiver,
|
|
511
|
+
server,
|
|
512
|
+
preimageHash,
|
|
513
|
+
refundLocktime,
|
|
514
|
+
unilateralClaimDelay,
|
|
515
|
+
unilateralRefundDelay,
|
|
516
|
+
unilateralRefundWithoutReceiverDelay
|
|
517
|
+
} = options;
|
|
518
|
+
const conditionScript = preimageConditionScript(preimageHash);
|
|
519
|
+
const claimScript = chunk5PG7DV7A_cjs.ConditionMultisigTapscript.encode({
|
|
520
|
+
conditionScript,
|
|
521
|
+
pubkeys: [receiver, server]
|
|
522
|
+
}).script;
|
|
523
|
+
const refundScript = chunk5PG7DV7A_cjs.MultisigTapscript.encode({
|
|
524
|
+
pubkeys: [sender, receiver, server]
|
|
525
|
+
}).script;
|
|
526
|
+
const refundWithoutReceiverScript = chunk5PG7DV7A_cjs.CLTVMultisigTapscript.encode({
|
|
527
|
+
absoluteTimelock: refundLocktime,
|
|
528
|
+
pubkeys: [sender, server]
|
|
529
|
+
}).script;
|
|
530
|
+
const unilateralClaimScript = chunk5PG7DV7A_cjs.ConditionCSVMultisigTapscript.encode({
|
|
531
|
+
conditionScript,
|
|
532
|
+
timelock: unilateralClaimDelay,
|
|
533
|
+
pubkeys: [receiver]
|
|
534
|
+
}).script;
|
|
535
|
+
const unilateralRefundScript = chunk5PG7DV7A_cjs.CSVMultisigTapscript.encode({
|
|
536
|
+
timelock: unilateralRefundDelay,
|
|
537
|
+
pubkeys: [sender, receiver]
|
|
538
|
+
}).script;
|
|
539
|
+
const unilateralRefundWithoutReceiverScript = chunk5PG7DV7A_cjs.CSVMultisigTapscript.encode({
|
|
540
|
+
timelock: unilateralRefundWithoutReceiverDelay,
|
|
541
|
+
pubkeys: [sender]
|
|
542
|
+
}).script;
|
|
543
|
+
super([
|
|
544
|
+
claimScript,
|
|
545
|
+
refundScript,
|
|
546
|
+
refundWithoutReceiverScript,
|
|
547
|
+
unilateralClaimScript,
|
|
548
|
+
unilateralRefundScript,
|
|
549
|
+
unilateralRefundWithoutReceiverScript
|
|
550
|
+
]);
|
|
551
|
+
this.options = options;
|
|
552
|
+
this.claimScript = base.hex.encode(claimScript);
|
|
553
|
+
this.refundScript = base.hex.encode(refundScript);
|
|
554
|
+
this.refundWithoutReceiverScript = base.hex.encode(refundWithoutReceiverScript);
|
|
555
|
+
this.unilateralClaimScript = base.hex.encode(unilateralClaimScript);
|
|
556
|
+
this.unilateralRefundScript = base.hex.encode(unilateralRefundScript);
|
|
557
|
+
this.unilateralRefundWithoutReceiverScript = base.hex.encode(
|
|
558
|
+
unilateralRefundWithoutReceiverScript
|
|
559
|
+
);
|
|
560
|
+
}
|
|
561
|
+
claimScript;
|
|
562
|
+
refundScript;
|
|
563
|
+
refundWithoutReceiverScript;
|
|
564
|
+
unilateralClaimScript;
|
|
565
|
+
unilateralRefundScript;
|
|
566
|
+
unilateralRefundWithoutReceiverScript;
|
|
567
|
+
/** Return the collaborative claim tapleaf script. */
|
|
568
|
+
claim() {
|
|
569
|
+
return this.findLeaf(this.claimScript);
|
|
570
|
+
}
|
|
571
|
+
/** Return the collaborative refund tapleaf script. */
|
|
572
|
+
refund() {
|
|
573
|
+
return this.findLeaf(this.refundScript);
|
|
574
|
+
}
|
|
575
|
+
/** Return the refund-without-receiver tapleaf script. */
|
|
576
|
+
refundWithoutReceiver() {
|
|
577
|
+
return this.findLeaf(this.refundWithoutReceiverScript);
|
|
578
|
+
}
|
|
579
|
+
/** Return the unilateral claim tapleaf script. */
|
|
580
|
+
unilateralClaim() {
|
|
581
|
+
return this.findLeaf(this.unilateralClaimScript);
|
|
582
|
+
}
|
|
583
|
+
/** Return the unilateral refund tapleaf script. */
|
|
584
|
+
unilateralRefund() {
|
|
585
|
+
return this.findLeaf(this.unilateralRefundScript);
|
|
586
|
+
}
|
|
587
|
+
/** Return the unilateral refund-without-receiver tapleaf script. */
|
|
588
|
+
unilateralRefundWithoutReceiver() {
|
|
589
|
+
return this.findLeaf(this.unilateralRefundWithoutReceiverScript);
|
|
590
|
+
}
|
|
591
|
+
}
|
|
592
|
+
VHTLC2.Script = Script2;
|
|
593
|
+
function validateOptions(options) {
|
|
594
|
+
const {
|
|
595
|
+
sender,
|
|
596
|
+
receiver,
|
|
597
|
+
server,
|
|
598
|
+
preimageHash,
|
|
599
|
+
refundLocktime,
|
|
600
|
+
unilateralClaimDelay,
|
|
601
|
+
unilateralRefundDelay,
|
|
602
|
+
unilateralRefundWithoutReceiverDelay
|
|
603
|
+
} = options;
|
|
604
|
+
if (!preimageHash || preimageHash.length !== 20) {
|
|
605
|
+
throw new Error("preimage hash must be 20 bytes");
|
|
606
|
+
}
|
|
607
|
+
if (!receiver || receiver.length !== 32) {
|
|
608
|
+
throw new Error("Invalid public key length (receiver)");
|
|
609
|
+
}
|
|
610
|
+
if (!sender || sender.length !== 32) {
|
|
611
|
+
throw new Error("Invalid public key length (sender)");
|
|
612
|
+
}
|
|
613
|
+
if (!server || server.length !== 32) {
|
|
614
|
+
throw new Error("Invalid public key length (server)");
|
|
615
|
+
}
|
|
616
|
+
if (typeof refundLocktime !== "bigint" || refundLocktime <= 0n) {
|
|
617
|
+
throw new Error("refund locktime must be greater than 0");
|
|
618
|
+
}
|
|
619
|
+
if (!unilateralClaimDelay || typeof unilateralClaimDelay.value !== "bigint" || unilateralClaimDelay.value <= 0n) {
|
|
620
|
+
throw new Error("unilateral claim delay must greater than 0");
|
|
621
|
+
}
|
|
622
|
+
if (unilateralClaimDelay.type === "seconds" && unilateralClaimDelay.value % 512n !== 0n) {
|
|
623
|
+
throw new Error("seconds timelock must be multiple of 512");
|
|
624
|
+
}
|
|
625
|
+
if (unilateralClaimDelay.type === "seconds" && unilateralClaimDelay.value < 512n) {
|
|
626
|
+
throw new Error("seconds timelock must be greater or equal to 512");
|
|
627
|
+
}
|
|
628
|
+
if (!unilateralRefundDelay || typeof unilateralRefundDelay.value !== "bigint" || unilateralRefundDelay.value <= 0n) {
|
|
629
|
+
throw new Error("unilateral refund delay must greater than 0");
|
|
630
|
+
}
|
|
631
|
+
if (unilateralRefundDelay.type === "seconds" && unilateralRefundDelay.value % 512n !== 0n) {
|
|
632
|
+
throw new Error("seconds timelock must be multiple of 512");
|
|
633
|
+
}
|
|
634
|
+
if (unilateralRefundDelay.type === "seconds" && unilateralRefundDelay.value < 512n) {
|
|
635
|
+
throw new Error("seconds timelock must be greater or equal to 512");
|
|
636
|
+
}
|
|
637
|
+
if (!unilateralRefundWithoutReceiverDelay || typeof unilateralRefundWithoutReceiverDelay.value !== "bigint" || unilateralRefundWithoutReceiverDelay.value <= 0n) {
|
|
638
|
+
throw new Error("unilateral refund without receiver delay must greater than 0");
|
|
639
|
+
}
|
|
640
|
+
if (unilateralRefundWithoutReceiverDelay.type === "seconds" && unilateralRefundWithoutReceiverDelay.value % 512n !== 0n) {
|
|
641
|
+
throw new Error("seconds timelock must be multiple of 512");
|
|
642
|
+
}
|
|
643
|
+
if (unilateralRefundWithoutReceiverDelay.type === "seconds" && unilateralRefundWithoutReceiverDelay.value < 512n) {
|
|
644
|
+
throw new Error("seconds timelock must be greater or equal to 512");
|
|
645
|
+
}
|
|
646
|
+
}
|
|
647
|
+
})(exports.VHTLC || (exports.VHTLC = {}));
|
|
648
|
+
function preimageConditionScript(preimageHash) {
|
|
649
|
+
return btcSigner.Script.encode(["HASH160", preimageHash, "EQUAL"]);
|
|
650
|
+
}
|
|
651
|
+
|
|
652
|
+
// src/contracts/handlers/vhtlc.ts
|
|
653
|
+
var VHTLCContractHandler = {
|
|
654
|
+
type: "vhtlc",
|
|
655
|
+
createScript(params) {
|
|
656
|
+
const typed = this.deserializeParams(params);
|
|
657
|
+
return new exports.VHTLC.Script(typed);
|
|
658
|
+
},
|
|
659
|
+
serializeParams(params) {
|
|
660
|
+
return {
|
|
661
|
+
sender: base.hex.encode(params.sender),
|
|
662
|
+
receiver: base.hex.encode(params.receiver),
|
|
663
|
+
server: base.hex.encode(params.server),
|
|
664
|
+
hash: base.hex.encode(params.preimageHash),
|
|
665
|
+
refundLocktime: params.refundLocktime.toString(),
|
|
666
|
+
claimDelay: chunk5PG7DV7A_cjs.timelockToSequence(params.unilateralClaimDelay).toString(),
|
|
667
|
+
refundDelay: chunk5PG7DV7A_cjs.timelockToSequence(params.unilateralRefundDelay).toString(),
|
|
668
|
+
refundNoReceiverDelay: chunk5PG7DV7A_cjs.timelockToSequence(
|
|
669
|
+
params.unilateralRefundWithoutReceiverDelay
|
|
670
|
+
).toString()
|
|
671
|
+
};
|
|
672
|
+
},
|
|
673
|
+
deserializeParams(params) {
|
|
674
|
+
return {
|
|
675
|
+
sender: base.hex.decode(params.sender),
|
|
676
|
+
receiver: base.hex.decode(params.receiver),
|
|
677
|
+
server: base.hex.decode(params.server),
|
|
678
|
+
preimageHash: base.hex.decode(params.hash),
|
|
679
|
+
refundLocktime: BigInt(params.refundLocktime),
|
|
680
|
+
unilateralClaimDelay: chunk5PG7DV7A_cjs.sequenceToTimelock(Number(params.claimDelay)),
|
|
681
|
+
unilateralRefundDelay: chunk5PG7DV7A_cjs.sequenceToTimelock(Number(params.refundDelay)),
|
|
682
|
+
unilateralRefundWithoutReceiverDelay: chunk5PG7DV7A_cjs.sequenceToTimelock(
|
|
683
|
+
Number(params.refundNoReceiverDelay)
|
|
684
|
+
)
|
|
685
|
+
};
|
|
686
|
+
},
|
|
687
|
+
/**
|
|
688
|
+
* Select spending path based on context.
|
|
689
|
+
*
|
|
690
|
+
* Role is determined from `context.role` or by matching
|
|
691
|
+
* `context.walletDescriptor` (preferred) / `context.walletPubKey`
|
|
692
|
+
* against sender/receiver in contract params.
|
|
693
|
+
*/
|
|
694
|
+
selectPath(script, contract, context) {
|
|
695
|
+
const role = resolveRole(contract, context);
|
|
696
|
+
const preimage = contract.params?.preimage;
|
|
697
|
+
const refundLocktime = BigInt(contract.params.refundLocktime);
|
|
698
|
+
if (!role) {
|
|
699
|
+
return null;
|
|
700
|
+
}
|
|
701
|
+
if (context.collaborative) {
|
|
702
|
+
if (role === "receiver" && preimage) {
|
|
703
|
+
return {
|
|
704
|
+
leaf: script.claim(),
|
|
705
|
+
extraWitness: [base.hex.decode(preimage)]
|
|
706
|
+
};
|
|
707
|
+
}
|
|
708
|
+
if (role === "sender" && isCltvSatisfied(context, refundLocktime)) {
|
|
709
|
+
return {
|
|
710
|
+
leaf: script.refundWithoutReceiver()
|
|
711
|
+
};
|
|
712
|
+
}
|
|
713
|
+
return null;
|
|
714
|
+
}
|
|
715
|
+
if (role === "receiver" && preimage) {
|
|
716
|
+
const sequence = Number(contract.params.claimDelay);
|
|
717
|
+
if (!isCsvSpendable(context, sequence)) return null;
|
|
718
|
+
return {
|
|
719
|
+
leaf: script.unilateralClaim(),
|
|
720
|
+
extraWitness: [base.hex.decode(preimage)],
|
|
721
|
+
sequence
|
|
722
|
+
};
|
|
723
|
+
}
|
|
724
|
+
if (role === "sender") {
|
|
725
|
+
const sequence = Number(contract.params.refundNoReceiverDelay);
|
|
726
|
+
if (!isCsvSpendable(context, sequence)) return null;
|
|
727
|
+
return {
|
|
728
|
+
leaf: script.unilateralRefundWithoutReceiver(),
|
|
729
|
+
sequence
|
|
730
|
+
};
|
|
731
|
+
}
|
|
732
|
+
return null;
|
|
733
|
+
},
|
|
734
|
+
/**
|
|
735
|
+
* Get all possible spending paths (no timelock checks).
|
|
736
|
+
*
|
|
737
|
+
* Role is determined from `context.role` or by matching
|
|
738
|
+
* `context.walletDescriptor` (preferred) / `context.walletPubKey`
|
|
739
|
+
* against sender/receiver in contract params.
|
|
740
|
+
*/
|
|
741
|
+
getAllSpendingPaths(script, contract, context) {
|
|
742
|
+
const role = resolveRole(contract, context);
|
|
743
|
+
const paths = [];
|
|
744
|
+
if (!role) {
|
|
745
|
+
return paths;
|
|
746
|
+
}
|
|
747
|
+
const preimage = contract.params?.preimage;
|
|
748
|
+
if (context.collaborative) {
|
|
749
|
+
if (role === "receiver" && preimage) {
|
|
750
|
+
paths.push({
|
|
751
|
+
leaf: script.claim(),
|
|
752
|
+
extraWitness: [base.hex.decode(preimage)]
|
|
753
|
+
});
|
|
754
|
+
}
|
|
755
|
+
if (role === "sender") {
|
|
756
|
+
paths.push({
|
|
757
|
+
leaf: script.refundWithoutReceiver()
|
|
758
|
+
});
|
|
759
|
+
}
|
|
760
|
+
} else {
|
|
761
|
+
if (role === "receiver" && preimage) {
|
|
762
|
+
const sequence = Number(contract.params.claimDelay);
|
|
763
|
+
paths.push({
|
|
764
|
+
leaf: script.unilateralClaim(),
|
|
765
|
+
extraWitness: [base.hex.decode(preimage)],
|
|
766
|
+
sequence
|
|
767
|
+
});
|
|
768
|
+
}
|
|
769
|
+
if (role === "sender") {
|
|
770
|
+
const sequence = Number(contract.params.refundNoReceiverDelay);
|
|
771
|
+
paths.push({
|
|
772
|
+
leaf: script.unilateralRefundWithoutReceiver(),
|
|
773
|
+
sequence
|
|
774
|
+
});
|
|
775
|
+
}
|
|
776
|
+
}
|
|
777
|
+
return paths;
|
|
778
|
+
},
|
|
779
|
+
getSpendablePaths(script, contract, context) {
|
|
780
|
+
const role = resolveRole(contract, context);
|
|
781
|
+
const paths = [];
|
|
782
|
+
if (!role) {
|
|
783
|
+
return paths;
|
|
784
|
+
}
|
|
785
|
+
const preimage = contract.params?.preimage;
|
|
786
|
+
const refundLocktime = BigInt(contract.params.refundLocktime);
|
|
787
|
+
if (context.collaborative) {
|
|
788
|
+
if (role === "receiver" && preimage) {
|
|
789
|
+
paths.push({
|
|
790
|
+
leaf: script.claim(),
|
|
791
|
+
extraWitness: [base.hex.decode(preimage)]
|
|
792
|
+
});
|
|
793
|
+
}
|
|
794
|
+
if (role === "sender" && isCltvSatisfied(context, refundLocktime)) {
|
|
795
|
+
paths.push({
|
|
796
|
+
leaf: script.refundWithoutReceiver()
|
|
797
|
+
});
|
|
798
|
+
}
|
|
799
|
+
return paths;
|
|
800
|
+
}
|
|
801
|
+
if (role === "receiver" && preimage) {
|
|
802
|
+
const sequence = Number(contract.params.claimDelay);
|
|
803
|
+
if (isCsvSpendable(context, sequence)) {
|
|
804
|
+
paths.push({
|
|
805
|
+
leaf: script.unilateralClaim(),
|
|
806
|
+
extraWitness: [base.hex.decode(preimage)],
|
|
807
|
+
sequence
|
|
808
|
+
});
|
|
809
|
+
}
|
|
810
|
+
}
|
|
811
|
+
if (role === "sender") {
|
|
812
|
+
const sequence = Number(contract.params.refundNoReceiverDelay);
|
|
813
|
+
if (isCsvSpendable(context, sequence)) {
|
|
814
|
+
paths.push({
|
|
815
|
+
leaf: script.unilateralRefundWithoutReceiver(),
|
|
816
|
+
sequence
|
|
817
|
+
});
|
|
818
|
+
}
|
|
819
|
+
}
|
|
820
|
+
return paths;
|
|
821
|
+
}
|
|
822
|
+
};
|
|
823
|
+
|
|
824
|
+
// src/contracts/handlers/index.ts
|
|
825
|
+
contractHandlers.register(DefaultContractHandler);
|
|
826
|
+
contractHandlers.register(DelegateContractHandler);
|
|
827
|
+
contractHandlers.register(VHTLCContractHandler);
|
|
828
|
+
|
|
829
|
+
exports.DefaultContractHandler = DefaultContractHandler;
|
|
830
|
+
exports.DelegateContractHandler = DelegateContractHandler;
|
|
831
|
+
exports.VHTLCContractHandler = VHTLCContractHandler;
|
|
832
|
+
exports.WALLET_RECEIVE_SOURCE = WALLET_RECEIVE_SOURCE;
|
|
833
|
+
exports.contractHandlers = contractHandlers;
|
|
834
|
+
exports.deriveDescriptorLeafPubKey = deriveDescriptorLeafPubKey;
|
|
835
|
+
exports.descriptorIsOurs = descriptorIsOurs;
|
|
836
|
+
exports.isMainnetDescriptor = isMainnetDescriptor;
|
|
837
|
+
//# sourceMappingURL=chunk-I3DGUUCT.cjs.map
|
|
838
|
+
//# sourceMappingURL=chunk-I3DGUUCT.cjs.map
|