@atomicfinance/types 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 (370) hide show
  1. package/.turbo/turbo-build.log +1 -0
  2. package/.turbo/turbo-test.log +0 -0
  3. package/.yalc/@node-dlc/messaging/.nyc_output/2cf48009-1094-4275-bb91-c164c932feb6.json +1 -0
  4. package/.yalc/@node-dlc/messaging/.nyc_output/processinfo/2cf48009-1094-4275-bb91-c164c932feb6.json +1 -0
  5. package/.yalc/@node-dlc/messaging/.nyc_output/processinfo/index.json +1 -0
  6. package/.yalc/@node-dlc/messaging/README.md +24 -0
  7. package/.yalc/@node-dlc/messaging/__tests__/_test-utils.ts +12 -0
  8. package/.yalc/@node-dlc/messaging/__tests__/chain/ChainManager.spec.ts +178 -0
  9. package/.yalc/@node-dlc/messaging/__tests__/compatibility/dlcspecs-compatibility.spec.ts +473 -0
  10. package/.yalc/@node-dlc/messaging/__tests__/compatibility/rust-dlc-cross-language.spec.ts +342 -0
  11. package/.yalc/@node-dlc/messaging/__tests__/compatibility/true-serialization-compatibility.spec.ts +611 -0
  12. package/.yalc/@node-dlc/messaging/__tests__/dlc_message_test.json +155 -0
  13. package/.yalc/@node-dlc/messaging/__tests__/irc/IrcMessage.spec.ts +94 -0
  14. package/.yalc/@node-dlc/messaging/__tests__/messages/AddressCache.spec.ts +79 -0
  15. package/.yalc/@node-dlc/messaging/__tests__/messages/BatchFundingGroup.spec.ts +72 -0
  16. package/.yalc/@node-dlc/messaging/__tests__/messages/CetAdaptorSignatures.spec.ts +57 -0
  17. package/.yalc/@node-dlc/messaging/__tests__/messages/ContractDescriptor.spec.ts +264 -0
  18. package/.yalc/@node-dlc/messaging/__tests__/messages/ContractInfo.spec.ts +419 -0
  19. package/.yalc/@node-dlc/messaging/__tests__/messages/DigitDecompositionEventDescriptor.spec.ts +59 -0
  20. package/.yalc/@node-dlc/messaging/__tests__/messages/DlcAccept.spec.ts +242 -0
  21. package/.yalc/@node-dlc/messaging/__tests__/messages/DlcCancel.spec.ts +42 -0
  22. package/.yalc/@node-dlc/messaging/__tests__/messages/DlcClose.spec.ts +315 -0
  23. package/.yalc/@node-dlc/messaging/__tests__/messages/DlcOffer.spec.ts +527 -0
  24. package/.yalc/@node-dlc/messaging/__tests__/messages/DlcSign.spec.ts +118 -0
  25. package/.yalc/@node-dlc/messaging/__tests__/messages/DlcTransactions.spec.ts +157 -0
  26. package/.yalc/@node-dlc/messaging/__tests__/messages/EnumEventDescriptor.spec.ts +50 -0
  27. package/.yalc/@node-dlc/messaging/__tests__/messages/EventDescriptor.spec.ts +93 -0
  28. package/.yalc/@node-dlc/messaging/__tests__/messages/FundingInput.spec.ts +84 -0
  29. package/.yalc/@node-dlc/messaging/__tests__/messages/FundingSignatures.spec.ts +83 -0
  30. package/.yalc/@node-dlc/messaging/__tests__/messages/NegotiationFields.spec.ts +328 -0
  31. package/.yalc/@node-dlc/messaging/__tests__/messages/NodeAnnouncementMessage.spec.ts +115 -0
  32. package/.yalc/@node-dlc/messaging/__tests__/messages/OracleAnnouncement.spec.ts +415 -0
  33. package/.yalc/@node-dlc/messaging/__tests__/messages/OracleAttestation.spec.ts +326 -0
  34. package/.yalc/@node-dlc/messaging/__tests__/messages/OracleEvent.spec.ts +143 -0
  35. package/.yalc/@node-dlc/messaging/__tests__/messages/OracleEventContainer.spec.ts +95 -0
  36. package/.yalc/@node-dlc/messaging/__tests__/messages/OracleIdentifier.spec.ts +48 -0
  37. package/.yalc/@node-dlc/messaging/__tests__/messages/OracleInfo.spec.ts +116 -0
  38. package/.yalc/@node-dlc/messaging/__tests__/messages/OrderAccept.spec.ts +77 -0
  39. package/.yalc/@node-dlc/messaging/__tests__/messages/OrderNegotiationFields.spec.ts +216 -0
  40. package/.yalc/@node-dlc/messaging/__tests__/messages/OrderOffer.spec.ts +121 -0
  41. package/.yalc/@node-dlc/messaging/__tests__/messages/OrderPositionInfo.spec.ts +75 -0
  42. package/.yalc/@node-dlc/messaging/__tests__/messages/PayoutCurvePiece.spec.ts +220 -0
  43. package/.yalc/@node-dlc/messaging/__tests__/messages/PayoutFunction.spec.ts +101 -0
  44. package/.yalc/@node-dlc/messaging/__tests__/messages/RoundingIntervals.spec.ts +75 -0
  45. package/.yalc/@node-dlc/messaging/__tests__/serialize/F64.spec.ts +260 -0
  46. package/.yalc/@node-dlc/messaging/__tests__/tsconfig.json +8 -0
  47. package/.yalc/@node-dlc/messaging/coverage/lcov-report/base.css +224 -0
  48. package/.yalc/@node-dlc/messaging/coverage/lcov-report/block-navigation.js +79 -0
  49. package/.yalc/@node-dlc/messaging/coverage/lcov-report/favicon.png +0 -0
  50. package/.yalc/@node-dlc/messaging/coverage/lcov-report/index.html +201 -0
  51. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/MessageType.ts.html +494 -0
  52. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/chain/ChainManager.ts.html +1058 -0
  53. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/chain/ChainMemoryStore.ts.html +182 -0
  54. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/chain/index.html +126 -0
  55. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/domain/Address.ts.html +272 -0
  56. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/domain/index.html +111 -0
  57. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/index.html +141 -0
  58. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/index.ts.html +212 -0
  59. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/irc/IrcMessage.ts.html +563 -0
  60. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/irc/index.html +111 -0
  61. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/AddressCache.ts.html +302 -0
  62. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/BatchFundingGroup.ts.html +503 -0
  63. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/CetAdaptorSignatures.ts.html +347 -0
  64. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/CetAdaptorSignaturesV0.ts.html +347 -0
  65. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/ContractDescriptor.ts.html +1040 -0
  66. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/ContractInfo.ts.html +1382 -0
  67. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/DlcAccept.ts.html +1865 -0
  68. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/DlcCancel.ts.html +251 -0
  69. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/DlcClose.ts.html +986 -0
  70. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/DlcCloseMetadata.ts.html +443 -0
  71. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/DlcIds.ts.html +281 -0
  72. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/DlcInfo.ts.html +323 -0
  73. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/DlcMessage.ts.html +341 -0
  74. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/DlcOffer.ts.html +1895 -0
  75. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/DlcSign.ts.html +1142 -0
  76. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/DlcTransactions.ts.html +719 -0
  77. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/EventDescriptor.ts.html +947 -0
  78. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/FundingInput.ts.html +728 -0
  79. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/FundingSignatures.ts.html +374 -0
  80. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/FundingSignaturesV0.ts.html +374 -0
  81. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/NegotiationFields.ts.html +836 -0
  82. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/NodeAnnouncementMessage.ts.html +515 -0
  83. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/OracleAnnouncement.ts.html +608 -0
  84. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/OracleAnnouncementV0.ts.html +605 -0
  85. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/OracleAttestation.ts.html +956 -0
  86. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/OracleAttestationV0.ts.html +770 -0
  87. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/OracleEvent.ts.html +830 -0
  88. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/OracleEventContainer.ts.html +347 -0
  89. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/OracleEventContainerV0.ts.html +347 -0
  90. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/OracleEventV0.ts.html +827 -0
  91. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/OracleIdentifier.ts.html +314 -0
  92. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/OracleIdentifierV0.ts.html +314 -0
  93. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/OracleInfo.ts.html +1637 -0
  94. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/OracleInfoV0.ts.html +1631 -0
  95. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/OrderAccept.ts.html +557 -0
  96. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/OrderIrcInfo.ts.html +380 -0
  97. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/OrderMetadata.ts.html +437 -0
  98. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/OrderNegotiationFields.ts.html +551 -0
  99. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/OrderOffer.ts.html +1337 -0
  100. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/OrderPositionInfo.ts.html +590 -0
  101. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/PayoutCurvePiece.ts.html +1427 -0
  102. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/PayoutFunction.ts.html +800 -0
  103. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/RoundingIntervals.ts.html +461 -0
  104. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/RoundingIntervalsV0.ts.html +482 -0
  105. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/ScriptWitnessV0.ts.html +269 -0
  106. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/index.html +636 -0
  107. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/serde/SerdeUtils.ts.html +1394 -0
  108. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/serde/index.html +111 -0
  109. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/serialize/F64.ts.html +1136 -0
  110. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/serialize/deserializeTlv.ts.html +125 -0
  111. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/serialize/getTlv.ts.html +143 -0
  112. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/serialize/index.html +141 -0
  113. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/util.ts.html +179 -0
  114. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/validation/index.html +111 -0
  115. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/validation/validate.ts.html +182 -0
  116. package/.yalc/@node-dlc/messaging/coverage/lcov-report/prettify.css +1 -0
  117. package/.yalc/@node-dlc/messaging/coverage/lcov-report/prettify.js +2 -0
  118. package/.yalc/@node-dlc/messaging/coverage/lcov-report/sort-arrow-sprite.png +0 -0
  119. package/.yalc/@node-dlc/messaging/coverage/lcov-report/sorter.js +170 -0
  120. package/.yalc/@node-dlc/messaging/coverage/lcov.info +5394 -0
  121. package/.yalc/@node-dlc/messaging/dist/MessageType.d.ts +100 -0
  122. package/.yalc/@node-dlc/messaging/dist/MessageType.js +117 -0
  123. package/.yalc/@node-dlc/messaging/dist/MessageType.js.map +1 -0
  124. package/.yalc/@node-dlc/messaging/dist/chain/ChainManager.d.ts +50 -0
  125. package/.yalc/@node-dlc/messaging/dist/chain/ChainManager.js +211 -0
  126. package/.yalc/@node-dlc/messaging/dist/chain/ChainManager.js.map +1 -0
  127. package/.yalc/@node-dlc/messaging/dist/chain/ChainMemoryStore.d.ts +14 -0
  128. package/.yalc/@node-dlc/messaging/dist/chain/ChainMemoryStore.js +28 -0
  129. package/.yalc/@node-dlc/messaging/dist/chain/ChainMemoryStore.js.map +1 -0
  130. package/.yalc/@node-dlc/messaging/dist/chain/DlcStore.d.ts +11 -0
  131. package/.yalc/@node-dlc/messaging/dist/chain/DlcStore.js +3 -0
  132. package/.yalc/@node-dlc/messaging/dist/chain/DlcStore.js.map +1 -0
  133. package/.yalc/@node-dlc/messaging/dist/chain/IChainFilterChainClient.d.ts +48 -0
  134. package/.yalc/@node-dlc/messaging/dist/chain/IChainFilterChainClient.js +3 -0
  135. package/.yalc/@node-dlc/messaging/dist/chain/IChainFilterChainClient.js.map +1 -0
  136. package/.yalc/@node-dlc/messaging/dist/domain/Address.d.ts +24 -0
  137. package/.yalc/@node-dlc/messaging/dist/domain/Address.js +46 -0
  138. package/.yalc/@node-dlc/messaging/dist/domain/Address.js.map +1 -0
  139. package/.yalc/@node-dlc/messaging/dist/index.d.ts +44 -0
  140. package/.yalc/@node-dlc/messaging/dist/index.js +63 -0
  141. package/.yalc/@node-dlc/messaging/dist/index.js.map +1 -0
  142. package/.yalc/@node-dlc/messaging/dist/irc/IrcMessage.d.ts +43 -0
  143. package/.yalc/@node-dlc/messaging/dist/irc/IrcMessage.js +116 -0
  144. package/.yalc/@node-dlc/messaging/dist/irc/IrcMessage.js.map +1 -0
  145. package/.yalc/@node-dlc/messaging/dist/messages/AddressCache.d.ts +15 -0
  146. package/.yalc/@node-dlc/messaging/dist/messages/AddressCache.js +51 -0
  147. package/.yalc/@node-dlc/messaging/dist/messages/AddressCache.js.map +1 -0
  148. package/.yalc/@node-dlc/messaging/dist/messages/BatchFundingGroup.d.ts +61 -0
  149. package/.yalc/@node-dlc/messaging/dist/messages/BatchFundingGroup.js +113 -0
  150. package/.yalc/@node-dlc/messaging/dist/messages/BatchFundingGroup.js.map +1 -0
  151. package/.yalc/@node-dlc/messaging/dist/messages/CetAdaptorSignatures.d.ts +40 -0
  152. package/.yalc/@node-dlc/messaging/dist/messages/CetAdaptorSignatures.js +67 -0
  153. package/.yalc/@node-dlc/messaging/dist/messages/CetAdaptorSignatures.js.map +1 -0
  154. package/.yalc/@node-dlc/messaging/dist/messages/ContractDescriptor.d.ts +122 -0
  155. package/.yalc/@node-dlc/messaging/dist/messages/ContractDescriptor.js +222 -0
  156. package/.yalc/@node-dlc/messaging/dist/messages/ContractDescriptor.js.map +1 -0
  157. package/.yalc/@node-dlc/messaging/dist/messages/ContractInfo.d.ts +135 -0
  158. package/.yalc/@node-dlc/messaging/dist/messages/ContractInfo.js +304 -0
  159. package/.yalc/@node-dlc/messaging/dist/messages/ContractInfo.js.map +1 -0
  160. package/.yalc/@node-dlc/messaging/dist/messages/DlcAccept.d.ts +145 -0
  161. package/.yalc/@node-dlc/messaging/dist/messages/DlcAccept.js +428 -0
  162. package/.yalc/@node-dlc/messaging/dist/messages/DlcAccept.js.map +1 -0
  163. package/.yalc/@node-dlc/messaging/dist/messages/DlcCancel.d.ts +31 -0
  164. package/.yalc/@node-dlc/messaging/dist/messages/DlcCancel.js +51 -0
  165. package/.yalc/@node-dlc/messaging/dist/messages/DlcCancel.js.map +1 -0
  166. package/.yalc/@node-dlc/messaging/dist/messages/DlcClose.d.ts +68 -0
  167. package/.yalc/@node-dlc/messaging/dist/messages/DlcClose.js +210 -0
  168. package/.yalc/@node-dlc/messaging/dist/messages/DlcClose.js.map +1 -0
  169. package/.yalc/@node-dlc/messaging/dist/messages/DlcCloseMetadata.d.ts +44 -0
  170. package/.yalc/@node-dlc/messaging/dist/messages/DlcCloseMetadata.js +74 -0
  171. package/.yalc/@node-dlc/messaging/dist/messages/DlcCloseMetadata.js.map +1 -0
  172. package/.yalc/@node-dlc/messaging/dist/messages/DlcIds.d.ts +26 -0
  173. package/.yalc/@node-dlc/messaging/dist/messages/DlcIds.js +58 -0
  174. package/.yalc/@node-dlc/messaging/dist/messages/DlcIds.js.map +1 -0
  175. package/.yalc/@node-dlc/messaging/dist/messages/DlcInfo.d.ts +31 -0
  176. package/.yalc/@node-dlc/messaging/dist/messages/DlcInfo.js +61 -0
  177. package/.yalc/@node-dlc/messaging/dist/messages/DlcInfo.js.map +1 -0
  178. package/.yalc/@node-dlc/messaging/dist/messages/DlcMessage.d.ts +23 -0
  179. package/.yalc/@node-dlc/messaging/dist/messages/DlcMessage.js +54 -0
  180. package/.yalc/@node-dlc/messaging/dist/messages/DlcMessage.js.map +1 -0
  181. package/.yalc/@node-dlc/messaging/dist/messages/DlcOffer.d.ts +131 -0
  182. package/.yalc/@node-dlc/messaging/dist/messages/DlcOffer.js +418 -0
  183. package/.yalc/@node-dlc/messaging/dist/messages/DlcOffer.js.map +1 -0
  184. package/.yalc/@node-dlc/messaging/dist/messages/DlcSign.d.ts +96 -0
  185. package/.yalc/@node-dlc/messaging/dist/messages/DlcSign.js +267 -0
  186. package/.yalc/@node-dlc/messaging/dist/messages/DlcSign.js.map +1 -0
  187. package/.yalc/@node-dlc/messaging/dist/messages/DlcTransactions.d.ts +69 -0
  188. package/.yalc/@node-dlc/messaging/dist/messages/DlcTransactions.js +149 -0
  189. package/.yalc/@node-dlc/messaging/dist/messages/DlcTransactions.js.map +1 -0
  190. package/.yalc/@node-dlc/messaging/dist/messages/EventDescriptor.d.ts +106 -0
  191. package/.yalc/@node-dlc/messaging/dist/messages/EventDescriptor.js +209 -0
  192. package/.yalc/@node-dlc/messaging/dist/messages/EventDescriptor.js.map +1 -0
  193. package/.yalc/@node-dlc/messaging/dist/messages/FundingInput.d.ts +62 -0
  194. package/.yalc/@node-dlc/messaging/dist/messages/FundingInput.js +163 -0
  195. package/.yalc/@node-dlc/messaging/dist/messages/FundingInput.js.map +1 -0
  196. package/.yalc/@node-dlc/messaging/dist/messages/FundingSignatures.d.ts +36 -0
  197. package/.yalc/@node-dlc/messaging/dist/messages/FundingSignatures.js +78 -0
  198. package/.yalc/@node-dlc/messaging/dist/messages/FundingSignatures.js.map +1 -0
  199. package/.yalc/@node-dlc/messaging/dist/messages/IWireMessage.d.ts +6 -0
  200. package/.yalc/@node-dlc/messaging/dist/messages/IWireMessage.js +3 -0
  201. package/.yalc/@node-dlc/messaging/dist/messages/IWireMessage.js.map +1 -0
  202. package/.yalc/@node-dlc/messaging/dist/messages/NegotiationFields.d.ts +86 -0
  203. package/.yalc/@node-dlc/messaging/dist/messages/NegotiationFields.js +185 -0
  204. package/.yalc/@node-dlc/messaging/dist/messages/NegotiationFields.js.map +1 -0
  205. package/.yalc/@node-dlc/messaging/dist/messages/NodeAnnouncementMessage.d.ts +57 -0
  206. package/.yalc/@node-dlc/messaging/dist/messages/NodeAnnouncementMessage.js +127 -0
  207. package/.yalc/@node-dlc/messaging/dist/messages/NodeAnnouncementMessage.js.map +1 -0
  208. package/.yalc/@node-dlc/messaging/dist/messages/OracleAnnouncement.d.ts +76 -0
  209. package/.yalc/@node-dlc/messaging/dist/messages/OracleAnnouncement.js +131 -0
  210. package/.yalc/@node-dlc/messaging/dist/messages/OracleAnnouncement.js.map +1 -0
  211. package/.yalc/@node-dlc/messaging/dist/messages/OracleAttestation.d.ts +68 -0
  212. package/.yalc/@node-dlc/messaging/dist/messages/OracleAttestation.js +239 -0
  213. package/.yalc/@node-dlc/messaging/dist/messages/OracleAttestation.js.map +1 -0
  214. package/.yalc/@node-dlc/messaging/dist/messages/OracleEvent.d.ts +90 -0
  215. package/.yalc/@node-dlc/messaging/dist/messages/OracleEvent.js +189 -0
  216. package/.yalc/@node-dlc/messaging/dist/messages/OracleEvent.js.map +1 -0
  217. package/.yalc/@node-dlc/messaging/dist/messages/OracleEventContainer.d.ts +32 -0
  218. package/.yalc/@node-dlc/messaging/dist/messages/OracleEventContainer.js +67 -0
  219. package/.yalc/@node-dlc/messaging/dist/messages/OracleEventContainer.js.map +1 -0
  220. package/.yalc/@node-dlc/messaging/dist/messages/OracleIdentifier.d.ts +32 -0
  221. package/.yalc/@node-dlc/messaging/dist/messages/OracleIdentifier.js +58 -0
  222. package/.yalc/@node-dlc/messaging/dist/messages/OracleIdentifier.js.map +1 -0
  223. package/.yalc/@node-dlc/messaging/dist/messages/OracleIdentifierV0.d.ts +32 -0
  224. package/.yalc/@node-dlc/messaging/dist/messages/OracleIdentifierV0.js +58 -0
  225. package/.yalc/@node-dlc/messaging/dist/messages/OracleIdentifierV0.js.map +1 -0
  226. package/.yalc/@node-dlc/messaging/dist/messages/OracleInfo.d.ts +161 -0
  227. package/.yalc/@node-dlc/messaging/dist/messages/OracleInfo.js +390 -0
  228. package/.yalc/@node-dlc/messaging/dist/messages/OracleInfo.js.map +1 -0
  229. package/.yalc/@node-dlc/messaging/dist/messages/OracleInfoV0.d.ts +161 -0
  230. package/.yalc/@node-dlc/messaging/dist/messages/OracleInfoV0.js +387 -0
  231. package/.yalc/@node-dlc/messaging/dist/messages/OracleInfoV0.js.map +1 -0
  232. package/.yalc/@node-dlc/messaging/dist/messages/OrderAccept.d.ts +65 -0
  233. package/.yalc/@node-dlc/messaging/dist/messages/OrderAccept.js +125 -0
  234. package/.yalc/@node-dlc/messaging/dist/messages/OrderAccept.js.map +1 -0
  235. package/.yalc/@node-dlc/messaging/dist/messages/OrderIrcInfo.d.ts +42 -0
  236. package/.yalc/@node-dlc/messaging/dist/messages/OrderIrcInfo.js +74 -0
  237. package/.yalc/@node-dlc/messaging/dist/messages/OrderIrcInfo.js.map +1 -0
  238. package/.yalc/@node-dlc/messaging/dist/messages/OrderMetadata.d.ts +56 -0
  239. package/.yalc/@node-dlc/messaging/dist/messages/OrderMetadata.js +87 -0
  240. package/.yalc/@node-dlc/messaging/dist/messages/OrderMetadata.js.map +1 -0
  241. package/.yalc/@node-dlc/messaging/dist/messages/OrderNegotiationFields.d.ts +69 -0
  242. package/.yalc/@node-dlc/messaging/dist/messages/OrderNegotiationFields.js +114 -0
  243. package/.yalc/@node-dlc/messaging/dist/messages/OrderNegotiationFields.js.map +1 -0
  244. package/.yalc/@node-dlc/messaging/dist/messages/OrderOffer.d.ts +97 -0
  245. package/.yalc/@node-dlc/messaging/dist/messages/OrderOffer.js +296 -0
  246. package/.yalc/@node-dlc/messaging/dist/messages/OrderOffer.js.map +1 -0
  247. package/.yalc/@node-dlc/messaging/dist/messages/OrderPositionInfo.d.ts +50 -0
  248. package/.yalc/@node-dlc/messaging/dist/messages/OrderPositionInfo.js +125 -0
  249. package/.yalc/@node-dlc/messaging/dist/messages/OrderPositionInfo.js.map +1 -0
  250. package/.yalc/@node-dlc/messaging/dist/messages/PayoutCurvePiece.d.ts +129 -0
  251. package/.yalc/@node-dlc/messaging/dist/messages/PayoutCurvePiece.js +327 -0
  252. package/.yalc/@node-dlc/messaging/dist/messages/PayoutCurvePiece.js.map +1 -0
  253. package/.yalc/@node-dlc/messaging/dist/messages/PayoutFunction.d.ts +66 -0
  254. package/.yalc/@node-dlc/messaging/dist/messages/PayoutFunction.js +170 -0
  255. package/.yalc/@node-dlc/messaging/dist/messages/PayoutFunction.js.map +1 -0
  256. package/.yalc/@node-dlc/messaging/dist/messages/RoundingIntervals.d.ts +52 -0
  257. package/.yalc/@node-dlc/messaging/dist/messages/RoundingIntervals.js +95 -0
  258. package/.yalc/@node-dlc/messaging/dist/messages/RoundingIntervals.js.map +1 -0
  259. package/.yalc/@node-dlc/messaging/dist/messages/ScriptWitnessV0.d.ts +29 -0
  260. package/.yalc/@node-dlc/messaging/dist/messages/ScriptWitnessV0.js +50 -0
  261. package/.yalc/@node-dlc/messaging/dist/messages/ScriptWitnessV0.js.map +1 -0
  262. package/.yalc/@node-dlc/messaging/dist/messages/Tlv.d.ts +15 -0
  263. package/.yalc/@node-dlc/messaging/dist/messages/Tlv.js +32 -0
  264. package/.yalc/@node-dlc/messaging/dist/messages/Tlv.js.map +1 -0
  265. package/.yalc/@node-dlc/messaging/dist/serialize/F64.d.ts +154 -0
  266. package/.yalc/@node-dlc/messaging/dist/serialize/F64.js +307 -0
  267. package/.yalc/@node-dlc/messaging/dist/serialize/F64.js.map +1 -0
  268. package/.yalc/@node-dlc/messaging/dist/serialize/deserializeTlv.d.ts +9 -0
  269. package/.yalc/@node-dlc/messaging/dist/serialize/deserializeTlv.js +11 -0
  270. package/.yalc/@node-dlc/messaging/dist/serialize/deserializeTlv.js.map +1 -0
  271. package/.yalc/@node-dlc/messaging/dist/serialize/getTlv.d.ts +4 -0
  272. package/.yalc/@node-dlc/messaging/dist/serialize/getTlv.js +23 -0
  273. package/.yalc/@node-dlc/messaging/dist/serialize/getTlv.js.map +1 -0
  274. package/.yalc/@node-dlc/messaging/dist/serialize/readTlvs.d.ts +8 -0
  275. package/.yalc/@node-dlc/messaging/dist/serialize/readTlvs.js +33 -0
  276. package/.yalc/@node-dlc/messaging/dist/serialize/readTlvs.js.map +1 -0
  277. package/.yalc/@node-dlc/messaging/dist/util.d.ts +13 -0
  278. package/.yalc/@node-dlc/messaging/dist/util.js +40 -0
  279. package/.yalc/@node-dlc/messaging/dist/util.js.map +1 -0
  280. package/.yalc/@node-dlc/messaging/dist/validation/validate.d.ts +4 -0
  281. package/.yalc/@node-dlc/messaging/dist/validation/validate.js +31 -0
  282. package/.yalc/@node-dlc/messaging/dist/validation/validate.js.map +1 -0
  283. package/.yalc/@node-dlc/messaging/lib/MessageType.ts +138 -0
  284. package/.yalc/@node-dlc/messaging/lib/chain/ChainManager.ts +326 -0
  285. package/.yalc/@node-dlc/messaging/lib/chain/ChainMemoryStore.ts +34 -0
  286. package/.yalc/@node-dlc/messaging/lib/chain/DlcStore.ts +11 -0
  287. package/.yalc/@node-dlc/messaging/lib/chain/IChainFilterChainClient.ts +57 -0
  288. package/.yalc/@node-dlc/messaging/lib/domain/Address.ts +64 -0
  289. package/.yalc/@node-dlc/messaging/lib/index.ts +44 -0
  290. package/.yalc/@node-dlc/messaging/lib/irc/IrcMessage.ts +161 -0
  291. package/.yalc/@node-dlc/messaging/lib/messages/AddressCache.ts +74 -0
  292. package/.yalc/@node-dlc/messaging/lib/messages/BatchFundingGroup.ts +141 -0
  293. package/.yalc/@node-dlc/messaging/lib/messages/CetAdaptorSignatures.ts +89 -0
  294. package/.yalc/@node-dlc/messaging/lib/messages/ContractDescriptor.ts +318 -0
  295. package/.yalc/@node-dlc/messaging/lib/messages/ContractInfo.ts +434 -0
  296. package/.yalc/@node-dlc/messaging/lib/messages/DlcAccept.ts +595 -0
  297. package/.yalc/@node-dlc/messaging/lib/messages/DlcCancel.ts +57 -0
  298. package/.yalc/@node-dlc/messaging/lib/messages/DlcClose.ts +302 -0
  299. package/.yalc/@node-dlc/messaging/lib/messages/DlcCloseMetadata.ts +121 -0
  300. package/.yalc/@node-dlc/messaging/lib/messages/DlcIds.ts +67 -0
  301. package/.yalc/@node-dlc/messaging/lib/messages/DlcInfo.ts +81 -0
  302. package/.yalc/@node-dlc/messaging/lib/messages/DlcMessage.ts +87 -0
  303. package/.yalc/@node-dlc/messaging/lib/messages/DlcOffer.ts +605 -0
  304. package/.yalc/@node-dlc/messaging/lib/messages/DlcSign.ts +354 -0
  305. package/.yalc/@node-dlc/messaging/lib/messages/DlcTransactions.ts +213 -0
  306. package/.yalc/@node-dlc/messaging/lib/messages/EventDescriptor.ts +289 -0
  307. package/.yalc/@node-dlc/messaging/lib/messages/FundingInput.ts +216 -0
  308. package/.yalc/@node-dlc/messaging/lib/messages/FundingSignatures.ts +98 -0
  309. package/.yalc/@node-dlc/messaging/lib/messages/IWireMessage.ts +6 -0
  310. package/.yalc/@node-dlc/messaging/lib/messages/NegotiationFields.ts +252 -0
  311. package/.yalc/@node-dlc/messaging/lib/messages/NodeAnnouncementMessage.ts +145 -0
  312. package/.yalc/@node-dlc/messaging/lib/messages/OracleAnnouncement.ts +176 -0
  313. package/.yalc/@node-dlc/messaging/lib/messages/OracleAttestation.ts +292 -0
  314. package/.yalc/@node-dlc/messaging/lib/messages/OracleEvent.ts +250 -0
  315. package/.yalc/@node-dlc/messaging/lib/messages/OracleEventContainer.ts +89 -0
  316. package/.yalc/@node-dlc/messaging/lib/messages/OracleIdentifier.ts +78 -0
  317. package/.yalc/@node-dlc/messaging/lib/messages/OracleInfo.ts +519 -0
  318. package/.yalc/@node-dlc/messaging/lib/messages/OrderAccept.ts +159 -0
  319. package/.yalc/@node-dlc/messaging/lib/messages/OrderIrcInfo.ts +100 -0
  320. package/.yalc/@node-dlc/messaging/lib/messages/OrderMetadata.ts +119 -0
  321. package/.yalc/@node-dlc/messaging/lib/messages/OrderNegotiationFields.ts +157 -0
  322. package/.yalc/@node-dlc/messaging/lib/messages/OrderOffer.ts +419 -0
  323. package/.yalc/@node-dlc/messaging/lib/messages/OrderPositionInfo.ts +170 -0
  324. package/.yalc/@node-dlc/messaging/lib/messages/PayoutCurvePiece.ts +449 -0
  325. package/.yalc/@node-dlc/messaging/lib/messages/PayoutFunction.ts +240 -0
  326. package/.yalc/@node-dlc/messaging/lib/messages/RoundingIntervals.ts +127 -0
  327. package/.yalc/@node-dlc/messaging/lib/messages/ScriptWitnessV0.ts +63 -0
  328. package/.yalc/@node-dlc/messaging/lib/messages/Tlv.ts +40 -0
  329. package/.yalc/@node-dlc/messaging/lib/serialize/F64.ts +352 -0
  330. package/.yalc/@node-dlc/messaging/lib/serialize/deserializeTlv.ts +15 -0
  331. package/.yalc/@node-dlc/messaging/lib/serialize/getTlv.ts +21 -0
  332. package/.yalc/@node-dlc/messaging/lib/serialize/readTlvs.ts +37 -0
  333. package/.yalc/@node-dlc/messaging/lib/util.ts +33 -0
  334. package/.yalc/@node-dlc/messaging/lib/validation/validate.ts +34 -0
  335. package/.yalc/@node-dlc/messaging/package.json +42 -0
  336. package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs/enum_3_of_3_test.json +210 -0
  337. package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs/enum_3_of_5_test.json +468 -0
  338. package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs/enum_and_numerical_3_of_5_test.json +1517 -0
  339. package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs/enum_and_numerical_5_of_5_test.json +545 -0
  340. package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs/enum_and_numerical_with_diff_3_of_5_test.json +4761 -0
  341. package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs/enum_and_numerical_with_diff_5_of_5_test.json +2169 -0
  342. package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs/enum_single_oracle_test.json +164 -0
  343. package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs/single_oracle_numerical_hyperbola_test.json +502 -0
  344. package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs/single_oracle_numerical_test.json +262 -0
  345. package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs/three_of_five_oracle_numerical_with_diff_test.json +4382 -0
  346. package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs/three_of_three_oracle_numerical_test.json +324 -0
  347. package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs/three_of_three_oracle_numerical_with_diff_test.json +652 -0
  348. package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs/two_of_five_oracle_numerical_test.json +1138 -0
  349. package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs/two_of_five_oracle_numerical_with_diff_test.json +2222 -0
  350. package/.yalc/@node-dlc/messaging/test_vectors/oracle/external_oracle_announcements.json +0 -0
  351. package/.yalc/@node-dlc/messaging/test_vectors/oracle/oracle_message_test_vectors.json +115 -0
  352. package/.yalc/@node-dlc/messaging/test_vectors/rust-dlc/accept_msg.json +1465 -0
  353. package/.yalc/@node-dlc/messaging/test_vectors/rust-dlc/dlc_fee_test.json +12362 -0
  354. package/.yalc/@node-dlc/messaging/test_vectors/rust-dlc/dlc_fee_test_scripts.json +57 -0
  355. package/.yalc/@node-dlc/messaging/test_vectors/rust-dlc/dlc_test.json +2766 -0
  356. package/.yalc/@node-dlc/messaging/test_vectors/rust-dlc/dlc_tx_test.json +2899 -0
  357. package/.yalc/@node-dlc/messaging/test_vectors/rust-dlc/offer_msg.json +163 -0
  358. package/.yalc/@node-dlc/messaging/test_vectors/rust-dlc/offer_msg_disjoint.json +352 -0
  359. package/.yalc/@node-dlc/messaging/test_vectors/rust-dlc/segment_chunk_msg.json +12635 -0
  360. package/.yalc/@node-dlc/messaging/test_vectors/rust-dlc/segment_start_msg.json +4022 -0
  361. package/.yalc/@node-dlc/messaging/test_vectors/rust-dlc/sign_msg.json +383 -0
  362. package/.yalc/@node-dlc/messaging/tsconfig.json +7 -0
  363. package/.yalc/@node-dlc/messaging/yalc.sig +1 -0
  364. package/CHANGELOG.md +70 -0
  365. package/dist/dlc.d.ts +3 -3
  366. package/dist/models/Output.js.map +1 -1
  367. package/lib/dlc.ts +4 -14
  368. package/lib/models/Output.ts +4 -1
  369. package/package.json +4 -4
  370. package/yalc.lock +10 -0
