@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.
Files changed (522) hide show
  1. package/README.md +36 -125
  2. package/dist/adapters/asyncStorage.cjs +48 -0
  3. package/dist/adapters/asyncStorage.cjs.map +1 -0
  4. package/dist/adapters/asyncStorage.d.cts +16 -0
  5. package/dist/{types/storage → adapters}/asyncStorage.d.ts +5 -2
  6. package/dist/adapters/asyncStorage.js +46 -0
  7. package/dist/adapters/asyncStorage.js.map +1 -0
  8. package/dist/adapters/expo.cjs +19 -0
  9. package/dist/adapters/expo.cjs.map +1 -0
  10. package/dist/adapters/expo.d.cts +48 -0
  11. package/dist/adapters/expo.d.ts +48 -0
  12. package/dist/adapters/expo.js +6 -0
  13. package/dist/adapters/expo.js.map +1 -0
  14. package/dist/adapters/fileSystem.cjs +116 -0
  15. package/dist/adapters/fileSystem.cjs.map +1 -0
  16. package/dist/adapters/fileSystem.d.cts +17 -0
  17. package/dist/{types/storage → adapters}/fileSystem.d.ts +5 -2
  18. package/dist/adapters/fileSystem.js +93 -0
  19. package/dist/adapters/fileSystem.js.map +1 -0
  20. package/dist/adapters/indexedDB.cjs +103 -0
  21. package/dist/adapters/indexedDB.cjs.map +1 -0
  22. package/dist/adapters/indexedDB.d.cts +18 -0
  23. package/dist/{types/storage → adapters}/indexedDB.d.ts +5 -2
  24. package/dist/adapters/indexedDB.js +101 -0
  25. package/dist/adapters/indexedDB.js.map +1 -0
  26. package/dist/adapters/localStorage.cjs +50 -0
  27. package/dist/adapters/localStorage.cjs.map +1 -0
  28. package/dist/{types/storage/inMemory.d.ts → adapters/localStorage.d.cts} +6 -3
  29. package/dist/{types/storage → adapters}/localStorage.d.ts +5 -2
  30. package/dist/adapters/localStorage.js +48 -0
  31. package/dist/adapters/localStorage.js.map +1 -0
  32. package/dist/ark-TZ1gXAXU.d.cts +3880 -0
  33. package/dist/ark-TZ1gXAXU.d.ts +3880 -0
  34. package/dist/{types/worker/expo/asyncStorageTaskQueue.d.ts → asyncStorageTaskQueue-Cb1F_Z9s.d.ts} +6 -3
  35. package/dist/asyncStorageTaskQueue-EFqSmYTg.d.cts +49 -0
  36. package/dist/chunk-5BLDMQED.cjs +18 -0
  37. package/dist/chunk-5BLDMQED.cjs.map +1 -0
  38. package/dist/chunk-5PG7DV7A.cjs +805 -0
  39. package/dist/chunk-5PG7DV7A.cjs.map +1 -0
  40. package/dist/chunk-A3EMF7RN.js +95 -0
  41. package/dist/chunk-A3EMF7RN.js.map +1 -0
  42. package/dist/chunk-ADV27S4N.cjs +2701 -0
  43. package/dist/chunk-ADV27S4N.cjs.map +1 -0
  44. package/dist/chunk-BQLHADL7.js +13805 -0
  45. package/dist/chunk-BQLHADL7.js.map +1 -0
  46. package/dist/chunk-CFZMTDWI.js +209 -0
  47. package/dist/chunk-CFZMTDWI.js.map +1 -0
  48. package/dist/chunk-FG5ACJJW.cjs +212 -0
  49. package/dist/chunk-FG5ACJJW.cjs.map +1 -0
  50. package/dist/chunk-HW3JJ323.js +768 -0
  51. package/dist/chunk-HW3JJ323.js.map +1 -0
  52. package/dist/chunk-I3DGUUCT.cjs +838 -0
  53. package/dist/chunk-I3DGUUCT.cjs.map +1 -0
  54. package/dist/chunk-IPX2R7FR.cjs +100 -0
  55. package/dist/chunk-IPX2R7FR.cjs.map +1 -0
  56. package/dist/chunk-NSBPE2FW.js +15 -0
  57. package/dist/chunk-NSBPE2FW.js.map +1 -0
  58. package/dist/chunk-T64LAI7L.js +829 -0
  59. package/dist/chunk-T64LAI7L.js.map +1 -0
  60. package/dist/chunk-ZBUDLTBO.js +2671 -0
  61. package/dist/chunk-ZBUDLTBO.js.map +1 -0
  62. package/dist/chunk-ZLO6NETT.cjs +13910 -0
  63. package/dist/chunk-ZLO6NETT.cjs.map +1 -0
  64. package/dist/contracts/handlers/index.cjs +26 -0
  65. package/dist/contracts/handlers/index.cjs.map +1 -0
  66. package/dist/contracts/handlers/index.d.cts +7 -0
  67. package/dist/contracts/handlers/index.d.ts +7 -0
  68. package/dist/contracts/handlers/index.js +5 -0
  69. package/dist/contracts/handlers/index.js.map +1 -0
  70. package/dist/delegate-BFZs69hp.d.cts +84 -0
  71. package/dist/delegate-aaVGfWsV.d.ts +84 -0
  72. package/dist/index-B22cA64m.d.cts +199 -0
  73. package/dist/{types/storage/index.d.ts → index-C0IanN1m.d.cts} +3 -1
  74. package/dist/index-C0IanN1m.d.ts +11 -0
  75. package/dist/index-NDla_UoJ.d.ts +199 -0
  76. package/dist/index.cjs +480 -0
  77. package/dist/index.cjs.map +1 -0
  78. package/dist/index.d.cts +3343 -0
  79. package/dist/index.d.ts +3343 -0
  80. package/dist/index.js +7 -0
  81. package/dist/index.js.map +1 -0
  82. package/dist/repositories/realm/index.cjs +513 -0
  83. package/dist/repositories/realm/index.cjs.map +1 -0
  84. package/dist/repositories/realm/index.d.cts +217 -0
  85. package/dist/{types/repositories/realm/schemas.d.ts → repositories/realm/index.d.ts} +80 -112
  86. package/dist/repositories/realm/index.js +507 -0
  87. package/dist/repositories/realm/index.js.map +1 -0
  88. package/dist/repositories/sqlite/index.cjs +588 -0
  89. package/dist/repositories/sqlite/index.cjs.map +1 -0
  90. package/dist/repositories/sqlite/index.d.cts +118 -0
  91. package/dist/{types/repositories/sqlite/walletRepository.d.ts → repositories/sqlite/index.d.ts} +58 -5
  92. package/dist/repositories/sqlite/index.js +585 -0
  93. package/dist/repositories/sqlite/index.js.map +1 -0
  94. package/dist/taskRunner-C6Ff4OaU.d.cts +114 -0
  95. package/dist/taskRunner-yvPN8Z0K.d.ts +114 -0
  96. package/dist/wallet/expo/background.cjs +93 -0
  97. package/dist/wallet/expo/background.cjs.map +1 -0
  98. package/dist/wallet/expo/background.d.cts +84 -0
  99. package/dist/wallet/expo/background.d.ts +84 -0
  100. package/dist/wallet/expo/background.js +68 -0
  101. package/dist/wallet/expo/background.js.map +1 -0
  102. package/dist/wallet/expo/index.cjs +171 -0
  103. package/dist/wallet/expo/index.cjs.map +1 -0
  104. package/dist/wallet/expo/index.d.cts +122 -0
  105. package/dist/{types/wallet/expo/wallet.d.ts → wallet/expo/index.d.ts} +45 -22
  106. package/dist/wallet/expo/index.js +169 -0
  107. package/dist/wallet/expo/index.js.map +1 -0
  108. package/dist/wallet-AF-p-OWj.d.cts +774 -0
  109. package/dist/wallet-D9NBRqvC.d.ts +774 -0
  110. package/dist/worker/expo/index.cjs +140 -0
  111. package/dist/worker/expo/index.cjs.map +1 -0
  112. package/dist/worker/expo/index.d.cts +29 -0
  113. package/dist/worker/expo/index.d.ts +29 -0
  114. package/dist/worker/expo/index.js +121 -0
  115. package/dist/worker/expo/index.js.map +1 -0
  116. package/package.json +110 -76
  117. package/dist/cjs/adapters/asyncStorage.js +0 -5
  118. package/dist/cjs/adapters/expo.js +0 -8
  119. package/dist/cjs/adapters/fileSystem.js +0 -5
  120. package/dist/cjs/adapters/indexedDB.js +0 -5
  121. package/dist/cjs/adapters/localStorage.js +0 -5
  122. package/dist/cjs/arkfee/celenv.js +0 -43
  123. package/dist/cjs/arkfee/estimator.js +0 -143
  124. package/dist/cjs/arkfee/index.js +0 -5
  125. package/dist/cjs/arkfee/types.js +0 -26
  126. package/dist/cjs/arknote/index.js +0 -128
  127. package/dist/cjs/bip322/index.js +0 -270
  128. package/dist/cjs/contracts/arkcontract.js +0 -147
  129. package/dist/cjs/contracts/contractManager.js +0 -629
  130. package/dist/cjs/contracts/contractWatcher.js +0 -598
  131. package/dist/cjs/contracts/handlers/default.js +0 -93
  132. package/dist/cjs/contracts/handlers/delegate.js +0 -90
  133. package/dist/cjs/contracts/handlers/helpers.js +0 -115
  134. package/dist/cjs/contracts/handlers/index.js +0 -19
  135. package/dist/cjs/contracts/handlers/registry.js +0 -89
  136. package/dist/cjs/contracts/handlers/vhtlc.js +0 -194
  137. package/dist/cjs/contracts/index.js +0 -41
  138. package/dist/cjs/contracts/types.js +0 -2
  139. package/dist/cjs/contracts/vtxoOwnership.js +0 -78
  140. package/dist/cjs/extension/asset/assetGroup.js +0 -228
  141. package/dist/cjs/extension/asset/assetId.js +0 -152
  142. package/dist/cjs/extension/asset/assetInput.js +0 -222
  143. package/dist/cjs/extension/asset/assetOutput.js +0 -174
  144. package/dist/cjs/extension/asset/assetRef.js +0 -148
  145. package/dist/cjs/extension/asset/index.js +0 -23
  146. package/dist/cjs/extension/asset/metadata.js +0 -187
  147. package/dist/cjs/extension/asset/packet.js +0 -114
  148. package/dist/cjs/extension/asset/types.js +0 -22
  149. package/dist/cjs/extension/asset/utils.js +0 -105
  150. package/dist/cjs/extension/index.js +0 -254
  151. package/dist/cjs/extension/packet.js +0 -20
  152. package/dist/cjs/forfeit.js +0 -45
  153. package/dist/cjs/identity/descriptor.js +0 -169
  154. package/dist/cjs/identity/descriptorProvider.js +0 -2
  155. package/dist/cjs/identity/hdCapableIdentity.js +0 -2
  156. package/dist/cjs/identity/index.js +0 -38
  157. package/dist/cjs/identity/seedIdentity.js +0 -461
  158. package/dist/cjs/identity/serialize.js +0 -171
  159. package/dist/cjs/identity/singleKey.js +0 -126
  160. package/dist/cjs/identity/staticDescriptorProvider.js +0 -65
  161. package/dist/cjs/index.js +0 -200
  162. package/dist/cjs/intent/index.js +0 -259
  163. package/dist/cjs/musig2/index.js +0 -11
  164. package/dist/cjs/musig2/keys.js +0 -57
  165. package/dist/cjs/musig2/nonces.js +0 -48
  166. package/dist/cjs/musig2/sign.js +0 -102
  167. package/dist/cjs/networks.js +0 -26
  168. package/dist/cjs/package.json +0 -3
  169. package/dist/cjs/providers/ark.js +0 -577
  170. package/dist/cjs/providers/delegator.js +0 -85
  171. package/dist/cjs/providers/electrum.js +0 -869
  172. package/dist/cjs/providers/errors.js +0 -59
  173. package/dist/cjs/providers/expoArk.js +0 -82
  174. package/dist/cjs/providers/expoIndexer.js +0 -111
  175. package/dist/cjs/providers/expoUtils.js +0 -124
  176. package/dist/cjs/providers/indexer.js +0 -630
  177. package/dist/cjs/providers/onchain.js +0 -262
  178. package/dist/cjs/providers/utils.js +0 -121
  179. package/dist/cjs/repositories/contractRepository.js +0 -2
  180. package/dist/cjs/repositories/inMemory/contractRepository.js +0 -55
  181. package/dist/cjs/repositories/inMemory/walletRepository.js +0 -115
  182. package/dist/cjs/repositories/index.js +0 -34
  183. package/dist/cjs/repositories/indexedDB/contractRepository.js +0 -187
  184. package/dist/cjs/repositories/indexedDB/db.js +0 -19
  185. package/dist/cjs/repositories/indexedDB/manager.js +0 -100
  186. package/dist/cjs/repositories/indexedDB/schema.js +0 -204
  187. package/dist/cjs/repositories/indexedDB/walletRepository.js +0 -474
  188. package/dist/cjs/repositories/indexedDB/websqlAdapter.js +0 -144
  189. package/dist/cjs/repositories/migrations/contractRepositoryImpl.js +0 -127
  190. package/dist/cjs/repositories/migrations/fromStorageAdapter.js +0 -66
  191. package/dist/cjs/repositories/migrations/walletRepositoryImpl.js +0 -184
  192. package/dist/cjs/repositories/realm/contractRepository.js +0 -116
  193. package/dist/cjs/repositories/realm/index.js +0 -11
  194. package/dist/cjs/repositories/realm/schemas.js +0 -157
  195. package/dist/cjs/repositories/realm/types.js +0 -7
  196. package/dist/cjs/repositories/realm/walletRepository.js +0 -305
  197. package/dist/cjs/repositories/scriptFromAddress.js +0 -16
  198. package/dist/cjs/repositories/serialization.js +0 -82
  199. package/dist/cjs/repositories/sqlite/contractRepository.js +0 -135
  200. package/dist/cjs/repositories/sqlite/index.js +0 -7
  201. package/dist/cjs/repositories/sqlite/types.js +0 -2
  202. package/dist/cjs/repositories/sqlite/walletRepository.js +0 -441
  203. package/dist/cjs/repositories/walletRepository.js +0 -2
  204. package/dist/cjs/script/address.js +0 -108
  205. package/dist/cjs/script/base.js +0 -185
  206. package/dist/cjs/script/default.js +0 -57
  207. package/dist/cjs/script/delegate.js +0 -53
  208. package/dist/cjs/script/tapscript.js +0 -619
  209. package/dist/cjs/script/vhtlc.js +0 -170
  210. package/dist/cjs/storage/asyncStorage.js +0 -50
  211. package/dist/cjs/storage/fileSystem.js +0 -141
  212. package/dist/cjs/storage/inMemory.js +0 -24
  213. package/dist/cjs/storage/index.js +0 -2
  214. package/dist/cjs/storage/indexedDB.js +0 -101
  215. package/dist/cjs/storage/localStorage.js +0 -51
  216. package/dist/cjs/tree/signingSession.js +0 -229
  217. package/dist/cjs/tree/txTree.js +0 -192
  218. package/dist/cjs/tree/validation.js +0 -107
  219. package/dist/cjs/utils/anchor.js +0 -35
  220. package/dist/cjs/utils/arkTransaction.js +0 -271
  221. package/dist/cjs/utils/bip21.js +0 -127
  222. package/dist/cjs/utils/syncCursors.js +0 -128
  223. package/dist/cjs/utils/timelock.js +0 -59
  224. package/dist/cjs/utils/transaction.js +0 -28
  225. package/dist/cjs/utils/transactionHistory.js +0 -183
  226. package/dist/cjs/utils/txSizeEstimator.js +0 -132
  227. package/dist/cjs/utils/unknownFields.js +0 -174
  228. package/dist/cjs/wallet/asset-manager.js +0 -330
  229. package/dist/cjs/wallet/asset.js +0 -119
  230. package/dist/cjs/wallet/batch.js +0 -183
  231. package/dist/cjs/wallet/delegator.js +0 -302
  232. package/dist/cjs/wallet/expo/background.js +0 -116
  233. package/dist/cjs/wallet/expo/index.js +0 -9
  234. package/dist/cjs/wallet/expo/wallet.js +0 -230
  235. package/dist/cjs/wallet/hdDescriptorProvider.js +0 -159
  236. package/dist/cjs/wallet/index.js +0 -82
  237. package/dist/cjs/wallet/onchain.js +0 -290
  238. package/dist/cjs/wallet/ramps.js +0 -216
  239. package/dist/cjs/wallet/serviceWorker/wallet-message-handler.js +0 -953
  240. package/dist/cjs/wallet/serviceWorker/wallet.js +0 -1173
  241. package/dist/cjs/wallet/unroll.js +0 -289
  242. package/dist/cjs/wallet/utils.js +0 -111
  243. package/dist/cjs/wallet/validation.js +0 -154
  244. package/dist/cjs/wallet/vtxo-manager.js +0 -1142
  245. package/dist/cjs/wallet/wallet.js +0 -2049
  246. package/dist/cjs/worker/browser/service-worker-manager.js +0 -183
  247. package/dist/cjs/worker/browser/utils.js +0 -67
  248. package/dist/cjs/worker/errors.js +0 -16
  249. package/dist/cjs/worker/expo/asyncStorageTaskQueue.js +0 -78
  250. package/dist/cjs/worker/expo/index.js +0 -13
  251. package/dist/cjs/worker/expo/processors/contractPollProcessor.js +0 -62
  252. package/dist/cjs/worker/expo/processors/index.js +0 -6
  253. package/dist/cjs/worker/expo/taskQueue.js +0 -41
  254. package/dist/cjs/worker/expo/taskRunner.js +0 -73
  255. package/dist/cjs/worker/messageBus.js +0 -473
  256. package/dist/esm/adapters/asyncStorage.js +0 -1
  257. package/dist/esm/adapters/expo.js +0 -3
  258. package/dist/esm/adapters/fileSystem.js +0 -1
  259. package/dist/esm/adapters/indexedDB.js +0 -1
  260. package/dist/esm/adapters/localStorage.js +0 -1
  261. package/dist/esm/arkfee/celenv.js +0 -40
  262. package/dist/esm/arkfee/estimator.js +0 -139
  263. package/dist/esm/arkfee/index.js +0 -1
  264. package/dist/esm/arkfee/types.js +0 -22
  265. package/dist/esm/arknote/index.js +0 -124
  266. package/dist/esm/bip322/index.js +0 -267
  267. package/dist/esm/contracts/arkcontract.js +0 -140
  268. package/dist/esm/contracts/contractManager.js +0 -625
  269. package/dist/esm/contracts/contractWatcher.js +0 -594
  270. package/dist/esm/contracts/handlers/default.js +0 -90
  271. package/dist/esm/contracts/handlers/delegate.js +0 -87
  272. package/dist/esm/contracts/handlers/helpers.js +0 -110
  273. package/dist/esm/contracts/handlers/index.js +0 -12
  274. package/dist/esm/contracts/handlers/registry.js +0 -86
  275. package/dist/esm/contracts/handlers/vhtlc.js +0 -191
  276. package/dist/esm/contracts/index.js +0 -13
  277. package/dist/esm/contracts/types.js +0 -1
  278. package/dist/esm/contracts/vtxoOwnership.js +0 -69
  279. package/dist/esm/extension/asset/assetGroup.js +0 -224
  280. package/dist/esm/extension/asset/assetId.js +0 -148
  281. package/dist/esm/extension/asset/assetInput.js +0 -217
  282. package/dist/esm/extension/asset/assetOutput.js +0 -169
  283. package/dist/esm/extension/asset/assetRef.js +0 -144
  284. package/dist/esm/extension/asset/index.js +0 -8
  285. package/dist/esm/extension/asset/metadata.js +0 -182
  286. package/dist/esm/extension/asset/packet.js +0 -110
  287. package/dist/esm/extension/asset/types.js +0 -19
  288. package/dist/esm/extension/asset/utils.js +0 -99
  289. package/dist/esm/extension/index.js +0 -248
  290. package/dist/esm/extension/packet.js +0 -16
  291. package/dist/esm/forfeit.js +0 -41
  292. package/dist/esm/identity/descriptor.js +0 -161
  293. package/dist/esm/identity/descriptorProvider.js +0 -1
  294. package/dist/esm/identity/hdCapableIdentity.js +0 -1
  295. package/dist/esm/identity/index.js +0 -12
  296. package/dist/esm/identity/seedIdentity.js +0 -453
  297. package/dist/esm/identity/serialize.js +0 -164
  298. package/dist/esm/identity/singleKey.js +0 -121
  299. package/dist/esm/identity/staticDescriptorProvider.js +0 -61
  300. package/dist/esm/index.js +0 -87
  301. package/dist/esm/intent/index.js +0 -255
  302. package/dist/esm/musig2/index.js +0 -3
  303. package/dist/esm/musig2/keys.js +0 -21
  304. package/dist/esm/musig2/nonces.js +0 -11
  305. package/dist/esm/musig2/sign.js +0 -63
  306. package/dist/esm/networks.js +0 -22
  307. package/dist/esm/package.json +0 -3
  308. package/dist/esm/providers/ark.js +0 -572
  309. package/dist/esm/providers/delegator.js +0 -81
  310. package/dist/esm/providers/electrum.js +0 -864
  311. package/dist/esm/providers/errors.js +0 -54
  312. package/dist/esm/providers/expoArk.js +0 -78
  313. package/dist/esm/providers/expoIndexer.js +0 -107
  314. package/dist/esm/providers/expoUtils.js +0 -87
  315. package/dist/esm/providers/indexer.js +0 -626
  316. package/dist/esm/providers/onchain.js +0 -258
  317. package/dist/esm/providers/utils.js +0 -117
  318. package/dist/esm/repositories/contractRepository.js +0 -1
  319. package/dist/esm/repositories/inMemory/contractRepository.js +0 -51
  320. package/dist/esm/repositories/inMemory/walletRepository.js +0 -111
  321. package/dist/esm/repositories/index.js +0 -10
  322. package/dist/esm/repositories/indexedDB/contractRepository.js +0 -183
  323. package/dist/esm/repositories/indexedDB/db.js +0 -4
  324. package/dist/esm/repositories/indexedDB/manager.js +0 -95
  325. package/dist/esm/repositories/indexedDB/schema.js +0 -199
  326. package/dist/esm/repositories/indexedDB/walletRepository.js +0 -470
  327. package/dist/esm/repositories/indexedDB/websqlAdapter.js +0 -138
  328. package/dist/esm/repositories/migrations/contractRepositoryImpl.js +0 -121
  329. package/dist/esm/repositories/migrations/fromStorageAdapter.js +0 -58
  330. package/dist/esm/repositories/migrations/walletRepositoryImpl.js +0 -180
  331. package/dist/esm/repositories/realm/contractRepository.js +0 -112
  332. package/dist/esm/repositories/realm/index.js +0 -3
  333. package/dist/esm/repositories/realm/schemas.js +0 -153
  334. package/dist/esm/repositories/realm/types.js +0 -6
  335. package/dist/esm/repositories/realm/walletRepository.js +0 -301
  336. package/dist/esm/repositories/scriptFromAddress.js +0 -13
  337. package/dist/esm/repositories/serialization.js +0 -67
  338. package/dist/esm/repositories/sqlite/contractRepository.js +0 -131
  339. package/dist/esm/repositories/sqlite/index.js +0 -2
  340. package/dist/esm/repositories/sqlite/types.js +0 -1
  341. package/dist/esm/repositories/sqlite/walletRepository.js +0 -437
  342. package/dist/esm/repositories/walletRepository.js +0 -1
  343. package/dist/esm/script/address.js +0 -104
  344. package/dist/esm/script/base.js +0 -179
  345. package/dist/esm/script/default.js +0 -54
  346. package/dist/esm/script/delegate.js +0 -50
  347. package/dist/esm/script/tapscript.js +0 -615
  348. package/dist/esm/script/vhtlc.js +0 -167
  349. package/dist/esm/storage/asyncStorage.js +0 -46
  350. package/dist/esm/storage/fileSystem.js +0 -104
  351. package/dist/esm/storage/inMemory.js +0 -20
  352. package/dist/esm/storage/index.js +0 -1
  353. package/dist/esm/storage/indexedDB.js +0 -97
  354. package/dist/esm/storage/localStorage.js +0 -47
  355. package/dist/esm/tree/signingSession.js +0 -191
  356. package/dist/esm/tree/txTree.js +0 -188
  357. package/dist/esm/tree/validation.js +0 -101
  358. package/dist/esm/utils/anchor.js +0 -31
  359. package/dist/esm/utils/arkTransaction.js +0 -264
  360. package/dist/esm/utils/bip21.js +0 -123
  361. package/dist/esm/utils/syncCursors.js +0 -119
  362. package/dist/esm/utils/timelock.js +0 -22
  363. package/dist/esm/utils/transaction.js +0 -24
  364. package/dist/esm/utils/transactionHistory.js +0 -180
  365. package/dist/esm/utils/txSizeEstimator.js +0 -128
  366. package/dist/esm/utils/unknownFields.js +0 -169
  367. package/dist/esm/wallet/asset-manager.js +0 -325
  368. package/dist/esm/wallet/asset.js +0 -113
  369. package/dist/esm/wallet/batch.js +0 -180
  370. package/dist/esm/wallet/delegator.js +0 -297
  371. package/dist/esm/wallet/expo/background.js +0 -111
  372. package/dist/esm/wallet/expo/index.js +0 -2
  373. package/dist/esm/wallet/expo/wallet.js +0 -193
  374. package/dist/esm/wallet/hdDescriptorProvider.js +0 -155
  375. package/dist/esm/wallet/index.js +0 -75
  376. package/dist/esm/wallet/onchain.js +0 -285
  377. package/dist/esm/wallet/ramps.js +0 -212
  378. package/dist/esm/wallet/serviceWorker/wallet-message-handler.js +0 -946
  379. package/dist/esm/wallet/serviceWorker/wallet.js +0 -1168
  380. package/dist/esm/wallet/unroll.js +0 -285
  381. package/dist/esm/wallet/utils.js +0 -103
  382. package/dist/esm/wallet/validation.js +0 -142
  383. package/dist/esm/wallet/vtxo-manager.js +0 -1136
  384. package/dist/esm/wallet/wallet.js +0 -2041
  385. package/dist/esm/worker/browser/service-worker-manager.js +0 -177
  386. package/dist/esm/worker/browser/utils.js +0 -63
  387. package/dist/esm/worker/errors.js +0 -11
  388. package/dist/esm/worker/expo/asyncStorageTaskQueue.js +0 -74
  389. package/dist/esm/worker/expo/index.js +0 -4
  390. package/dist/esm/worker/expo/processors/contractPollProcessor.js +0 -59
  391. package/dist/esm/worker/expo/processors/index.js +0 -1
  392. package/dist/esm/worker/expo/taskQueue.js +0 -37
  393. package/dist/esm/worker/expo/taskRunner.js +0 -69
  394. package/dist/esm/worker/messageBus.js +0 -469
  395. package/dist/types/adapters/asyncStorage.d.ts +0 -2
  396. package/dist/types/adapters/expo.d.ts +0 -4
  397. package/dist/types/adapters/fileSystem.d.ts +0 -2
  398. package/dist/types/adapters/indexedDB.d.ts +0 -2
  399. package/dist/types/adapters/localStorage.d.ts +0 -2
  400. package/dist/types/arkfee/celenv.d.ts +0 -25
  401. package/dist/types/arkfee/estimator.d.ts +0 -49
  402. package/dist/types/arkfee/index.d.ts +0 -2
  403. package/dist/types/arkfee/types.d.ts +0 -38
  404. package/dist/types/arknote/index.d.ts +0 -84
  405. package/dist/types/bip322/index.d.ts +0 -55
  406. package/dist/types/contracts/arkcontract.d.ts +0 -99
  407. package/dist/types/contracts/contractManager.d.ts +0 -381
  408. package/dist/types/contracts/contractWatcher.d.ts +0 -217
  409. package/dist/types/contracts/handlers/default.d.ts +0 -19
  410. package/dist/types/contracts/handlers/delegate.d.ts +0 -21
  411. package/dist/types/contracts/handlers/helpers.d.ts +0 -19
  412. package/dist/types/contracts/handlers/index.d.ts +0 -7
  413. package/dist/types/contracts/handlers/registry.d.ts +0 -65
  414. package/dist/types/contracts/handlers/vhtlc.d.ts +0 -32
  415. package/dist/types/contracts/index.d.ts +0 -14
  416. package/dist/types/contracts/types.d.ts +0 -233
  417. package/dist/types/contracts/vtxoOwnership.d.ts +0 -33
  418. package/dist/types/extension/asset/assetGroup.d.ts +0 -119
  419. package/dist/types/extension/asset/assetId.d.ts +0 -83
  420. package/dist/types/extension/asset/assetInput.d.ts +0 -64
  421. package/dist/types/extension/asset/assetOutput.d.ts +0 -54
  422. package/dist/types/extension/asset/assetRef.d.ts +0 -91
  423. package/dist/types/extension/asset/index.d.ts +0 -8
  424. package/dist/types/extension/asset/metadata.d.ts +0 -52
  425. package/dist/types/extension/asset/packet.d.ts +0 -41
  426. package/dist/types/extension/asset/types.d.ts +0 -16
  427. package/dist/types/extension/asset/utils.d.ts +0 -21
  428. package/dist/types/extension/index.d.ts +0 -56
  429. package/dist/types/extension/packet.d.ts +0 -21
  430. package/dist/types/forfeit.d.ts +0 -18
  431. package/dist/types/identity/descriptor.d.ts +0 -61
  432. package/dist/types/identity/descriptorProvider.d.ts +0 -35
  433. package/dist/types/identity/hdCapableIdentity.d.ts +0 -44
  434. package/dist/types/identity/index.d.ts +0 -56
  435. package/dist/types/identity/seedIdentity.d.ts +0 -254
  436. package/dist/types/identity/serialize.d.ts +0 -96
  437. package/dist/types/identity/singleKey.d.ts +0 -62
  438. package/dist/types/identity/staticDescriptorProvider.d.ts +0 -18
  439. package/dist/types/index.d.ts +0 -59
  440. package/dist/types/intent/index.d.ts +0 -86
  441. package/dist/types/musig2/index.d.ts +0 -4
  442. package/dist/types/musig2/keys.d.ts +0 -9
  443. package/dist/types/musig2/nonces.d.ts +0 -14
  444. package/dist/types/musig2/sign.d.ts +0 -27
  445. package/dist/types/networks.d.ts +0 -16
  446. package/dist/types/providers/ark.d.ts +0 -369
  447. package/dist/types/providers/delegator.d.ts +0 -82
  448. package/dist/types/providers/electrum.d.ts +0 -312
  449. package/dist/types/providers/errors.d.ts +0 -13
  450. package/dist/types/providers/expoArk.d.ts +0 -22
  451. package/dist/types/providers/expoIndexer.d.ts +0 -18
  452. package/dist/types/providers/expoUtils.d.ts +0 -18
  453. package/dist/types/providers/indexer.d.ts +0 -301
  454. package/dist/types/providers/onchain.d.ts +0 -148
  455. package/dist/types/providers/utils.d.ts +0 -12
  456. package/dist/types/repositories/contractRepository.d.ts +0 -32
  457. package/dist/types/repositories/inMemory/contractRepository.d.ts +0 -17
  458. package/dist/types/repositories/inMemory/walletRepository.d.ts +0 -29
  459. package/dist/types/repositories/index.d.ts +0 -9
  460. package/dist/types/repositories/indexedDB/contractRepository.d.ts +0 -21
  461. package/dist/types/repositories/indexedDB/db.d.ts +0 -4
  462. package/dist/types/repositories/indexedDB/manager.d.ts +0 -25
  463. package/dist/types/repositories/indexedDB/schema.d.ts +0 -9
  464. package/dist/types/repositories/indexedDB/walletRepository.d.ts +0 -28
  465. package/dist/types/repositories/indexedDB/websqlAdapter.d.ts +0 -49
  466. package/dist/types/repositories/migrations/contractRepositoryImpl.d.ts +0 -24
  467. package/dist/types/repositories/migrations/fromStorageAdapter.d.ts +0 -19
  468. package/dist/types/repositories/migrations/walletRepositoryImpl.d.ts +0 -27
  469. package/dist/types/repositories/realm/contractRepository.d.ts +0 -24
  470. package/dist/types/repositories/realm/index.d.ts +0 -4
  471. package/dist/types/repositories/realm/types.d.ts +0 -16
  472. package/dist/types/repositories/realm/walletRepository.d.ts +0 -34
  473. package/dist/types/repositories/scriptFromAddress.d.ts +0 -9
  474. package/dist/types/repositories/serialization.d.ts +0 -65
  475. package/dist/types/repositories/sqlite/contractRepository.d.ts +0 -33
  476. package/dist/types/repositories/sqlite/index.d.ts +0 -3
  477. package/dist/types/repositories/sqlite/types.d.ts +0 -18
  478. package/dist/types/repositories/walletRepository.d.ts +0 -72
  479. package/dist/types/script/address.d.ts +0 -67
  480. package/dist/types/script/base.d.ts +0 -105
  481. package/dist/types/script/default.d.ts +0 -44
  482. package/dist/types/script/delegate.d.ts +0 -40
  483. package/dist/types/script/tapscript.d.ts +0 -169
  484. package/dist/types/script/vhtlc.d.ts +0 -66
  485. package/dist/types/tree/signingSession.d.ts +0 -37
  486. package/dist/types/tree/txTree.d.ts +0 -28
  487. package/dist/types/tree/validation.d.ts +0 -15
  488. package/dist/types/utils/anchor.d.ts +0 -19
  489. package/dist/types/utils/arkTransaction.d.ts +0 -49
  490. package/dist/types/utils/bip21.d.ts +0 -38
  491. package/dist/types/utils/syncCursors.d.ts +0 -60
  492. package/dist/types/utils/timelock.d.ts +0 -9
  493. package/dist/types/utils/transaction.d.ts +0 -13
  494. package/dist/types/utils/transactionHistory.d.ts +0 -15
  495. package/dist/types/utils/txSizeEstimator.d.ts +0 -40
  496. package/dist/types/utils/unknownFields.d.ts +0 -83
  497. package/dist/types/wallet/asset-manager.d.ts +0 -69
  498. package/dist/types/wallet/asset.d.ts +0 -21
  499. package/dist/types/wallet/batch.d.ts +0 -107
  500. package/dist/types/wallet/delegator.d.ts +0 -48
  501. package/dist/types/wallet/expo/background.d.ts +0 -66
  502. package/dist/types/wallet/expo/index.d.ts +0 -4
  503. package/dist/types/wallet/hdDescriptorProvider.d.ts +0 -93
  504. package/dist/types/wallet/index.d.ts +0 -755
  505. package/dist/types/wallet/onchain.d.ts +0 -109
  506. package/dist/types/wallet/ramps.d.ts +0 -64
  507. package/dist/types/wallet/serviceWorker/wallet-message-handler.d.ts +0 -543
  508. package/dist/types/wallet/serviceWorker/wallet.d.ts +0 -238
  509. package/dist/types/wallet/unroll.d.ts +0 -114
  510. package/dist/types/wallet/utils.d.ts +0 -36
  511. package/dist/types/wallet/validation.d.ts +0 -24
  512. package/dist/types/wallet/vtxo-manager.d.ts +0 -476
  513. package/dist/types/wallet/wallet.d.ts +0 -360
  514. package/dist/types/worker/browser/service-worker-manager.d.ts +0 -32
  515. package/dist/types/worker/browser/utils.d.ts +0 -17
  516. package/dist/types/worker/errors.d.ts +0 -7
  517. package/dist/types/worker/expo/index.d.ts +0 -7
  518. package/dist/types/worker/expo/processors/contractPollProcessor.d.ts +0 -19
  519. package/dist/types/worker/expo/processors/index.d.ts +0 -1
  520. package/dist/types/worker/expo/taskQueue.d.ts +0 -50
  521. package/dist/types/worker/expo/taskRunner.d.ts +0 -66
  522. 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
- }