@atomicfinance/client 4.0.0 → 4.0.2

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 (429) hide show
  1. package/.turbo/turbo-lint.log +1 -0
  2. package/.yalc/@node-dlc/bitcoin/.nyc_output/982e80bf-a70c-452f-b63d-d749ae385531.json +1 -0
  3. package/.yalc/@node-dlc/bitcoin/.nyc_output/processinfo/982e80bf-a70c-452f-b63d-d749ae385531.json +1 -0
  4. package/.yalc/@node-dlc/bitcoin/.nyc_output/processinfo/index.json +1 -0
  5. package/.yalc/@node-dlc/bitcoin/README.md +11 -0
  6. package/.yalc/@node-dlc/bitcoin/__tests__/bitcoin/amount.spec.ts +330 -0
  7. package/.yalc/@node-dlc/bitcoin/__tests__/bitcoin/value.spec.ts +320 -0
  8. package/.yalc/@node-dlc/bitcoin/__tests__/tsconfig.json +8 -0
  9. package/.yalc/@node-dlc/bitcoin/coverage/lcov-report/Amount.ts.html +290 -0
  10. package/.yalc/@node-dlc/bitcoin/coverage/lcov-report/Base58.ts.html +269 -0
  11. package/.yalc/@node-dlc/bitcoin/coverage/lcov-report/Base58Check.ts.html +182 -0
  12. package/.yalc/@node-dlc/bitcoin/coverage/lcov-report/BitcoinError.ts.html +173 -0
  13. package/.yalc/@node-dlc/bitcoin/coverage/lcov-report/BitcoinErrorCode.ts.html +110 -0
  14. package/.yalc/@node-dlc/bitcoin/coverage/lcov-report/HashByteOrder.ts.html +143 -0
  15. package/.yalc/@node-dlc/bitcoin/coverage/lcov-report/HashValue.ts.html +350 -0
  16. package/.yalc/@node-dlc/bitcoin/coverage/lcov-report/LexicographicalSorters.ts.html +191 -0
  17. package/.yalc/@node-dlc/bitcoin/coverage/lcov-report/LockTime.ts.html +386 -0
  18. package/.yalc/@node-dlc/bitcoin/coverage/lcov-report/OpCodes.ts.html +437 -0
  19. package/.yalc/@node-dlc/bitcoin/coverage/lcov-report/OutPoint.ts.html +383 -0
  20. package/.yalc/@node-dlc/bitcoin/coverage/lcov-report/Script.ts.html +1607 -0
  21. package/.yalc/@node-dlc/bitcoin/coverage/lcov-report/Sequence.ts.html +713 -0
  22. package/.yalc/@node-dlc/bitcoin/coverage/lcov-report/SigHashType.ts.html +137 -0
  23. package/.yalc/@node-dlc/bitcoin/coverage/lcov-report/Stack.ts.html +323 -0
  24. package/.yalc/@node-dlc/bitcoin/coverage/lcov-report/TimeLockMode.ts.html +128 -0
  25. package/.yalc/@node-dlc/{messaging/coverage/lcov-report/lib/serde/SerdeUtils.ts.html → bitcoin/coverage/lcov-report/Tx.ts.html} +617 -491
  26. package/.yalc/@node-dlc/bitcoin/coverage/lcov-report/TxBuilder.ts.html +971 -0
  27. package/.yalc/@node-dlc/bitcoin/coverage/lcov-report/TxIn.ts.html +425 -0
  28. package/.yalc/@node-dlc/bitcoin/coverage/lcov-report/TxOut.ts.html +341 -0
  29. package/.yalc/@node-dlc/bitcoin/coverage/lcov-report/Value.ts.html +683 -0
  30. package/.yalc/@node-dlc/bitcoin/coverage/lcov-report/Wif.ts.html +311 -0
  31. package/.yalc/@node-dlc/bitcoin/coverage/lcov-report/Witness.ts.html +275 -0
  32. package/.yalc/@node-dlc/bitcoin/coverage/lcov-report/base.css +224 -0
  33. package/.yalc/@node-dlc/bitcoin/coverage/lcov-report/block-navigation.js +79 -0
  34. package/.yalc/@node-dlc/bitcoin/coverage/lcov-report/favicon.png +0 -0
  35. package/.yalc/@node-dlc/{messaging/coverage/lcov-report/lib/serde → bitcoin/coverage/lcov-report}/index.html +45 -30
  36. package/.yalc/@node-dlc/bitcoin/coverage/lcov-report/index.ts.html +164 -0
  37. package/.yalc/@node-dlc/bitcoin/coverage/lcov-report/prettify.css +1 -0
  38. package/.yalc/@node-dlc/bitcoin/coverage/lcov-report/prettify.js +2 -0
  39. package/.yalc/@node-dlc/bitcoin/coverage/lcov-report/sort-arrow-sprite.png +0 -0
  40. package/.yalc/@node-dlc/bitcoin/coverage/lcov-report/sorter.js +170 -0
  41. package/.yalc/@node-dlc/bitcoin/coverage/lcov.info +123 -0
  42. package/.yalc/@node-dlc/bitcoin/dist/Amount.d.ts +48 -0
  43. package/.yalc/@node-dlc/bitcoin/dist/Amount.js +68 -0
  44. package/.yalc/@node-dlc/bitcoin/dist/Amount.js.map +1 -0
  45. package/.yalc/@node-dlc/bitcoin/dist/Base58.d.ts +22 -0
  46. package/.yalc/@node-dlc/bitcoin/dist/Base58.js +62 -0
  47. package/.yalc/@node-dlc/bitcoin/dist/Base58.js.map +1 -0
  48. package/.yalc/@node-dlc/bitcoin/dist/Base58Check.d.ts +14 -0
  49. package/.yalc/@node-dlc/bitcoin/dist/Base58Check.js +36 -0
  50. package/.yalc/@node-dlc/bitcoin/dist/Base58Check.js.map +1 -0
  51. package/.yalc/@node-dlc/bitcoin/dist/BitcoinError.d.ts +6 -0
  52. package/.yalc/@node-dlc/bitcoin/dist/BitcoinError.js +36 -0
  53. package/.yalc/@node-dlc/bitcoin/dist/BitcoinError.js.map +1 -0
  54. package/.yalc/@node-dlc/bitcoin/dist/BitcoinErrorCode.d.ts +10 -0
  55. package/.yalc/@node-dlc/bitcoin/dist/BitcoinErrorCode.js +15 -0
  56. package/.yalc/@node-dlc/bitcoin/dist/BitcoinErrorCode.js.map +1 -0
  57. package/.yalc/@node-dlc/bitcoin/dist/Block.d.ts +19 -0
  58. package/.yalc/@node-dlc/bitcoin/dist/Block.js +3 -0
  59. package/.yalc/@node-dlc/bitcoin/dist/Block.js.map +1 -0
  60. package/.yalc/@node-dlc/bitcoin/dist/HashByteOrder.d.ts +20 -0
  61. package/.yalc/@node-dlc/bitcoin/dist/HashByteOrder.js +25 -0
  62. package/.yalc/@node-dlc/bitcoin/dist/HashByteOrder.js.map +1 -0
  63. package/.yalc/@node-dlc/bitcoin/dist/HashValue.d.ts +55 -0
  64. package/.yalc/@node-dlc/bitcoin/dist/HashValue.js +82 -0
  65. package/.yalc/@node-dlc/bitcoin/dist/HashValue.js.map +1 -0
  66. package/.yalc/@node-dlc/bitcoin/dist/ICloneable.d.ts +3 -0
  67. package/.yalc/@node-dlc/bitcoin/dist/ICloneable.js +3 -0
  68. package/.yalc/@node-dlc/bitcoin/dist/ICloneable.js.map +1 -0
  69. package/.yalc/@node-dlc/bitcoin/dist/LexicographicalSorters.d.ts +18 -0
  70. package/.yalc/@node-dlc/bitcoin/dist/LexicographicalSorters.js +41 -0
  71. package/.yalc/@node-dlc/bitcoin/dist/LexicographicalSorters.js.map +1 -0
  72. package/.yalc/@node-dlc/bitcoin/dist/LockTime.d.ts +61 -0
  73. package/.yalc/@node-dlc/bitcoin/dist/LockTime.js +94 -0
  74. package/.yalc/@node-dlc/bitcoin/dist/LockTime.js.map +1 -0
  75. package/.yalc/@node-dlc/bitcoin/dist/OpCodes.d.ts +102 -0
  76. package/.yalc/@node-dlc/bitcoin/dist/OpCodes.js +116 -0
  77. package/.yalc/@node-dlc/bitcoin/dist/OpCodes.js.map +1 -0
  78. package/.yalc/@node-dlc/bitcoin/dist/OutPoint.d.ts +57 -0
  79. package/.yalc/@node-dlc/bitcoin/dist/OutPoint.js +88 -0
  80. package/.yalc/@node-dlc/bitcoin/dist/OutPoint.js.map +1 -0
  81. package/.yalc/@node-dlc/bitcoin/dist/Script.d.ts +185 -0
  82. package/.yalc/@node-dlc/bitcoin/dist/Script.js +404 -0
  83. package/.yalc/@node-dlc/bitcoin/dist/Script.js.map +1 -0
  84. package/.yalc/@node-dlc/bitcoin/dist/ScriptCmd.d.ts +3 -0
  85. package/.yalc/@node-dlc/bitcoin/dist/ScriptCmd.js +3 -0
  86. package/.yalc/@node-dlc/bitcoin/dist/ScriptCmd.js.map +1 -0
  87. package/.yalc/@node-dlc/bitcoin/dist/Sequence.d.ts +116 -0
  88. package/.yalc/@node-dlc/bitcoin/dist/Sequence.js +187 -0
  89. package/.yalc/@node-dlc/bitcoin/dist/Sequence.js.map +1 -0
  90. package/.yalc/@node-dlc/bitcoin/dist/SigHashType.d.ts +7 -0
  91. package/.yalc/@node-dlc/bitcoin/dist/SigHashType.js +27 -0
  92. package/.yalc/@node-dlc/bitcoin/dist/SigHashType.js.map +1 -0
  93. package/.yalc/@node-dlc/bitcoin/dist/SizeResult.d.ts +5 -0
  94. package/.yalc/@node-dlc/bitcoin/dist/SizeResult.js +3 -0
  95. package/.yalc/@node-dlc/bitcoin/dist/SizeResult.js.map +1 -0
  96. package/.yalc/@node-dlc/bitcoin/dist/Sorter.d.ts +1 -0
  97. package/.yalc/@node-dlc/bitcoin/dist/Sorter.js +3 -0
  98. package/.yalc/@node-dlc/bitcoin/dist/Sorter.js.map +1 -0
  99. package/.yalc/@node-dlc/bitcoin/dist/Stack.d.ts +15 -0
  100. package/.yalc/@node-dlc/bitcoin/dist/Stack.js +77 -0
  101. package/.yalc/@node-dlc/bitcoin/dist/Stack.js.map +1 -0
  102. package/.yalc/@node-dlc/bitcoin/dist/TimeLockMode.d.ts +15 -0
  103. package/.yalc/@node-dlc/bitcoin/dist/TimeLockMode.js +20 -0
  104. package/.yalc/@node-dlc/bitcoin/dist/TimeLockMode.js.map +1 -0
  105. package/.yalc/@node-dlc/bitcoin/dist/Tx.d.ts +150 -0
  106. package/.yalc/@node-dlc/bitcoin/dist/Tx.js +408 -0
  107. package/.yalc/@node-dlc/bitcoin/dist/Tx.js.map +1 -0
  108. package/.yalc/@node-dlc/bitcoin/dist/TxBuilder.d.ts +110 -0
  109. package/.yalc/@node-dlc/bitcoin/dist/TxBuilder.js +238 -0
  110. package/.yalc/@node-dlc/bitcoin/dist/TxBuilder.js.map +1 -0
  111. package/.yalc/@node-dlc/bitcoin/dist/TxIn.d.ts +71 -0
  112. package/.yalc/@node-dlc/bitcoin/dist/TxIn.js +79 -0
  113. package/.yalc/@node-dlc/bitcoin/dist/TxIn.js.map +1 -0
  114. package/.yalc/@node-dlc/bitcoin/dist/TxOut.d.ts +57 -0
  115. package/.yalc/@node-dlc/bitcoin/dist/TxOut.js +68 -0
  116. package/.yalc/@node-dlc/bitcoin/dist/TxOut.js.map +1 -0
  117. package/.yalc/@node-dlc/bitcoin/dist/Value.d.ts +122 -0
  118. package/.yalc/@node-dlc/bitcoin/dist/Value.js +180 -0
  119. package/.yalc/@node-dlc/bitcoin/dist/Value.js.map +1 -0
  120. package/.yalc/@node-dlc/bitcoin/dist/Wif.d.ts +41 -0
  121. package/.yalc/@node-dlc/bitcoin/dist/Wif.js +62 -0
  122. package/.yalc/@node-dlc/bitcoin/dist/Wif.js.map +1 -0
  123. package/.yalc/@node-dlc/bitcoin/dist/Witness.d.ts +41 -0
  124. package/.yalc/@node-dlc/bitcoin/dist/Witness.js +63 -0
  125. package/.yalc/@node-dlc/bitcoin/dist/Witness.js.map +1 -0
  126. package/.yalc/@node-dlc/bitcoin/dist/index.d.ts +28 -0
  127. package/.yalc/@node-dlc/bitcoin/dist/index.js +45 -0
  128. package/.yalc/@node-dlc/bitcoin/dist/index.js.map +1 -0
  129. package/.yalc/@node-dlc/bitcoin/lib/Amount.ts +70 -0
  130. package/.yalc/@node-dlc/bitcoin/lib/Base58.ts +63 -0
  131. package/.yalc/@node-dlc/bitcoin/lib/Base58Check.ts +34 -0
  132. package/.yalc/@node-dlc/bitcoin/lib/BitcoinError.ts +31 -0
  133. package/.yalc/@node-dlc/bitcoin/lib/BitcoinErrorCode.ts +10 -0
  134. package/.yalc/@node-dlc/bitcoin/lib/Block.ts +20 -0
  135. package/.yalc/@node-dlc/bitcoin/lib/HashByteOrder.ts +21 -0
  136. package/.yalc/@node-dlc/bitcoin/lib/HashValue.ts +90 -0
  137. package/.yalc/@node-dlc/bitcoin/lib/ICloneable.ts +3 -0
  138. package/.yalc/@node-dlc/bitcoin/lib/LexicographicalSorters.ts +37 -0
  139. package/.yalc/@node-dlc/bitcoin/lib/LockTime.ts +102 -0
  140. package/.yalc/@node-dlc/bitcoin/lib/OpCodes.ts +119 -0
  141. package/.yalc/@node-dlc/bitcoin/lib/OutPoint.ts +101 -0
  142. package/.yalc/@node-dlc/bitcoin/lib/Script.ts +509 -0
  143. package/.yalc/@node-dlc/bitcoin/lib/ScriptCmd.ts +3 -0
  144. package/.yalc/@node-dlc/bitcoin/lib/Sequence.ts +211 -0
  145. package/.yalc/@node-dlc/bitcoin/lib/SigHashType.ts +19 -0
  146. package/.yalc/@node-dlc/bitcoin/lib/SizeResult.ts +5 -0
  147. package/.yalc/@node-dlc/bitcoin/lib/Sorter.ts +1 -0
  148. package/.yalc/@node-dlc/bitcoin/lib/Stack.ts +81 -0
  149. package/.yalc/@node-dlc/bitcoin/lib/TimeLockMode.ts +16 -0
  150. package/.yalc/@node-dlc/bitcoin/lib/Tx.ts +480 -0
  151. package/.yalc/@node-dlc/bitcoin/lib/TxBuilder.ts +297 -0
  152. package/.yalc/@node-dlc/bitcoin/lib/TxIn.ts +115 -0
  153. package/.yalc/@node-dlc/bitcoin/lib/TxOut.ts +87 -0
  154. package/.yalc/@node-dlc/bitcoin/lib/Value.ts +201 -0
  155. package/.yalc/@node-dlc/bitcoin/lib/Wif.ts +77 -0
  156. package/.yalc/@node-dlc/bitcoin/lib/Witness.ts +65 -0
  157. package/.yalc/@node-dlc/bitcoin/lib/index.ts +28 -0
  158. package/.yalc/@node-dlc/bitcoin/package.json +31 -0
  159. package/.yalc/@node-dlc/bitcoin/tsconfig.json +8 -0
  160. package/.yalc/@node-dlc/bitcoin/yalc.sig +1 -0
  161. package/.yalc/@node-dlc/messaging/.nyc_output/83d37f9d-cecf-4c52-a753-115ff80bbca0.json +1 -0
  162. package/.yalc/@node-dlc/messaging/.nyc_output/processinfo/83d37f9d-cecf-4c52-a753-115ff80bbca0.json +1 -0
  163. package/.yalc/@node-dlc/messaging/.nyc_output/processinfo/index.json +1 -1
  164. package/.yalc/@node-dlc/messaging/__tests__/_test-utils.ts +1 -0
  165. package/.yalc/@node-dlc/messaging/__tests__/compatibility/dlcspecs-compatibility.spec.ts +13 -47
  166. package/.yalc/@node-dlc/messaging/__tests__/compatibility/rust-dlc-cross-language.spec.ts +166 -253
  167. package/.yalc/@node-dlc/messaging/__tests__/compatibility/true-serialization-compatibility.spec.ts +214 -483
  168. package/.yalc/@node-dlc/messaging/__tests__/messages/ContractDescriptor.spec.ts +3 -1
  169. package/.yalc/@node-dlc/messaging/__tests__/messages/ContractInfo.spec.ts +1 -1
  170. package/.yalc/@node-dlc/messaging/__tests__/messages/DlcAccept.spec.ts +72 -0
  171. package/.yalc/@node-dlc/messaging/__tests__/messages/DlcInput.spec.ts +111 -0
  172. package/.yalc/@node-dlc/messaging/__tests__/messages/DlcOffer.spec.ts +99 -37
  173. package/.yalc/@node-dlc/messaging/__tests__/messages/FundingInput.spec.ts +148 -63
  174. package/.yalc/@node-dlc/messaging/__tests__/messages/OracleAttestation.spec.ts +2 -4
  175. package/.yalc/@node-dlc/messaging/__tests__/messages/OrderAccept.spec.ts +7 -9
  176. package/.yalc/@node-dlc/messaging/__tests__/messages/OrderNegotiationFields.spec.ts +135 -52
  177. package/.yalc/@node-dlc/messaging/__tests__/messages/OrderPositionInfo.spec.ts +6 -6
  178. package/.yalc/@node-dlc/messaging/__tests__/messages/PayoutCurvePiece.spec.ts +1 -1
  179. package/.yalc/@node-dlc/messaging/__tests__/messages/PayoutFunction.spec.ts +1 -1
  180. package/.yalc/@node-dlc/messaging/__tests__/serialize/F64.spec.ts +1 -0
  181. package/.yalc/@node-dlc/messaging/coverage/lcov-report/index.html +31 -31
  182. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/MessageType.ts.html +11 -5
  183. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/chain/ChainManager.ts.html +6 -3
  184. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/chain/ChainMemoryStore.ts.html +1 -1
  185. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/chain/index.html +1 -1
  186. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/domain/Address.ts.html +1 -1
  187. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/domain/index.html +1 -1
  188. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/index.html +9 -9
  189. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/index.ts.html +11 -8
  190. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/irc/IrcMessage.ts.html +1 -1
  191. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/irc/index.html +1 -1
  192. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/AddressCache.ts.html +1 -1
  193. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/BatchFundingGroup.ts.html +1 -1
  194. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/CetAdaptorSignatures.ts.html +22 -22
  195. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/CetAdaptorSignaturesV0.ts.html +46 -37
  196. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/CloseTLV.ts.html +344 -0
  197. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/ContractDescriptor.ts.html +61 -70
  198. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/ContractInfo.ts.html +59 -44
  199. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/DlcAccept.ts.html +251 -119
  200. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/DlcCancel.ts.html +1 -1
  201. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/DlcClose.ts.html +12 -3
  202. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/DlcCloseMetadata.ts.html +2 -11
  203. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/DlcIds.ts.html +1 -1
  204. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/DlcInfo.ts.html +1 -1
  205. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/DlcInput.ts.html +581 -0
  206. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/DlcMessage.ts.html +1 -1
  207. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/DlcOffer.ts.html +307 -127
  208. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/DlcSign.ts.html +61 -46
  209. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/DlcTransactions.ts.html +1 -1
  210. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/EventDescriptor.ts.html +67 -52
  211. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/FundingInput.ts.html +202 -70
  212. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/FundingSignatures.ts.html +15 -15
  213. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/FundingSignaturesV0.ts.html +47 -77
  214. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/NegotiationFields.ts.html +16 -4
  215. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/NodeAnnouncementMessage.ts.html +3 -3
  216. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/OracleAnnouncement.ts.html +22 -22
  217. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/OracleAnnouncementV0.ts.html +48 -270
  218. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/OracleAttestation.ts.html +1 -1
  219. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/OracleAttestationV0.ts.html +113 -404
  220. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/OracleEvent.ts.html +49 -49
  221. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/OracleEventContainer.ts.html +1 -1
  222. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/OracleEventContainerV0.ts.html +22 -22
  223. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/OracleEventV0.ts.html +61 -385
  224. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/OracleIdentifier.ts.html +1 -1
  225. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/OracleIdentifierV0.ts.html +1 -1
  226. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/OracleInfo.ts.html +46 -25
  227. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/OracleInfoV0.ts.html +55 -1378
  228. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/OrderAccept.ts.html +68 -23
  229. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/OrderIrcInfo.ts.html +1 -1
  230. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/OrderMetadata.ts.html +1 -1
  231. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/OrderNegotiationFields.ts.html +266 -107
  232. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/OrderOffer.ts.html +31 -34
  233. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/OrderPositionInfo.ts.html +19 -88
  234. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/PayoutCurvePiece.ts.html +36 -21
  235. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/PayoutFunction.ts.html +34 -28
  236. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/RoundingIntervals.ts.html +18 -15
  237. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/RoundingIntervalsV0.ts.html +75 -129
  238. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/ScriptWitnessV0.ts.html +6 -6
  239. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/index.html +84 -69
  240. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/serialize/F64.ts.html +8 -53
  241. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/serialize/deserializeTlv.ts.html +1 -1
  242. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/serialize/getTlv.ts.html +9 -9
  243. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/serialize/index.html +15 -15
  244. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/util.ts.html +22 -10
  245. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/validation/index.html +1 -1
  246. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/validation/validate.ts.html +1 -1
  247. package/.yalc/@node-dlc/messaging/coverage/lcov.info +3049 -2826
  248. package/.yalc/@node-dlc/messaging/dist/MessageType.d.ts +2 -1
  249. package/.yalc/@node-dlc/messaging/dist/MessageType.js +2 -1
  250. package/.yalc/@node-dlc/messaging/dist/MessageType.js.map +1 -1
  251. package/.yalc/@node-dlc/messaging/dist/chain/ChainManager.js +1 -0
  252. package/.yalc/@node-dlc/messaging/dist/chain/ChainManager.js.map +1 -1
  253. package/.yalc/@node-dlc/messaging/dist/index.d.ts +5 -4
  254. package/.yalc/@node-dlc/messaging/dist/index.js +5 -4
  255. package/.yalc/@node-dlc/messaging/dist/index.js.map +1 -1
  256. package/.yalc/@node-dlc/messaging/dist/messages/CetAdaptorSignaturesV0.d.ts +42 -0
  257. package/.yalc/@node-dlc/messaging/dist/messages/CetAdaptorSignaturesV0.js +68 -0
  258. package/.yalc/@node-dlc/messaging/dist/messages/CetAdaptorSignaturesV0.js.map +1 -0
  259. package/.yalc/@node-dlc/messaging/dist/messages/CloseTLV.d.ts +38 -0
  260. package/.yalc/@node-dlc/messaging/dist/messages/CloseTLV.js +59 -0
  261. package/.yalc/@node-dlc/messaging/dist/messages/CloseTLV.js.map +1 -0
  262. package/.yalc/@node-dlc/messaging/dist/messages/ContractDescriptor.d.ts +11 -12
  263. package/.yalc/@node-dlc/messaging/dist/messages/ContractDescriptor.js +0 -1
  264. package/.yalc/@node-dlc/messaging/dist/messages/ContractDescriptor.js.map +1 -1
  265. package/.yalc/@node-dlc/messaging/dist/messages/ContractInfo.d.ts +10 -10
  266. package/.yalc/@node-dlc/messaging/dist/messages/ContractInfo.js +5 -1
  267. package/.yalc/@node-dlc/messaging/dist/messages/ContractInfo.js.map +1 -1
  268. package/.yalc/@node-dlc/messaging/dist/messages/DlcAccept.d.ts +15 -0
  269. package/.yalc/@node-dlc/messaging/dist/messages/DlcAccept.js +46 -5
  270. package/.yalc/@node-dlc/messaging/dist/messages/DlcAccept.js.map +1 -1
  271. package/.yalc/@node-dlc/messaging/dist/messages/DlcClose.js +6 -2
  272. package/.yalc/@node-dlc/messaging/dist/messages/DlcClose.js.map +1 -1
  273. package/.yalc/@node-dlc/messaging/dist/messages/DlcCloseMetadata.js.map +1 -1
  274. package/.yalc/@node-dlc/messaging/dist/messages/DlcInput.d.ts +56 -0
  275. package/.yalc/@node-dlc/messaging/dist/messages/DlcInput.js +135 -0
  276. package/.yalc/@node-dlc/messaging/dist/messages/DlcInput.js.map +1 -0
  277. package/.yalc/@node-dlc/messaging/dist/messages/DlcOffer.d.ts +16 -1
  278. package/.yalc/@node-dlc/messaging/dist/messages/DlcOffer.js +50 -5
  279. package/.yalc/@node-dlc/messaging/dist/messages/DlcOffer.js.map +1 -1
  280. package/.yalc/@node-dlc/messaging/dist/messages/DlcSign.js +11 -3
  281. package/.yalc/@node-dlc/messaging/dist/messages/DlcSign.js.map +1 -1
  282. package/.yalc/@node-dlc/messaging/dist/messages/EventDescriptor.d.ts +7 -6
  283. package/.yalc/@node-dlc/messaging/dist/messages/EventDescriptor.js +3 -0
  284. package/.yalc/@node-dlc/messaging/dist/messages/EventDescriptor.js.map +1 -1
  285. package/.yalc/@node-dlc/messaging/dist/messages/FundingInput.d.ts +7 -0
  286. package/.yalc/@node-dlc/messaging/dist/messages/FundingInput.js +31 -1
  287. package/.yalc/@node-dlc/messaging/dist/messages/FundingInput.js.map +1 -1
  288. package/.yalc/@node-dlc/messaging/dist/messages/FundingSignaturesV0.d.ts +34 -0
  289. package/.yalc/@node-dlc/messaging/dist/messages/FundingSignaturesV0.js +72 -0
  290. package/.yalc/@node-dlc/messaging/dist/messages/FundingSignaturesV0.js.map +1 -0
  291. package/.yalc/@node-dlc/messaging/dist/messages/NegotiationFields.d.ts +2 -2
  292. package/.yalc/@node-dlc/messaging/dist/messages/NegotiationFields.js +4 -0
  293. package/.yalc/@node-dlc/messaging/dist/messages/NegotiationFields.js.map +1 -1
  294. package/.yalc/@node-dlc/messaging/dist/messages/OracleAnnouncementV0.d.ts +47 -0
  295. package/.yalc/@node-dlc/messaging/dist/messages/OracleAnnouncementV0.js +76 -0
  296. package/.yalc/@node-dlc/messaging/dist/messages/OracleAnnouncementV0.js.map +1 -0
  297. package/.yalc/@node-dlc/messaging/dist/messages/OracleAttestationV0.d.ts +48 -0
  298. package/.yalc/@node-dlc/messaging/dist/messages/OracleAttestationV0.js +100 -0
  299. package/.yalc/@node-dlc/messaging/dist/messages/OracleAttestationV0.js.map +1 -0
  300. package/.yalc/@node-dlc/messaging/dist/messages/OracleEventContainerV0.d.ts +32 -0
  301. package/.yalc/@node-dlc/messaging/dist/messages/OracleEventContainerV0.js +67 -0
  302. package/.yalc/@node-dlc/messaging/dist/messages/OracleEventContainerV0.js.map +1 -0
  303. package/.yalc/@node-dlc/messaging/dist/messages/OracleEventV0.d.ts +54 -0
  304. package/.yalc/@node-dlc/messaging/dist/messages/OracleEventV0.js +100 -0
  305. package/.yalc/@node-dlc/messaging/dist/messages/OracleEventV0.js.map +1 -0
  306. package/.yalc/@node-dlc/messaging/dist/messages/OracleInfo.d.ts +8 -6
  307. package/.yalc/@node-dlc/messaging/dist/messages/OracleInfo.js +3 -0
  308. package/.yalc/@node-dlc/messaging/dist/messages/OracleInfo.js.map +1 -1
  309. package/.yalc/@node-dlc/messaging/dist/messages/OracleInfoV0.d.ts +15 -141
  310. package/.yalc/@node-dlc/messaging/dist/messages/OracleInfoV0.js +21 -350
  311. package/.yalc/@node-dlc/messaging/dist/messages/OracleInfoV0.js.map +1 -1
  312. package/.yalc/@node-dlc/messaging/dist/messages/OrderAccept.d.ts +3 -2
  313. package/.yalc/@node-dlc/messaging/dist/messages/OrderAccept.js +22 -7
  314. package/.yalc/@node-dlc/messaging/dist/messages/OrderAccept.js.map +1 -1
  315. package/.yalc/@node-dlc/messaging/dist/messages/OrderNegotiationFields.d.ts +48 -36
  316. package/.yalc/@node-dlc/messaging/dist/messages/OrderNegotiationFields.js +97 -50
  317. package/.yalc/@node-dlc/messaging/dist/messages/OrderNegotiationFields.js.map +1 -1
  318. package/.yalc/@node-dlc/messaging/dist/messages/OrderOffer.d.ts +1 -1
  319. package/.yalc/@node-dlc/messaging/dist/messages/OrderOffer.js +1 -1
  320. package/.yalc/@node-dlc/messaging/dist/messages/OrderOffer.js.map +1 -1
  321. package/.yalc/@node-dlc/messaging/dist/messages/OrderPositionInfo.d.ts +7 -13
  322. package/.yalc/@node-dlc/messaging/dist/messages/OrderPositionInfo.js +11 -25
  323. package/.yalc/@node-dlc/messaging/dist/messages/OrderPositionInfo.js.map +1 -1
  324. package/.yalc/@node-dlc/messaging/dist/messages/PayoutCurvePiece.js +5 -0
  325. package/.yalc/@node-dlc/messaging/dist/messages/PayoutCurvePiece.js.map +1 -1
  326. package/.yalc/@node-dlc/messaging/dist/messages/PayoutFunction.js +4 -1
  327. package/.yalc/@node-dlc/messaging/dist/messages/PayoutFunction.js.map +1 -1
  328. package/.yalc/@node-dlc/messaging/dist/messages/RoundingIntervals.js +1 -0
  329. package/.yalc/@node-dlc/messaging/dist/messages/RoundingIntervals.js.map +1 -1
  330. package/.yalc/@node-dlc/messaging/dist/messages/RoundingIntervalsV0.d.ts +47 -0
  331. package/.yalc/@node-dlc/messaging/dist/messages/RoundingIntervalsV0.js +86 -0
  332. package/.yalc/@node-dlc/messaging/dist/messages/RoundingIntervalsV0.js.map +1 -0
  333. package/.yalc/@node-dlc/messaging/dist/serialize/F64.d.ts +0 -8
  334. package/.yalc/@node-dlc/messaging/dist/serialize/F64.js +0 -13
  335. package/.yalc/@node-dlc/messaging/dist/serialize/F64.js.map +1 -1
  336. package/.yalc/@node-dlc/messaging/dist/util.d.ts +1 -1
  337. package/.yalc/@node-dlc/messaging/dist/util.js +2 -0
  338. package/.yalc/@node-dlc/messaging/dist/util.js.map +1 -1
  339. package/.yalc/@node-dlc/messaging/lib/MessageType.ts +3 -1
  340. package/.yalc/@node-dlc/messaging/lib/chain/ChainManager.ts +1 -0
  341. package/.yalc/@node-dlc/messaging/lib/index.ts +5 -4
  342. package/.yalc/@node-dlc/messaging/lib/messages/ContractDescriptor.ts +15 -16
  343. package/.yalc/@node-dlc/messaging/lib/messages/ContractInfo.ts +17 -12
  344. package/.yalc/@node-dlc/messaging/lib/messages/DlcAccept.ts +50 -6
  345. package/.yalc/@node-dlc/messaging/lib/messages/DlcClose.ts +4 -1
  346. package/.yalc/@node-dlc/messaging/lib/messages/DlcCloseMetadata.ts +0 -3
  347. package/.yalc/@node-dlc/messaging/lib/messages/DlcInput.ts +167 -0
  348. package/.yalc/@node-dlc/messaging/lib/messages/DlcOffer.ts +67 -7
  349. package/.yalc/@node-dlc/messaging/lib/messages/DlcSign.ts +5 -0
  350. package/.yalc/@node-dlc/messaging/lib/messages/EventDescriptor.ts +12 -7
  351. package/.yalc/@node-dlc/messaging/lib/messages/FundingInput.ts +45 -1
  352. package/.yalc/@node-dlc/messaging/lib/messages/NegotiationFields.ts +6 -2
  353. package/.yalc/@node-dlc/messaging/lib/messages/NodeAnnouncementMessage.ts +2 -2
  354. package/.yalc/@node-dlc/messaging/lib/messages/OracleInfo.ts +15 -8
  355. package/.yalc/@node-dlc/messaging/lib/messages/OrderAccept.ts +28 -13
  356. package/.yalc/@node-dlc/messaging/lib/messages/OrderNegotiationFields.ts +127 -74
  357. package/.yalc/@node-dlc/messaging/lib/messages/OrderOffer.ts +2 -3
  358. package/.yalc/@node-dlc/messaging/lib/messages/OrderPositionInfo.ts +10 -33
  359. package/.yalc/@node-dlc/messaging/lib/messages/PayoutCurvePiece.ts +5 -0
  360. package/.yalc/@node-dlc/messaging/lib/messages/PayoutFunction.ts +2 -0
  361. package/.yalc/@node-dlc/messaging/lib/messages/RoundingIntervals.ts +1 -0
  362. package/.yalc/@node-dlc/messaging/lib/serialize/F64.ts +0 -15
  363. package/.yalc/@node-dlc/messaging/lib/serialize/readTlvs.ts +1 -1
  364. package/.yalc/@node-dlc/messaging/lib/util.ts +5 -1
  365. package/.yalc/@node-dlc/messaging/package.json +8 -8
  366. package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs/enum_3_of_3_test.json +76 -74
  367. package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs/enum_3_of_5_test.json +90 -88
  368. package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs/enum_and_numerical_3_of_5_test.json +162 -160
  369. package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs/enum_and_numerical_5_of_5_test.json +162 -160
  370. package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs/enum_and_numerical_with_diff_3_of_5_test.json +164 -162
  371. package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs/enum_and_numerical_with_diff_5_of_5_test.json +164 -162
  372. package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs/enum_single_oracle_test.json +60 -58
  373. package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs/single_oracle_numerical_hyperbola_test.json +71 -69
  374. package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs/single_oracle_numerical_test.json +71 -69
  375. package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs/three_of_five_oracle_numerical_with_diff_test.json +119 -117
  376. package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs/three_of_three_oracle_numerical_test.json +95 -93
  377. package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs/three_of_three_oracle_numerical_with_diff_test.json +97 -95
  378. package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs/two_of_five_oracle_numerical_test.json +117 -115
  379. package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs/two_of_five_oracle_numerical_with_diff_test.json +119 -117
  380. package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs_backup_20250718_132453/enum_3_of_3_test.json +210 -0
  381. package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs_backup_20250718_132453/enum_3_of_5_test.json +468 -0
  382. package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs_backup_20250718_132453/enum_and_numerical_3_of_5_test.json +1517 -0
  383. package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs_backup_20250718_132453/enum_and_numerical_5_of_5_test.json +545 -0
  384. package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs_backup_20250718_132453/enum_and_numerical_with_diff_3_of_5_test.json +4761 -0
  385. package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs_backup_20250718_132453/enum_and_numerical_with_diff_5_of_5_test.json +2169 -0
  386. package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs_backup_20250718_132453/enum_single_oracle_test.json +164 -0
  387. package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs_backup_20250718_132453/single_oracle_numerical_hyperbola_test.json +502 -0
  388. package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs_backup_20250718_132453/single_oracle_numerical_test.json +262 -0
  389. package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs_backup_20250718_132453/three_of_five_oracle_numerical_with_diff_test.json +4382 -0
  390. package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs_backup_20250718_132453/three_of_three_oracle_numerical_test.json +324 -0
  391. package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs_backup_20250718_132453/three_of_three_oracle_numerical_with_diff_test.json +652 -0
  392. package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs_backup_20250718_132453/two_of_five_oracle_numerical_test.json +1138 -0
  393. package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs_backup_20250718_132453/two_of_five_oracle_numerical_with_diff_test.json +2222 -0
  394. package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs_backup_20250719_185952/enum_3_of_3_test.json +212 -0
  395. package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs_backup_20250719_185952/enum_3_of_5_test.json +470 -0
  396. package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs_backup_20250719_185952/enum_and_numerical_3_of_5_test.json +1519 -0
  397. package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs_backup_20250719_185952/enum_and_numerical_5_of_5_test.json +547 -0
  398. package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs_backup_20250719_185952/enum_and_numerical_with_diff_3_of_5_test.json +4763 -0
  399. package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs_backup_20250719_185952/enum_and_numerical_with_diff_5_of_5_test.json +2171 -0
  400. package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs_backup_20250719_185952/enum_single_oracle_test.json +166 -0
  401. package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs_backup_20250719_185952/single_oracle_numerical_hyperbola_test.json +504 -0
  402. package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs_backup_20250719_185952/single_oracle_numerical_test.json +264 -0
  403. package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs_backup_20250719_185952/three_of_five_oracle_numerical_with_diff_test.json +4384 -0
  404. package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs_backup_20250719_185952/three_of_three_oracle_numerical_test.json +326 -0
  405. package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs_backup_20250719_185952/three_of_three_oracle_numerical_with_diff_test.json +654 -0
  406. package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs_backup_20250719_185952/two_of_five_oracle_numerical_test.json +1140 -0
  407. package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs_backup_20250719_185952/two_of_five_oracle_numerical_with_diff_test.json +2224 -0
  408. package/.yalc/@node-dlc/messaging/yalc.sig +1 -1
  409. package/CHANGELOG.md +58 -5
  410. package/dist/Cfd.js +1 -0
  411. package/dist/Cfd.js.map +1 -1
  412. package/dist/Chain.js +1 -0
  413. package/dist/Chain.js.map +1 -1
  414. package/dist/Client.js +7 -1
  415. package/dist/Client.js.map +1 -1
  416. package/dist/Dlc.d.ts +39 -2
  417. package/dist/Dlc.js +58 -2
  418. package/dist/Dlc.js.map +1 -1
  419. package/dist/Wallet.js +3 -0
  420. package/dist/Wallet.js.map +1 -1
  421. package/lib/Cfd.ts +2 -0
  422. package/lib/Chain.ts +2 -0
  423. package/lib/Client.ts +5 -0
  424. package/lib/Dlc.ts +114 -0
  425. package/lib/Wallet.ts +4 -0
  426. package/package.json +7 -7
  427. package/yalc.lock +7 -2
  428. package/.yalc/@node-dlc/messaging/.nyc_output/2cf48009-1094-4275-bb91-c164c932feb6.json +0 -1
  429. package/.yalc/@node-dlc/messaging/.nyc_output/processinfo/2cf48009-1094-4275-bb91-c164c932feb6.json +0 -1