@@ -0,0 +1,527 @@
1
+ import { Value } from '@node-dlc/bitcoin';
2
+ import { BitcoinNetworks } from 'bitcoin-networks';
3
+ import { expect } from 'chai';
4
+
5
+ import {
6
+ BatchFundingGroup,
7
+ OrderIrcInfoV0,
8
+ OrderMetadataV0,
9
+ OrderPositionInfoV0,
10
+ } from '../../lib';
11
+ import { EnumeratedDescriptor } from '../../lib/messages/ContractDescriptor';
12
+ import { SingleContractInfo } from '../../lib/messages/ContractInfo';
13
+ import {
14
+ DlcOffer,
15
+ DlcOfferContainer,
16
+ LOCKTIME_THRESHOLD,
17
+ } from '../../lib/messages/DlcOffer';
18
+ import { EnumEventDescriptorV0 } from '../../lib/messages/EventDescriptor';
19
+ import { FundingInput } from '../../lib/messages/FundingInput';
20
+ import { OracleAnnouncement } from '../../lib/messages/OracleAnnouncement';
21
+ import { OracleEvent } from '../../lib/messages/OracleEvent';
22
+ import { SingleOracleInfo } from '../../lib/messages/OracleInfo';
23
+ import { MessageType, PROTOCOL_VERSION } from '../../lib/MessageType';
24
+
25
+ describe('DlcOffer', () => {
26
+ const bitcoinNetwork = BitcoinNetworks.bitcoin_regtest;
27
+
28
+ let instance: DlcOffer;
29
+ const contractFlags = Buffer.from('00', 'hex');
30
+ const chainHash = Buffer.from(
31
+ '06226e46111a0b59caaf126043eb5bbf28c34f3a5e332a1fc7b2b73cf188910f',
32
+ 'hex',
33
+ );
34
+ const temporaryContractId = Buffer.from(
35
+ '0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef', // 32 bytes
36
+ 'hex',
37
+ );
38
+
39
+ // Create ContractInfo programmatically for new dlcspecs PR #163 format
40
+ function createTestContractInfo(): SingleContractInfo {
41
+ const contractInfo = new SingleContractInfo();
42
+ contractInfo.totalCollateral = BigInt(200000000);
43
+
44
+ // Create enumerated contract descriptor
45
+ const contractDescriptor = new EnumeratedDescriptor();
46
+ contractDescriptor.outcomes = [
47
+ { outcome: 'win', localPayout: BigInt(0) },
48
+ { outcome: 'draw', localPayout: BigInt(153666723) },
49
+ { outcome: 'lose', localPayout: BigInt(200000000) },
50
+ ];
51
+
52
+ // Create oracle info (simplified)
53
+ const oracleInfo = new SingleOracleInfo();
54
+ const announcement = new OracleAnnouncement();
55
+ announcement.announcementSig = Buffer.from(
56
+ 'fab22628f6e2602e1671c286a2f63a9246794008627a1749639217f4214cb4a9494c93d1a852221080f44f697adb4355df59eb339f6ba0f9b01ba661a8b108d4',
57
+ 'hex',
58
+ );
59
+ announcement.oraclePubkey = Buffer.from(
60
+ 'da078bbb1d34e7729e38e2ae34236e776da121af442626fa31e31ae55a279a0b',
61
+ 'hex',
62
+ );
63
+
64
+ const oracleEvent = new OracleEvent();
65
+ oracleEvent.oracleNonces = [
66
+ Buffer.from(
67
+ '3cfba011378411b20a5ab773cb95daab93e9bcd1e4cce44986a7dda84e01841b',
68
+ 'hex',
69
+ ),
70
+ ];
71
+ oracleEvent.eventMaturityEpoch = 0;
72
+ // Use proper EnumEventDescriptorV0 for new dlcspecs PR #163 format
73
+ const eventDescriptor = new EnumEventDescriptorV0();
74
+ eventDescriptor.outcomes = ['dummy1', 'dummy2'];
75
+ oracleEvent.eventDescriptor = eventDescriptor;
76
+ oracleEvent.eventId = 'dummy';
77
+
78
+ announcement.oracleEvent = oracleEvent;
79
+ oracleInfo.announcement = announcement;
80
+
81
+ contractInfo.contractDescriptor = contractDescriptor;
82
+ contractInfo.oracleInfo = oracleInfo;
83
+
84
+ return contractInfo;
85
+ }
86
+
87
+ const fundingPubkey = Buffer.from(
88
+ '0327efea09ff4dfb13230e887cbab8821d5cc249c7ff28668c6633ff9f4b4c08e3',
89
+ 'hex',
90
+ );
91
+
92
+ const payoutSpk = Buffer.from(
93
+ '00142bbdec425007dc360523b0294d2c64d2213af498',
94
+ 'hex',
95
+ );
96
+
97
+ const fundingInput = Buffer.from(
98
+ 'fda714' +
99
+ '3f' + // length
100
+ '000000000000fa51' + // input_serial_id
101
+ '0029' + // prevtx_len
102
+ '02000000000100c2eb0b00000000160014369d63a82ed846f4d47ad55045e594ab95539d6000000000' + // prevtx
103
+ '00000000' + // prevtx_vout
104
+ 'ffffffff' + // sequence
105
+ '006b' + // max_witness_len
106
+ '0000', // redeemscript_len
107
+ 'hex',
108
+ );
109
+
110
+ const changeSpk = Buffer.from(
111
+ '0014afa16f949f3055f38bd3a73312bed00b61558884',
112
+ 'hex',
113
+ );
114
+
115
+ // Use round-trip testing approach for new dlcspecs PR #163 format
116
+ function createTestDlcOfferHex(): Buffer {
117
+ const testInstance = new DlcOffer();
118
+ testInstance.protocolVersion = PROTOCOL_VERSION;
119
+ testInstance.contractFlags = contractFlags;
120
+ testInstance.chainHash = chainHash;
121
+ testInstance.temporaryContractId = temporaryContractId;
122
+ testInstance.contractInfo = createTestContractInfo();
123
+ testInstance.fundingPubkey = fundingPubkey;
124
+ testInstance.payoutSpk = payoutSpk;
125
+ testInstance.payoutSerialId = BigInt(11555292);
126
+ testInstance.offerCollateral = BigInt(99999999);
127
+ testInstance.fundingInputs = [FundingInput.deserialize(fundingInput)];
128
+ testInstance.changeSpk = changeSpk;
129
+ testInstance.changeSerialId = BigInt(2008045);
130
+ testInstance.fundOutputSerialId = BigInt(5411962);
131
+ testInstance.feeRatePerVb = BigInt(1);
132
+ testInstance.cetLocktime = 100;
133
+ testInstance.refundLocktime = 200;
134
+ return testInstance.serialize();
135
+ }
136
+
137
+ const dlcOfferHex = createTestDlcOfferHex();
138
+
139
+ beforeEach(() => {
140
+ instance = new DlcOffer();
141
+ instance.protocolVersion = PROTOCOL_VERSION; // New field
142
+ instance.contractFlags = contractFlags;
143
+ instance.chainHash = chainHash;
144
+ instance.temporaryContractId = temporaryContractId; // New field
145
+ instance.contractInfo = createTestContractInfo();
146
+ instance.fundingPubkey = fundingPubkey;
147
+ instance.payoutSpk = payoutSpk;
148
+ instance.payoutSerialId = BigInt(11555292);
149
+ instance.offerCollateral = BigInt(99999999);
150
+ instance.fundingInputs = [FundingInput.deserialize(fundingInput)];
151
+ instance.changeSpk = changeSpk;
152
+ instance.changeSerialId = BigInt(2008045);
153
+ instance.fundOutputSerialId = BigInt(5411962);
154
+ instance.feeRatePerVb = BigInt(1);
155
+ instance.cetLocktime = 100;
156
+ instance.refundLocktime = 200;
157
+ });
158
+
159
+ describe('deserialize', () => {
160
+ it('should throw if incorrect type', () => {
161
+ // Create buffer with incorrect type (0x123 instead of 42778)
162
+ const incorrectTypeBuffer = Buffer.concat([
163
+ Buffer.from([0x01, 0x23]), // incorrect type
164
+ instance.serialize().slice(2), // rest of the data
165
+ ]);
166
+ expect(function () {
167
+ DlcOffer.deserialize(incorrectTypeBuffer);
168
+ }).to.throw(Error);
169
+ });
170
+
171
+ it('has correct type', () => {
172
+ expect(DlcOffer.deserialize(instance.serialize()).type).to.equal(
173
+ instance.type,
174
+ );
175
+ });
176
+ });
177
+
178
+ describe('DlcOffer', () => {
179
+ describe('serialize', () => {
180
+ it('serializes', () => {
181
+ // Test that it serializes without errors (new dlcspecs PR #163 format)
182
+ const serialized = instance.serialize();
183
+ expect(serialized).to.be.instanceof(Buffer);
184
+ expect(serialized.length).to.be.greaterThan(0);
185
+ });
186
+
187
+ it('serializes with positioninfo', () => {
188
+ const positionInfo = new OrderPositionInfoV0();
189
+ positionInfo.shiftForFees = 'acceptor';
190
+ positionInfo.fees = BigInt(1000);
191
+
192
+ instance.positionInfo = positionInfo;
193
+
194
+ // Test that it serializes without errors (new dlcspecs PR #163 format)
195
+ const serialized = instance.serialize();
196
+ expect(serialized).to.be.instanceof(Buffer);
197
+ expect(serialized.length).to.be.greaterThan(0);
198
+ });
199
+ });
200
+
201
+ describe('deserialize', () => {
202
+ it('deserializes', () => {
203
+ // Use round-trip testing approach for consistency
204
+ const serialized = instance.serialize();
205
+ const deserialized = DlcOffer.deserialize(serialized);
206
+
207
+ expect(deserialized.protocolVersion).to.equal(PROTOCOL_VERSION);
208
+ expect(deserialized.contractFlags).to.deep.equal(contractFlags);
209
+ expect(deserialized.chainHash).to.deep.equal(chainHash);
210
+ expect(deserialized.temporaryContractId).to.deep.equal(
211
+ temporaryContractId,
212
+ );
213
+ expect(deserialized.fundingPubkey).to.deep.equal(fundingPubkey);
214
+ expect(deserialized.payoutSpk).to.deep.equal(payoutSpk);
215
+ expect(Number(deserialized.payoutSerialId)).to.equal(11555292);
216
+ expect(Number(deserialized.offerCollateral)).to.equal(99999999);
217
+ expect(deserialized.changeSpk).to.deep.equal(changeSpk);
218
+ expect(Number(deserialized.changeSerialId)).to.equal(2008045);
219
+ expect(Number(deserialized.fundOutputSerialId)).to.equal(5411962);
220
+ expect(Number(deserialized.feeRatePerVb)).to.equal(1);
221
+ expect(deserialized.cetLocktime).to.equal(100);
222
+ expect(deserialized.refundLocktime).to.equal(200);
223
+ });
224
+
225
+ it('has correct type', () => {
226
+ const serialized = instance.serialize();
227
+ expect(DlcOffer.deserialize(serialized).type).to.equal(
228
+ MessageType.DlcOffer,
229
+ );
230
+ });
231
+
232
+ it('deserializes with positioninfo', () => {
233
+ const positionInfo = new OrderPositionInfoV0();
234
+ positionInfo.shiftForFees = 'acceptor';
235
+ positionInfo.fees = BigInt(1000);
236
+
237
+ instance.positionInfo = positionInfo;
238
+
239
+ const serialized = instance.serialize();
240
+ const deserialized = DlcOffer.deserialize(serialized);
241
+
242
+ expect(deserialized.positionInfo).to.be.instanceof(OrderPositionInfoV0);
243
+ expect(deserialized.positionInfo?.serialize()).to.deep.equal(
244
+ positionInfo.serialize(),
245
+ );
246
+ });
247
+ });
248
+
249
+ describe('toJSON', () => {
250
+ it('converts to JSON', async () => {
251
+ const json = instance.toJSON();
252
+ // Basic structure validation - detailed field testing is done in cross-language tests
253
+ expect(json).to.be.an('object');
254
+ expect(json.protocolVersion).to.be.a('number');
255
+ expect(json.temporaryContractId).to.be.a('string');
256
+ expect(json.contractFlags).to.be.a('number');
257
+ expect(json.chainHash).to.be.a('string');
258
+ expect(json.contractInfo).to.be.an('object');
259
+ });
260
+ });
261
+
262
+ describe('getAddresses', () => {
263
+ it('should get addresses', () => {
264
+ const expectedFundingAddress =
265
+ 'bcrt1qayylp95g2tzq2a60x2l7f8mclnx5y2jxm0yt09';
266
+ const expectedChangeAddress =
267
+ 'bcrt1q47skl9ylxp2l8z7n5ue390kspds4tzyy5jdxs8';
268
+ const expectedPayoutAddress =
269
+ 'bcrt1q9w77csjsqlwrvpfrkq556try6gsn4ayc2kn0kl';
270
+
271
+ // Use round-trip approach for consistency
272
+ const serialized = instance.serialize();
273
+ const deserialized = DlcOffer.deserialize(serialized);
274
+
275
+ const {
276
+ fundingAddress,
277
+ changeAddress,
278
+ payoutAddress,
279
+ } = deserialized.getAddresses(bitcoinNetwork);
280
+
281
+ expect(fundingAddress).to.equal(expectedFundingAddress);
282
+ expect(changeAddress).to.equal(expectedChangeAddress);
283
+ expect(payoutAddress).to.equal(expectedPayoutAddress);
284
+ });
285
+ });
286
+
287
+ describe('validate', () => {
288
+ it('should throw if protocol version is invalid', () => {
289
+ instance.protocolVersion = 999;
290
+ expect(function () {
291
+ instance.validate();
292
+ }).to.throw('Unsupported protocol version: 999, expected: 1');
293
+ });
294
+
295
+ it('should throw if temporaryContractId is invalid', () => {
296
+ instance.temporaryContractId = Buffer.from('invalid', 'hex');
297
+ expect(function () {
298
+ instance.validate();
299
+ }).to.throw('temporaryContractId must be 32 bytes');
300
+ });
301
+
302
+ it('should throw if payout_spk is invalid', () => {
303
+ instance.payoutSpk = Buffer.from('fff', 'hex');
304
+ expect(function () {
305
+ instance.validate();
306
+ }).to.throw(Error);
307
+ });
308
+ it('should throw if change_spk is invalid', () => {
309
+ instance.changeSpk = Buffer.from('fff', 'hex');
310
+ expect(function () {
311
+ instance.validate();
312
+ }).to.throw(Error);
313
+ });
314
+ it('should throw if fundingpubkey is not a valid pubkey', () => {
315
+ instance.fundingPubkey = Buffer.from(
316
+ '00f003aa11f2a97b6be755a86b9fd798a7451c670196a5245b7bae971306b7c87e',
317
+ 'hex',
318
+ );
319
+ expect(function () {
320
+ instance.validate();
321
+ }).to.throw(Error);
322
+ });
323
+ it('should throw if fundingpubkey is not in compressed secp256k1 format', () => {
324
+ instance.fundingPubkey = Buffer.from(
325
+ '045162991c7299223973cabc99ef5087d7bab2dafe61f78e5388b2f9492f7978123f51fd05ef0693790c0b2d4f30848363a3f3fbcf2bd53a05ba0fd5bb708c3184',
326
+ 'hex',
327
+ );
328
+ expect(function () {
329
+ instance.validate();
330
+ }).to.throw(Error);
331
+ });
332
+ it('should throw if offerCollateral is less than 1000', () => {
333
+ instance.offerCollateral = BigInt(999);
334
+ expect(function () {
335
+ instance.validate();
336
+ }).to.throw(Error);
337
+
338
+ // boundary check
339
+ instance.offerCollateral = BigInt(1000);
340
+ expect(function () {
341
+ instance.validate();
342
+ }).to.not.throw(Error);
343
+ });
344
+
345
+ it('should throw if cet_locktime is less than 0', () => {
346
+ instance.cetLocktime = -1;
347
+ expect(() => {
348
+ instance.validate();
349
+ }).to.throw('cet_locktime must be greater than or equal to 0');
350
+ });
351
+
352
+ it('should throw if refund_locktime is less than 0', () => {
353
+ instance.refundLocktime = -1;
354
+ expect(() => {
355
+ instance.validate();
356
+ }).to.throw('refund_locktime must be greater than or equal to 0');
357
+ });
358
+
359
+ it('should throw if cet_locktime and refund_locktime are not in same units', () => {
360
+ instance.cetLocktime = 100;
361
+ instance.refundLocktime = LOCKTIME_THRESHOLD + 200;
362
+ expect(function () {
363
+ instance.validate();
364
+ }).to.throw(Error);
365
+ });
366
+
367
+ it('should not throw if cet_locktime and refund_locktime are in same units', () => {
368
+ instance.cetLocktime = 100;
369
+ instance.refundLocktime = 200;
370
+ expect(function () {
371
+ instance.validate();
372
+ }).to.not.throw(Error);
373
+
374
+ instance.cetLocktime = LOCKTIME_THRESHOLD + 100;
375
+ instance.refundLocktime = LOCKTIME_THRESHOLD + 200;
376
+ expect(function () {
377
+ instance.validate();
378
+ }).to.not.throw(Error);
379
+ });
380
+
381
+ it('should throw if cet_locktime >= refund_locktime', () => {
382
+ instance.cetLocktime = 200;
383
+ instance.refundLocktime = 100;
384
+ expect(function () {
385
+ instance.validate();
386
+ }).to.throw(Error);
387
+
388
+ instance.cetLocktime = 100;
389
+ instance.refundLocktime = 100;
390
+ expect(function () {
391
+ instance.validate();
392
+ }).to.throw(Error);
393
+ });
394
+
395
+ it('should throw if inputSerialIds arent unique', () => {
396
+ instance.fundingInputs = [
397
+ FundingInput.deserialize(fundingInput),
398
+ FundingInput.deserialize(fundingInput),
399
+ ];
400
+ expect(function () {
401
+ instance.validate();
402
+ }).to.throw(Error);
403
+ });
404
+
405
+ it('should throw if changeSerialId == fundOutputSerialId', () => {
406
+ instance.changeSerialId = instance.fundOutputSerialId;
407
+ expect(function () {
408
+ instance.validate();
409
+ }).to.throw(Error);
410
+ });
411
+
412
+ it('should throw if totalCollateral <= offerCollateral', () => {
413
+ instance.contractInfo.totalCollateral = BigInt(200000000);
414
+ instance.offerCollateral = BigInt(200000000);
415
+ expect(function () {
416
+ instance.validate();
417
+ }).to.throw(Error);
418
+
419
+ instance.contractInfo.totalCollateral = BigInt(200000000);
420
+ instance.offerCollateral = BigInt(200000001);
421
+ expect(function () {
422
+ instance.validate();
423
+ }).to.throw(Error);
424
+ });
425
+
426
+ it('should throw if funding amount less than offer collateral', () => {
427
+ instance.offerCollateral = BigInt(3e8);
428
+ expect(function () {
429
+ instance.validate();
430
+ }).to.throw(Error);
431
+ });
432
+ });
433
+ });
434
+
435
+ describe('DlcOfferContainer', () => {
436
+ it('should serialize and deserialize', () => {
437
+ // Create test offers using round-trip approach
438
+ const dlcOffer = createTestDlcOffer();
439
+ const dlcOffer2 = createTestDlcOffer();
440
+ // swap payout and change spk to differentiate between dlcoffers
441
+ dlcOffer2.payoutSpk = dlcOffer.changeSpk;
442
+ dlcOffer2.changeSpk = dlcOffer.payoutSpk;
443
+
444
+ const container = new DlcOfferContainer();
445
+ container.addOffer(dlcOffer);
446
+ container.addOffer(dlcOffer2);
447
+
448
+ const serialized = container.serialize();
449
+ const deserialized = DlcOfferContainer.deserialize(serialized);
450
+
451
+ expect(deserialized.serialize()).to.deep.equal(container.serialize());
452
+ });
453
+
454
+ function createTestDlcOffer(): DlcOffer {
455
+ const testOffer = new DlcOffer();
456
+ testOffer.protocolVersion = PROTOCOL_VERSION;
457
+ testOffer.contractFlags = contractFlags;
458
+ testOffer.chainHash = chainHash;
459
+ testOffer.temporaryContractId = temporaryContractId;
460
+ testOffer.contractInfo = createTestContractInfo();
461
+ testOffer.fundingPubkey = fundingPubkey;
462
+ testOffer.payoutSpk = payoutSpk;
463
+ testOffer.payoutSerialId = BigInt(11555292);
464
+ testOffer.offerCollateral = BigInt(99999999);
465
+ testOffer.fundingInputs = [FundingInput.deserialize(fundingInput)];
466
+ testOffer.changeSpk = changeSpk;
467
+ testOffer.changeSerialId = BigInt(2008045);
468
+ testOffer.fundOutputSerialId = BigInt(5411962);
469
+ testOffer.feeRatePerVb = BigInt(1);
470
+ testOffer.cetLocktime = 100;
471
+ testOffer.refundLocktime = 200;
472
+ return testOffer;
473
+ }
474
+ });
475
+
476
+ describe('TLVs', () => {
477
+ it('should deserialize with all TLV types present', () => {
478
+ const dlcOffer = new DlcOffer();
479
+
480
+ dlcOffer.protocolVersion = PROTOCOL_VERSION;
481
+ dlcOffer.contractFlags = contractFlags;
482
+ dlcOffer.chainHash = chainHash;
483
+ dlcOffer.temporaryContractId = temporaryContractId;
484
+ dlcOffer.contractInfo = createTestContractInfo();
485
+ dlcOffer.fundingPubkey = fundingPubkey;
486
+ dlcOffer.payoutSpk = payoutSpk;
487
+ dlcOffer.payoutSerialId = BigInt(29829);
488
+ dlcOffer.offerCollateral = BigInt(16649967);
489
+ dlcOffer.fundingInputs = [FundingInput.deserialize(fundingInput)];
490
+ dlcOffer.changeSpk = changeSpk;
491
+ dlcOffer.changeSerialId = BigInt(94880);
492
+ dlcOffer.fundOutputSerialId = BigInt(44394);
493
+ dlcOffer.feeRatePerVb = BigInt(45);
494
+ dlcOffer.cetLocktime = 1712689645;
495
+ dlcOffer.refundLocktime = 1719255498;
496
+
497
+ // Create TLV components programmatically for new dlcspecs PR #163 format
498
+ const metadata = new OrderMetadataV0();
499
+ metadata.offerId = 'test-offer-id'; // Required property
500
+ metadata.createdAt = 1640995200; // Optional but set for consistency
501
+ metadata.goodTill = 1640995260; // Optional but set for consistency
502
+
503
+ const ircInfo = new OrderIrcInfoV0();
504
+ ircInfo.nick = 'test-nick'; // Required property
505
+ ircInfo.pubKey = Buffer.alloc(33); // Required property
506
+
507
+ const positionInfo = new OrderPositionInfoV0();
508
+ positionInfo.shiftForFees = 'acceptor';
509
+ positionInfo.fees = BigInt(6930);
510
+
511
+ const batchFundingGroup = new BatchFundingGroup();
512
+ batchFundingGroup.eventIds = ['test-event']; // Required property
513
+ batchFundingGroup.allocatedCollateral = Value.fromSats(BigInt(1000)); // Required property
514
+
515
+ dlcOffer.metadata = metadata;
516
+ dlcOffer.ircInfo = ircInfo;
517
+ dlcOffer.positionInfo = positionInfo;
518
+ dlcOffer.batchFundingGroups = [batchFundingGroup];
519
+
520
+ // Test round-trip consistency with TLVs
521
+ const serialized = dlcOffer.serialize();
522
+ const deserialized = DlcOffer.deserialize(serialized);
523
+
524
+ expect(deserialized.toJSON()).to.deep.equal(dlcOffer.toJSON());
525
+ });
526
+ });
527
+ });
@@ -0,0 +1,118 @@
1
+ import { expect } from 'chai';
2
+
3
+ import { CetAdaptorSignatures } from '../../lib/messages/CetAdaptorSignatures';
4
+ import { DlcSign, DlcSignContainer } from '../../lib/messages/DlcSign';
5
+ import { FundingSignatures } from '../../lib/messages/FundingSignatures';
6
+ import { ScriptWitnessV0 } from '../../lib/messages/ScriptWitnessV0';
7
+
8
+ describe('DlcSign', () => {
9
+ let instance: DlcSign;
10
+
11
+ const contractId = Buffer.from(
12
+ 'c1c79e1e9e2fa2840b2514902ea244f39eb3001a4037a52ea43c797d4f841269',
13
+ 'hex',
14
+ );
15
+
16
+ const contractId2 = Buffer.from(
17
+ '4946fe172de3778fa660b9858d0624044f4494667757f50388abe6fe523376e8',
18
+ 'hex',
19
+ );
20
+
21
+ const refundSignature = Buffer.alloc(64, 0x01); // Simple test signature
22
+
23
+ beforeEach(() => {
24
+ instance = new DlcSign();
25
+
26
+ instance.protocolVersion = 1; // Set protocol version
27
+ instance.contractId = contractId;
28
+
29
+ // Create test CET adaptor signatures
30
+ instance.cetAdaptorSignatures = new CetAdaptorSignatures();
31
+ instance.cetAdaptorSignatures.sigs = [
32
+ {
33
+ encryptedSig: Buffer.alloc(65),
34
+ dleqProof: Buffer.alloc(97),
35
+ },
36
+ ];
37
+
38
+ instance.refundSignature = refundSignature;
39
+
40
+ // Create test funding signatures using proper ScriptWitnessV0 objects
41
+ instance.fundingSignatures = new FundingSignatures();
42
+
43
+ const witness1 = new ScriptWitnessV0();
44
+ witness1.length = 71;
45
+ witness1.witness = Buffer.alloc(71);
46
+
47
+ const witness2 = new ScriptWitnessV0();
48
+ witness2.length = 33;
49
+ witness2.witness = Buffer.alloc(33);
50
+
51
+ instance.fundingSignatures.witnessElements = [[witness1, witness2]];
52
+ });
53
+
54
+ describe('deserialize', () => {
55
+ it('has correct type', () => {
56
+ expect(DlcSign.deserialize(instance.serialize()).type).to.equal(
57
+ instance.type,
58
+ );
59
+ });
60
+ });
61
+
62
+ describe('DlcSign', () => {
63
+ describe('serialize', () => {
64
+ it('serializes', () => {
65
+ // Test round-trip consistency instead of exact hex match
66
+ const serialized = instance.serialize();
67
+ const deserialized = DlcSign.deserialize(serialized);
68
+
69
+ expect(deserialized.contractId).to.deep.equal(instance.contractId);
70
+ expect(deserialized.refundSignature).to.deep.equal(
71
+ instance.refundSignature,
72
+ );
73
+ expect(deserialized.cetAdaptorSignatures.sigs.length).to.equal(
74
+ instance.cetAdaptorSignatures.sigs.length,
75
+ );
76
+ });
77
+ });
78
+
79
+ describe('deserialize', () => {
80
+ it('deserializes', () => {
81
+ // Test round-trip consistency
82
+ const serialized = instance.serialize();
83
+ const deserialized = DlcSign.deserialize(serialized);
84
+
85
+ expect(deserialized.contractId).to.deep.equal(contractId);
86
+ expect(deserialized.refundSignature).to.deep.equal(refundSignature);
87
+ });
88
+ });
89
+
90
+ describe('toJSON', () => {
91
+ it('convert to JSON', async () => {
92
+ const json = instance.toJSON();
93
+ // Basic structure validation - detailed field testing is done in cross-language tests
94
+ expect(json).to.be.an('object');
95
+ expect(json.contractId).to.be.a('string');
96
+ expect(json.refundSignature).to.be.a('string');
97
+ });
98
+ });
99
+ });
100
+
101
+ describe('DlcSignContainer', () => {
102
+ it('should serialize and deserialize', () => {
103
+ // Create two distinct signs
104
+ const dlcSign = instance;
105
+ const dlcSign2 = new DlcSign();
106
+ Object.assign(dlcSign2, dlcSign);
107
+ dlcSign2.contractId = contractId2;
108
+
109
+ const container = new DlcSignContainer();
110
+ container.addSign(dlcSign);
111
+ container.addSign(dlcSign2);
112
+
113
+ const deserialized = DlcSignContainer.deserialize(container.serialize());
114
+
115
+ expect(container.serialize()).to.deep.equal(deserialized.serialize());
116
+ });
117
+ });
118
+ });