@atomicfinance/bitcoin-dlc-provider 3.6.0 → 4.0.0

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 (375) hide show
  1. package/.nvmrc +1 -1
  2. package/.turbo/turbo-build.log +1 -0
  3. package/.turbo/turbo-test.log +0 -0
  4. package/.yalc/@node-dlc/messaging/.nyc_output/2cf48009-1094-4275-bb91-c164c932feb6.json +1 -0
  5. package/.yalc/@node-dlc/messaging/.nyc_output/processinfo/2cf48009-1094-4275-bb91-c164c932feb6.json +1 -0
  6. package/.yalc/@node-dlc/messaging/.nyc_output/processinfo/index.json +1 -0
  7. package/.yalc/@node-dlc/messaging/README.md +24 -0
  8. package/.yalc/@node-dlc/messaging/__tests__/_test-utils.ts +12 -0
  9. package/.yalc/@node-dlc/messaging/__tests__/chain/ChainManager.spec.ts +178 -0
  10. package/.yalc/@node-dlc/messaging/__tests__/compatibility/dlcspecs-compatibility.spec.ts +473 -0
  11. package/.yalc/@node-dlc/messaging/__tests__/compatibility/rust-dlc-cross-language.spec.ts +342 -0
  12. package/.yalc/@node-dlc/messaging/__tests__/compatibility/true-serialization-compatibility.spec.ts +611 -0
  13. package/.yalc/@node-dlc/messaging/__tests__/dlc_message_test.json +155 -0
  14. package/.yalc/@node-dlc/messaging/__tests__/irc/IrcMessage.spec.ts +94 -0
  15. package/.yalc/@node-dlc/messaging/__tests__/messages/AddressCache.spec.ts +79 -0
  16. package/.yalc/@node-dlc/messaging/__tests__/messages/BatchFundingGroup.spec.ts +72 -0
  17. package/.yalc/@node-dlc/messaging/__tests__/messages/CetAdaptorSignatures.spec.ts +57 -0
  18. package/.yalc/@node-dlc/messaging/__tests__/messages/ContractDescriptor.spec.ts +264 -0
  19. package/.yalc/@node-dlc/messaging/__tests__/messages/ContractInfo.spec.ts +419 -0
  20. package/.yalc/@node-dlc/messaging/__tests__/messages/DigitDecompositionEventDescriptor.spec.ts +59 -0
  21. package/.yalc/@node-dlc/messaging/__tests__/messages/DlcAccept.spec.ts +242 -0
  22. package/.yalc/@node-dlc/messaging/__tests__/messages/DlcCancel.spec.ts +42 -0
  23. package/.yalc/@node-dlc/messaging/__tests__/messages/DlcClose.spec.ts +315 -0
  24. package/.yalc/@node-dlc/messaging/__tests__/messages/DlcOffer.spec.ts +527 -0
  25. package/.yalc/@node-dlc/messaging/__tests__/messages/DlcSign.spec.ts +118 -0
  26. package/.yalc/@node-dlc/messaging/__tests__/messages/DlcTransactions.spec.ts +157 -0
  27. package/.yalc/@node-dlc/messaging/__tests__/messages/EnumEventDescriptor.spec.ts +50 -0
  28. package/.yalc/@node-dlc/messaging/__tests__/messages/EventDescriptor.spec.ts +93 -0
  29. package/.yalc/@node-dlc/messaging/__tests__/messages/FundingInput.spec.ts +84 -0
  30. package/.yalc/@node-dlc/messaging/__tests__/messages/FundingSignatures.spec.ts +83 -0
  31. package/.yalc/@node-dlc/messaging/__tests__/messages/NegotiationFields.spec.ts +328 -0
  32. package/.yalc/@node-dlc/messaging/__tests__/messages/NodeAnnouncementMessage.spec.ts +115 -0
  33. package/.yalc/@node-dlc/messaging/__tests__/messages/OracleAnnouncement.spec.ts +415 -0
  34. package/.yalc/@node-dlc/messaging/__tests__/messages/OracleAttestation.spec.ts +326 -0
  35. package/.yalc/@node-dlc/messaging/__tests__/messages/OracleEvent.spec.ts +143 -0
  36. package/.yalc/@node-dlc/messaging/__tests__/messages/OracleEventContainer.spec.ts +95 -0
  37. package/.yalc/@node-dlc/messaging/__tests__/messages/OracleIdentifier.spec.ts +48 -0
  38. package/.yalc/@node-dlc/messaging/__tests__/messages/OracleInfo.spec.ts +116 -0
  39. package/.yalc/@node-dlc/messaging/__tests__/messages/OrderAccept.spec.ts +77 -0
  40. package/.yalc/@node-dlc/messaging/__tests__/messages/OrderNegotiationFields.spec.ts +216 -0
  41. package/.yalc/@node-dlc/messaging/__tests__/messages/OrderOffer.spec.ts +121 -0
  42. package/.yalc/@node-dlc/messaging/__tests__/messages/OrderPositionInfo.spec.ts +75 -0
  43. package/.yalc/@node-dlc/messaging/__tests__/messages/PayoutCurvePiece.spec.ts +220 -0
  44. package/.yalc/@node-dlc/messaging/__tests__/messages/PayoutFunction.spec.ts +101 -0
  45. package/.yalc/@node-dlc/messaging/__tests__/messages/RoundingIntervals.spec.ts +75 -0
  46. package/.yalc/@node-dlc/messaging/__tests__/serialize/F64.spec.ts +260 -0
  47. package/.yalc/@node-dlc/messaging/__tests__/tsconfig.json +8 -0
  48. package/.yalc/@node-dlc/messaging/coverage/lcov-report/base.css +224 -0
  49. package/.yalc/@node-dlc/messaging/coverage/lcov-report/block-navigation.js +79 -0
  50. package/.yalc/@node-dlc/messaging/coverage/lcov-report/favicon.png +0 -0
  51. package/.yalc/@node-dlc/messaging/coverage/lcov-report/index.html +201 -0
  52. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/MessageType.ts.html +494 -0
  53. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/chain/ChainManager.ts.html +1058 -0
  54. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/chain/ChainMemoryStore.ts.html +182 -0
  55. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/chain/index.html +126 -0
  56. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/domain/Address.ts.html +272 -0
  57. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/domain/index.html +111 -0
  58. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/index.html +141 -0
  59. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/index.ts.html +212 -0
  60. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/irc/IrcMessage.ts.html +563 -0
  61. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/irc/index.html +111 -0
  62. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/AddressCache.ts.html +302 -0
  63. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/BatchFundingGroup.ts.html +503 -0
  64. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/CetAdaptorSignatures.ts.html +347 -0
  65. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/CetAdaptorSignaturesV0.ts.html +347 -0
  66. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/ContractDescriptor.ts.html +1040 -0
  67. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/ContractInfo.ts.html +1382 -0
  68. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/DlcAccept.ts.html +1865 -0
  69. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/DlcCancel.ts.html +251 -0
  70. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/DlcClose.ts.html +986 -0
  71. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/DlcCloseMetadata.ts.html +443 -0
  72. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/DlcIds.ts.html +281 -0
  73. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/DlcInfo.ts.html +323 -0
  74. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/DlcMessage.ts.html +341 -0
  75. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/DlcOffer.ts.html +1895 -0
  76. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/DlcSign.ts.html +1142 -0
  77. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/DlcTransactions.ts.html +719 -0
  78. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/EventDescriptor.ts.html +947 -0
  79. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/FundingInput.ts.html +728 -0
  80. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/FundingSignatures.ts.html +374 -0
  81. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/FundingSignaturesV0.ts.html +374 -0
  82. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/NegotiationFields.ts.html +836 -0
  83. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/NodeAnnouncementMessage.ts.html +515 -0
  84. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/OracleAnnouncement.ts.html +608 -0
  85. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/OracleAnnouncementV0.ts.html +605 -0
  86. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/OracleAttestation.ts.html +956 -0
  87. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/OracleAttestationV0.ts.html +770 -0
  88. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/OracleEvent.ts.html +830 -0
  89. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/OracleEventContainer.ts.html +347 -0
  90. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/OracleEventContainerV0.ts.html +347 -0
  91. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/OracleEventV0.ts.html +827 -0
  92. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/OracleIdentifier.ts.html +314 -0
  93. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/OracleIdentifierV0.ts.html +314 -0
  94. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/OracleInfo.ts.html +1637 -0
  95. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/OracleInfoV0.ts.html +1631 -0
  96. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/OrderAccept.ts.html +557 -0
  97. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/OrderIrcInfo.ts.html +380 -0
  98. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/OrderMetadata.ts.html +437 -0
  99. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/OrderNegotiationFields.ts.html +551 -0
  100. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/OrderOffer.ts.html +1337 -0
  101. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/OrderPositionInfo.ts.html +590 -0
  102. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/PayoutCurvePiece.ts.html +1427 -0
  103. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/PayoutFunction.ts.html +800 -0
  104. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/RoundingIntervals.ts.html +461 -0
  105. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/RoundingIntervalsV0.ts.html +482 -0
  106. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/ScriptWitnessV0.ts.html +269 -0
  107. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/index.html +636 -0
  108. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/serde/SerdeUtils.ts.html +1394 -0
  109. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/serde/index.html +111 -0
  110. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/serialize/F64.ts.html +1136 -0
  111. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/serialize/deserializeTlv.ts.html +125 -0
  112. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/serialize/getTlv.ts.html +143 -0
  113. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/serialize/index.html +141 -0
  114. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/util.ts.html +179 -0
  115. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/validation/index.html +111 -0
  116. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/validation/validate.ts.html +182 -0
  117. package/.yalc/@node-dlc/messaging/coverage/lcov-report/prettify.css +1 -0
  118. package/.yalc/@node-dlc/messaging/coverage/lcov-report/prettify.js +2 -0
  119. package/.yalc/@node-dlc/messaging/coverage/lcov-report/sort-arrow-sprite.png +0 -0
  120. package/.yalc/@node-dlc/messaging/coverage/lcov-report/sorter.js +170 -0
  121. package/.yalc/@node-dlc/messaging/coverage/lcov.info +5394 -0
  122. package/.yalc/@node-dlc/messaging/dist/MessageType.d.ts +100 -0
  123. package/.yalc/@node-dlc/messaging/dist/MessageType.js +117 -0
  124. package/.yalc/@node-dlc/messaging/dist/MessageType.js.map +1 -0
  125. package/.yalc/@node-dlc/messaging/dist/chain/ChainManager.d.ts +50 -0
  126. package/.yalc/@node-dlc/messaging/dist/chain/ChainManager.js +211 -0
  127. package/.yalc/@node-dlc/messaging/dist/chain/ChainManager.js.map +1 -0
  128. package/.yalc/@node-dlc/messaging/dist/chain/ChainMemoryStore.d.ts +14 -0
  129. package/.yalc/@node-dlc/messaging/dist/chain/ChainMemoryStore.js +28 -0
  130. package/.yalc/@node-dlc/messaging/dist/chain/ChainMemoryStore.js.map +1 -0
  131. package/.yalc/@node-dlc/messaging/dist/chain/DlcStore.d.ts +11 -0
  132. package/.yalc/@node-dlc/messaging/dist/chain/DlcStore.js +3 -0
  133. package/.yalc/@node-dlc/messaging/dist/chain/DlcStore.js.map +1 -0
  134. package/.yalc/@node-dlc/messaging/dist/chain/IChainFilterChainClient.d.ts +48 -0
  135. package/.yalc/@node-dlc/messaging/dist/chain/IChainFilterChainClient.js +3 -0
  136. package/.yalc/@node-dlc/messaging/dist/chain/IChainFilterChainClient.js.map +1 -0
  137. package/.yalc/@node-dlc/messaging/dist/domain/Address.d.ts +24 -0
  138. package/.yalc/@node-dlc/messaging/dist/domain/Address.js +46 -0
  139. package/.yalc/@node-dlc/messaging/dist/domain/Address.js.map +1 -0
  140. package/.yalc/@node-dlc/messaging/dist/index.d.ts +44 -0
  141. package/.yalc/@node-dlc/messaging/dist/index.js +63 -0
  142. package/.yalc/@node-dlc/messaging/dist/index.js.map +1 -0
  143. package/.yalc/@node-dlc/messaging/dist/irc/IrcMessage.d.ts +43 -0
  144. package/.yalc/@node-dlc/messaging/dist/irc/IrcMessage.js +116 -0
  145. package/.yalc/@node-dlc/messaging/dist/irc/IrcMessage.js.map +1 -0
  146. package/.yalc/@node-dlc/messaging/dist/messages/AddressCache.d.ts +15 -0
  147. package/.yalc/@node-dlc/messaging/dist/messages/AddressCache.js +51 -0
  148. package/.yalc/@node-dlc/messaging/dist/messages/AddressCache.js.map +1 -0
  149. package/.yalc/@node-dlc/messaging/dist/messages/BatchFundingGroup.d.ts +61 -0
  150. package/.yalc/@node-dlc/messaging/dist/messages/BatchFundingGroup.js +113 -0
  151. package/.yalc/@node-dlc/messaging/dist/messages/BatchFundingGroup.js.map +1 -0
  152. package/.yalc/@node-dlc/messaging/dist/messages/CetAdaptorSignatures.d.ts +40 -0
  153. package/.yalc/@node-dlc/messaging/dist/messages/CetAdaptorSignatures.js +67 -0
  154. package/.yalc/@node-dlc/messaging/dist/messages/CetAdaptorSignatures.js.map +1 -0
  155. package/.yalc/@node-dlc/messaging/dist/messages/ContractDescriptor.d.ts +122 -0
  156. package/.yalc/@node-dlc/messaging/dist/messages/ContractDescriptor.js +222 -0
  157. package/.yalc/@node-dlc/messaging/dist/messages/ContractDescriptor.js.map +1 -0
  158. package/.yalc/@node-dlc/messaging/dist/messages/ContractInfo.d.ts +135 -0
  159. package/.yalc/@node-dlc/messaging/dist/messages/ContractInfo.js +304 -0
  160. package/.yalc/@node-dlc/messaging/dist/messages/ContractInfo.js.map +1 -0
  161. package/.yalc/@node-dlc/messaging/dist/messages/DlcAccept.d.ts +145 -0
  162. package/.yalc/@node-dlc/messaging/dist/messages/DlcAccept.js +428 -0
  163. package/.yalc/@node-dlc/messaging/dist/messages/DlcAccept.js.map +1 -0
  164. package/.yalc/@node-dlc/messaging/dist/messages/DlcCancel.d.ts +31 -0
  165. package/.yalc/@node-dlc/messaging/dist/messages/DlcCancel.js +51 -0
  166. package/.yalc/@node-dlc/messaging/dist/messages/DlcCancel.js.map +1 -0
  167. package/.yalc/@node-dlc/messaging/dist/messages/DlcClose.d.ts +68 -0
  168. package/.yalc/@node-dlc/messaging/dist/messages/DlcClose.js +210 -0
  169. package/.yalc/@node-dlc/messaging/dist/messages/DlcClose.js.map +1 -0
  170. package/.yalc/@node-dlc/messaging/dist/messages/DlcCloseMetadata.d.ts +44 -0
  171. package/.yalc/@node-dlc/messaging/dist/messages/DlcCloseMetadata.js +74 -0
  172. package/.yalc/@node-dlc/messaging/dist/messages/DlcCloseMetadata.js.map +1 -0
  173. package/.yalc/@node-dlc/messaging/dist/messages/DlcIds.d.ts +26 -0
  174. package/.yalc/@node-dlc/messaging/dist/messages/DlcIds.js +58 -0
  175. package/.yalc/@node-dlc/messaging/dist/messages/DlcIds.js.map +1 -0
  176. package/.yalc/@node-dlc/messaging/dist/messages/DlcInfo.d.ts +31 -0
  177. package/.yalc/@node-dlc/messaging/dist/messages/DlcInfo.js +61 -0
  178. package/.yalc/@node-dlc/messaging/dist/messages/DlcInfo.js.map +1 -0
  179. package/.yalc/@node-dlc/messaging/dist/messages/DlcMessage.d.ts +23 -0
  180. package/.yalc/@node-dlc/messaging/dist/messages/DlcMessage.js +54 -0
  181. package/.yalc/@node-dlc/messaging/dist/messages/DlcMessage.js.map +1 -0
  182. package/.yalc/@node-dlc/messaging/dist/messages/DlcOffer.d.ts +131 -0
  183. package/.yalc/@node-dlc/messaging/dist/messages/DlcOffer.js +418 -0
  184. package/.yalc/@node-dlc/messaging/dist/messages/DlcOffer.js.map +1 -0
  185. package/.yalc/@node-dlc/messaging/dist/messages/DlcSign.d.ts +96 -0
  186. package/.yalc/@node-dlc/messaging/dist/messages/DlcSign.js +267 -0
  187. package/.yalc/@node-dlc/messaging/dist/messages/DlcSign.js.map +1 -0
  188. package/.yalc/@node-dlc/messaging/dist/messages/DlcTransactions.d.ts +69 -0
  189. package/.yalc/@node-dlc/messaging/dist/messages/DlcTransactions.js +149 -0
  190. package/.yalc/@node-dlc/messaging/dist/messages/DlcTransactions.js.map +1 -0
  191. package/.yalc/@node-dlc/messaging/dist/messages/EventDescriptor.d.ts +106 -0
  192. package/.yalc/@node-dlc/messaging/dist/messages/EventDescriptor.js +209 -0
  193. package/.yalc/@node-dlc/messaging/dist/messages/EventDescriptor.js.map +1 -0
  194. package/.yalc/@node-dlc/messaging/dist/messages/FundingInput.d.ts +62 -0
  195. package/.yalc/@node-dlc/messaging/dist/messages/FundingInput.js +163 -0
  196. package/.yalc/@node-dlc/messaging/dist/messages/FundingInput.js.map +1 -0
  197. package/.yalc/@node-dlc/messaging/dist/messages/FundingSignatures.d.ts +36 -0
  198. package/.yalc/@node-dlc/messaging/dist/messages/FundingSignatures.js +78 -0
  199. package/.yalc/@node-dlc/messaging/dist/messages/FundingSignatures.js.map +1 -0
  200. package/.yalc/@node-dlc/messaging/dist/messages/IWireMessage.d.ts +6 -0
  201. package/.yalc/@node-dlc/messaging/dist/messages/IWireMessage.js +3 -0
  202. package/.yalc/@node-dlc/messaging/dist/messages/IWireMessage.js.map +1 -0
  203. package/.yalc/@node-dlc/messaging/dist/messages/NegotiationFields.d.ts +86 -0
  204. package/.yalc/@node-dlc/messaging/dist/messages/NegotiationFields.js +185 -0
  205. package/.yalc/@node-dlc/messaging/dist/messages/NegotiationFields.js.map +1 -0
  206. package/.yalc/@node-dlc/messaging/dist/messages/NodeAnnouncementMessage.d.ts +57 -0
  207. package/.yalc/@node-dlc/messaging/dist/messages/NodeAnnouncementMessage.js +127 -0
  208. package/.yalc/@node-dlc/messaging/dist/messages/NodeAnnouncementMessage.js.map +1 -0
  209. package/.yalc/@node-dlc/messaging/dist/messages/OracleAnnouncement.d.ts +76 -0
  210. package/.yalc/@node-dlc/messaging/dist/messages/OracleAnnouncement.js +131 -0
  211. package/.yalc/@node-dlc/messaging/dist/messages/OracleAnnouncement.js.map +1 -0
  212. package/.yalc/@node-dlc/messaging/dist/messages/OracleAttestation.d.ts +68 -0
  213. package/.yalc/@node-dlc/messaging/dist/messages/OracleAttestation.js +239 -0
  214. package/.yalc/@node-dlc/messaging/dist/messages/OracleAttestation.js.map +1 -0
  215. package/.yalc/@node-dlc/messaging/dist/messages/OracleEvent.d.ts +90 -0
  216. package/.yalc/@node-dlc/messaging/dist/messages/OracleEvent.js +189 -0
  217. package/.yalc/@node-dlc/messaging/dist/messages/OracleEvent.js.map +1 -0
  218. package/.yalc/@node-dlc/messaging/dist/messages/OracleEventContainer.d.ts +32 -0
  219. package/.yalc/@node-dlc/messaging/dist/messages/OracleEventContainer.js +67 -0
  220. package/.yalc/@node-dlc/messaging/dist/messages/OracleEventContainer.js.map +1 -0
  221. package/.yalc/@node-dlc/messaging/dist/messages/OracleIdentifier.d.ts +32 -0
  222. package/.yalc/@node-dlc/messaging/dist/messages/OracleIdentifier.js +58 -0
  223. package/.yalc/@node-dlc/messaging/dist/messages/OracleIdentifier.js.map +1 -0
  224. package/.yalc/@node-dlc/messaging/dist/messages/OracleIdentifierV0.d.ts +32 -0
  225. package/.yalc/@node-dlc/messaging/dist/messages/OracleIdentifierV0.js +58 -0
  226. package/.yalc/@node-dlc/messaging/dist/messages/OracleIdentifierV0.js.map +1 -0
  227. package/.yalc/@node-dlc/messaging/dist/messages/OracleInfo.d.ts +161 -0
  228. package/.yalc/@node-dlc/messaging/dist/messages/OracleInfo.js +390 -0
  229. package/.yalc/@node-dlc/messaging/dist/messages/OracleInfo.js.map +1 -0
  230. package/.yalc/@node-dlc/messaging/dist/messages/OracleInfoV0.d.ts +161 -0
  231. package/.yalc/@node-dlc/messaging/dist/messages/OracleInfoV0.js +387 -0
  232. package/.yalc/@node-dlc/messaging/dist/messages/OracleInfoV0.js.map +1 -0
  233. package/.yalc/@node-dlc/messaging/dist/messages/OrderAccept.d.ts +65 -0
  234. package/.yalc/@node-dlc/messaging/dist/messages/OrderAccept.js +125 -0
  235. package/.yalc/@node-dlc/messaging/dist/messages/OrderAccept.js.map +1 -0
  236. package/.yalc/@node-dlc/messaging/dist/messages/OrderIrcInfo.d.ts +42 -0
  237. package/.yalc/@node-dlc/messaging/dist/messages/OrderIrcInfo.js +74 -0
  238. package/.yalc/@node-dlc/messaging/dist/messages/OrderIrcInfo.js.map +1 -0
  239. package/.yalc/@node-dlc/messaging/dist/messages/OrderMetadata.d.ts +56 -0
  240. package/.yalc/@node-dlc/messaging/dist/messages/OrderMetadata.js +87 -0
  241. package/.yalc/@node-dlc/messaging/dist/messages/OrderMetadata.js.map +1 -0
  242. package/.yalc/@node-dlc/messaging/dist/messages/OrderNegotiationFields.d.ts +69 -0
  243. package/.yalc/@node-dlc/messaging/dist/messages/OrderNegotiationFields.js +114 -0
  244. package/.yalc/@node-dlc/messaging/dist/messages/OrderNegotiationFields.js.map +1 -0
  245. package/.yalc/@node-dlc/messaging/dist/messages/OrderOffer.d.ts +97 -0
  246. package/.yalc/@node-dlc/messaging/dist/messages/OrderOffer.js +296 -0
  247. package/.yalc/@node-dlc/messaging/dist/messages/OrderOffer.js.map +1 -0
  248. package/.yalc/@node-dlc/messaging/dist/messages/OrderPositionInfo.d.ts +50 -0
  249. package/.yalc/@node-dlc/messaging/dist/messages/OrderPositionInfo.js +125 -0
  250. package/.yalc/@node-dlc/messaging/dist/messages/OrderPositionInfo.js.map +1 -0
  251. package/.yalc/@node-dlc/messaging/dist/messages/PayoutCurvePiece.d.ts +129 -0
  252. package/.yalc/@node-dlc/messaging/dist/messages/PayoutCurvePiece.js +327 -0
  253. package/.yalc/@node-dlc/messaging/dist/messages/PayoutCurvePiece.js.map +1 -0
  254. package/.yalc/@node-dlc/messaging/dist/messages/PayoutFunction.d.ts +66 -0
  255. package/.yalc/@node-dlc/messaging/dist/messages/PayoutFunction.js +170 -0
  256. package/.yalc/@node-dlc/messaging/dist/messages/PayoutFunction.js.map +1 -0
  257. package/.yalc/@node-dlc/messaging/dist/messages/RoundingIntervals.d.ts +52 -0
  258. package/.yalc/@node-dlc/messaging/dist/messages/RoundingIntervals.js +95 -0
  259. package/.yalc/@node-dlc/messaging/dist/messages/RoundingIntervals.js.map +1 -0
  260. package/.yalc/@node-dlc/messaging/dist/messages/ScriptWitnessV0.d.ts +29 -0
  261. package/.yalc/@node-dlc/messaging/dist/messages/ScriptWitnessV0.js +50 -0
  262. package/.yalc/@node-dlc/messaging/dist/messages/ScriptWitnessV0.js.map +1 -0
  263. package/.yalc/@node-dlc/messaging/dist/messages/Tlv.d.ts +15 -0
  264. package/.yalc/@node-dlc/messaging/dist/messages/Tlv.js +32 -0
  265. package/.yalc/@node-dlc/messaging/dist/messages/Tlv.js.map +1 -0
  266. package/.yalc/@node-dlc/messaging/dist/serialize/F64.d.ts +154 -0
  267. package/.yalc/@node-dlc/messaging/dist/serialize/F64.js +307 -0
  268. package/.yalc/@node-dlc/messaging/dist/serialize/F64.js.map +1 -0
  269. package/.yalc/@node-dlc/messaging/dist/serialize/deserializeTlv.d.ts +9 -0
  270. package/.yalc/@node-dlc/messaging/dist/serialize/deserializeTlv.js +11 -0
  271. package/.yalc/@node-dlc/messaging/dist/serialize/deserializeTlv.js.map +1 -0
  272. package/.yalc/@node-dlc/messaging/dist/serialize/getTlv.d.ts +4 -0
  273. package/.yalc/@node-dlc/messaging/dist/serialize/getTlv.js +23 -0
  274. package/.yalc/@node-dlc/messaging/dist/serialize/getTlv.js.map +1 -0
  275. package/.yalc/@node-dlc/messaging/dist/serialize/readTlvs.d.ts +8 -0
  276. package/.yalc/@node-dlc/messaging/dist/serialize/readTlvs.js +33 -0
  277. package/.yalc/@node-dlc/messaging/dist/serialize/readTlvs.js.map +1 -0
  278. package/.yalc/@node-dlc/messaging/dist/util.d.ts +13 -0
  279. package/.yalc/@node-dlc/messaging/dist/util.js +40 -0
  280. package/.yalc/@node-dlc/messaging/dist/util.js.map +1 -0
  281. package/.yalc/@node-dlc/messaging/dist/validation/validate.d.ts +4 -0
  282. package/.yalc/@node-dlc/messaging/dist/validation/validate.js +31 -0
  283. package/.yalc/@node-dlc/messaging/dist/validation/validate.js.map +1 -0
  284. package/.yalc/@node-dlc/messaging/lib/MessageType.ts +138 -0
  285. package/.yalc/@node-dlc/messaging/lib/chain/ChainManager.ts +326 -0
  286. package/.yalc/@node-dlc/messaging/lib/chain/ChainMemoryStore.ts +34 -0
  287. package/.yalc/@node-dlc/messaging/lib/chain/DlcStore.ts +11 -0
  288. package/.yalc/@node-dlc/messaging/lib/chain/IChainFilterChainClient.ts +57 -0
  289. package/.yalc/@node-dlc/messaging/lib/domain/Address.ts +64 -0
  290. package/.yalc/@node-dlc/messaging/lib/index.ts +44 -0
  291. package/.yalc/@node-dlc/messaging/lib/irc/IrcMessage.ts +161 -0
  292. package/.yalc/@node-dlc/messaging/lib/messages/AddressCache.ts +74 -0
  293. package/.yalc/@node-dlc/messaging/lib/messages/BatchFundingGroup.ts +141 -0
  294. package/.yalc/@node-dlc/messaging/lib/messages/CetAdaptorSignatures.ts +89 -0
  295. package/.yalc/@node-dlc/messaging/lib/messages/ContractDescriptor.ts +318 -0
  296. package/.yalc/@node-dlc/messaging/lib/messages/ContractInfo.ts +434 -0
  297. package/.yalc/@node-dlc/messaging/lib/messages/DlcAccept.ts +595 -0
  298. package/.yalc/@node-dlc/messaging/lib/messages/DlcCancel.ts +57 -0
  299. package/.yalc/@node-dlc/messaging/lib/messages/DlcClose.ts +302 -0
  300. package/.yalc/@node-dlc/messaging/lib/messages/DlcCloseMetadata.ts +121 -0
  301. package/.yalc/@node-dlc/messaging/lib/messages/DlcIds.ts +67 -0
  302. package/.yalc/@node-dlc/messaging/lib/messages/DlcInfo.ts +81 -0
  303. package/.yalc/@node-dlc/messaging/lib/messages/DlcMessage.ts +87 -0
  304. package/.yalc/@node-dlc/messaging/lib/messages/DlcOffer.ts +605 -0
  305. package/.yalc/@node-dlc/messaging/lib/messages/DlcSign.ts +354 -0
  306. package/.yalc/@node-dlc/messaging/lib/messages/DlcTransactions.ts +213 -0
  307. package/.yalc/@node-dlc/messaging/lib/messages/EventDescriptor.ts +289 -0
  308. package/.yalc/@node-dlc/messaging/lib/messages/FundingInput.ts +216 -0
  309. package/.yalc/@node-dlc/messaging/lib/messages/FundingSignatures.ts +98 -0
  310. package/.yalc/@node-dlc/messaging/lib/messages/IWireMessage.ts +6 -0
  311. package/.yalc/@node-dlc/messaging/lib/messages/NegotiationFields.ts +252 -0
  312. package/.yalc/@node-dlc/messaging/lib/messages/NodeAnnouncementMessage.ts +145 -0
  313. package/.yalc/@node-dlc/messaging/lib/messages/OracleAnnouncement.ts +176 -0
  314. package/.yalc/@node-dlc/messaging/lib/messages/OracleAttestation.ts +292 -0
  315. package/.yalc/@node-dlc/messaging/lib/messages/OracleEvent.ts +250 -0
  316. package/.yalc/@node-dlc/messaging/lib/messages/OracleEventContainer.ts +89 -0
  317. package/.yalc/@node-dlc/messaging/lib/messages/OracleIdentifier.ts +78 -0
  318. package/.yalc/@node-dlc/messaging/lib/messages/OracleInfo.ts +519 -0
  319. package/.yalc/@node-dlc/messaging/lib/messages/OrderAccept.ts +159 -0
  320. package/.yalc/@node-dlc/messaging/lib/messages/OrderIrcInfo.ts +100 -0
  321. package/.yalc/@node-dlc/messaging/lib/messages/OrderMetadata.ts +119 -0
  322. package/.yalc/@node-dlc/messaging/lib/messages/OrderNegotiationFields.ts +157 -0
  323. package/.yalc/@node-dlc/messaging/lib/messages/OrderOffer.ts +419 -0
  324. package/.yalc/@node-dlc/messaging/lib/messages/OrderPositionInfo.ts +170 -0
  325. package/.yalc/@node-dlc/messaging/lib/messages/PayoutCurvePiece.ts +449 -0
  326. package/.yalc/@node-dlc/messaging/lib/messages/PayoutFunction.ts +240 -0
  327. package/.yalc/@node-dlc/messaging/lib/messages/RoundingIntervals.ts +127 -0
  328. package/.yalc/@node-dlc/messaging/lib/messages/ScriptWitnessV0.ts +63 -0
  329. package/.yalc/@node-dlc/messaging/lib/messages/Tlv.ts +40 -0
  330. package/.yalc/@node-dlc/messaging/lib/serialize/F64.ts +352 -0
  331. package/.yalc/@node-dlc/messaging/lib/serialize/deserializeTlv.ts +15 -0
  332. package/.yalc/@node-dlc/messaging/lib/serialize/getTlv.ts +21 -0
  333. package/.yalc/@node-dlc/messaging/lib/serialize/readTlvs.ts +37 -0
  334. package/.yalc/@node-dlc/messaging/lib/util.ts +33 -0
  335. package/.yalc/@node-dlc/messaging/lib/validation/validate.ts +34 -0
  336. package/.yalc/@node-dlc/messaging/package.json +42 -0
  337. package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs/enum_3_of_3_test.json +210 -0
  338. package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs/enum_3_of_5_test.json +468 -0
  339. package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs/enum_and_numerical_3_of_5_test.json +1517 -0
  340. package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs/enum_and_numerical_5_of_5_test.json +545 -0
  341. package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs/enum_and_numerical_with_diff_3_of_5_test.json +4761 -0
  342. package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs/enum_and_numerical_with_diff_5_of_5_test.json +2169 -0
  343. package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs/enum_single_oracle_test.json +164 -0
  344. package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs/single_oracle_numerical_hyperbola_test.json +502 -0
  345. package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs/single_oracle_numerical_test.json +262 -0
  346. package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs/three_of_five_oracle_numerical_with_diff_test.json +4382 -0
  347. package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs/three_of_three_oracle_numerical_test.json +324 -0
  348. package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs/three_of_three_oracle_numerical_with_diff_test.json +652 -0
  349. package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs/two_of_five_oracle_numerical_test.json +1138 -0
  350. package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs/two_of_five_oracle_numerical_with_diff_test.json +2222 -0
  351. package/.yalc/@node-dlc/messaging/test_vectors/oracle/external_oracle_announcements.json +0 -0
  352. package/.yalc/@node-dlc/messaging/test_vectors/oracle/oracle_message_test_vectors.json +115 -0
  353. package/.yalc/@node-dlc/messaging/test_vectors/rust-dlc/accept_msg.json +1465 -0
  354. package/.yalc/@node-dlc/messaging/test_vectors/rust-dlc/dlc_fee_test.json +12362 -0
  355. package/.yalc/@node-dlc/messaging/test_vectors/rust-dlc/dlc_fee_test_scripts.json +57 -0
  356. package/.yalc/@node-dlc/messaging/test_vectors/rust-dlc/dlc_test.json +2766 -0
  357. package/.yalc/@node-dlc/messaging/test_vectors/rust-dlc/dlc_tx_test.json +2899 -0
  358. package/.yalc/@node-dlc/messaging/test_vectors/rust-dlc/offer_msg.json +163 -0
  359. package/.yalc/@node-dlc/messaging/test_vectors/rust-dlc/offer_msg_disjoint.json +352 -0
  360. package/.yalc/@node-dlc/messaging/test_vectors/rust-dlc/segment_chunk_msg.json +12635 -0
  361. package/.yalc/@node-dlc/messaging/test_vectors/rust-dlc/segment_start_msg.json +4022 -0
  362. package/.yalc/@node-dlc/messaging/test_vectors/rust-dlc/sign_msg.json +383 -0
  363. package/.yalc/@node-dlc/messaging/tsconfig.json +7 -0
  364. package/.yalc/@node-dlc/messaging/yalc.sig +1 -0
  365. package/CHANGELOG.md +83 -0
  366. package/dist/BitcoinDlcProvider.d.ts +17 -16
  367. package/dist/BitcoinDlcProvider.js +375 -317
  368. package/dist/BitcoinDlcProvider.js.map +1 -1
  369. package/dist/utils/Utils.d.ts +6 -6
  370. package/dist/utils/Utils.js +4 -4
  371. package/dist/utils/Utils.js.map +1 -1
  372. package/lib/BitcoinDlcProvider.ts +637 -621
  373. package/lib/utils/Utils.ts +19 -24
  374. package/package.json +13 -11
  375. package/yalc.lock +10 -0
