@btc-vision/transaction 1.0.97 → 1.0.100

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 (373) hide show
  1. package/.babelrc +4 -7
  2. package/.prettierrc.json +11 -11
  3. package/CONTRIBUTING.md +71 -71
  4. package/LICENSE.md +62 -62
  5. package/README.md +76 -76
  6. package/browser/_version.d.ts +1 -1
  7. package/browser/bytecode/Compressor.d.ts +0 -1
  8. package/browser/crypto/crypto-browser.d.ts +1 -30
  9. package/browser/crypto/crypto.d.ts +0 -1
  10. package/browser/generators/AddressGenerator.d.ts +0 -1
  11. package/browser/generators/Generator.d.ts +2 -3
  12. package/browser/generators/builders/CalldataGenerator.d.ts +0 -1
  13. package/browser/generators/builders/CustomGenerator.d.ts +6 -0
  14. package/browser/generators/builders/DeploymentGenerator.d.ts +0 -1
  15. package/browser/generators/builders/MultiSignGenerator.d.ts +0 -1
  16. package/browser/index.js +1 -1
  17. package/browser/keypair/EcKeyPair.d.ts +0 -1
  18. package/browser/keypair/Wallet.d.ts +0 -1
  19. package/browser/opnet.d.ts +5 -3
  20. package/browser/signer/TweakedSigner.d.ts +0 -1
  21. package/browser/transaction/TransactionFactory.d.ts +2 -0
  22. package/browser/transaction/browser/BrowserSignerBase.d.ts +0 -1
  23. package/browser/transaction/browser/extensions/UnisatSigner.d.ts +0 -1
  24. package/{build/transaction/builders/DeploymentTransactionV2.d.ts → browser/transaction/builders/CustomScriptTransaction.d.ts} +16 -12
  25. package/browser/transaction/builders/DeploymentTransaction.d.ts +0 -1
  26. package/browser/transaction/builders/InteractionTransaction.d.ts +0 -1
  27. package/browser/transaction/builders/MultiSignTransaction.d.ts +0 -1
  28. package/browser/transaction/builders/SharedInteractionTransaction.d.ts +0 -1
  29. package/browser/transaction/builders/TransactionBuilder.d.ts +0 -1
  30. package/browser/transaction/builders/UnwrapSegwitTransaction.d.ts +0 -1
  31. package/browser/transaction/builders/UnwrapTransaction.d.ts +0 -1
  32. package/browser/transaction/builders/WrapTransaction.d.ts +0 -1
  33. package/browser/transaction/enums/TransactionType.d.ts +2 -1
  34. package/browser/transaction/interfaces/ITransactionParameters.d.ts +0 -1
  35. package/browser/transaction/interfaces/Tap.d.ts +0 -1
  36. package/browser/transaction/shared/P2TR_MS.d.ts +0 -1
  37. package/browser/transaction/shared/TweakedTransaction.d.ts +0 -1
  38. package/browser/utils/BitcoinUtils.d.ts +0 -1
  39. package/browser/verification/TapscriptVerificator.d.ts +0 -1
  40. package/browser/wbtc/WrappedGenerationParameters.d.ts +0 -1
  41. package/build/_version.d.ts +1 -1
  42. package/build/_version.js +1 -1
  43. package/build/bytecode/Compressor.d.ts +0 -1
  44. package/build/bytecode/Compressor.js +4 -4
  45. package/build/crypto/crypto.d.ts +0 -1
  46. package/build/generators/AddressGenerator.d.ts +0 -1
  47. package/build/generators/Generator.d.ts +2 -3
  48. package/build/generators/Generator.js +3 -5
  49. package/build/generators/builders/CalldataGenerator.d.ts +0 -1
  50. package/build/generators/builders/CalldataGenerator.js +2 -0
  51. package/build/generators/builders/CustomGenerator.d.ts +6 -0
  52. package/build/generators/builders/CustomGenerator.js +16 -0
  53. package/build/generators/builders/DeploymentGenerator.d.ts +0 -1
  54. package/build/generators/builders/DeploymentGenerator.js +2 -0
  55. package/build/generators/builders/{MultisignGenerator.d.ts → MultiSignGenerator.d.ts} +0 -1
  56. package/build/generators/builders/{MultisignGenerator.js → MultiSignGenerator.js} +1 -1
  57. package/build/keypair/EcKeyPair.d.ts +0 -1
  58. package/build/keypair/EcKeyPair.js +2 -2
  59. package/build/keypair/Wallet.d.ts +0 -1
  60. package/build/keypair/Wallet.js +0 -5
  61. package/build/metadata/ContractBaseMetadata.js +0 -1
  62. package/build/metadata/contracts/wBTC.js +3 -5
  63. package/build/metadata/tokens.js +32 -30
  64. package/build/opnet.d.ts +5 -3
  65. package/build/opnet.js +5 -3
  66. package/build/signer/TweakedSigner.d.ts +0 -1
  67. package/build/transaction/TransactionFactory.d.ts +2 -0
  68. package/build/transaction/TransactionFactory.js +42 -3
  69. package/build/transaction/browser/BrowserSignerBase.d.ts +0 -1
  70. package/build/transaction/browser/extensions/UnisatSigner.d.ts +0 -1
  71. package/build/transaction/browser/extensions/UnisatSigner.js +1 -6
  72. package/build/transaction/builders/CustomScriptTransaction.d.ts +40 -0
  73. package/build/transaction/builders/{DeploymentTransactionV2.js → CustomScriptTransaction.js} +40 -67
  74. package/build/transaction/builders/DeploymentTransaction.d.ts +0 -1
  75. package/build/transaction/builders/DeploymentTransaction.js +25 -33
  76. package/build/transaction/builders/FundingTransaction.js +1 -3
  77. package/build/transaction/builders/InteractionTransaction.d.ts +0 -1
  78. package/build/transaction/builders/InteractionTransaction.js +2 -5
  79. package/build/transaction/builders/MultiSignTransaction.d.ts +0 -1
  80. package/build/transaction/builders/MultiSignTransaction.js +66 -73
  81. package/build/transaction/builders/SharedInteractionTransaction.d.ts +0 -1
  82. package/build/transaction/builders/SharedInteractionTransaction.js +20 -25
  83. package/build/transaction/builders/TransactionBuilder.d.ts +0 -1
  84. package/build/transaction/builders/TransactionBuilder.js +12 -21
  85. package/build/transaction/builders/UnwrapSegwitTransaction.d.ts +0 -1
  86. package/build/transaction/builders/UnwrapSegwitTransaction.js +4 -10
  87. package/build/transaction/builders/UnwrapTransaction.d.ts +0 -1
  88. package/build/transaction/builders/UnwrapTransaction.js +5 -11
  89. package/build/transaction/builders/WrapTransaction.d.ts +0 -1
  90. package/build/transaction/builders/WrapTransaction.js +5 -12
  91. package/build/transaction/enums/TransactionType.d.ts +2 -1
  92. package/build/transaction/enums/TransactionType.js +1 -0
  93. package/build/transaction/interfaces/ITransactionParameters.d.ts +0 -1
  94. package/build/transaction/interfaces/Tap.d.ts +0 -1
  95. package/build/transaction/processor/PsbtTransaction.js +3 -4
  96. package/build/transaction/shared/P2TR_MS.d.ts +0 -1
  97. package/build/transaction/shared/TweakedTransaction.d.ts +0 -1
  98. package/build/transaction/shared/TweakedTransaction.js +11 -16
  99. package/build/utils/BitcoinUtils.d.ts +0 -1
  100. package/build/utxo/OPNetLimitedProvider.js +2 -3
  101. package/build/verification/TapscriptVerificator.d.ts +0 -1
  102. package/build/verification/TapscriptVerificator.js +1 -1
  103. package/build/wbtc/UnwrapGeneration.js +0 -2
  104. package/build/wbtc/WrappedGenerationParameters.d.ts +0 -1
  105. package/build/wbtc/WrappedGenerationParameters.js +0 -6
  106. package/cjs/package.json +3 -0
  107. package/gulpfile.js +49 -133
  108. package/package.json +112 -113
  109. package/src/_version.ts +1 -1
  110. package/src/bytecode/Compressor.ts +27 -27
  111. package/src/consensus/metadata/RoswellConsensus.ts +26 -26
  112. package/src/crypto/crypto.ts +1 -1
  113. package/src/generators/Generator.ts +75 -75
  114. package/src/generators/builders/CalldataGenerator.ts +2 -0
  115. package/src/generators/builders/CustomGenerator.ts +30 -0
  116. package/src/generators/builders/DeploymentGenerator.ts +2 -0
  117. package/src/generators/builders/MultiSignGenerator.ts +73 -73
  118. package/src/metadata/contracts/wBTC.ts +60 -60
  119. package/src/metadata/tokens.ts +135 -135
  120. package/src/network/ChainId.ts +6 -6
  121. package/src/opnet.ts +82 -82
  122. package/src/signer/TweakedSigner.ts +56 -56
  123. package/src/transaction/TransactionFactory.ts +72 -14
  124. package/src/transaction/builders/CustomScriptTransaction.ts +337 -0
  125. package/src/transaction/builders/DeploymentTransaction.ts +356 -356
  126. package/src/transaction/builders/MultiSignTransaction.ts +659 -659
  127. package/src/transaction/builders/UnwrapSegwitTransaction.ts +365 -365
  128. package/src/transaction/builders/UnwrapTransaction.ts +507 -507
  129. package/src/transaction/enums/TransactionType.ts +10 -9
  130. package/src/transaction/processor/PsbtTransaction.ts +173 -173
  131. package/src/transaction/shared/P2TR_MS.ts +42 -42
  132. package/src/transaction/shared/TweakedTransaction.ts +539 -539
  133. package/src/utils/BitcoinUtils.ts +96 -96
  134. package/tsconfig.base.json +27 -43
  135. package/tsconfig.json +15 -8
  136. package/tsconfig.webpack.json +22 -22
  137. package/EPOCH.md +0 -250
  138. package/VAULT_TARGET_CONSOLIDATION.md +0 -111
  139. package/browser/network/NetworkInformation.d.ts +0 -6
  140. package/browser/transaction/browser/BrowserSigner.d.ts +0 -9
  141. package/browser/transaction/builders/TapUnwarpTransaction.d.ts +0 -40
  142. package/browser/transaction/builders/UnwarpTransaction.d.ts +0 -34
  143. package/browser/utxo/UTXOManager.d.ts +0 -7
  144. package/build/Utils.d.ts +0 -0
  145. package/build/Utils.js +0 -1
  146. package/build/consensus/metadata/RoswsellConsensus.d.ts +0 -2
  147. package/build/consensus/metadata/RoswsellConsensus.js +0 -4
  148. package/build/contracts/ContractMetadataManager.d.ts +0 -0
  149. package/build/contracts/ContractMetadataManager.js +0 -1
  150. package/build/generators/OPNetAddressGenerator.d.ts +0 -0
  151. package/build/generators/OPNetAddressGenerator.js +0 -1
  152. package/build/generators/builders/DeploymentGeneratorV2.d.ts +0 -13
  153. package/build/generators/builders/DeploymentGeneratorV2.js +0 -57
  154. package/build/generators/builders/UnwrapGenerator.d.ts +0 -8
  155. package/build/generators/builders/UnwrapGenerator.js +0 -79
  156. package/build/keypair/interfaces/GeneratedWallet.d.ts +0 -5
  157. package/build/keypair/interfaces/GeneratedWallet.js +0 -1
  158. package/build/metadata/CommonContracts.d.ts +0 -6
  159. package/build/metadata/CommonContracts.js +0 -5
  160. package/build/metadata/ContractMetadataManager.d.ts +0 -1
  161. package/build/metadata/ContractMetadataManager.js +0 -9
  162. package/build/metadata/contracts/ContractBase.d.ts +0 -9
  163. package/build/metadata/contracts/ContractBase.js +0 -13
  164. package/build/metadata/contracts/ContractBaseMetadata.d.ts +0 -9
  165. package/build/metadata/contracts/ContractBaseMetadata.js +0 -13
  166. package/build/metadata/contracts/ContractMetadataManager.d.ts +0 -0
  167. package/build/metadata/contracts/ContractMetadataManager.js +0 -1
  168. package/build/network/NetworkConverter.d.ts +0 -0
  169. package/build/network/NetworkConverter.js +0 -14
  170. package/build/network/NetworkInformation.d.ts +0 -6
  171. package/build/network/NetworkInformation.js +0 -1
  172. package/build/scripts/Regtest.d.ts +0 -2
  173. package/build/scripts/Regtest.js +0 -15
  174. package/build/scripts/test.d.ts +0 -1
  175. package/build/scripts/test.js +0 -74
  176. package/build/signer/Regtest.d.ts +0 -2
  177. package/build/signer/Regtest.js +0 -15
  178. package/build/tests/Regtest.d.ts +0 -3
  179. package/build/tests/Regtest.js +0 -29
  180. package/build/tests/adaptPSBT.d.ts +0 -1
  181. package/build/tests/adaptPSBT.js +0 -44
  182. package/build/tests/btc/send.d.ts +0 -1
  183. package/build/tests/btc/send.js +0 -35
  184. package/build/tests/btc/transfer.d.ts +0 -1
  185. package/build/tests/btc/transfer.js +0 -35
  186. package/build/tests/createPairReg.d.ts +0 -1
  187. package/build/tests/createPairReg.js +0 -73
  188. package/build/tests/deploy/deployMoto.d.ts +0 -4
  189. package/build/tests/deploy/deployMoto.js +0 -89
  190. package/build/tests/deploy/deployPool.d.ts +0 -1
  191. package/build/tests/deploy/deployPool.js +0 -5
  192. package/build/tests/deploy/deployStep1.d.ts +0 -1
  193. package/build/tests/deploy/deployStep1.js +0 -5
  194. package/build/tests/deploy/deployStep2.d.ts +0 -1
  195. package/build/tests/deploy/deployStep2.js +0 -5
  196. package/build/tests/deploy/deployStep3.d.ts +0 -1
  197. package/build/tests/deploy/deployStep3.js +0 -5
  198. package/build/tests/deploy.d.ts +0 -1
  199. package/build/tests/deploy.js +0 -41
  200. package/build/tests/deployMotoRegStep1.d.ts +0 -1
  201. package/build/tests/deployMotoRegStep1.js +0 -85
  202. package/build/tests/deployReg.d.ts +0 -1
  203. package/build/tests/deployReg.js +0 -85
  204. package/build/tests/factory/createPairReg.d.ts +0 -1
  205. package/build/tests/factory/createPairReg.js +0 -13
  206. package/build/tests/gen.d.ts +0 -1
  207. package/build/tests/gen.js +0 -19
  208. package/build/tests/interaction.d.ts +0 -5
  209. package/build/tests/interaction.js +0 -62
  210. package/build/tests/massWrapReg.d.ts +0 -1
  211. package/build/tests/massWrapReg.js +0 -105
  212. package/build/tests/mineReg.d.ts +0 -1
  213. package/build/tests/mineReg.js +0 -19
  214. package/build/tests/moto/airdropToken.d.ts +0 -1
  215. package/build/tests/moto/airdropToken.js +0 -21
  216. package/build/tests/moto/airdropTokens.d.ts +0 -1
  217. package/build/tests/moto/airdropTokens.js +0 -60
  218. package/build/tests/moto/allowance.d.ts +0 -1
  219. package/build/tests/moto/allowance.js +0 -6
  220. package/build/tests/moto/approve.d.ts +0 -1
  221. package/build/tests/moto/approve.js +0 -10
  222. package/build/tests/moto/approveWBTC.d.ts +0 -1
  223. package/build/tests/moto/approveWBTC.js +0 -12
  224. package/build/tests/moto/balanceOf.d.ts +0 -1
  225. package/build/tests/moto/balanceOf.js +0 -12
  226. package/build/tests/moto/transfer.d.ts +0 -1
  227. package/build/tests/moto/transfer.js +0 -16
  228. package/build/tests/motoswap/airdropToken.d.ts +0 -11
  229. package/build/tests/motoswap/airdropToken.js +0 -36
  230. package/build/tests/motoswap/deployMoto.d.ts +0 -4
  231. package/build/tests/motoswap/deployMoto.js +0 -89
  232. package/build/tests/motoswap/deployMotoRegStep1.d.ts +0 -1
  233. package/build/tests/motoswap/deployMotoRegStep1.js +0 -91
  234. package/build/tests/motoswap/deployMotoRegStep2.d.ts +0 -1
  235. package/build/tests/motoswap/deployMotoRegStep2.js +0 -91
  236. package/build/tests/motoswap/deployPool.d.ts +0 -1
  237. package/build/tests/motoswap/deployPool.js +0 -5
  238. package/build/tests/motoswap/deployStep1.d.ts +0 -1
  239. package/build/tests/motoswap/deployStep1.js +0 -5
  240. package/build/tests/motoswap/deployStep2.d.ts +0 -1
  241. package/build/tests/motoswap/deployStep2.js +0 -5
  242. package/build/tests/motoswap/deployStep3.d.ts +0 -1
  243. package/build/tests/motoswap/deployStep3.js +0 -5
  244. package/build/tests/motoswap/interaction.d.ts +0 -3
  245. package/build/tests/motoswap/interaction.js +0 -63
  246. package/build/tests/motoswap/routerAddLiquidity.d.ts +0 -11
  247. package/build/tests/motoswap/routerAddLiquidity.js +0 -35
  248. package/build/tests/motoswap-router/addLiquidity.d.ts +0 -11
  249. package/build/tests/motoswap-router/addLiquidity.js +0 -36
  250. package/build/tests/motoswap-router/deployMoto.d.ts +0 -4
  251. package/build/tests/motoswap-router/deployMoto.js +0 -89
  252. package/build/tests/motoswap-router/deployPool.d.ts +0 -1
  253. package/build/tests/motoswap-router/deployPool.js +0 -5
  254. package/build/tests/motoswap-router/deployStep1.d.ts +0 -1
  255. package/build/tests/motoswap-router/deployStep1.js +0 -5
  256. package/build/tests/motoswap-router/deployStep2.d.ts +0 -1
  257. package/build/tests/motoswap-router/deployStep2.js +0 -5
  258. package/build/tests/motoswap-router/deployStep3.d.ts +0 -1
  259. package/build/tests/motoswap-router/deployStep3.js +0 -5
  260. package/build/tests/motoswap-router/getAmountsOut.d.ts +0 -5
  261. package/build/tests/motoswap-router/getAmountsOut.js +0 -34
  262. package/build/tests/motoswap-router/routerAddLiquidity.d.ts +0 -11
  263. package/build/tests/motoswap-router/routerAddLiquidity.js +0 -35
  264. package/build/tests/motoswap-router/swap.d.ts +0 -8
  265. package/build/tests/motoswap-router/swap.js +0 -24
  266. package/build/tests/multisign.d.ts +0 -1
  267. package/build/tests/multisign.js +0 -47
  268. package/build/tests/multisign2.d.ts +0 -1
  269. package/build/tests/multisign2.js +0 -27
  270. package/build/tests/pool/DecodePoolAddress.d.ts +0 -6
  271. package/build/tests/pool/DecodePoolAddress.js +0 -12
  272. package/build/tests/pool/decodeReserves.d.ts +0 -5
  273. package/build/tests/pool/decodeReserves.js +0 -13
  274. package/build/tests/pool/reserves.d.ts +0 -1
  275. package/build/tests/pool/reserves.js +0 -18
  276. package/build/tests/shared/Utils.d.ts +0 -2
  277. package/build/tests/shared/Utils.js +0 -14
  278. package/build/tests/shared/interaction.d.ts +0 -7
  279. package/build/tests/shared/interaction.js +0 -85
  280. package/build/tests/shared/tokens.d.ts +0 -6
  281. package/build/tests/shared/tokens.js +0 -5
  282. package/build/tests/stakeReg.d.ts +0 -1
  283. package/build/tests/stakeReg.js +0 -73
  284. package/build/tests/stakedReg.d.ts +0 -1
  285. package/build/tests/stakedReg.js +0 -28
  286. package/build/tests/test.d.ts +0 -1
  287. package/build/tests/test.js +0 -51
  288. package/build/tests/test2.d.ts +0 -1
  289. package/build/tests/test2.js +0 -73
  290. package/build/tests/testReg.d.ts +0 -1
  291. package/build/tests/testReg.js +0 -91
  292. package/build/tests/tokens.d.ts +0 -6
  293. package/build/tests/tokens.js +0 -5
  294. package/build/tests/totalRewardReg.d.ts +0 -1
  295. package/build/tests/totalRewardReg.js +0 -28
  296. package/build/tests/transfer.d.ts +0 -1
  297. package/build/tests/transfer.js +0 -74
  298. package/build/tests/transferReg.d.ts +0 -1
  299. package/build/tests/transferReg.js +0 -74
  300. package/build/tests/unStakeReg.d.ts +0 -1
  301. package/build/tests/unStakeReg.js +0 -72
  302. package/build/tests/unwrapReg.d.ts +0 -1
  303. package/build/tests/unwrapReg.js +0 -61
  304. package/build/tests/unwrapReg2.d.ts +0 -1
  305. package/build/tests/unwrapReg2.js +0 -56
  306. package/build/tests/unwrapRegSegwit.d.ts +0 -1
  307. package/build/tests/unwrapRegSegwit.js +0 -83
  308. package/build/tests/wbtc/approve.d.ts +0 -1
  309. package/build/tests/wbtc/approve.js +0 -6
  310. package/build/tests/wbtc/approveWBTC.d.ts +0 -1
  311. package/build/tests/wbtc/approveWBTC.js +0 -12
  312. package/build/tests/wbtc/massWrapReg.d.ts +0 -1
  313. package/build/tests/wbtc/massWrapReg.js +0 -105
  314. package/build/tests/wbtc/transfer.d.ts +0 -1
  315. package/build/tests/wbtc/transfer.js +0 -16
  316. package/build/tests/wbtc/transferReg.d.ts +0 -1
  317. package/build/tests/wbtc/transferReg.js +0 -16
  318. package/build/tests/wbtc/unStakeReg.d.ts +0 -1
  319. package/build/tests/wbtc/unStakeReg.js +0 -72
  320. package/build/tests/wbtc/unwrapReg.d.ts +0 -1
  321. package/build/tests/wbtc/unwrapReg.js +0 -60
  322. package/build/tests/wbtc/unwrapRegSegwit.d.ts +0 -1
  323. package/build/tests/wbtc/unwrapRegSegwit.js +0 -83
  324. package/build/tests/wbtc/withdrawalRequestReg.d.ts +0 -1
  325. package/build/tests/wbtc/withdrawalRequestReg.js +0 -71
  326. package/build/tests/wbtc/wrapReg.d.ts +0 -1
  327. package/build/tests/wbtc/wrapReg.js +0 -65
  328. package/build/tests/wbtc/wrapTest.d.ts +0 -1
  329. package/build/tests/wbtc/wrapTest.js +0 -66
  330. package/build/tests/withdrawalRequestReg.d.ts +0 -1
  331. package/build/tests/withdrawalRequestReg.js +0 -71
  332. package/build/tests/wrap.d.ts +0 -1
  333. package/build/tests/wrap.js +0 -65
  334. package/build/tests/wrapReg.d.ts +0 -1
  335. package/build/tests/wrapReg.js +0 -68
  336. package/build/tests/wrapTest.d.ts +0 -1
  337. package/build/tests/wrapTest.js +0 -66
  338. package/build/tests/wrapTestg.d.ts +0 -1
  339. package/build/tests/wrapTestg.js +0 -66
  340. package/build/tests/writers/allowance.d.ts +0 -3
  341. package/build/tests/writers/allowance.js +0 -10
  342. package/build/tests/writers/approve.d.ts +0 -4
  343. package/build/tests/writers/approve.js +0 -11
  344. package/build/transaction/TransactionBuilder.d.ts +0 -60
  345. package/build/transaction/TransactionBuilder.js +0 -244
  346. package/build/transaction/browser/BrowserSigner.d.ts +0 -11
  347. package/build/transaction/browser/BrowserSigner.js +0 -10
  348. package/build/transaction/browser/extensions/Unisat.d.ts +0 -54
  349. package/build/transaction/browser/extensions/Unisat.js +0 -11
  350. package/build/transaction/builders/GenericTransaction.d.ts +0 -11
  351. package/build/transaction/builders/GenericTransaction.js +0 -23
  352. package/build/transaction/builders/TapUnwarpTransaction.d.ts +0 -37
  353. package/build/transaction/builders/TapUnwarpTransaction.js +0 -201
  354. package/build/transaction/builders/UnwarpSegwitTransaction.d.ts +0 -34
  355. package/build/transaction/builders/UnwarpSegwitTransaction.js +0 -184
  356. package/build/transaction/builders/UnwarpTransaction.d.ts +0 -35
  357. package/build/transaction/builders/UnwarpTransaction.js +0 -199
  358. package/build/transaction/interfaces/ITransactions.d.ts +0 -32
  359. package/build/transaction/interfaces/ITransactions.js +0 -1
  360. package/build/utxo/IUTXO.d.ts +0 -0
  361. package/build/utxo/IUTXO.js +0 -1
  362. package/build/utxo/OPNetUtils.d.ts +0 -7
  363. package/build/utxo/OPNetUtils.js +0 -47
  364. package/build/utxo/UTXOManager.d.ts +0 -7
  365. package/build/utxo/UTXOManager.js +0 -47
  366. package/build/wbtc/BroadcastResponse.d.ts +0 -0
  367. package/build/wbtc/BroadcastResponse.js +0 -1
  368. package/examples/Deploy.md +0 -188
  369. package/examples/Unwrap.md +0 -165
  370. package/examples/Wrap.md +0 -194
  371. package/tsconfig.cjs.json +0 -13
  372. /package/build/generators/{features.d.ts → Features.d.ts} +0 -0
  373. /package/build/generators/{features.js → Features.js} +0 -0