@@ -0,0 +1,480 @@
1
+ import { BufferWriter, StreamReader, varIntBytes } from '@node-dlc/bufio';
2
+ import { Hex } from '@node-dlc/bufio';
3
+ import { hash256 } from '@node-dlc/crypto';
4
+
5
+ import { HashByteOrder } from './HashByteOrder';
6
+ import { HashValue } from './HashValue';
7
+ import { LockTime } from './LockTime';
8
+ import { OutPoint } from './OutPoint';
9
+ import { Script } from './Script';
10
+ import { Sequence } from './Sequence';
11
+ import { SizeResult } from './SizeResult';
12
+ import { TxIn } from './TxIn';
13
+ import { TxOut } from './TxOut';
14
+ import { Value } from './Value';
15
+ import { Witness } from './Witness';
16
+
17
+ /**
18
+ * This class is an immutable Bitcoin transaction. This class is used
19
+ * as a data container from parsed blocks, RPC, or other sources. To use
20
+ * a mutable transaction, you should use `TxBuilder` class.
21
+ */
22
+ export class Tx {
23
+ /**
24
+ * Decodes a `Tx` stream similar to Bitcoin Core's DecodeTx method
25
+ * in that it will first try to parse with SegWit markers enabled.
26
+ * If there is an error (such as with a base transaction with no
27
+ * inputs), then it will try parsing using the legacy method.
28
+ * @param reader
29
+ */
30
+ public static decode(reader: StreamReader): Tx {
31
+ const data = reader.readBytes();
32
+ try {
33
+ return Tx.parse(StreamReader.fromBuffer(data), true);
34
+ } catch (ex) {
35
+ return Tx.parse(StreamReader.fromBuffer(data), false);
36
+ }
37
+ }
38
+
39
+ /**
40
+ * Parses a transaction from its byte format in a stream. Capable of
41
+ * parsing both legacy and segwit transactions. This method is
42
+ * similar to Bitcoin Core's `UnserializeTransaction` on the
43
+ * `Transaction` type. This method is expected to throw if witness
44
+ * is enabled and we have an ambiguous base transaction (zero inputs).
45
+ * @param reader
46
+ */
47
+ private static parse(reader: StreamReader, allowWitness: boolean): Tx {
48
+ // Read the version
49
+ const version = reader.readUInt32LE();
50
+
51
+ // Try reading inputs. If this is segwit or a base/dummy, we get
52
+ // an empty array
53
+ let vins: TxIn[] = Tx.parseInputs(reader);
54
+ let vouts: TxOut[];
55
+
56
+ let flags = 0;
57
+
58
+ // If witness is allowed and we had an empty input array we
59
+ // will try parsing a normal witness transaction. This may throw
60
+ // if this is a base transaction.
61
+ if (allowWitness && vins.length === 0) {
62
+ flags = reader.readUInt8();
63
+ if (flags !== 0) {
64
+ vins = Tx.parseInputs(reader);
65
+ vouts = Tx.parseOutputs(reader);
66
+ }
67
+ }
68
+ // Otherwise, we had success reading inputs and can move along
69
+ // and parse the outputs!
70
+ else {
71
+ vouts = Tx.parseOutputs(reader);
72
+ }
73
+
74
+ // If we have witness and read a flag, then we we need to
75
+ // process the witness for each input.
76
+ if (allowWitness && flags & 1) {
77
+ for (let i = 0; i < vins.length; i++) {
78
+ const items = Number(reader.readVarInt());
79
+ for (let item = 0; item < items; item++) {
80
+ vins[i].witness.push(Witness.parse(reader));
81
+ }
82
+ }
83
+ }
84
+
85
+ // Finally read the locktime
86
+ const locktime = LockTime.parse(reader);
87
+
88
+ return new Tx(version, vins, vouts, locktime);
89
+ }
90
+
91
+ /**
92
+ * Parses the inputs for a transaction
93
+ * @param reader
94
+ * @returns
95
+ */
96
+ private static parseInputs(reader: StreamReader): TxIn[] {
97
+ const vinLen = Number(reader.readVarInt());
98
+ const inputs: TxIn[] = [];
99
+ for (let idx = 0; idx < vinLen; idx++) {
100
+ inputs.push(
101
+ new TxIn(
102
+ OutPoint.parse(reader),
103
+ Script.parse(reader),
104
+ Sequence.parse(reader),
105
+ ),
106
+ );
107
+ }
108
+ return inputs;
109
+ }
110
+
111
+ /**
112
+ * Parses the outputs for a transaction
113
+ * @param reader
114
+ * @returns
115
+ */
116
+ private static parseOutputs(reader: StreamReader): TxOut[] {
117
+ const voutLen = Number(reader.readVarInt());
118
+ const outputs: TxOut[] = [];
119
+ for (let idx = 0; idx < voutLen; idx++) {
120
+ outputs.push(new TxOut(
121
+ Value.fromSats(reader.readBigUInt64LE()),
122
+ Script.parse(reader),
123
+ )); // prettier-ignore
124
+ }
125
+ return outputs;
126
+ }
127
+
128
+ /**
129
+ * Parses a transaction from a buffer that contains the fully
130
+ * serialization transaction bytes.
131
+ * @param buf
132
+ */
133
+ public static fromBuffer(buf: Buffer): Tx {
134
+ return Tx.decode(StreamReader.fromBuffer(buf));
135
+ }
136
+
137
+ /**
138
+ * Parses a transaction from a hex string containing the fully
139
+ * serialized transaction bytes.
140
+ * @param hex
141
+ */
142
+ public static fromHex(hex: string): Tx {
143
+ return Tx.decode(StreamReader.fromHex(hex));
144
+ }
145
+
146
+ /**
147
+ * Get the transaction version. The transaction version corresponds
148
+ * to features that are enabled for the transaction such as time
149
+ * locks.
150
+ */
151
+ public get version(): number {
152
+ return this._version;
153
+ }
154
+
155
+ /**
156
+ * Gets the transaction identifier. The `txId` for both legacy and
157
+ * segwit transaction is the hash256 of
158
+ * `hash256(version||inputs||ouputs||locktime)`.
159
+ */
160
+ public get txId(): HashValue {
161
+ if (!this._txId) this._lazyCalc();
162
+ return this._txId;
163
+ }
164
+
165
+ /**
166
+ * Gets the transaction segwit transaction identifier. For legacy
167
+ * transaction this is the same as the `txId` property. For segwit
168
+ * transaction this is the hash256 of
169
+ * `hash256(version||0x0001||inputs||outputs||witness||locktime)`.
170
+ *
171
+ * This is the same value as the `hash` property in bitcoind RPC
172
+ * results.
173
+ */
174
+ public get witnessTxId(): HashValue {
175
+ if (!this._wtxid) this._lazyCalc();
176
+ return this._wtxid;
177
+ }
178
+
179
+ /**
180
+ * Gets the transaction inputs.
181
+ */
182
+ public get inputs(): TxIn[] {
183
+ return this._inputs;
184
+ }
185
+
186
+ /**
187
+ * Gets the transaction outputs
188
+ */
189
+ public get outputs(): TxOut[] {
190
+ return this._outputs;
191
+ }
192
+
193
+ /**
194
+ * Gets the transaction `nLocktime` value that is used to control
195
+ * absolute timelocks.
196
+ */
197
+ public get locktime(): LockTime {
198
+ return this._locktime;
199
+ }
200
+
201
+ public get isSegWit(): boolean {
202
+ return this._inputs.some((p) => p.witness.length > 0);
203
+ }
204
+
205
+ public get size(): number {
206
+ if (!this._sizes) this._lazyCalc();
207
+ return this._sizes.size;
208
+ }
209
+
210
+ public get vsize(): number {
211
+ if (!this._sizes) this._lazyCalc();
212
+ return this._sizes.vsize;
213
+ }
214
+
215
+ public get weight(): number {
216
+ if (!this._sizes) this._lazyCalc();
217
+ return this._sizes.weight;
218
+ }
219
+
220
+ private _version: number;
221
+ private _txId: HashValue;
222
+ private _wtxid: HashValue;
223
+ private _inputs: TxIn[];
224
+ private _outputs: TxOut[];
225
+ private _locktime: LockTime;
226
+ private _sizes: SizeResult;
227
+
228
+ public constructor(
229
+ version = 2,
230
+ inputs: TxIn[] = [],
231
+ outputs: TxOut[] = [],
232
+ locktime: LockTime = new LockTime(),
233
+ sizes?: SizeResult,
234
+ ) {
235
+ this._version = version;
236
+ this._inputs = inputs;
237
+ this._outputs = outputs;
238
+ this._locktime = locktime;
239
+ this._sizes = sizes;
240
+ }
241
+
242
+ /**
243
+ * Serializes legacy or segwit transactions into a Buffer
244
+ */
245
+ public serialize(): Buffer {
246
+ if (this.isSegWit) return this._serializeSegWit();
247
+ else return this._serializeLegacy();
248
+ }
249
+
250
+ // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types
251
+ public toJSON() {
252
+ return {
253
+ version: this.version,
254
+ inputs: this.inputs.map((vin) => vin.toJSON()),
255
+ outputs: this.outputs.map((vout) => vout.toJSON()),
256
+ locktime: this.locktime.toJSON(),
257
+ };
258
+ }
259
+
260
+ public toHex(pretty = false): string {
261
+ if (!pretty) return this.serialize().toString('hex');
262
+ else return this._prettyHex();
263
+ }
264
+
265
+ private _prettyHex(): string {
266
+ const nl = '\n';
267
+ const pad = ' ';
268
+ let s = '';
269
+ s += Hex.uint32LE(this.version) + nl;
270
+ if (this.isSegWit) {
271
+ s += '0001' + nl;
272
+ }
273
+ s += Hex.varint(this.inputs.length) + nl;
274
+ for (const vin of this.inputs) {
275
+ s +=
276
+ pad +
277
+ vin.outpoint.txid.serialize(HashByteOrder.Internal).toString('hex') +
278
+ nl;
279
+ s += pad + Hex.uint32LE(vin.outpoint.outputIndex) + nl;
280
+ s += pad + vin.scriptSig.serialize().toString('hex') + nl;
281
+ s += pad + Hex.uint32LE(vin.sequence.value) + nl;
282
+ }
283
+ s += Hex.varint(this.outputs.length) + nl;
284
+ for (const vout of this.outputs) {
285
+ s += pad + Hex.uint64LE(vout.value.sats) + nl;
286
+ s += pad + vout.scriptPubKey.serialize().toString('hex');
287
+ s += nl;
288
+ }
289
+ if (this.isSegWit) {
290
+ for (const vin of this.inputs) {
291
+ s += Hex.varint(vin.witness.length) + nl;
292
+ for (const w of vin.witness) {
293
+ s += pad + w.serialize().toString('hex') + nl;
294
+ }
295
+ }
296
+ }
297
+ s += Hex.uint32LE(this.locktime.value);
298
+ return s;
299
+ }
300
+
301
+ private _serializeLegacy(): Buffer {
302
+ const writer = new BufferWriter();
303
+
304
+ // version
305
+ writer.writeUInt32LE(this.version);
306
+
307
+ // inputs
308
+ writer.writeVarInt(this.inputs.length);
309
+ for (const input of this.inputs) {
310
+ writer.writeBytes(input.serialize());
311
+ }
312
+
313
+ // outputs
314
+ writer.writeVarInt(this.outputs.length);
315
+ for (const output of this.outputs) {
316
+ writer.writeBytes(output.serialize());
317
+ }
318
+
319
+ // locktime
320
+ writer.writeBytes(this.locktime.serialize());
321
+
322
+ return writer.toBuffer();
323
+ }
324
+
325
+ private _serializeSegWit(): Buffer {
326
+ const writer = new BufferWriter();
327
+
328
+ // version
329
+ writer.writeUInt32LE(this.version);
330
+
331
+ // write segwit marker and version
332
+ writer.writeBytes(Buffer.from([0x00, 0x01]));
333
+
334
+ // inputs
335
+ writer.writeVarInt(this.inputs.length);
336
+ for (const input of this.inputs) {
337
+ writer.writeBytes(input.serialize());
338
+ }
339
+
340
+ // outputs
341
+ writer.writeVarInt(this.outputs.length);
342
+ for (const output of this.outputs) {
343
+ writer.writeBytes(output.serialize());
344
+ }
345
+
346
+ // witness data
347
+ if (this.isSegWit) {
348
+ for (const input of this.inputs) {
349
+ writer.writeVarInt(input.witness.length);
350
+ for (const witness of input.witness) {
351
+ writer.writeBytes(witness.serialize());
352
+ }
353
+ }
354
+ }
355
+
356
+ // locktime
357
+ writer.writeBytes(this.locktime.serialize());
358
+
359
+ return writer.toBuffer();
360
+ }
361
+
362
+ /**
363
+ * Decodes the txId and hash from the Buffer.
364
+ *
365
+ * For non-segwit transitions, the hash value is the double-sha256 of
366
+ * version|vins|vouts|locktime. The txid is the reverse of the hash.
367
+ *
368
+ * For segwit transactions, the hash value is returned as the wtxid as
369
+ * calculated by the double-sha256 of
370
+ * version|0x00|0x01|inputs|outputs|witness|locktime. The txId is
371
+ * calculate the same as legacy transactions by performing a double
372
+ * sha256 hash of the data minus segwit data and markers.
373
+ */
374
+ private _calcTxId(): { txId: HashValue; hash: HashValue } {
375
+ const txId: Buffer = hash256(this._serializeLegacy());
376
+ const hash: Buffer = this.isSegWit
377
+ ? hash256(this._serializeSegWit())
378
+ : Buffer.from(txId); // prettier-ignore
379
+ return {
380
+ txId: new HashValue(txId),
381
+ hash: new HashValue(hash),
382
+ };
383
+ }
384
+
385
+ /**
386
+ * Calculates the size, virtual size, and weight properties from the
387
+ * based on the current inputs and outputs.
388
+ *
389
+ * `size` is the number of raw bytes.
390
+ * `weight` is the number of witness bytes + the number of non-witness
391
+ * bytes multiplied by four.
392
+ * `vsize` is the weight divided by four.
393
+ */
394
+ private _calcSize(): SizeResult {
395
+ const hasWitness = this.isSegWit;
396
+
397
+ let standardBytes = 0;
398
+ let witnessBytes = 0;
399
+
400
+ // version is 4-bytes
401
+ standardBytes += 4;
402
+
403
+ // witness flags are 2 bytes
404
+ if (hasWitness) {
405
+ witnessBytes += 2;
406
+ }
407
+
408
+ // number of inputs
409
+ standardBytes += varIntBytes(this.inputs.length);
410
+
411
+ // add each input
412
+ for (const input of this.inputs) {
413
+ // prev out hash
414
+ standardBytes += 32;
415
+
416
+ // prev out index
417
+ standardBytes += 4;
418
+
419
+ // scriptSig length
420
+ const scriptSig = input.scriptSig.serializeCmds();
421
+ standardBytes += varIntBytes(scriptSig.length);
422
+ standardBytes += scriptSig.length;
423
+
424
+ // sequence, 4-bytes
425
+ standardBytes += 4;
426
+
427
+ // input witness
428
+ if (hasWitness) {
429
+ // number of witness
430
+ witnessBytes += varIntBytes(input.witness.length);
431
+
432
+ // for each witness
433
+ for (const witness of input.witness) {
434
+ witnessBytes += varIntBytes(witness.data.length);
435
+ witnessBytes += witness.data.length;
436
+ }
437
+ }
438
+ }
439
+
440
+ // number of outputs
441
+ standardBytes += varIntBytes(this.outputs.length);
442
+
443
+ // add each output
444
+ for (const output of this.outputs) {
445
+ // value
446
+ standardBytes += 8;
447
+
448
+ // scriptPubKey length
449
+ const scriptPubKey = output.scriptPubKey.serializeCmds();
450
+ standardBytes += varIntBytes(scriptPubKey.length);
451
+ standardBytes += scriptPubKey.length;
452
+ }
453
+
454
+ // locktime
455
+ standardBytes += 4;
456
+
457
+ // size will be the raw length of bytes
458
+ const size = standardBytes + witnessBytes;
459
+
460
+ // weight is non-witness bytes * 4 + witness bytes
461
+ const weight = standardBytes * 4 + witnessBytes;
462
+
463
+ // virtual size is weight / 4
464
+ // this is equivalent for non-segwit transactions
465
+ const vsize = Math.ceil(weight / 4);
466
+
467
+ return {
468
+ size,
469
+ vsize,
470
+ weight,
471
+ };
472
+ }
473
+
474
+ private _lazyCalc() {
475
+ this._sizes = this._calcSize();
476
+ const ids = this._calcTxId();
477
+ this._txId = ids.txId;
478
+ this._wtxid = ids.hash;
479
+ }
480
+ }