@@ -0,0 +1,302 @@
1
+ import { BufferReader, BufferWriter } from '@node-dlc/bufio';
2
+
3
+ import { MessageType, PROTOCOL_VERSION } from '../MessageType';
4
+ import { deserializeTlv } from '../serialize/deserializeTlv';
5
+ import { getTlv } from '../serialize/getTlv';
6
+ import { bigIntToNumber, toBigInt } from '../util';
7
+ import { IDlcMessage } from './DlcMessage';
8
+ import { FundingInput, IFundingInputJSON } from './FundingInput';
9
+ import { FundingSignatures, IFundingSignaturesJSON } from './FundingSignatures';
10
+ import { ScriptWitnessV0 } from './ScriptWitnessV0';
11
+
12
+ /**
13
+ * DlcClose message contains information about a node and indicates its
14
+ * desire to close an existing contract.
15
+ * Updated to follow DlcOffer architectural patterns.
16
+ */
17
+ export class DlcClose implements IDlcMessage {
18
+ public static type = MessageType.DlcClose;
19
+
20
+ /**
21
+ * Creates a DlcClose from JSON data (e.g., from test vectors)
22
+ * Handles both our internal format and external test vector formats
23
+ * @param json JSON object representing a DLC close message
24
+ */
25
+ // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types, @typescript-eslint/no-explicit-any
26
+ public static fromJSON(json: any): DlcClose {
27
+ const instance = new DlcClose();
28
+
29
+ // Basic fields with field name variations
30
+ instance.protocolVersion =
31
+ json.protocolVersion || json.protocol_version || PROTOCOL_VERSION;
32
+
33
+ // Basic fields with field name variations
34
+ instance.contractId = Buffer.from(
35
+ json.contractId || json.contract_id,
36
+ 'hex',
37
+ );
38
+ instance.closeSignature = Buffer.from(
39
+ json.closeSignature || json.close_signature,
40
+ 'hex',
41
+ );
42
+
43
+ // Use toBigInt helper to handle BigInt values from json-bigint
44
+ instance.offerPayoutSatoshis = toBigInt(
45
+ json.offerPayoutSatoshis || json.offer_payout_satoshis,
46
+ );
47
+ instance.acceptPayoutSatoshis = toBigInt(
48
+ json.acceptPayoutSatoshis || json.accept_payout_satoshis,
49
+ );
50
+ instance.fundInputSerialId = toBigInt(
51
+ json.fundInputSerialId || json.fund_input_serial_id,
52
+ );
53
+
54
+ // Use FundingInput.fromJSON() for each funding input - proper delegation
55
+ instance.fundingInputs = (json.fundingInputs || json.funding_inputs || [])
56
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
57
+ .map((inputJson: any) => FundingInput.fromJSON(inputJson));
58
+
59
+ // Create FundingSignatures manually since it doesn't have fromJSON
60
+ if (json.fundingSignatures || json.funding_signatures) {
61
+ instance.fundingSignatures = new FundingSignatures();
62
+ const sigData = json.fundingSignatures || json.funding_signatures;
63
+
64
+ // Handle different possible structures
65
+ if (sigData.fundingSignatures) {
66
+ // Standard format
67
+ instance.fundingSignatures.witnessElements = sigData.fundingSignatures.map(
68
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
69
+ (sig: any) =>
70
+ sig.witnessElements?.map((elem: any) => {
71
+ const witness = new ScriptWitnessV0();
72
+ witness.length =
73
+ elem.length || Buffer.from(elem.witness || '', 'hex').length;
74
+ witness.witness = Buffer.from(elem.witness || '', 'hex');
75
+ return witness;
76
+ }) || [],
77
+ );
78
+ } else if (Array.isArray(sigData)) {
79
+ // Array format
80
+ instance.fundingSignatures.witnessElements = sigData.map(
81
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
82
+ (sig: any) =>
83
+ sig.witnessElements?.map((elem: any) => {
84
+ const witness = new ScriptWitnessV0();
85
+ witness.length =
86
+ elem.length || Buffer.from(elem.witness || '', 'hex').length;
87
+ witness.witness = Buffer.from(elem.witness || '', 'hex');
88
+ return witness;
89
+ }) || [],
90
+ );
91
+ }
92
+ }
93
+
94
+ return instance;
95
+ }
96
+
97
+ /**
98
+ * Deserializes a close_dlc message with backward compatibility
99
+ * Detects old format (without protocol_version) vs new format (with protocol_version)
100
+ * @param buf
101
+ */
102
+ public static deserialize(buf: Buffer): DlcClose {
103
+ const instance = new DlcClose();
104
+ const reader = new BufferReader(buf);
105
+
106
+ const type = reader.readUInt16BE(); // read type
107
+
108
+ // Validate type matches expected DlcClose type
109
+ if (type !== MessageType.DlcClose) {
110
+ throw new Error(
111
+ `Invalid message type. Expected ${MessageType.DlcClose}, got ${type}`,
112
+ );
113
+ }
114
+
115
+ // Read protocol version
116
+ instance.protocolVersion = reader.readUInt32BE();
117
+ instance.contractId = reader.readBytes(32);
118
+ instance.closeSignature = reader.readBytes(64);
119
+ instance.offerPayoutSatoshis = reader.readUInt64BE();
120
+ instance.acceptPayoutSatoshis = reader.readUInt64BE();
121
+ instance.fundInputSerialId = reader.readUInt64BE();
122
+
123
+ // Changed from u16 to bigsize for consistency with DlcOffer
124
+ const fundingInputsLen = Number(reader.readBigSize());
125
+
126
+ for (let i = 0; i < fundingInputsLen; i++) {
127
+ // FundingInput body is serialized directly without TLV wrapper in rust-dlc format
128
+ const fundingInput = FundingInput.deserializeBody(
129
+ reader.buffer.subarray(reader.position),
130
+ );
131
+ instance.fundingInputs.push(fundingInput);
132
+
133
+ // Skip past the FundingInput we just read
134
+ const fundingInputLength = fundingInput.serializeBody().length;
135
+ reader.position += fundingInputLength;
136
+ }
137
+
138
+ // Handle FundingSignatures - deserialize raw data (no TLV wrapper) like DlcSign
139
+ instance.fundingSignatures = FundingSignatures.deserialize(
140
+ reader.buffer.subarray(reader.position),
141
+ );
142
+
143
+ // Skip past the funding signatures we just read
144
+ const fundingLength = instance.fundingSignatures.serialize().length;
145
+ reader.position += fundingLength;
146
+
147
+ // Parse any additional TLV stream (for future extensibility)
148
+ while (!reader.eof) {
149
+ const buf = getTlv(reader);
150
+ const tlvReader = new BufferReader(buf);
151
+ const { type } = deserializeTlv(tlvReader);
152
+
153
+ // Store unknown TLVs for future compatibility
154
+ if (!instance.unknownTlvs) {
155
+ instance.unknownTlvs = [];
156
+ }
157
+ instance.unknownTlvs.push({ type: Number(type), data: buf });
158
+ }
159
+
160
+ return instance;
161
+ }
162
+
163
+ /**
164
+ * The type for close_dlc message. close_dlc = 52170
165
+ */
166
+ public type = DlcClose.type;
167
+
168
+ // New fields as per dlcspecs PR #163
169
+ public protocolVersion: number = PROTOCOL_VERSION; // Default to current protocol version
170
+
171
+ public contractId: Buffer;
172
+
173
+ public closeSignature: Buffer;
174
+
175
+ public offerPayoutSatoshis: bigint;
176
+
177
+ public acceptPayoutSatoshis: bigint;
178
+
179
+ public fundInputSerialId: bigint;
180
+
181
+ public fundingInputs: FundingInput[] = [];
182
+
183
+ public fundingSignatures: FundingSignatures;
184
+
185
+ // Store unknown TLVs for forward compatibility
186
+ public unknownTlvs?: Array<{ type: number; data: Buffer }>;
187
+
188
+ /**
189
+ * Validates correctness of all fields
190
+ * @throws Will throw an error if validation fails
191
+ */
192
+ public validate(): void {
193
+ // Type is set automatically in class
194
+
195
+ // protocol_version validation
196
+ if (this.protocolVersion !== PROTOCOL_VERSION) {
197
+ throw new Error(
198
+ `Unsupported protocol version: ${this.protocolVersion}, expected: ${PROTOCOL_VERSION}`,
199
+ );
200
+ }
201
+
202
+ // contractId validation
203
+ if (!this.contractId || this.contractId.length !== 32) {
204
+ throw new Error('contractId must be 32 bytes');
205
+ }
206
+
207
+ // closeSignature validation
208
+ if (!this.closeSignature || this.closeSignature.length !== 64) {
209
+ throw new Error('closeSignature must be 64 bytes');
210
+ }
211
+
212
+ // Ensure input serial ids are unique
213
+ const inputSerialIds = this.fundingInputs.map(
214
+ (input: FundingInput) => input.inputSerialId,
215
+ );
216
+
217
+ if (new Set(inputSerialIds).size !== inputSerialIds.length) {
218
+ throw new Error('inputSerialIds must be unique');
219
+ }
220
+
221
+ // Ensure funding inputs are segwit
222
+ this.fundingInputs.forEach((input: FundingInput) => input.validate());
223
+
224
+ // Note: FundingSignatures doesn't have a validate method, so we skip validation
225
+ }
226
+
227
+ /**
228
+ * Converts dlc_close to JSON (canonical rust-dlc format)
229
+ */
230
+ public toJSON(): IDlcCloseJSON {
231
+ // Include unknown TLVs for debugging
232
+ const tlvs = [];
233
+ if (this.unknownTlvs) {
234
+ this.unknownTlvs.forEach((tlv) =>
235
+ tlvs.push({ type: tlv.type, data: tlv.data.toString('hex') }),
236
+ );
237
+ }
238
+
239
+ // Return canonical rust-dlc format
240
+ return {
241
+ protocolVersion: this.protocolVersion,
242
+ contractId: this.contractId.toString('hex'),
243
+ closeSignature: this.closeSignature.toString('hex'),
244
+ offerPayoutSatoshis: bigIntToNumber(this.offerPayoutSatoshis),
245
+ acceptPayoutSatoshis: bigIntToNumber(this.acceptPayoutSatoshis),
246
+ fundInputSerialId: bigIntToNumber(this.fundInputSerialId),
247
+ fundingInputs: this.fundingInputs.map((input) => input.toJSON()),
248
+ fundingSignatures: this.fundingSignatures.toJSON(),
249
+ } as any; // Allow different field names from interface
250
+ }
251
+
252
+ /**
253
+ * Serializes the close_dlc message into a Buffer
254
+ * Updated serialization format to match DlcOffer patterns
255
+ */
256
+ public serialize(): Buffer {
257
+ const writer = new BufferWriter();
258
+ writer.writeUInt16BE(this.type);
259
+
260
+ // New fields as per dlcspecs PR #163
261
+ writer.writeUInt32BE(this.protocolVersion);
262
+ writer.writeBytes(this.contractId);
263
+ writer.writeBytes(this.closeSignature);
264
+ writer.writeUInt64BE(this.offerPayoutSatoshis);
265
+ writer.writeUInt64BE(this.acceptPayoutSatoshis);
266
+ writer.writeUInt64BE(this.fundInputSerialId);
267
+
268
+ // Changed from u16 to bigsize for consistency with DlcOffer
269
+ writer.writeBigSize(this.fundingInputs.length);
270
+
271
+ for (const fundingInput of this.fundingInputs) {
272
+ // Use serializeBody() to match rust-dlc behavior - funding inputs in vec are serialized without TLV wrapper
273
+ writer.writeBytes(fundingInput.serializeBody());
274
+ }
275
+
276
+ // Serialize FundingSignatures directly (no TLV wrapper) like DlcSign
277
+ writer.writeBytes(this.fundingSignatures.serialize());
278
+
279
+ // Write unknown TLVs for forward compatibility
280
+ if (this.unknownTlvs) {
281
+ this.unknownTlvs.forEach((tlv) => {
282
+ writer.writeBytes(tlv.data);
283
+ });
284
+ }
285
+
286
+ return writer.toBuffer();
287
+ }
288
+ }
289
+
290
+ export interface IDlcCloseJSON {
291
+ type?: number; // Made optional for rust-dlc compatibility
292
+ protocolVersion: number;
293
+ contractId: string;
294
+ closeSignature: string;
295
+ offerPayoutSatoshis: number;
296
+ acceptPayoutSatoshis: number;
297
+ fundInputSerialId: number;
298
+ fundingInputs: IFundingInputJSON[];
299
+ fundingSignatures: IFundingSignaturesJSON;
300
+ serialized?: string; // Made optional - hex serialization for compatibility testing
301
+ tlvs?: any[]; // Made optional - for unknown TLVs
302
+ }
@@ -0,0 +1,121 @@
1
+ import { Tx } from '@node-dlc/bitcoin';
2
+ import { BufferReader, BufferWriter } from '@node-dlc/bufio';
3
+
4
+ import { DlcAccept, DlcOffer, DlcTransactions } from '..';
5
+ import { MessageType } from '../MessageType';
6
+ import { IDlcMessage } from './DlcMessage';
7
+
8
+ /**
9
+ * DlcClose Metadata object contains information required for verifying DlcClose
10
+ * message.
11
+ */
12
+ export class DlcCloseMetadata {
13
+ /**
14
+ * Convert JSON to DlcCloseMetadata
15
+ * @param json
16
+ */
17
+ public static fromJSON(json: IDlcCloseMetadataJSON): DlcCloseMetadata {
18
+ const instance = new DlcCloseMetadata();
19
+
20
+ instance.offerFundingPubKey = Buffer.from(json.offerFundingPubKey, 'hex');
21
+ instance.acceptFundingPubKey = Buffer.from(json.acceptFundingPubKey, 'hex');
22
+ instance.offerPayoutSPK = Buffer.from(json.offerPayoutSPK, 'hex');
23
+ instance.acceptPayoutSPK = Buffer.from(json.acceptPayoutSPK, 'hex');
24
+ instance.offerPayoutSerialId = BigInt(json.offerPayoutSerialId);
25
+ instance.acceptPayoutSerialId = BigInt(json.acceptPayoutSerialId);
26
+ instance.feeRatePerVb = BigInt(json.feeRatePerVb);
27
+ instance.fundTx = Tx.fromHex(json.fundTx);
28
+ instance.fundTxVout = json.fundTxVout;
29
+
30
+ return instance;
31
+ }
32
+
33
+ public static fromDlcMessages(
34
+ dlcOffer: DlcOffer,
35
+ dlcAccept: DlcAccept,
36
+ dlcTxs: DlcTransactions,
37
+ ): DlcCloseMetadata {
38
+ const instance = new DlcCloseMetadata();
39
+
40
+ instance.offerFundingPubKey = dlcOffer.fundingPubkey;
41
+ instance.acceptFundingPubKey = dlcAccept.fundingPubkey;
42
+ instance.offerPayoutSPK = dlcOffer.payoutSpk;
43
+ instance.acceptPayoutSPK = dlcAccept.payoutSpk;
44
+ instance.offerPayoutSerialId = dlcOffer.payoutSerialId;
45
+ instance.acceptPayoutSerialId = dlcAccept.payoutSerialId;
46
+ instance.feeRatePerVb = dlcOffer.feeRatePerVb;
47
+ instance.fundTx = dlcTxs.fundTx;
48
+ instance.fundTxVout = dlcTxs.fundTxVout;
49
+
50
+ return instance;
51
+ }
52
+
53
+ public offerFundingPubKey: Buffer;
54
+
55
+ public acceptFundingPubKey: Buffer;
56
+
57
+ public offerPayoutSPK: Buffer;
58
+
59
+ public acceptPayoutSPK: Buffer;
60
+
61
+ public offerPayoutSerialId: bigint;
62
+
63
+ public acceptPayoutSerialId: bigint;
64
+
65
+ public feeRatePerVb: bigint;
66
+
67
+ public fundTx: Tx;
68
+
69
+ public fundTxVout: number;
70
+
71
+ /**
72
+ * Converts dlc_close_metadata to JSON
73
+ */
74
+ public toJSON(): IDlcCloseMetadataJSON {
75
+ return {
76
+ offerFundingPubKey: this.offerFundingPubKey.toString('hex'),
77
+ acceptFundingPubKey: this.acceptFundingPubKey.toString('hex'),
78
+ offerPayoutSPK: this.offerPayoutSPK.toString('hex'),
79
+ acceptPayoutSPK: this.acceptPayoutSPK.toString('hex'),
80
+ offerPayoutSerialId: Number(this.offerPayoutSerialId),
81
+ acceptPayoutSerialId: Number(this.acceptPayoutSerialId),
82
+ feeRatePerVb: Number(this.feeRatePerVb),
83
+ fundTx: this.fundTx.serialize().toString('hex'),
84
+ fundTxVout: this.fundTxVout,
85
+ };
86
+ }
87
+
88
+ public toDlcMessages(): {
89
+ dlcOffer: DlcOffer;
90
+ dlcAccept: DlcAccept;
91
+ dlcTxs: DlcTransactions;
92
+ } {
93
+ const dlcOffer = new DlcOffer();
94
+ const dlcAccept = new DlcAccept();
95
+ const dlcTxs = new DlcTransactions();
96
+
97
+ dlcOffer.fundingPubkey = this.offerFundingPubKey;
98
+ dlcAccept.fundingPubkey = this.acceptFundingPubKey;
99
+ dlcOffer.payoutSpk = this.offerPayoutSPK;
100
+ dlcAccept.payoutSpk = this.acceptPayoutSPK;
101
+ dlcOffer.payoutSerialId = this.offerPayoutSerialId;
102
+ dlcAccept.payoutSerialId = this.acceptPayoutSerialId;
103
+ dlcOffer.feeRatePerVb = this.feeRatePerVb;
104
+ dlcTxs.fundTx = this.fundTx;
105
+ dlcTxs.fundTxVout = this.fundTxVout;
106
+
107
+ return { dlcOffer, dlcAccept, dlcTxs };
108
+ }
109
+ }
110
+
111
+ export interface IDlcCloseMetadataJSON {
112
+ offerFundingPubKey: string;
113
+ acceptFundingPubKey: string;
114
+ offerPayoutSPK: string;
115
+ acceptPayoutSPK: string;
116
+ offerPayoutSerialId: number;
117
+ acceptPayoutSerialId: number;
118
+ feeRatePerVb: number;
119
+ fundTx: string;
120
+ fundTxVout: number;
121
+ }
@@ -0,0 +1,67 @@
1
+ import { BufferReader, BufferWriter } from '@node-dlc/bufio';
2
+
3
+ import { MessageType } from '../MessageType';
4
+ import { IDlcMessage } from './DlcMessage';
5
+
6
+ /**
7
+ * DlcIds message contains list of buffers
8
+ */
9
+ export class DlcIds implements IDlcMessage {
10
+ public static type = MessageType.DlcIds;
11
+
12
+ public static deserialize(buf: Buffer): DlcIds {
13
+ const reader = new BufferReader(buf);
14
+
15
+ const type = Number(reader.readUInt16BE());
16
+
17
+ switch (type) {
18
+ case MessageType.DlcIdsV0:
19
+ return DlcIds.deserializeV0(buf);
20
+ default:
21
+ throw new Error(`DLC IDs message type must be DlcIdsV0`);
22
+ }
23
+ }
24
+
25
+ /**
26
+ * Deserializes an dlc_ids message
27
+ * @param buf
28
+ */
29
+ private static deserializeV0(buf: Buffer): DlcIds {
30
+ const instance = new DlcIds();
31
+ const reader = new BufferReader(buf);
32
+
33
+ reader.readUInt16BE(); // read type
34
+ const idsLen = reader.readBigSize(); // ids length
35
+
36
+ for (let i = 0; i < idsLen; i++) {
37
+ instance.ids.push(reader.readBytes(32));
38
+ }
39
+
40
+ return instance;
41
+ }
42
+
43
+ /**
44
+ * The type for dlc_ids message
45
+ */
46
+ public type = DlcIds.type;
47
+
48
+ public ids: Buffer[] = [];
49
+
50
+ /**
51
+ * Serializes the dlc_ids message into a Buffer
52
+ */
53
+ public serialize(): Buffer {
54
+ const writer = new BufferWriter();
55
+ writer.writeUInt16BE(this.type);
56
+ writer.writeBigSize(this.ids.length);
57
+ for (const id of this.ids) {
58
+ writer.writeBytes(id);
59
+ }
60
+
61
+ return writer.toBuffer();
62
+ }
63
+ }
64
+
65
+ // Legacy support - keeping old class name as alias
66
+ export const DlcIdsV0 = DlcIds;
67
+ export type DlcIdsV0 = DlcIds;
@@ -0,0 +1,81 @@
1
+ import { BufferReader, BufferWriter } from '@node-dlc/bufio';
2
+
3
+ import { MessageType } from '../MessageType';
4
+ import { IDlcMessage } from './DlcMessage';
5
+
6
+ /**
7
+ * DlcInfo message contains list of buffers
8
+ */
9
+ export class DlcInfo implements IDlcMessage {
10
+ public static type = MessageType.DlcInfo;
11
+
12
+ public static deserialize(buf: Buffer): DlcInfo {
13
+ const reader = new BufferReader(buf);
14
+
15
+ const type = Number(reader.readUInt16BE());
16
+
17
+ switch (type) {
18
+ case MessageType.DlcInfoV0:
19
+ return DlcInfo.deserializeV0(buf);
20
+ default:
21
+ throw new Error(`DLC Info message type must be DlcInfoV0`);
22
+ }
23
+ }
24
+
25
+ /**
26
+ * Deserializes an dlc_info message
27
+ * @param buf
28
+ */
29
+ private static deserializeV0(buf: Buffer): DlcInfo {
30
+ const instance = new DlcInfo();
31
+ const reader = new BufferReader(buf);
32
+
33
+ reader.readUInt16BE(); // read type
34
+
35
+ instance.numDlcOffers = reader.readUInt32BE();
36
+ instance.numDlcAccepts = reader.readUInt32BE();
37
+ instance.numDlcSigns = reader.readUInt32BE();
38
+ instance.numDlcCancels = reader.readUInt32BE();
39
+ instance.numDlcCloses = reader.readUInt32BE();
40
+ instance.numDlcTransactions = reader.readUInt32BE();
41
+
42
+ return instance;
43
+ }
44
+
45
+ /**
46
+ * The type for dlc_info message
47
+ */
48
+ public type = DlcInfo.type;
49
+
50
+ public numDlcOffers: number;
51
+
52
+ public numDlcAccepts: number;
53
+
54
+ public numDlcSigns: number;
55
+
56
+ public numDlcCancels: number;
57
+
58
+ public numDlcCloses: number;
59
+
60
+ public numDlcTransactions: number;
61
+
62
+ /**
63
+ * Serializes the dlc_info message into a Buffer
64
+ */
65
+ public serialize(): Buffer {
66
+ const writer = new BufferWriter();
67
+ writer.writeUInt16BE(this.type);
68
+ writer.writeUInt32BE(this.numDlcOffers);
69
+ writer.writeUInt32BE(this.numDlcAccepts);
70
+ writer.writeUInt32BE(this.numDlcSigns);
71
+ writer.writeUInt32BE(this.numDlcCancels);
72
+ writer.writeUInt32BE(this.numDlcCloses);
73
+ writer.writeUInt32BE(this.numDlcTransactions);
74
+
75
+ return writer.toBuffer();
76
+ }
77
+ }
78
+
79
+ // Legacy support - keeping old class name as alias
80
+ export const DlcInfoV0 = DlcInfo;
81
+ export type DlcInfoV0 = DlcInfo;
@@ -0,0 +1,87 @@
1
+ import { BufferReader } from '@node-dlc/bufio';
2
+
3
+ import { MessageType } from '../MessageType';
4
+ import {
5
+ EnumeratedDescriptor,
6
+ NumericalDescriptor,
7
+ } from './ContractDescriptor';
8
+ import {
9
+ DisjointContractInfo,
10
+ IContractInfoV0JSON,
11
+ IContractInfoV1JSON,
12
+ SingleContractInfo,
13
+ } from './ContractInfo';
14
+ import { DlcAccept } from './DlcAccept';
15
+ import { DlcClose } from './DlcClose';
16
+ import { DlcOffer } from './DlcOffer';
17
+ import { DlcSign } from './DlcSign';
18
+ import { NodeAnnouncementMessage } from './NodeAnnouncementMessage';
19
+ import { OracleAnnouncement } from './OracleAnnouncement';
20
+ import { OracleAttestation } from './OracleAttestation';
21
+ import { OrderAccept } from './OrderAccept';
22
+ import { OrderOffer } from './OrderOffer';
23
+
24
+ export interface IDlcMessage {
25
+ type: number;
26
+ serialize(): Buffer;
27
+ }
28
+
29
+ export type ContractInfoV0JSON = IContractInfoV0JSON;
30
+ export type ContractInfoV1JSON = IContractInfoV1JSON;
31
+
32
+ export abstract class DlcMessage {
33
+ public static deserialize(
34
+ buf: Buffer,
35
+ ):
36
+ | EnumeratedDescriptor
37
+ | NumericalDescriptor
38
+ | SingleContractInfo
39
+ | DisjointContractInfo
40
+ | OrderOffer
41
+ | OrderAccept
42
+ | DlcOffer
43
+ | DlcAccept
44
+ | DlcSign
45
+ | DlcClose
46
+ | OracleAttestation
47
+ | OracleAnnouncement
48
+ | NodeAnnouncementMessage {
49
+ const reader = new BufferReader(buf);
50
+ const type = reader.readUInt16BE();
51
+
52
+ switch (type) {
53
+ case MessageType.ContractDescriptorV0:
54
+ return EnumeratedDescriptor.deserialize(buf);
55
+ case MessageType.ContractDescriptorV1:
56
+ return NumericalDescriptor.deserialize(buf);
57
+ case MessageType.SingleContractInfo:
58
+ return SingleContractInfo.deserialize(buf);
59
+ case MessageType.DisjointContractInfo:
60
+ return DisjointContractInfo.deserialize(buf);
61
+ case MessageType.OrderOffer:
62
+ return OrderOffer.deserialize(buf);
63
+ case MessageType.OrderAccept:
64
+ return OrderAccept.deserialize(buf);
65
+ case MessageType.DlcOffer:
66
+ return DlcOffer.deserialize(buf);
67
+ case MessageType.DlcAccept:
68
+ return DlcAccept.deserialize(buf);
69
+ case MessageType.DlcSign:
70
+ return DlcSign.deserialize(buf);
71
+ case MessageType.DlcClose:
72
+ return DlcClose.deserialize(buf);
73
+ case MessageType.OracleAttestation:
74
+ return OracleAttestation.deserialize(buf);
75
+ case MessageType.OracleAnnouncement:
76
+ return OracleAnnouncement.deserialize(buf);
77
+ case MessageType.NodeAnnouncement:
78
+ return NodeAnnouncementMessage.deserialize(buf);
79
+ default:
80
+ throw new Error(`DlcMessage type ${type} not supported`);
81
+ }
82
+ }
83
+
84
+ public abstract type: number;
85
+
86
+ public abstract serialize(): Buffer;
87
+ }