@@ -1,34 +0,0 @@
1
- /// <reference types="node" />
2
- import { Taptree } from 'bitcoinjs-lib/src/types.js';
3
- import { TransactionType } from '../enums/TransactionType.js';
4
- import { IUnwrapParameters } from '../interfaces/ITransactionParameters.js';
5
- import { SharedInteractionTransaction } from './SharedInteractionTransaction.js';
6
- import { Psbt } from 'bitcoinjs-lib';
7
- import { VaultUTXOs } from '../processor/PsbtTransaction.js';
8
- export declare class UnwrapTransaction extends SharedInteractionTransaction<TransactionType.WBTC_UNWRAP> {
9
- static readonly MINIMUM_CONSOLIDATION_AMOUNT: bigint;
10
- private static readonly UNWRAP_SELECTOR;
11
- type: TransactionType.WBTC_UNWRAP;
12
- readonly amount: bigint;
13
- protected readonly compiledTargetScript: Buffer;
14
- protected readonly scriptTree: Taptree;
15
- protected sighashTypes: number[];
16
- protected readonly contractSecret: Buffer;
17
- protected readonly vaultUTXOs: VaultUTXOs[];
18
- private readonly wbtc;
19
- private readonly calculatedSignHash;
20
- constructor(parameters: IUnwrapParameters);
21
- static generateBurnCalldata(amount: bigint): Buffer;
22
- signPSBT(): Psbt;
23
- mergeVaults(input: VaultUTXOs[]): void;
24
- protected internalBuildTransaction(transaction: Psbt): boolean;
25
- protected generateMultiSignRedeemScript(publicKeys: string[], minimum: number): {
26
- witnessUtxo: Buffer;
27
- redeemScript: Buffer;
28
- witnessScript: Buffer;
29
- };
30
- private addVaultUTXO;
31
- private addVaultInputs;
32
- private calculateOutputLeftAmountFromVaults;
33
- private getVaultTotalOutputAmount;
34
- }
@@ -1,184 +0,0 @@
1
- import { TransactionType } from '../enums/TransactionType.js';
2
- import { SharedInteractionTransaction } from './SharedInteractionTransaction.js';
3
- import { TransactionBuilder } from './TransactionBuilder.js';
4
- import { ABICoder, BinaryWriter } from '@btc-vision/bsi-binary';
5
- import { wBTC } from '../../metadata/contracts/wBTC.js';
6
- import { payments } from 'bitcoinjs-lib';
7
- import { EcKeyPair } from '../../keypair/EcKeyPair.js';
8
- import { PsbtTransaction } from '../processor/PsbtTransaction.js';
9
- const abiCoder = new ABICoder();
10
- export class UnwrapTransaction extends SharedInteractionTransaction {
11
- static MINIMUM_CONSOLIDATION_AMOUNT = 200000n;
12
- static UNWRAP_SELECTOR = Number('0x' + abiCoder.encodeSelector('burn'));
13
- type = TransactionType.WBTC_UNWRAP;
14
- amount;
15
- compiledTargetScript;
16
- scriptTree;
17
- sighashTypes = [];
18
- contractSecret;
19
- vaultUTXOs;
20
- wbtc;
21
- calculatedSignHash = PsbtTransaction.calculateSignHash(this.sighashTypes);
22
- constructor(parameters) {
23
- if (parameters.amount < TransactionBuilder.MINIMUM_DUST) {
24
- throw new Error('Amount is below dust limit');
25
- }
26
- parameters.disableAutoRefund = true;
27
- parameters.calldata = UnwrapTransaction.generateBurnCalldata(parameters.amount);
28
- super(parameters);
29
- this.wbtc = new wBTC(parameters.network);
30
- this.to = this.wbtc.getAddress();
31
- this.vaultUTXOs = parameters.unwrapUTXOs;
32
- this.amount = parameters.amount;
33
- this.contractSecret = this.generateSecret();
34
- this.compiledTargetScript = this.calldataGenerator.compile(this.calldata, this.contractSecret);
35
- this.scriptTree = this.getScriptTree();
36
- this.internalInit();
37
- }
38
- static generateBurnCalldata(amount) {
39
- if (!amount)
40
- throw new Error('Amount is required');
41
- const bufWriter = new BinaryWriter();
42
- bufWriter.writeSelector(UnwrapTransaction.UNWRAP_SELECTOR);
43
- bufWriter.writeU256(amount);
44
- return Buffer.from(bufWriter.getBuffer());
45
- }
46
- signPSBT() {
47
- if (this.to && !EcKeyPair.verifyContractAddress(this.to, this.network)) {
48
- throw new Error('Invalid contract address. The contract address must be a taproot address.');
49
- }
50
- if (!this.vaultUTXOs.length) {
51
- throw new Error('No vault UTXOs provided');
52
- }
53
- if (this.signed)
54
- throw new Error('Transaction is already signed');
55
- this.signed = true;
56
- this.buildTransaction();
57
- this.ignoreSignatureError();
58
- this.mergeVaults(this.vaultUTXOs);
59
- const builtTx = this.internalBuildTransaction(this.transaction);
60
- if (builtTx) {
61
- return this.transaction;
62
- }
63
- throw new Error('Could not sign transaction');
64
- }
65
- mergeVaults(input) {
66
- const firstVault = input[0];
67
- if (!firstVault) {
68
- throw new Error('No vaults provided');
69
- }
70
- const total = this.getVaultTotalOutputAmount(input);
71
- if (total < this.amount) {
72
- throw new Error(`Total vault amount (${total} sat) is less than the amount to unwrap (${this.amount} sat)`);
73
- }
74
- const outputLeftAmount = this.calculateOutputLeftAmountFromVaults(input);
75
- if (outputLeftAmount < UnwrapTransaction.MINIMUM_CONSOLIDATION_AMOUNT) {
76
- throw new Error(`Output left amount is below minimum consolidation (${UnwrapTransaction.MINIMUM_CONSOLIDATION_AMOUNT} sat) amount ${outputLeftAmount} for vault ${firstVault.vault}`);
77
- }
78
- this.addOutput({
79
- address: firstVault.vault,
80
- value: Number(outputLeftAmount),
81
- });
82
- this.addOutput({
83
- address: this.from,
84
- value: Number(this.amount),
85
- });
86
- for (const vault of input) {
87
- this.addVaultInputs(vault);
88
- }
89
- }
90
- internalBuildTransaction(transaction) {
91
- if (transaction.data.inputs.length === 0) {
92
- const inputs = this.getInputs();
93
- const outputs = this.getOutputs();
94
- transaction.setMaximumFeeRate(this._maximumFeeRate);
95
- transaction.addInputs(inputs);
96
- for (let i = 0; i < this.updateInputs.length; i++) {
97
- transaction.updateInput(i, this.updateInputs[i]);
98
- }
99
- transaction.addOutputs(outputs);
100
- }
101
- try {
102
- this.signInputs(transaction);
103
- if (this.finalized) {
104
- this.transactionFee = BigInt(transaction.getFee());
105
- }
106
- return true;
107
- }
108
- catch (e) {
109
- const err = e;
110
- this.error(`[internalBuildTransaction] Something went wrong while getting building the transaction: ${err.stack}`);
111
- }
112
- return false;
113
- }
114
- generateMultiSignRedeemScript(publicKeys, minimum) {
115
- const p2ms = payments.p2ms({
116
- m: minimum,
117
- pubkeys: publicKeys.map((key) => Buffer.from(key, 'base64')),
118
- network: this.network,
119
- });
120
- const p2wsh = payments.p2wsh({
121
- redeem: p2ms,
122
- network: this.network,
123
- });
124
- const witnessUtxo = p2wsh.output;
125
- const redeemScript = p2wsh.redeem?.output;
126
- const witnessScript = p2ms.output;
127
- if (!witnessUtxo || !redeemScript || !witnessScript) {
128
- throw new Error('Failed to generate redeem script');
129
- }
130
- return {
131
- witnessUtxo,
132
- redeemScript,
133
- witnessScript,
134
- };
135
- }
136
- addVaultUTXO(utxo, witness) {
137
- const input = {
138
- hash: utxo.hash,
139
- index: utxo.outputIndex,
140
- witnessUtxo: {
141
- script: Buffer.from(utxo.output, 'base64'),
142
- value: Number(utxo.value),
143
- },
144
- witnessScript: witness.witnessScript,
145
- sequence: this.sequence,
146
- };
147
- if (this.calculatedSignHash) {
148
- input.sighashType = this.calculatedSignHash;
149
- }
150
- this.addInput(input);
151
- }
152
- addVaultInputs(vault, firstSigner = this.signer) {
153
- const p2wshOutput = this.generateMultiSignRedeemScript(vault.publicKeys, vault.minimum);
154
- for (const utxo of vault.utxos) {
155
- const inputIndex = this.transaction.inputCount;
156
- this.addVaultUTXO(utxo, p2wshOutput);
157
- if (firstSigner) {
158
- this.log(`Signing input ${inputIndex} with ${firstSigner.publicKey.toString('hex')}`);
159
- try {
160
- this.signInput(this.transaction, this.transaction.data.inputs[inputIndex], inputIndex, this.signer);
161
- this.log(`Signed input ${inputIndex} with ${firstSigner.publicKey.toString('hex')}`);
162
- }
163
- catch (e) {
164
- if (!this.ignoreSignatureErrors) {
165
- this.warn(`Failed to sign input ${inputIndex} with ${firstSigner.publicKey.toString('hex')} ${e.message}`);
166
- }
167
- }
168
- }
169
- }
170
- }
171
- calculateOutputLeftAmountFromVaults(vaults) {
172
- const total = this.getVaultTotalOutputAmount(vaults);
173
- return total - this.amount;
174
- }
175
- getVaultTotalOutputAmount(vaults) {
176
- let total = BigInt(0);
177
- for (const vault of vaults) {
178
- for (const utxo of vault.utxos) {
179
- total += BigInt(utxo.value);
180
- }
181
- }
182
- return total;
183
- }
184
- }
@@ -1,35 +0,0 @@
1
- /// <reference types="node" />
2
- import { Taptree } from 'bitcoinjs-lib/src/types.js';
3
- import { TransactionType } from '../enums/TransactionType.js';
4
- import { IUnwrapParameters } from '../interfaces/ITransactionParameters.js';
5
- import { SharedInteractionTransaction } from './SharedInteractionTransaction.js';
6
- import { Psbt } from 'bitcoinjs-lib';
7
- import { VaultUTXOs } from '../processor/PsbtTransaction.js';
8
- export declare class UnwrapTransaction extends SharedInteractionTransaction<TransactionType.WBTC_UNWRAP> {
9
- static readonly MINIMUM_CONSOLIDATION_AMOUNT: bigint;
10
- private static readonly UNWRAP_SELECTOR;
11
- type: TransactionType.WBTC_UNWRAP;
12
- readonly amount: bigint;
13
- protected readonly compiledTargetScript: Buffer;
14
- protected readonly scriptTree: Taptree;
15
- protected sighashTypes: number[];
16
- protected readonly contractSecret: Buffer;
17
- protected readonly vaultUTXOs: VaultUTXOs[];
18
- private readonly wbtc;
19
- private readonly calculatedSignHash;
20
- constructor(parameters: IUnwrapParameters);
21
- static generateBurnCalldata(amount: bigint): Buffer;
22
- signPSBT(): Psbt;
23
- mergeVaults(input: VaultUTXOs[]): void;
24
- estimateVaultFees(feeRate: bigint, numInputs: bigint, numOutputs: bigint, numSignatures: bigint, numPubkeys: bigint): bigint;
25
- protected internalBuildTransaction(transaction: Psbt): boolean;
26
- protected generateMultiSignRedeemScript(publicKeys: string[], minimum: number): {
27
- witnessUtxo: Buffer;
28
- redeemScript: Buffer;
29
- witnessScript: Buffer;
30
- };
31
- private addVaultUTXO;
32
- private addVaultInputs;
33
- private calculateOutputLeftAmountFromVaults;
34
- private getVaultTotalOutputAmount;
35
- }
@@ -1,199 +0,0 @@
1
- import { TransactionType } from '../enums/TransactionType.js';
2
- import { SharedInteractionTransaction } from './SharedInteractionTransaction.js';
3
- import { TransactionBuilder } from './TransactionBuilder.js';
4
- import { ABICoder, BinaryWriter } from '@btc-vision/bsi-binary';
5
- import { wBTC } from '../../metadata/contracts/wBTC.js';
6
- import { payments } from 'bitcoinjs-lib';
7
- import { EcKeyPair } from '../../keypair/EcKeyPair.js';
8
- import { PsbtTransaction } from '../processor/PsbtTransaction.js';
9
- const abiCoder = new ABICoder();
10
- export class UnwrapTransaction extends SharedInteractionTransaction {
11
- static MINIMUM_CONSOLIDATION_AMOUNT = 200000n;
12
- static UNWRAP_SELECTOR = Number('0x' + abiCoder.encodeSelector('burn'));
13
- type = TransactionType.WBTC_UNWRAP;
14
- amount;
15
- compiledTargetScript;
16
- scriptTree;
17
- sighashTypes = [];
18
- contractSecret;
19
- vaultUTXOs;
20
- wbtc;
21
- calculatedSignHash = PsbtTransaction.calculateSignHash(this.sighashTypes);
22
- constructor(parameters) {
23
- if (parameters.amount < TransactionBuilder.MINIMUM_DUST) {
24
- throw new Error('Amount is below dust limit');
25
- }
26
- parameters.disableAutoRefund = true;
27
- parameters.calldata = UnwrapTransaction.generateBurnCalldata(parameters.amount);
28
- super(parameters);
29
- this.wbtc = new wBTC(parameters.network);
30
- this.to = this.wbtc.getAddress();
31
- this.vaultUTXOs = parameters.unwrapUTXOs;
32
- this.amount = parameters.amount;
33
- this.contractSecret = this.generateSecret();
34
- this.compiledTargetScript = this.calldataGenerator.compile(this.calldata, this.contractSecret);
35
- this.scriptTree = this.getScriptTree();
36
- this.internalInit();
37
- }
38
- static generateBurnCalldata(amount) {
39
- if (!amount)
40
- throw new Error('Amount is required');
41
- const bufWriter = new BinaryWriter();
42
- bufWriter.writeSelector(UnwrapTransaction.UNWRAP_SELECTOR);
43
- bufWriter.writeU256(amount);
44
- return Buffer.from(bufWriter.getBuffer());
45
- }
46
- signPSBT() {
47
- if (this.to && !EcKeyPair.verifyContractAddress(this.to, this.network)) {
48
- throw new Error('Invalid contract address. The contract address must be a taproot address.');
49
- }
50
- if (!this.vaultUTXOs.length) {
51
- throw new Error('No vault UTXOs provided');
52
- }
53
- if (this.signed)
54
- throw new Error('Transaction is already signed');
55
- this.signed = true;
56
- this.buildTransaction();
57
- this.ignoreSignatureError();
58
- this.mergeVaults(this.vaultUTXOs);
59
- const builtTx = this.internalBuildTransaction(this.transaction);
60
- if (builtTx) {
61
- return this.transaction;
62
- }
63
- throw new Error('Could not sign transaction');
64
- }
65
- mergeVaults(input) {
66
- const firstVault = input[0];
67
- if (!firstVault) {
68
- throw new Error('No vaults provided');
69
- }
70
- const total = this.getVaultTotalOutputAmount(input);
71
- if (total < this.amount) {
72
- throw new Error(`Total vault amount (${total} sat) is less than the amount to unwrap (${this.amount} sat)`);
73
- }
74
- const outputLeftAmount = this.calculateOutputLeftAmountFromVaults(input);
75
- console.log('outputLeftAmount', outputLeftAmount, this.amount);
76
- if (outputLeftAmount < UnwrapTransaction.MINIMUM_CONSOLIDATION_AMOUNT) {
77
- throw new Error(`Output left amount is below minimum consolidation (${UnwrapTransaction.MINIMUM_CONSOLIDATION_AMOUNT} sat) amount ${outputLeftAmount} for vault ${firstVault.vault}`);
78
- }
79
- this.addOutput({
80
- address: firstVault.vault,
81
- value: Number(outputLeftAmount),
82
- });
83
- this.addOutput({
84
- address: this.from,
85
- value: Number(this.amount),
86
- });
87
- for (const vault of input) {
88
- this.addVaultInputs(vault);
89
- }
90
- }
91
- estimateVaultFees(feeRate, numInputs, numOutputs, numSignatures, numPubkeys) {
92
- const txHeaderSize = 10n;
93
- const inputBaseSize = 41n;
94
- const outputSize = 68n;
95
- const signatureSize = 144n;
96
- const pubkeySize = 34n;
97
- const baseTxSize = txHeaderSize + inputBaseSize * numInputs + outputSize * numOutputs;
98
- const redeemScriptSize = 1n + numPubkeys * (1n + pubkeySize) + 1n + numSignatures;
99
- const witnessSize = numSignatures * signatureSize + numPubkeys * pubkeySize + redeemScriptSize;
100
- const weight = baseTxSize * 3n + (baseTxSize + witnessSize);
101
- const vSize = weight / 4n;
102
- return vSize * feeRate;
103
- }
104
- internalBuildTransaction(transaction) {
105
- if (transaction.data.inputs.length === 0) {
106
- const inputs = this.getInputs();
107
- const outputs = this.getOutputs();
108
- transaction.setMaximumFeeRate(this._maximumFeeRate);
109
- transaction.addInputs(inputs);
110
- for (let i = 0; i < this.updateInputs.length; i++) {
111
- transaction.updateInput(i, this.updateInputs[i]);
112
- }
113
- transaction.addOutputs(outputs);
114
- }
115
- try {
116
- this.signInputs(transaction);
117
- if (this.finalized) {
118
- this.transactionFee = BigInt(transaction.getFee());
119
- }
120
- return true;
121
- }
122
- catch (e) {
123
- const err = e;
124
- this.error(`[internalBuildTransaction] Something went wrong while getting building the transaction: ${err.stack}`);
125
- }
126
- return false;
127
- }
128
- generateMultiSignRedeemScript(publicKeys, minimum) {
129
- const p2ms = payments.p2ms({
130
- m: minimum,
131
- pubkeys: publicKeys.map((key) => Buffer.from(key, 'base64')),
132
- network: this.network,
133
- });
134
- const p2wsh = payments.p2wsh({
135
- redeem: p2ms,
136
- network: this.network,
137
- });
138
- const witnessUtxo = p2wsh.output;
139
- const redeemScript = p2wsh.redeem?.output;
140
- const witnessScript = p2ms.output;
141
- if (!witnessUtxo || !redeemScript || !witnessScript) {
142
- throw new Error('Failed to generate redeem script');
143
- }
144
- return {
145
- witnessUtxo,
146
- redeemScript,
147
- witnessScript,
148
- };
149
- }
150
- addVaultUTXO(utxo, witness) {
151
- console.log(Number(utxo.value), utxo.hash, utxo.outputIndex);
152
- const input = {
153
- hash: utxo.hash,
154
- index: utxo.outputIndex,
155
- witnessUtxo: {
156
- script: Buffer.from(utxo.output, 'base64'),
157
- value: Number(utxo.value),
158
- },
159
- witnessScript: witness.witnessScript,
160
- sequence: this.sequence,
161
- };
162
- if (this.calculatedSignHash) {
163
- input.sighashType = this.calculatedSignHash;
164
- }
165
- this.addInput(input);
166
- }
167
- addVaultInputs(vault, firstSigner = this.signer) {
168
- const p2wshOutput = this.generateMultiSignRedeemScript(vault.publicKeys, vault.minimum);
169
- for (const utxo of vault.utxos) {
170
- const inputIndex = this.transaction.inputCount;
171
- this.addVaultUTXO(utxo, p2wshOutput);
172
- if (firstSigner) {
173
- this.log(`Signing input ${inputIndex} with ${firstSigner.publicKey.toString('hex')}`);
174
- try {
175
- this.signInput(this.transaction, this.transaction.data.inputs[inputIndex], inputIndex, this.signer);
176
- this.log(`Signed input ${inputIndex} with ${firstSigner.publicKey.toString('hex')}`);
177
- }
178
- catch (e) {
179
- if (!this.ignoreSignatureErrors) {
180
- this.warn(`Failed to sign input ${inputIndex} with ${firstSigner.publicKey.toString('hex')} ${e.message}`);
181
- }
182
- }
183
- }
184
- }
185
- }
186
- calculateOutputLeftAmountFromVaults(vaults) {
187
- const total = this.getVaultTotalOutputAmount(vaults);
188
- return total - this.amount;
189
- }
190
- getVaultTotalOutputAmount(vaults) {
191
- let total = BigInt(0);
192
- for (const vault of vaults) {
193
- for (const utxo of vault.utxos) {
194
- total += BigInt(utxo.value);
195
- }
196
- }
197
- return total;
198
- }
199
- }
@@ -1,32 +0,0 @@
1
- /// <reference types="node" />
2
- import { Signer } from 'bitcoinjs-lib';
3
- import { UTXO } from '../../utxo/interfaces/IUTXO.js';
4
- import { ECPairInterface } from 'ecpair';
5
- import { Network } from 'bitcoinjs-lib/src/networks.js';
6
- export interface ITransactionParameters {
7
- readonly from: string;
8
- readonly utxos: UTXO[];
9
- readonly signer: ECPairInterface;
10
- readonly network: Network;
11
- readonly feeRate: number;
12
- readonly priorityFee: bigint;
13
- }
14
- export interface SewgitTransactionParameters extends ITransactionParameters {
15
- }
16
- export interface ITransactionDataContractInteraction extends ITransactionParameters {
17
- readonly contractSecret: Buffer;
18
- readonly calldata: Buffer;
19
- readonly customSigner: Signer;
20
- readonly pubKeys?: Buffer[];
21
- readonly minimumSignatures?: number;
22
- }
23
- export interface ITransactionDataContractInteractionWrap extends ITransactionDataContractInteraction {
24
- readonly amount: bigint;
25
- readonly minimumSignatures: number;
26
- readonly pubKeys: Buffer[];
27
- }
28
- export interface ITransactionDataContractDeployment extends ITransactionParameters {
29
- readonly bytecode: Buffer;
30
- readonly salt: Buffer;
31
- readonly customSigner: Signer;
32
- }
@@ -1 +0,0 @@
1
- export {};
File without changes
@@ -1 +0,0 @@
1
- "use strict";
@@ -1,7 +0,0 @@
1
- import { FetchUTXOParams, UTXO } from './interfaces/IUTXO.js';
2
- export declare class UTXOManager {
3
- private readonly opnetAPIUrl;
4
- private readonly utxoPath;
5
- constructor(opnetAPIUrl: string);
6
- fetchUTXO(settings: FetchUTXOParams): Promise<UTXO[]>;
7
- }
@@ -1,47 +0,0 @@
1
- export class UTXOManager {
2
- opnetAPIUrl;
3
- utxoPath = 'address/utxos';
4
- constructor(opnetAPIUrl) {
5
- this.opnetAPIUrl = opnetAPIUrl;
6
- }
7
- async fetchUTXO(settings) {
8
- const params = {
9
- method: 'GET',
10
- headers: {
11
- 'Content-Type': 'application/json',
12
- },
13
- };
14
- const url = `${this.opnetAPIUrl}/api/v1/${this.utxoPath}?address=${settings.address}`;
15
- const resp = await fetch(url, params);
16
- if (!resp.ok) {
17
- throw new Error(`Failed to fetch UTXO data: ${resp.statusText}`);
18
- }
19
- const fetchedData = await resp.json();
20
- if (fetchedData.length === 0) {
21
- throw new Error('No UTXO found');
22
- }
23
- const meetCriteria = fetchedData.filter((utxo) => {
24
- return BigInt(utxo.value) >= settings.minAmount;
25
- });
26
- if (meetCriteria.length === 0) {
27
- throw new Error('No UTXO found (minAmount)');
28
- }
29
- let finalUTXOs = [];
30
- let currentAmount = 0n;
31
- const amountRequested = settings.requestedAmount;
32
- for (const utxo of meetCriteria) {
33
- const utxoValue = BigInt(utxo.value);
34
- currentAmount += utxoValue;
35
- finalUTXOs.push({
36
- transactionId: utxo.transactionId,
37
- outputIndex: utxo.outputIndex,
38
- value: utxoValue,
39
- scriptPubKey: utxo.scriptPubKey,
40
- });
41
- if (currentAmount + utxoValue > amountRequested) {
42
- break;
43
- }
44
- }
45
- return finalUTXOs;
46
- }
47
- }
@@ -1,7 +0,0 @@
1
- import { FetchUTXOParams, UTXO } from './interfaces/IUTXO.js';
2
- export declare class UTXOManager {
3
- private readonly opnetAPIUrl;
4
- private readonly utxoPath;
5
- constructor(opnetAPIUrl: string);
6
- fetchUTXO(settings: FetchUTXOParams): Promise<UTXO[]>;
7
- }
@@ -1,47 +0,0 @@
1
- export class UTXOManager {
2
- opnetAPIUrl;
3
- utxoPath = 'address/utxos';
4
- constructor(opnetAPIUrl) {
5
- this.opnetAPIUrl = opnetAPIUrl;
6
- }
7
- async fetchUTXO(settings) {
8
- const params = {
9
- method: 'GET',
10
- headers: {
11
- 'Content-Type': 'application/json',
12
- },
13
- };
14
- const url = `${this.opnetAPIUrl}/api/v1/${this.utxoPath}?address=${settings.address}`;
15
- const resp = await fetch(url, params);
16
- if (!resp.ok) {
17
- throw new Error(`Failed to fetch UTXO data: ${resp.statusText}`);
18
- }
19
- const fetchedData = await resp.json();
20
- if (fetchedData.length === 0) {
21
- throw new Error('No UTXO found');
22
- }
23
- const meetCriteria = fetchedData.filter((utxo) => {
24
- return BigInt(utxo.value) >= settings.minAmount;
25
- });
26
- if (meetCriteria.length === 0) {
27
- throw new Error('No UTXO found (minAmount)');
28
- }
29
- let finalUTXOs = [];
30
- let currentAmount = 0n;
31
- const amountRequested = settings.requestedAmount;
32
- for (const utxo of meetCriteria) {
33
- const utxoValue = BigInt(utxo.value);
34
- currentAmount += utxoValue;
35
- finalUTXOs.push({
36
- transactionId: utxo.transactionId,
37
- outputIndex: utxo.outputIndex,
38
- value: utxoValue,
39
- scriptPubKey: utxo.scriptPubKey,
40
- });
41
- if (currentAmount + utxoValue > amountRequested) {
42
- break;
43
- }
44
- }
45
- return finalUTXOs;
46
- }
47
- }
File without changes
@@ -1 +0,0 @@
1
- "use strict";