@arkade-os/sdk 0.4.26 → 0.4.28
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +36 -125
- package/dist/adapters/asyncStorage.cjs +48 -0
- package/dist/adapters/asyncStorage.cjs.map +1 -0
- package/dist/adapters/asyncStorage.d.cts +16 -0
- package/dist/{types/storage → adapters}/asyncStorage.d.ts +5 -2
- package/dist/adapters/asyncStorage.js +46 -0
- package/dist/adapters/asyncStorage.js.map +1 -0
- package/dist/adapters/expo.cjs +19 -0
- package/dist/adapters/expo.cjs.map +1 -0
- package/dist/adapters/expo.d.cts +48 -0
- package/dist/adapters/expo.d.ts +48 -0
- package/dist/adapters/expo.js +6 -0
- package/dist/adapters/expo.js.map +1 -0
- package/dist/adapters/fileSystem.cjs +116 -0
- package/dist/adapters/fileSystem.cjs.map +1 -0
- package/dist/adapters/fileSystem.d.cts +17 -0
- package/dist/{types/storage → adapters}/fileSystem.d.ts +5 -2
- package/dist/adapters/fileSystem.js +93 -0
- package/dist/adapters/fileSystem.js.map +1 -0
- package/dist/adapters/indexedDB.cjs +103 -0
- package/dist/adapters/indexedDB.cjs.map +1 -0
- package/dist/adapters/indexedDB.d.cts +18 -0
- package/dist/{types/storage → adapters}/indexedDB.d.ts +5 -2
- package/dist/adapters/indexedDB.js +101 -0
- package/dist/adapters/indexedDB.js.map +1 -0
- package/dist/adapters/localStorage.cjs +50 -0
- package/dist/adapters/localStorage.cjs.map +1 -0
- package/dist/{types/storage/inMemory.d.ts → adapters/localStorage.d.cts} +6 -3
- package/dist/{types/storage → adapters}/localStorage.d.ts +5 -2
- package/dist/adapters/localStorage.js +48 -0
- package/dist/adapters/localStorage.js.map +1 -0
- package/dist/ark-TZ1gXAXU.d.cts +3880 -0
- package/dist/ark-TZ1gXAXU.d.ts +3880 -0
- package/dist/{types/worker/expo/asyncStorageTaskQueue.d.ts → asyncStorageTaskQueue-Cb1F_Z9s.d.ts} +6 -3
- package/dist/asyncStorageTaskQueue-EFqSmYTg.d.cts +49 -0
- package/dist/chunk-5BLDMQED.cjs +18 -0
- package/dist/chunk-5BLDMQED.cjs.map +1 -0
- package/dist/chunk-5PG7DV7A.cjs +805 -0
- package/dist/chunk-5PG7DV7A.cjs.map +1 -0
- package/dist/chunk-A3EMF7RN.js +95 -0
- package/dist/chunk-A3EMF7RN.js.map +1 -0
- package/dist/chunk-ADV27S4N.cjs +2701 -0
- package/dist/chunk-ADV27S4N.cjs.map +1 -0
- package/dist/chunk-BQLHADL7.js +13805 -0
- package/dist/chunk-BQLHADL7.js.map +1 -0
- package/dist/chunk-CFZMTDWI.js +209 -0
- package/dist/chunk-CFZMTDWI.js.map +1 -0
- package/dist/chunk-FG5ACJJW.cjs +212 -0
- package/dist/chunk-FG5ACJJW.cjs.map +1 -0
- package/dist/chunk-HW3JJ323.js +768 -0
- package/dist/chunk-HW3JJ323.js.map +1 -0
- package/dist/chunk-I3DGUUCT.cjs +838 -0
- package/dist/chunk-I3DGUUCT.cjs.map +1 -0
- package/dist/chunk-IPX2R7FR.cjs +100 -0
- package/dist/chunk-IPX2R7FR.cjs.map +1 -0
- package/dist/chunk-NSBPE2FW.js +15 -0
- package/dist/chunk-NSBPE2FW.js.map +1 -0
- package/dist/chunk-T64LAI7L.js +829 -0
- package/dist/chunk-T64LAI7L.js.map +1 -0
- package/dist/chunk-ZBUDLTBO.js +2671 -0
- package/dist/chunk-ZBUDLTBO.js.map +1 -0
- package/dist/chunk-ZLO6NETT.cjs +13910 -0
- package/dist/chunk-ZLO6NETT.cjs.map +1 -0
- package/dist/contracts/handlers/index.cjs +26 -0
- package/dist/contracts/handlers/index.cjs.map +1 -0
- package/dist/contracts/handlers/index.d.cts +7 -0
- package/dist/contracts/handlers/index.d.ts +7 -0
- package/dist/contracts/handlers/index.js +5 -0
- package/dist/contracts/handlers/index.js.map +1 -0
- package/dist/delegate-BFZs69hp.d.cts +84 -0
- package/dist/delegate-aaVGfWsV.d.ts +84 -0
- package/dist/index-B22cA64m.d.cts +199 -0
- package/dist/{types/storage/index.d.ts → index-C0IanN1m.d.cts} +3 -1
- package/dist/index-C0IanN1m.d.ts +11 -0
- package/dist/index-NDla_UoJ.d.ts +199 -0
- package/dist/index.cjs +480 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +3343 -0
- package/dist/index.d.ts +3343 -0
- package/dist/index.js +7 -0
- package/dist/index.js.map +1 -0
- package/dist/repositories/realm/index.cjs +513 -0
- package/dist/repositories/realm/index.cjs.map +1 -0
- package/dist/repositories/realm/index.d.cts +217 -0
- package/dist/{types/repositories/realm/schemas.d.ts → repositories/realm/index.d.ts} +80 -112
- package/dist/repositories/realm/index.js +507 -0
- package/dist/repositories/realm/index.js.map +1 -0
- package/dist/repositories/sqlite/index.cjs +588 -0
- package/dist/repositories/sqlite/index.cjs.map +1 -0
- package/dist/repositories/sqlite/index.d.cts +118 -0
- package/dist/{types/repositories/sqlite/walletRepository.d.ts → repositories/sqlite/index.d.ts} +58 -5
- package/dist/repositories/sqlite/index.js +585 -0
- package/dist/repositories/sqlite/index.js.map +1 -0
- package/dist/taskRunner-C6Ff4OaU.d.cts +114 -0
- package/dist/taskRunner-yvPN8Z0K.d.ts +114 -0
- package/dist/wallet/expo/background.cjs +93 -0
- package/dist/wallet/expo/background.cjs.map +1 -0
- package/dist/wallet/expo/background.d.cts +84 -0
- package/dist/wallet/expo/background.d.ts +84 -0
- package/dist/wallet/expo/background.js +68 -0
- package/dist/wallet/expo/background.js.map +1 -0
- package/dist/wallet/expo/index.cjs +171 -0
- package/dist/wallet/expo/index.cjs.map +1 -0
- package/dist/wallet/expo/index.d.cts +122 -0
- package/dist/{types/wallet/expo/wallet.d.ts → wallet/expo/index.d.ts} +45 -22
- package/dist/wallet/expo/index.js +169 -0
- package/dist/wallet/expo/index.js.map +1 -0
- package/dist/wallet-AF-p-OWj.d.cts +774 -0
- package/dist/wallet-D9NBRqvC.d.ts +774 -0
- package/dist/worker/expo/index.cjs +140 -0
- package/dist/worker/expo/index.cjs.map +1 -0
- package/dist/worker/expo/index.d.cts +29 -0
- package/dist/worker/expo/index.d.ts +29 -0
- package/dist/worker/expo/index.js +121 -0
- package/dist/worker/expo/index.js.map +1 -0
- package/package.json +110 -76
- package/dist/cjs/adapters/asyncStorage.js +0 -5
- package/dist/cjs/adapters/expo.js +0 -8
- package/dist/cjs/adapters/fileSystem.js +0 -5
- package/dist/cjs/adapters/indexedDB.js +0 -5
- package/dist/cjs/adapters/localStorage.js +0 -5
- package/dist/cjs/arkfee/celenv.js +0 -43
- package/dist/cjs/arkfee/estimator.js +0 -143
- package/dist/cjs/arkfee/index.js +0 -5
- package/dist/cjs/arkfee/types.js +0 -26
- package/dist/cjs/arknote/index.js +0 -128
- package/dist/cjs/bip322/index.js +0 -270
- package/dist/cjs/contracts/arkcontract.js +0 -147
- package/dist/cjs/contracts/contractManager.js +0 -629
- package/dist/cjs/contracts/contractWatcher.js +0 -598
- package/dist/cjs/contracts/handlers/default.js +0 -93
- package/dist/cjs/contracts/handlers/delegate.js +0 -90
- package/dist/cjs/contracts/handlers/helpers.js +0 -115
- package/dist/cjs/contracts/handlers/index.js +0 -19
- package/dist/cjs/contracts/handlers/registry.js +0 -89
- package/dist/cjs/contracts/handlers/vhtlc.js +0 -194
- package/dist/cjs/contracts/index.js +0 -41
- package/dist/cjs/contracts/types.js +0 -2
- package/dist/cjs/contracts/vtxoOwnership.js +0 -78
- package/dist/cjs/extension/asset/assetGroup.js +0 -228
- package/dist/cjs/extension/asset/assetId.js +0 -152
- package/dist/cjs/extension/asset/assetInput.js +0 -222
- package/dist/cjs/extension/asset/assetOutput.js +0 -174
- package/dist/cjs/extension/asset/assetRef.js +0 -148
- package/dist/cjs/extension/asset/index.js +0 -23
- package/dist/cjs/extension/asset/metadata.js +0 -187
- package/dist/cjs/extension/asset/packet.js +0 -114
- package/dist/cjs/extension/asset/types.js +0 -22
- package/dist/cjs/extension/asset/utils.js +0 -105
- package/dist/cjs/extension/index.js +0 -254
- package/dist/cjs/extension/packet.js +0 -20
- package/dist/cjs/forfeit.js +0 -45
- package/dist/cjs/identity/descriptor.js +0 -169
- package/dist/cjs/identity/descriptorProvider.js +0 -2
- package/dist/cjs/identity/hdCapableIdentity.js +0 -2
- package/dist/cjs/identity/index.js +0 -38
- package/dist/cjs/identity/seedIdentity.js +0 -461
- package/dist/cjs/identity/serialize.js +0 -171
- package/dist/cjs/identity/singleKey.js +0 -126
- package/dist/cjs/identity/staticDescriptorProvider.js +0 -65
- package/dist/cjs/index.js +0 -200
- package/dist/cjs/intent/index.js +0 -259
- package/dist/cjs/musig2/index.js +0 -11
- package/dist/cjs/musig2/keys.js +0 -57
- package/dist/cjs/musig2/nonces.js +0 -48
- package/dist/cjs/musig2/sign.js +0 -102
- package/dist/cjs/networks.js +0 -26
- package/dist/cjs/package.json +0 -3
- package/dist/cjs/providers/ark.js +0 -577
- package/dist/cjs/providers/delegator.js +0 -85
- package/dist/cjs/providers/electrum.js +0 -869
- package/dist/cjs/providers/errors.js +0 -59
- package/dist/cjs/providers/expoArk.js +0 -82
- package/dist/cjs/providers/expoIndexer.js +0 -111
- package/dist/cjs/providers/expoUtils.js +0 -124
- package/dist/cjs/providers/indexer.js +0 -630
- package/dist/cjs/providers/onchain.js +0 -262
- package/dist/cjs/providers/utils.js +0 -121
- package/dist/cjs/repositories/contractRepository.js +0 -2
- package/dist/cjs/repositories/inMemory/contractRepository.js +0 -55
- package/dist/cjs/repositories/inMemory/walletRepository.js +0 -115
- package/dist/cjs/repositories/index.js +0 -34
- package/dist/cjs/repositories/indexedDB/contractRepository.js +0 -187
- package/dist/cjs/repositories/indexedDB/db.js +0 -19
- package/dist/cjs/repositories/indexedDB/manager.js +0 -100
- package/dist/cjs/repositories/indexedDB/schema.js +0 -204
- package/dist/cjs/repositories/indexedDB/walletRepository.js +0 -474
- package/dist/cjs/repositories/indexedDB/websqlAdapter.js +0 -144
- package/dist/cjs/repositories/migrations/contractRepositoryImpl.js +0 -127
- package/dist/cjs/repositories/migrations/fromStorageAdapter.js +0 -66
- package/dist/cjs/repositories/migrations/walletRepositoryImpl.js +0 -184
- package/dist/cjs/repositories/realm/contractRepository.js +0 -116
- package/dist/cjs/repositories/realm/index.js +0 -11
- package/dist/cjs/repositories/realm/schemas.js +0 -157
- package/dist/cjs/repositories/realm/types.js +0 -7
- package/dist/cjs/repositories/realm/walletRepository.js +0 -305
- package/dist/cjs/repositories/scriptFromAddress.js +0 -16
- package/dist/cjs/repositories/serialization.js +0 -82
- package/dist/cjs/repositories/sqlite/contractRepository.js +0 -135
- package/dist/cjs/repositories/sqlite/index.js +0 -7
- package/dist/cjs/repositories/sqlite/types.js +0 -2
- package/dist/cjs/repositories/sqlite/walletRepository.js +0 -441
- package/dist/cjs/repositories/walletRepository.js +0 -2
- package/dist/cjs/script/address.js +0 -108
- package/dist/cjs/script/base.js +0 -185
- package/dist/cjs/script/default.js +0 -57
- package/dist/cjs/script/delegate.js +0 -53
- package/dist/cjs/script/tapscript.js +0 -619
- package/dist/cjs/script/vhtlc.js +0 -170
- package/dist/cjs/storage/asyncStorage.js +0 -50
- package/dist/cjs/storage/fileSystem.js +0 -141
- package/dist/cjs/storage/inMemory.js +0 -24
- package/dist/cjs/storage/index.js +0 -2
- package/dist/cjs/storage/indexedDB.js +0 -101
- package/dist/cjs/storage/localStorage.js +0 -51
- package/dist/cjs/tree/signingSession.js +0 -229
- package/dist/cjs/tree/txTree.js +0 -192
- package/dist/cjs/tree/validation.js +0 -107
- package/dist/cjs/utils/anchor.js +0 -35
- package/dist/cjs/utils/arkTransaction.js +0 -271
- package/dist/cjs/utils/bip21.js +0 -127
- package/dist/cjs/utils/syncCursors.js +0 -128
- package/dist/cjs/utils/timelock.js +0 -59
- package/dist/cjs/utils/transaction.js +0 -28
- package/dist/cjs/utils/transactionHistory.js +0 -183
- package/dist/cjs/utils/txSizeEstimator.js +0 -132
- package/dist/cjs/utils/unknownFields.js +0 -174
- package/dist/cjs/wallet/asset-manager.js +0 -330
- package/dist/cjs/wallet/asset.js +0 -119
- package/dist/cjs/wallet/batch.js +0 -183
- package/dist/cjs/wallet/delegator.js +0 -302
- package/dist/cjs/wallet/expo/background.js +0 -116
- package/dist/cjs/wallet/expo/index.js +0 -9
- package/dist/cjs/wallet/expo/wallet.js +0 -230
- package/dist/cjs/wallet/hdDescriptorProvider.js +0 -159
- package/dist/cjs/wallet/index.js +0 -82
- package/dist/cjs/wallet/onchain.js +0 -290
- package/dist/cjs/wallet/ramps.js +0 -216
- package/dist/cjs/wallet/serviceWorker/wallet-message-handler.js +0 -953
- package/dist/cjs/wallet/serviceWorker/wallet.js +0 -1173
- package/dist/cjs/wallet/unroll.js +0 -289
- package/dist/cjs/wallet/utils.js +0 -111
- package/dist/cjs/wallet/validation.js +0 -154
- package/dist/cjs/wallet/vtxo-manager.js +0 -1142
- package/dist/cjs/wallet/wallet.js +0 -2049
- package/dist/cjs/worker/browser/service-worker-manager.js +0 -183
- package/dist/cjs/worker/browser/utils.js +0 -67
- package/dist/cjs/worker/errors.js +0 -16
- package/dist/cjs/worker/expo/asyncStorageTaskQueue.js +0 -78
- package/dist/cjs/worker/expo/index.js +0 -13
- package/dist/cjs/worker/expo/processors/contractPollProcessor.js +0 -62
- package/dist/cjs/worker/expo/processors/index.js +0 -6
- package/dist/cjs/worker/expo/taskQueue.js +0 -41
- package/dist/cjs/worker/expo/taskRunner.js +0 -73
- package/dist/cjs/worker/messageBus.js +0 -473
- package/dist/esm/adapters/asyncStorage.js +0 -1
- package/dist/esm/adapters/expo.js +0 -3
- package/dist/esm/adapters/fileSystem.js +0 -1
- package/dist/esm/adapters/indexedDB.js +0 -1
- package/dist/esm/adapters/localStorage.js +0 -1
- package/dist/esm/arkfee/celenv.js +0 -40
- package/dist/esm/arkfee/estimator.js +0 -139
- package/dist/esm/arkfee/index.js +0 -1
- package/dist/esm/arkfee/types.js +0 -22
- package/dist/esm/arknote/index.js +0 -124
- package/dist/esm/bip322/index.js +0 -267
- package/dist/esm/contracts/arkcontract.js +0 -140
- package/dist/esm/contracts/contractManager.js +0 -625
- package/dist/esm/contracts/contractWatcher.js +0 -594
- package/dist/esm/contracts/handlers/default.js +0 -90
- package/dist/esm/contracts/handlers/delegate.js +0 -87
- package/dist/esm/contracts/handlers/helpers.js +0 -110
- package/dist/esm/contracts/handlers/index.js +0 -12
- package/dist/esm/contracts/handlers/registry.js +0 -86
- package/dist/esm/contracts/handlers/vhtlc.js +0 -191
- package/dist/esm/contracts/index.js +0 -13
- package/dist/esm/contracts/types.js +0 -1
- package/dist/esm/contracts/vtxoOwnership.js +0 -69
- package/dist/esm/extension/asset/assetGroup.js +0 -224
- package/dist/esm/extension/asset/assetId.js +0 -148
- package/dist/esm/extension/asset/assetInput.js +0 -217
- package/dist/esm/extension/asset/assetOutput.js +0 -169
- package/dist/esm/extension/asset/assetRef.js +0 -144
- package/dist/esm/extension/asset/index.js +0 -8
- package/dist/esm/extension/asset/metadata.js +0 -182
- package/dist/esm/extension/asset/packet.js +0 -110
- package/dist/esm/extension/asset/types.js +0 -19
- package/dist/esm/extension/asset/utils.js +0 -99
- package/dist/esm/extension/index.js +0 -248
- package/dist/esm/extension/packet.js +0 -16
- package/dist/esm/forfeit.js +0 -41
- package/dist/esm/identity/descriptor.js +0 -161
- package/dist/esm/identity/descriptorProvider.js +0 -1
- package/dist/esm/identity/hdCapableIdentity.js +0 -1
- package/dist/esm/identity/index.js +0 -12
- package/dist/esm/identity/seedIdentity.js +0 -453
- package/dist/esm/identity/serialize.js +0 -164
- package/dist/esm/identity/singleKey.js +0 -121
- package/dist/esm/identity/staticDescriptorProvider.js +0 -61
- package/dist/esm/index.js +0 -87
- package/dist/esm/intent/index.js +0 -255
- package/dist/esm/musig2/index.js +0 -3
- package/dist/esm/musig2/keys.js +0 -21
- package/dist/esm/musig2/nonces.js +0 -11
- package/dist/esm/musig2/sign.js +0 -63
- package/dist/esm/networks.js +0 -22
- package/dist/esm/package.json +0 -3
- package/dist/esm/providers/ark.js +0 -572
- package/dist/esm/providers/delegator.js +0 -81
- package/dist/esm/providers/electrum.js +0 -864
- package/dist/esm/providers/errors.js +0 -54
- package/dist/esm/providers/expoArk.js +0 -78
- package/dist/esm/providers/expoIndexer.js +0 -107
- package/dist/esm/providers/expoUtils.js +0 -87
- package/dist/esm/providers/indexer.js +0 -626
- package/dist/esm/providers/onchain.js +0 -258
- package/dist/esm/providers/utils.js +0 -117
- package/dist/esm/repositories/contractRepository.js +0 -1
- package/dist/esm/repositories/inMemory/contractRepository.js +0 -51
- package/dist/esm/repositories/inMemory/walletRepository.js +0 -111
- package/dist/esm/repositories/index.js +0 -10
- package/dist/esm/repositories/indexedDB/contractRepository.js +0 -183
- package/dist/esm/repositories/indexedDB/db.js +0 -4
- package/dist/esm/repositories/indexedDB/manager.js +0 -95
- package/dist/esm/repositories/indexedDB/schema.js +0 -199
- package/dist/esm/repositories/indexedDB/walletRepository.js +0 -470
- package/dist/esm/repositories/indexedDB/websqlAdapter.js +0 -138
- package/dist/esm/repositories/migrations/contractRepositoryImpl.js +0 -121
- package/dist/esm/repositories/migrations/fromStorageAdapter.js +0 -58
- package/dist/esm/repositories/migrations/walletRepositoryImpl.js +0 -180
- package/dist/esm/repositories/realm/contractRepository.js +0 -112
- package/dist/esm/repositories/realm/index.js +0 -3
- package/dist/esm/repositories/realm/schemas.js +0 -153
- package/dist/esm/repositories/realm/types.js +0 -6
- package/dist/esm/repositories/realm/walletRepository.js +0 -301
- package/dist/esm/repositories/scriptFromAddress.js +0 -13
- package/dist/esm/repositories/serialization.js +0 -67
- package/dist/esm/repositories/sqlite/contractRepository.js +0 -131
- package/dist/esm/repositories/sqlite/index.js +0 -2
- package/dist/esm/repositories/sqlite/types.js +0 -1
- package/dist/esm/repositories/sqlite/walletRepository.js +0 -437
- package/dist/esm/repositories/walletRepository.js +0 -1
- package/dist/esm/script/address.js +0 -104
- package/dist/esm/script/base.js +0 -179
- package/dist/esm/script/default.js +0 -54
- package/dist/esm/script/delegate.js +0 -50
- package/dist/esm/script/tapscript.js +0 -615
- package/dist/esm/script/vhtlc.js +0 -167
- package/dist/esm/storage/asyncStorage.js +0 -46
- package/dist/esm/storage/fileSystem.js +0 -104
- package/dist/esm/storage/inMemory.js +0 -20
- package/dist/esm/storage/index.js +0 -1
- package/dist/esm/storage/indexedDB.js +0 -97
- package/dist/esm/storage/localStorage.js +0 -47
- package/dist/esm/tree/signingSession.js +0 -191
- package/dist/esm/tree/txTree.js +0 -188
- package/dist/esm/tree/validation.js +0 -101
- package/dist/esm/utils/anchor.js +0 -31
- package/dist/esm/utils/arkTransaction.js +0 -264
- package/dist/esm/utils/bip21.js +0 -123
- package/dist/esm/utils/syncCursors.js +0 -119
- package/dist/esm/utils/timelock.js +0 -22
- package/dist/esm/utils/transaction.js +0 -24
- package/dist/esm/utils/transactionHistory.js +0 -180
- package/dist/esm/utils/txSizeEstimator.js +0 -128
- package/dist/esm/utils/unknownFields.js +0 -169
- package/dist/esm/wallet/asset-manager.js +0 -325
- package/dist/esm/wallet/asset.js +0 -113
- package/dist/esm/wallet/batch.js +0 -180
- package/dist/esm/wallet/delegator.js +0 -297
- package/dist/esm/wallet/expo/background.js +0 -111
- package/dist/esm/wallet/expo/index.js +0 -2
- package/dist/esm/wallet/expo/wallet.js +0 -193
- package/dist/esm/wallet/hdDescriptorProvider.js +0 -155
- package/dist/esm/wallet/index.js +0 -75
- package/dist/esm/wallet/onchain.js +0 -285
- package/dist/esm/wallet/ramps.js +0 -212
- package/dist/esm/wallet/serviceWorker/wallet-message-handler.js +0 -946
- package/dist/esm/wallet/serviceWorker/wallet.js +0 -1168
- package/dist/esm/wallet/unroll.js +0 -285
- package/dist/esm/wallet/utils.js +0 -103
- package/dist/esm/wallet/validation.js +0 -142
- package/dist/esm/wallet/vtxo-manager.js +0 -1136
- package/dist/esm/wallet/wallet.js +0 -2041
- package/dist/esm/worker/browser/service-worker-manager.js +0 -177
- package/dist/esm/worker/browser/utils.js +0 -63
- package/dist/esm/worker/errors.js +0 -11
- package/dist/esm/worker/expo/asyncStorageTaskQueue.js +0 -74
- package/dist/esm/worker/expo/index.js +0 -4
- package/dist/esm/worker/expo/processors/contractPollProcessor.js +0 -59
- package/dist/esm/worker/expo/processors/index.js +0 -1
- package/dist/esm/worker/expo/taskQueue.js +0 -37
- package/dist/esm/worker/expo/taskRunner.js +0 -69
- package/dist/esm/worker/messageBus.js +0 -469
- package/dist/types/adapters/asyncStorage.d.ts +0 -2
- package/dist/types/adapters/expo.d.ts +0 -4
- package/dist/types/adapters/fileSystem.d.ts +0 -2
- package/dist/types/adapters/indexedDB.d.ts +0 -2
- package/dist/types/adapters/localStorage.d.ts +0 -2
- package/dist/types/arkfee/celenv.d.ts +0 -25
- package/dist/types/arkfee/estimator.d.ts +0 -49
- package/dist/types/arkfee/index.d.ts +0 -2
- package/dist/types/arkfee/types.d.ts +0 -38
- package/dist/types/arknote/index.d.ts +0 -84
- package/dist/types/bip322/index.d.ts +0 -55
- package/dist/types/contracts/arkcontract.d.ts +0 -99
- package/dist/types/contracts/contractManager.d.ts +0 -381
- package/dist/types/contracts/contractWatcher.d.ts +0 -217
- package/dist/types/contracts/handlers/default.d.ts +0 -19
- package/dist/types/contracts/handlers/delegate.d.ts +0 -21
- package/dist/types/contracts/handlers/helpers.d.ts +0 -19
- package/dist/types/contracts/handlers/index.d.ts +0 -7
- package/dist/types/contracts/handlers/registry.d.ts +0 -65
- package/dist/types/contracts/handlers/vhtlc.d.ts +0 -32
- package/dist/types/contracts/index.d.ts +0 -14
- package/dist/types/contracts/types.d.ts +0 -233
- package/dist/types/contracts/vtxoOwnership.d.ts +0 -33
- package/dist/types/extension/asset/assetGroup.d.ts +0 -119
- package/dist/types/extension/asset/assetId.d.ts +0 -83
- package/dist/types/extension/asset/assetInput.d.ts +0 -64
- package/dist/types/extension/asset/assetOutput.d.ts +0 -54
- package/dist/types/extension/asset/assetRef.d.ts +0 -91
- package/dist/types/extension/asset/index.d.ts +0 -8
- package/dist/types/extension/asset/metadata.d.ts +0 -52
- package/dist/types/extension/asset/packet.d.ts +0 -41
- package/dist/types/extension/asset/types.d.ts +0 -16
- package/dist/types/extension/asset/utils.d.ts +0 -21
- package/dist/types/extension/index.d.ts +0 -56
- package/dist/types/extension/packet.d.ts +0 -21
- package/dist/types/forfeit.d.ts +0 -18
- package/dist/types/identity/descriptor.d.ts +0 -61
- package/dist/types/identity/descriptorProvider.d.ts +0 -35
- package/dist/types/identity/hdCapableIdentity.d.ts +0 -44
- package/dist/types/identity/index.d.ts +0 -56
- package/dist/types/identity/seedIdentity.d.ts +0 -254
- package/dist/types/identity/serialize.d.ts +0 -96
- package/dist/types/identity/singleKey.d.ts +0 -62
- package/dist/types/identity/staticDescriptorProvider.d.ts +0 -18
- package/dist/types/index.d.ts +0 -59
- package/dist/types/intent/index.d.ts +0 -86
- package/dist/types/musig2/index.d.ts +0 -4
- package/dist/types/musig2/keys.d.ts +0 -9
- package/dist/types/musig2/nonces.d.ts +0 -14
- package/dist/types/musig2/sign.d.ts +0 -27
- package/dist/types/networks.d.ts +0 -16
- package/dist/types/providers/ark.d.ts +0 -369
- package/dist/types/providers/delegator.d.ts +0 -82
- package/dist/types/providers/electrum.d.ts +0 -312
- package/dist/types/providers/errors.d.ts +0 -13
- package/dist/types/providers/expoArk.d.ts +0 -22
- package/dist/types/providers/expoIndexer.d.ts +0 -18
- package/dist/types/providers/expoUtils.d.ts +0 -18
- package/dist/types/providers/indexer.d.ts +0 -301
- package/dist/types/providers/onchain.d.ts +0 -148
- package/dist/types/providers/utils.d.ts +0 -12
- package/dist/types/repositories/contractRepository.d.ts +0 -32
- package/dist/types/repositories/inMemory/contractRepository.d.ts +0 -17
- package/dist/types/repositories/inMemory/walletRepository.d.ts +0 -29
- package/dist/types/repositories/index.d.ts +0 -9
- package/dist/types/repositories/indexedDB/contractRepository.d.ts +0 -21
- package/dist/types/repositories/indexedDB/db.d.ts +0 -4
- package/dist/types/repositories/indexedDB/manager.d.ts +0 -25
- package/dist/types/repositories/indexedDB/schema.d.ts +0 -9
- package/dist/types/repositories/indexedDB/walletRepository.d.ts +0 -28
- package/dist/types/repositories/indexedDB/websqlAdapter.d.ts +0 -49
- package/dist/types/repositories/migrations/contractRepositoryImpl.d.ts +0 -24
- package/dist/types/repositories/migrations/fromStorageAdapter.d.ts +0 -19
- package/dist/types/repositories/migrations/walletRepositoryImpl.d.ts +0 -27
- package/dist/types/repositories/realm/contractRepository.d.ts +0 -24
- package/dist/types/repositories/realm/index.d.ts +0 -4
- package/dist/types/repositories/realm/types.d.ts +0 -16
- package/dist/types/repositories/realm/walletRepository.d.ts +0 -34
- package/dist/types/repositories/scriptFromAddress.d.ts +0 -9
- package/dist/types/repositories/serialization.d.ts +0 -65
- package/dist/types/repositories/sqlite/contractRepository.d.ts +0 -33
- package/dist/types/repositories/sqlite/index.d.ts +0 -3
- package/dist/types/repositories/sqlite/types.d.ts +0 -18
- package/dist/types/repositories/walletRepository.d.ts +0 -72
- package/dist/types/script/address.d.ts +0 -67
- package/dist/types/script/base.d.ts +0 -105
- package/dist/types/script/default.d.ts +0 -44
- package/dist/types/script/delegate.d.ts +0 -40
- package/dist/types/script/tapscript.d.ts +0 -169
- package/dist/types/script/vhtlc.d.ts +0 -66
- package/dist/types/tree/signingSession.d.ts +0 -37
- package/dist/types/tree/txTree.d.ts +0 -28
- package/dist/types/tree/validation.d.ts +0 -15
- package/dist/types/utils/anchor.d.ts +0 -19
- package/dist/types/utils/arkTransaction.d.ts +0 -49
- package/dist/types/utils/bip21.d.ts +0 -38
- package/dist/types/utils/syncCursors.d.ts +0 -60
- package/dist/types/utils/timelock.d.ts +0 -9
- package/dist/types/utils/transaction.d.ts +0 -13
- package/dist/types/utils/transactionHistory.d.ts +0 -15
- package/dist/types/utils/txSizeEstimator.d.ts +0 -40
- package/dist/types/utils/unknownFields.d.ts +0 -83
- package/dist/types/wallet/asset-manager.d.ts +0 -69
- package/dist/types/wallet/asset.d.ts +0 -21
- package/dist/types/wallet/batch.d.ts +0 -107
- package/dist/types/wallet/delegator.d.ts +0 -48
- package/dist/types/wallet/expo/background.d.ts +0 -66
- package/dist/types/wallet/expo/index.d.ts +0 -4
- package/dist/types/wallet/hdDescriptorProvider.d.ts +0 -93
- package/dist/types/wallet/index.d.ts +0 -755
- package/dist/types/wallet/onchain.d.ts +0 -109
- package/dist/types/wallet/ramps.d.ts +0 -64
- package/dist/types/wallet/serviceWorker/wallet-message-handler.d.ts +0 -543
- package/dist/types/wallet/serviceWorker/wallet.d.ts +0 -238
- package/dist/types/wallet/unroll.d.ts +0 -114
- package/dist/types/wallet/utils.d.ts +0 -36
- package/dist/types/wallet/validation.d.ts +0 -24
- package/dist/types/wallet/vtxo-manager.d.ts +0 -476
- package/dist/types/wallet/wallet.d.ts +0 -360
- package/dist/types/worker/browser/service-worker-manager.d.ts +0 -32
- package/dist/types/worker/browser/utils.d.ts +0 -17
- package/dist/types/worker/errors.d.ts +0 -7
- package/dist/types/worker/expo/index.d.ts +0 -7
- package/dist/types/worker/expo/processors/contractPollProcessor.d.ts +0 -19
- package/dist/types/worker/expo/processors/index.d.ts +0 -1
- package/dist/types/worker/expo/taskQueue.d.ts +0 -50
- package/dist/types/worker/expo/taskRunner.d.ts +0 -66
- package/dist/types/worker/messageBus.d.ts +0 -188
|
@@ -1,224 +0,0 @@
|
|
|
1
|
-
import { hex } from "@scure/base";
|
|
2
|
-
import { AssetInputType, MASK_ASSET_ID, MASK_CONTROL_ASSET, MASK_METADATA, } from "./types.js";
|
|
3
|
-
import { AssetId } from "./assetId.js";
|
|
4
|
-
import { AssetRef } from "./assetRef.js";
|
|
5
|
-
import { AssetInput, AssetInputs } from "./assetInput.js";
|
|
6
|
-
import { AssetOutputs } from "./assetOutput.js";
|
|
7
|
-
import { MetadataList } from "./metadata.js";
|
|
8
|
-
import { BufferReader, BufferWriter } from "./utils.js";
|
|
9
|
-
/**
|
|
10
|
-
* An asset group contains inputs, outputs, and all data related to a given asset id.
|
|
11
|
-
*
|
|
12
|
-
* @see Packet
|
|
13
|
-
* @see AssetId
|
|
14
|
-
* @see AssetRef
|
|
15
|
-
*
|
|
16
|
-
* @example
|
|
17
|
-
* ```typescript
|
|
18
|
-
* const group = AssetGroup.create(
|
|
19
|
-
* null, // asset ID: null for new issuance
|
|
20
|
-
* null, // control asset ID: null when reissuance not needed
|
|
21
|
-
* [], // asset inputs: empty for new issuance
|
|
22
|
-
* [AssetOutput.create(0, 1000)], // asset outputs: 1000 units at vout index 0
|
|
23
|
-
* [] // metadata: can be empty
|
|
24
|
-
* )
|
|
25
|
-
* ```
|
|
26
|
-
*/
|
|
27
|
-
export class AssetGroup {
|
|
28
|
-
/** @see create */
|
|
29
|
-
constructor(assetId, controlAsset, inputs, outputs, metadata) {
|
|
30
|
-
this.assetId = assetId;
|
|
31
|
-
this.controlAsset = controlAsset;
|
|
32
|
-
this.inputs = inputs;
|
|
33
|
-
this.outputs = outputs;
|
|
34
|
-
this.metadataList = new MetadataList(metadata);
|
|
35
|
-
}
|
|
36
|
-
/**
|
|
37
|
-
* Create and validate an asset group.
|
|
38
|
-
*
|
|
39
|
-
* @param assetId - Asset id for this group, or `null` for fresh issuance
|
|
40
|
-
* @param controlAsset - Optional control asset reference for (re) issuance
|
|
41
|
-
* @param inputs - Asset inputs in the group
|
|
42
|
-
* @param outputs - Asset outputs in the group
|
|
43
|
-
* @param metadata - Metadata entries associated with the group
|
|
44
|
-
* @returns A validated asset group
|
|
45
|
-
* @throws Error if the group fails validation
|
|
46
|
-
* @see validate
|
|
47
|
-
*/
|
|
48
|
-
static create(assetId, controlAsset, inputs, outputs, metadata) {
|
|
49
|
-
const ag = new AssetGroup(assetId, controlAsset, inputs, outputs, metadata);
|
|
50
|
-
ag.validate();
|
|
51
|
-
return ag;
|
|
52
|
-
}
|
|
53
|
-
/**
|
|
54
|
-
* Decode an asset group from its hex string form.
|
|
55
|
-
*
|
|
56
|
-
* @param s - Hex-encoded asset group
|
|
57
|
-
* @returns Decoded asset group
|
|
58
|
-
* @throws Error if the string is not valid hex or does not encode a valid asset group
|
|
59
|
-
* @see toString
|
|
60
|
-
*/
|
|
61
|
-
static fromString(s) {
|
|
62
|
-
let buf;
|
|
63
|
-
try {
|
|
64
|
-
buf = hex.decode(s);
|
|
65
|
-
}
|
|
66
|
-
catch {
|
|
67
|
-
throw new Error("invalid format, must be hex");
|
|
68
|
-
}
|
|
69
|
-
return AssetGroup.fromBytes(buf);
|
|
70
|
-
}
|
|
71
|
-
/**
|
|
72
|
-
* Decode an asset group from its serialized bytes.
|
|
73
|
-
*
|
|
74
|
-
* @param buf - Serialized asset group bytes
|
|
75
|
-
* @returns Decoded asset group
|
|
76
|
-
* @throws Error if the buffer is empty or malformed
|
|
77
|
-
*/
|
|
78
|
-
static fromBytes(buf) {
|
|
79
|
-
if (!buf || buf.length === 0) {
|
|
80
|
-
throw new Error("missing asset group");
|
|
81
|
-
}
|
|
82
|
-
const reader = new BufferReader(buf);
|
|
83
|
-
return AssetGroup.fromReader(reader);
|
|
84
|
-
}
|
|
85
|
-
/**
|
|
86
|
-
* Return true when the group represents an issuance.
|
|
87
|
-
*
|
|
88
|
-
* @returns `true` when the group has no asset id
|
|
89
|
-
*/
|
|
90
|
-
isIssuance() {
|
|
91
|
-
return this.assetId === null;
|
|
92
|
-
}
|
|
93
|
-
/**
|
|
94
|
-
* Return true when the group represents a reissuance.
|
|
95
|
-
*
|
|
96
|
-
* @returns `true` when the group has an asset id and outputs exceed local inputs
|
|
97
|
-
* @remarks
|
|
98
|
-
* Only local inputs contribute to the comparison; intent-backed inputs contribute `0` here.
|
|
99
|
-
*/
|
|
100
|
-
isReissuance() {
|
|
101
|
-
const sumReducer = (s, { amount }) => s + amount;
|
|
102
|
-
const sumOutputs = this.outputs.reduce(sumReducer, 0n);
|
|
103
|
-
const sumInputs = this.inputs
|
|
104
|
-
.map((i) => ({
|
|
105
|
-
amount: i.input.type === AssetInputType.Local ? i.input.amount : 0n,
|
|
106
|
-
}))
|
|
107
|
-
.reduce(sumReducer, 0n);
|
|
108
|
-
return !this.isIssuance() && sumInputs < sumOutputs;
|
|
109
|
-
}
|
|
110
|
-
/**
|
|
111
|
-
* Serialize the asset group to raw bytes.
|
|
112
|
-
*
|
|
113
|
-
* @returns Serialized asset group bytes
|
|
114
|
-
* @see fromBytes
|
|
115
|
-
*/
|
|
116
|
-
serialize() {
|
|
117
|
-
this.validate();
|
|
118
|
-
const writer = new BufferWriter();
|
|
119
|
-
this.serializeTo(writer);
|
|
120
|
-
return writer.toBytes();
|
|
121
|
-
}
|
|
122
|
-
/**
|
|
123
|
-
* Validate the asset group and its child structures.
|
|
124
|
-
*
|
|
125
|
-
* @throws Error if the group is empty or violates issuance invariants
|
|
126
|
-
*/
|
|
127
|
-
validate() {
|
|
128
|
-
if (this.inputs.length === 0 && this.outputs.length === 0) {
|
|
129
|
-
throw new Error("empty asset group");
|
|
130
|
-
}
|
|
131
|
-
if (this.isIssuance()) {
|
|
132
|
-
if (this.inputs.length !== 0) {
|
|
133
|
-
throw new Error("issuance must have no inputs");
|
|
134
|
-
}
|
|
135
|
-
}
|
|
136
|
-
else {
|
|
137
|
-
if (this.controlAsset !== null) {
|
|
138
|
-
throw new Error("only issuance can have a control asset");
|
|
139
|
-
}
|
|
140
|
-
}
|
|
141
|
-
}
|
|
142
|
-
/**
|
|
143
|
-
* Convert the group into its batch-leaf representation for the given intent txid.
|
|
144
|
-
*
|
|
145
|
-
* @param intentTxid - Intent transaction id used to build the leaf input reference
|
|
146
|
-
* @returns Batch-leaf asset group
|
|
147
|
-
* @see AssetInput.createIntent
|
|
148
|
-
*/
|
|
149
|
-
toBatchLeafAssetGroup(intentTxid) {
|
|
150
|
-
const leafInput = AssetInput.createIntent(hex.encode(intentTxid), 0, 0);
|
|
151
|
-
return new AssetGroup(this.assetId, this.controlAsset, [leafInput], this.outputs, this.metadataList.items);
|
|
152
|
-
}
|
|
153
|
-
/**
|
|
154
|
-
* Encode the asset group to a hex string.
|
|
155
|
-
*
|
|
156
|
-
* @returns Hex-encoded asset group
|
|
157
|
-
* @see fromString
|
|
158
|
-
*/
|
|
159
|
-
toString() {
|
|
160
|
-
return hex.encode(this.serialize());
|
|
161
|
-
}
|
|
162
|
-
/**
|
|
163
|
-
* Decode an asset group from a binary reader.
|
|
164
|
-
*
|
|
165
|
-
* @param reader - Reader positioned at an asset group
|
|
166
|
-
* @returns Decoded asset group
|
|
167
|
-
* @throws Error if the encoded group is malformed
|
|
168
|
-
*/
|
|
169
|
-
static fromReader(reader) {
|
|
170
|
-
const presence = reader.readByte();
|
|
171
|
-
let assetId = null;
|
|
172
|
-
let controlAsset = null;
|
|
173
|
-
let metadata = [];
|
|
174
|
-
if (presence & MASK_ASSET_ID) {
|
|
175
|
-
assetId = AssetId.fromReader(reader);
|
|
176
|
-
}
|
|
177
|
-
if (presence & MASK_CONTROL_ASSET) {
|
|
178
|
-
controlAsset = AssetRef.fromReader(reader);
|
|
179
|
-
}
|
|
180
|
-
if (presence & MASK_METADATA) {
|
|
181
|
-
metadata = MetadataList.fromReader(reader).items;
|
|
182
|
-
}
|
|
183
|
-
const inputs = AssetInputs.fromReader(reader);
|
|
184
|
-
const outputs = AssetOutputs.fromReader(reader);
|
|
185
|
-
const ag = new AssetGroup(assetId, controlAsset, inputs.inputs, outputs.outputs, metadata);
|
|
186
|
-
ag.validate();
|
|
187
|
-
return ag;
|
|
188
|
-
}
|
|
189
|
-
/**
|
|
190
|
-
* Serialize the asset group into an existing binary writer.
|
|
191
|
-
*
|
|
192
|
-
* @param writer - Writer to append the asset group to
|
|
193
|
-
*/
|
|
194
|
-
serializeTo(writer) {
|
|
195
|
-
let presence = 0;
|
|
196
|
-
if (this.assetId !== null) {
|
|
197
|
-
presence |= MASK_ASSET_ID;
|
|
198
|
-
}
|
|
199
|
-
if (this.controlAsset !== null) {
|
|
200
|
-
presence |= MASK_CONTROL_ASSET;
|
|
201
|
-
}
|
|
202
|
-
if (this.metadataList.length > 0) {
|
|
203
|
-
presence |= MASK_METADATA;
|
|
204
|
-
}
|
|
205
|
-
writer.writeByte(presence);
|
|
206
|
-
if (presence & MASK_ASSET_ID) {
|
|
207
|
-
this.assetId.serializeTo(writer);
|
|
208
|
-
}
|
|
209
|
-
if (presence & MASK_CONTROL_ASSET) {
|
|
210
|
-
this.controlAsset.serializeTo(writer);
|
|
211
|
-
}
|
|
212
|
-
if (presence & MASK_METADATA) {
|
|
213
|
-
this.metadataList.serializeTo(writer);
|
|
214
|
-
}
|
|
215
|
-
writer.writeVarUint(this.inputs.length);
|
|
216
|
-
for (const input of this.inputs) {
|
|
217
|
-
input.serializeTo(writer);
|
|
218
|
-
}
|
|
219
|
-
writer.writeVarUint(this.outputs.length);
|
|
220
|
-
for (const output of this.outputs) {
|
|
221
|
-
output.serializeTo(writer);
|
|
222
|
-
}
|
|
223
|
-
}
|
|
224
|
-
}
|
|
@@ -1,148 +0,0 @@
|
|
|
1
|
-
import { hex } from "@scure/base";
|
|
2
|
-
import { TX_HASH_SIZE, ASSET_ID_SIZE } from "./types.js";
|
|
3
|
-
import { BufferReader, BufferWriter, isZeroBytes } from "./utils.js";
|
|
4
|
-
/**
|
|
5
|
-
* AssetId identifies a specific asset.
|
|
6
|
-
*
|
|
7
|
-
* @remarks
|
|
8
|
-
* Asset ids are derived from the genesis transaction id plus the asset group index.
|
|
9
|
-
*
|
|
10
|
-
* @see AssetRef
|
|
11
|
-
*
|
|
12
|
-
* @example
|
|
13
|
-
* ```typescript
|
|
14
|
-
* const assetId = AssetId.create('00'.repeat(32), 0)
|
|
15
|
-
* const encoded = assetId.toString()
|
|
16
|
-
* const decoded = AssetId.fromString(encoded)
|
|
17
|
-
* ```
|
|
18
|
-
*/
|
|
19
|
-
export class AssetId {
|
|
20
|
-
constructor(txid, groupIndex) {
|
|
21
|
-
this.txid = txid;
|
|
22
|
-
this.groupIndex = groupIndex;
|
|
23
|
-
}
|
|
24
|
-
/**
|
|
25
|
-
* Create an asset id from a genesis transaction id and group index.
|
|
26
|
-
*
|
|
27
|
-
* @param txid - Hex-encoded genesis transaction id
|
|
28
|
-
* @param groupIndex - Asset group index within the genesis transaction
|
|
29
|
-
* @returns A validated asset id
|
|
30
|
-
* @throws Error if the txid is missing, malformed, or not 32 bytes long
|
|
31
|
-
* @see fromString
|
|
32
|
-
*/
|
|
33
|
-
static create(txid, groupIndex) {
|
|
34
|
-
if (!txid) {
|
|
35
|
-
throw new Error("missing txid");
|
|
36
|
-
}
|
|
37
|
-
let buf;
|
|
38
|
-
try {
|
|
39
|
-
buf = hex.decode(txid);
|
|
40
|
-
}
|
|
41
|
-
catch {
|
|
42
|
-
throw new Error("invalid txid format, must be hex");
|
|
43
|
-
}
|
|
44
|
-
if (buf.length !== TX_HASH_SIZE) {
|
|
45
|
-
throw new Error(`invalid txid length: got ${buf.length} bytes, want ${TX_HASH_SIZE} bytes`);
|
|
46
|
-
}
|
|
47
|
-
const assetId = new AssetId(buf, groupIndex);
|
|
48
|
-
assetId.validate();
|
|
49
|
-
return assetId;
|
|
50
|
-
}
|
|
51
|
-
/**
|
|
52
|
-
* Decode an asset id from its hex string representation.
|
|
53
|
-
*
|
|
54
|
-
* @param s - Hex-encoded asset id
|
|
55
|
-
* @returns Decoded asset id
|
|
56
|
-
* @throws Error if the string is not valid hex or does not encode a valid asset id
|
|
57
|
-
* @see toString
|
|
58
|
-
*/
|
|
59
|
-
static fromString(s) {
|
|
60
|
-
let buf;
|
|
61
|
-
try {
|
|
62
|
-
buf = hex.decode(s);
|
|
63
|
-
}
|
|
64
|
-
catch {
|
|
65
|
-
throw new Error("invalid asset id format, must be hex");
|
|
66
|
-
}
|
|
67
|
-
return AssetId.fromBytes(buf);
|
|
68
|
-
}
|
|
69
|
-
/**
|
|
70
|
-
* Decode an asset id from its serialized bytes.
|
|
71
|
-
*
|
|
72
|
-
* @param buf - Serialized asset id bytes
|
|
73
|
-
* @returns Decoded asset id
|
|
74
|
-
* @throws Error if the buffer length is invalid
|
|
75
|
-
*/
|
|
76
|
-
static fromBytes(buf) {
|
|
77
|
-
if (!buf || buf.length === 0) {
|
|
78
|
-
throw new Error("missing asset id");
|
|
79
|
-
}
|
|
80
|
-
if (buf.length !== ASSET_ID_SIZE) {
|
|
81
|
-
throw new Error(`invalid asset id length: got ${buf.length} bytes, want ${ASSET_ID_SIZE} bytes`);
|
|
82
|
-
}
|
|
83
|
-
const reader = new BufferReader(buf);
|
|
84
|
-
return AssetId.fromReader(reader);
|
|
85
|
-
}
|
|
86
|
-
/**
|
|
87
|
-
* Serialize the asset id to raw bytes.
|
|
88
|
-
*
|
|
89
|
-
* @returns Serialized asset id bytes
|
|
90
|
-
* @see fromBytes
|
|
91
|
-
*/
|
|
92
|
-
serialize() {
|
|
93
|
-
const writer = new BufferWriter();
|
|
94
|
-
this.serializeTo(writer);
|
|
95
|
-
return writer.toBytes();
|
|
96
|
-
}
|
|
97
|
-
/**
|
|
98
|
-
* Encode the asset id to a hex string.
|
|
99
|
-
*
|
|
100
|
-
* @returns Hex-encoded asset id
|
|
101
|
-
* @see fromString
|
|
102
|
-
*/
|
|
103
|
-
toString() {
|
|
104
|
-
return hex.encode(this.serialize());
|
|
105
|
-
}
|
|
106
|
-
/**
|
|
107
|
-
* Validate the asset id fields.
|
|
108
|
-
*
|
|
109
|
-
* @throws Error if the txid is empty or the group index is out of range
|
|
110
|
-
*/
|
|
111
|
-
validate() {
|
|
112
|
-
if (isZeroBytes(this.txid)) {
|
|
113
|
-
throw new Error("empty txid");
|
|
114
|
-
}
|
|
115
|
-
if (!Number.isInteger(this.groupIndex) ||
|
|
116
|
-
this.groupIndex < 0 ||
|
|
117
|
-
this.groupIndex > 0xffff) {
|
|
118
|
-
throw new Error(`invalid group index: ${this.groupIndex}, must be in range [0, 65535]`);
|
|
119
|
-
}
|
|
120
|
-
}
|
|
121
|
-
/**
|
|
122
|
-
* Decode an asset id from a binary reader.
|
|
123
|
-
*
|
|
124
|
-
* @param reader - Reader positioned at an asset id
|
|
125
|
-
* @returns Decoded asset id
|
|
126
|
-
* @throws Error if the reader does not contain enough bytes
|
|
127
|
-
*/
|
|
128
|
-
static fromReader(reader) {
|
|
129
|
-
if (reader.remaining() < ASSET_ID_SIZE) {
|
|
130
|
-
throw new Error(`invalid asset id length: got ${reader.remaining()}, want ${ASSET_ID_SIZE}`);
|
|
131
|
-
}
|
|
132
|
-
const txid = reader.readSlice(TX_HASH_SIZE);
|
|
133
|
-
const index = reader.readUint16LE();
|
|
134
|
-
const assetId = new AssetId(txid, index);
|
|
135
|
-
assetId.validate();
|
|
136
|
-
return assetId;
|
|
137
|
-
}
|
|
138
|
-
/**
|
|
139
|
-
* Serialize the asset id into an existing binary writer.
|
|
140
|
-
*
|
|
141
|
-
* @param writer - Writer to append the asset id to
|
|
142
|
-
* @see serialize
|
|
143
|
-
*/
|
|
144
|
-
serializeTo(writer) {
|
|
145
|
-
writer.write(this.txid);
|
|
146
|
-
writer.writeUint16LE(this.groupIndex);
|
|
147
|
-
}
|
|
148
|
-
}
|
|
@@ -1,217 +0,0 @@
|
|
|
1
|
-
import { hex } from "@scure/base";
|
|
2
|
-
import { AssetInputType, TX_HASH_SIZE } from "./types.js";
|
|
3
|
-
import { BufferReader, BufferWriter, isZeroBytes } from "./utils.js";
|
|
4
|
-
/**
|
|
5
|
-
* AssetInput represents an input of an asset group.
|
|
6
|
-
* a local input references a real transaction input and specify the amount in satoshis.
|
|
7
|
-
* an intent input references an external intent transaction. It is created by the server to handle batch leaf transaction.
|
|
8
|
-
*/
|
|
9
|
-
export class AssetInput {
|
|
10
|
-
constructor(input) {
|
|
11
|
-
this.input = input;
|
|
12
|
-
}
|
|
13
|
-
/** Gets the transaction input index for an asset input, e.g. 0 */
|
|
14
|
-
get vin() {
|
|
15
|
-
return this.input.vin;
|
|
16
|
-
}
|
|
17
|
-
/** Gets the amount for an input (in most cases, 330 sats) */
|
|
18
|
-
get amount() {
|
|
19
|
-
return this.input.amount;
|
|
20
|
-
}
|
|
21
|
-
/** Create a local asset input that points at a transaction input index. */
|
|
22
|
-
static create(vin, amount) {
|
|
23
|
-
const input = new AssetInput({
|
|
24
|
-
type: AssetInputType.Local,
|
|
25
|
-
vin,
|
|
26
|
-
amount: typeof amount === "number" ? BigInt(amount) : amount,
|
|
27
|
-
});
|
|
28
|
-
input.validate();
|
|
29
|
-
return input;
|
|
30
|
-
}
|
|
31
|
-
/** Create an intent-backed asset input referencing an external intent transaction. */
|
|
32
|
-
static createIntent(txid, vin, amount) {
|
|
33
|
-
if (!txid || txid.length === 0) {
|
|
34
|
-
throw new Error("missing input intent txid");
|
|
35
|
-
}
|
|
36
|
-
let buf;
|
|
37
|
-
try {
|
|
38
|
-
buf = hex.decode(txid);
|
|
39
|
-
}
|
|
40
|
-
catch {
|
|
41
|
-
throw new Error("invalid input intent txid format, must be hex");
|
|
42
|
-
}
|
|
43
|
-
if (buf.length !== TX_HASH_SIZE) {
|
|
44
|
-
throw new Error("invalid input intent txid length");
|
|
45
|
-
}
|
|
46
|
-
const input = new AssetInput({
|
|
47
|
-
type: AssetInputType.Intent,
|
|
48
|
-
txid: buf,
|
|
49
|
-
vin,
|
|
50
|
-
amount: typeof amount === "number" ? BigInt(amount) : amount,
|
|
51
|
-
});
|
|
52
|
-
input.validate();
|
|
53
|
-
return input;
|
|
54
|
-
}
|
|
55
|
-
/** Decode an asset input from its hex string form. */
|
|
56
|
-
static fromString(s) {
|
|
57
|
-
let buf;
|
|
58
|
-
try {
|
|
59
|
-
buf = hex.decode(s);
|
|
60
|
-
}
|
|
61
|
-
catch {
|
|
62
|
-
throw new Error("invalid format, must be hex");
|
|
63
|
-
}
|
|
64
|
-
return AssetInput.fromBytes(buf);
|
|
65
|
-
}
|
|
66
|
-
/** Decode an asset input from its serialized bytes. */
|
|
67
|
-
static fromBytes(buf) {
|
|
68
|
-
const reader = new BufferReader(buf);
|
|
69
|
-
return AssetInput.fromReader(reader);
|
|
70
|
-
}
|
|
71
|
-
/** Serialize the asset input to raw bytes. */
|
|
72
|
-
serialize() {
|
|
73
|
-
const writer = new BufferWriter();
|
|
74
|
-
this.serializeTo(writer);
|
|
75
|
-
return writer.toBytes();
|
|
76
|
-
}
|
|
77
|
-
/** Encode the asset input to a hex string. */
|
|
78
|
-
toString() {
|
|
79
|
-
return hex.encode(this.serialize());
|
|
80
|
-
}
|
|
81
|
-
/** Validate the asset input fields. */
|
|
82
|
-
validate() {
|
|
83
|
-
switch (this.input.type) {
|
|
84
|
-
case AssetInputType.Local:
|
|
85
|
-
break;
|
|
86
|
-
case AssetInputType.Intent:
|
|
87
|
-
if (isZeroBytes(this.input.txid)) {
|
|
88
|
-
throw new Error("missing input intent txid");
|
|
89
|
-
}
|
|
90
|
-
break;
|
|
91
|
-
}
|
|
92
|
-
}
|
|
93
|
-
/** Decode an asset input from a buffer reader. */
|
|
94
|
-
static fromReader(reader) {
|
|
95
|
-
const type = reader.readByte();
|
|
96
|
-
let input;
|
|
97
|
-
switch (type) {
|
|
98
|
-
case AssetInputType.Local: {
|
|
99
|
-
const vin = reader.readUint16LE();
|
|
100
|
-
const amount = reader.readVarUint();
|
|
101
|
-
input = new AssetInput({
|
|
102
|
-
type: AssetInputType.Local,
|
|
103
|
-
vin,
|
|
104
|
-
amount,
|
|
105
|
-
});
|
|
106
|
-
break;
|
|
107
|
-
}
|
|
108
|
-
case AssetInputType.Intent: {
|
|
109
|
-
if (reader.remaining() < TX_HASH_SIZE) {
|
|
110
|
-
throw new Error("invalid input intent txid length");
|
|
111
|
-
}
|
|
112
|
-
const txid = reader.readSlice(TX_HASH_SIZE);
|
|
113
|
-
const vin = reader.readUint16LE();
|
|
114
|
-
const amount = reader.readVarUint();
|
|
115
|
-
input = new AssetInput({
|
|
116
|
-
type: AssetInputType.Intent,
|
|
117
|
-
txid: new Uint8Array(txid),
|
|
118
|
-
vin,
|
|
119
|
-
amount,
|
|
120
|
-
});
|
|
121
|
-
break;
|
|
122
|
-
}
|
|
123
|
-
case AssetInputType.Unspecified:
|
|
124
|
-
throw new Error("asset input type unspecified");
|
|
125
|
-
default:
|
|
126
|
-
throw new Error(`asset input type ${type} unknown`);
|
|
127
|
-
}
|
|
128
|
-
input.validate();
|
|
129
|
-
return input;
|
|
130
|
-
}
|
|
131
|
-
/** Serialize the asset input into an existing buffer writer. */
|
|
132
|
-
serializeTo(writer) {
|
|
133
|
-
writer.writeByte(this.input.type);
|
|
134
|
-
if (this.input.type === AssetInputType.Intent) {
|
|
135
|
-
writer.write(this.input.txid);
|
|
136
|
-
}
|
|
137
|
-
writer.writeUint16LE(this.input.vin);
|
|
138
|
-
writer.writeVarUint(this.input.amount);
|
|
139
|
-
}
|
|
140
|
-
}
|
|
141
|
-
/**
|
|
142
|
-
* AssetInputs represents a list of asset inputs.
|
|
143
|
-
*/
|
|
144
|
-
export class AssetInputs {
|
|
145
|
-
constructor(inputs) {
|
|
146
|
-
this.inputs = inputs;
|
|
147
|
-
}
|
|
148
|
-
/** Create a validated list of asset inputs. */
|
|
149
|
-
static create(inputs) {
|
|
150
|
-
const list = new AssetInputs(inputs);
|
|
151
|
-
list.validate();
|
|
152
|
-
return list;
|
|
153
|
-
}
|
|
154
|
-
/** Decode an asset input list from its hex string form. */
|
|
155
|
-
static fromString(s) {
|
|
156
|
-
if (!s || s.length === 0) {
|
|
157
|
-
throw new Error("missing asset inputs");
|
|
158
|
-
}
|
|
159
|
-
let buf;
|
|
160
|
-
try {
|
|
161
|
-
buf = hex.decode(s);
|
|
162
|
-
}
|
|
163
|
-
catch {
|
|
164
|
-
throw new Error("invalid asset inputs format, must be hex");
|
|
165
|
-
}
|
|
166
|
-
const reader = new BufferReader(buf);
|
|
167
|
-
return AssetInputs.fromReader(reader);
|
|
168
|
-
}
|
|
169
|
-
/** Serialize the asset input list to raw bytes. */
|
|
170
|
-
serialize() {
|
|
171
|
-
const writer = new BufferWriter();
|
|
172
|
-
this.serializeTo(writer);
|
|
173
|
-
return writer.toBytes();
|
|
174
|
-
}
|
|
175
|
-
/** Encode the asset input list to a hex string. */
|
|
176
|
-
toString() {
|
|
177
|
-
return hex.encode(this.serialize());
|
|
178
|
-
}
|
|
179
|
-
/** Validate the asset input list. */
|
|
180
|
-
validate() {
|
|
181
|
-
const seen = new Set();
|
|
182
|
-
let listType = AssetInputType.Unspecified;
|
|
183
|
-
for (const assetInput of this.inputs) {
|
|
184
|
-
assetInput.validate();
|
|
185
|
-
if (listType === AssetInputType.Unspecified) {
|
|
186
|
-
listType = assetInput.input.type;
|
|
187
|
-
}
|
|
188
|
-
else if (listType !== assetInput.input.type) {
|
|
189
|
-
throw new Error("all inputs must be of the same type");
|
|
190
|
-
}
|
|
191
|
-
// verify the same input vin is not duplicated
|
|
192
|
-
if (assetInput.input.type === AssetInputType.Local) {
|
|
193
|
-
if (seen.has(assetInput.input.vin)) {
|
|
194
|
-
throw new Error(`duplicated input vin ${assetInput.input.vin}`);
|
|
195
|
-
}
|
|
196
|
-
seen.add(assetInput.input.vin);
|
|
197
|
-
continue;
|
|
198
|
-
}
|
|
199
|
-
}
|
|
200
|
-
}
|
|
201
|
-
/** Decode an asset input list from a buffer reader. */
|
|
202
|
-
static fromReader(reader) {
|
|
203
|
-
const count = Number(reader.readVarUint());
|
|
204
|
-
const inputs = [];
|
|
205
|
-
for (let i = 0; i < count; i++) {
|
|
206
|
-
inputs.push(AssetInput.fromReader(reader));
|
|
207
|
-
}
|
|
208
|
-
return AssetInputs.create(inputs);
|
|
209
|
-
}
|
|
210
|
-
/** Serialize the asset input list into an existing buffer writer. */
|
|
211
|
-
serializeTo(writer) {
|
|
212
|
-
writer.writeVarUint(this.inputs.length);
|
|
213
|
-
for (const input of this.inputs) {
|
|
214
|
-
input.serializeTo(writer);
|
|
215
|
-
}
|
|
216
|
-
}
|
|
217
|
-
}
|