@atomicfinance/bitcoin-dlc-provider 3.6.1 → 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 (373) hide show
  1. package/.nvmrc +1 -1
  2. package/.yalc/@node-dlc/messaging/.nyc_output/2cf48009-1094-4275-bb91-c164c932feb6.json +1 -0
  3. package/.yalc/@node-dlc/messaging/.nyc_output/processinfo/2cf48009-1094-4275-bb91-c164c932feb6.json +1 -0
  4. package/.yalc/@node-dlc/messaging/.nyc_output/processinfo/index.json +1 -0
  5. package/.yalc/@node-dlc/messaging/README.md +24 -0
  6. package/.yalc/@node-dlc/messaging/__tests__/_test-utils.ts +12 -0
  7. package/.yalc/@node-dlc/messaging/__tests__/chain/ChainManager.spec.ts +178 -0
  8. package/.yalc/@node-dlc/messaging/__tests__/compatibility/dlcspecs-compatibility.spec.ts +473 -0
  9. package/.yalc/@node-dlc/messaging/__tests__/compatibility/rust-dlc-cross-language.spec.ts +342 -0
  10. package/.yalc/@node-dlc/messaging/__tests__/compatibility/true-serialization-compatibility.spec.ts +611 -0
  11. package/.yalc/@node-dlc/messaging/__tests__/dlc_message_test.json +155 -0
  12. package/.yalc/@node-dlc/messaging/__tests__/irc/IrcMessage.spec.ts +94 -0
  13. package/.yalc/@node-dlc/messaging/__tests__/messages/AddressCache.spec.ts +79 -0
  14. package/.yalc/@node-dlc/messaging/__tests__/messages/BatchFundingGroup.spec.ts +72 -0
  15. package/.yalc/@node-dlc/messaging/__tests__/messages/CetAdaptorSignatures.spec.ts +57 -0
  16. package/.yalc/@node-dlc/messaging/__tests__/messages/ContractDescriptor.spec.ts +264 -0
  17. package/.yalc/@node-dlc/messaging/__tests__/messages/ContractInfo.spec.ts +419 -0
  18. package/.yalc/@node-dlc/messaging/__tests__/messages/DigitDecompositionEventDescriptor.spec.ts +59 -0
  19. package/.yalc/@node-dlc/messaging/__tests__/messages/DlcAccept.spec.ts +242 -0
  20. package/.yalc/@node-dlc/messaging/__tests__/messages/DlcCancel.spec.ts +42 -0
  21. package/.yalc/@node-dlc/messaging/__tests__/messages/DlcClose.spec.ts +315 -0
  22. package/.yalc/@node-dlc/messaging/__tests__/messages/DlcOffer.spec.ts +527 -0
  23. package/.yalc/@node-dlc/messaging/__tests__/messages/DlcSign.spec.ts +118 -0
  24. package/.yalc/@node-dlc/messaging/__tests__/messages/DlcTransactions.spec.ts +157 -0
  25. package/.yalc/@node-dlc/messaging/__tests__/messages/EnumEventDescriptor.spec.ts +50 -0
  26. package/.yalc/@node-dlc/messaging/__tests__/messages/EventDescriptor.spec.ts +93 -0
  27. package/.yalc/@node-dlc/messaging/__tests__/messages/FundingInput.spec.ts +84 -0
  28. package/.yalc/@node-dlc/messaging/__tests__/messages/FundingSignatures.spec.ts +83 -0
  29. package/.yalc/@node-dlc/messaging/__tests__/messages/NegotiationFields.spec.ts +328 -0
  30. package/.yalc/@node-dlc/messaging/__tests__/messages/NodeAnnouncementMessage.spec.ts +115 -0
  31. package/.yalc/@node-dlc/messaging/__tests__/messages/OracleAnnouncement.spec.ts +415 -0
  32. package/.yalc/@node-dlc/messaging/__tests__/messages/OracleAttestation.spec.ts +326 -0
  33. package/.yalc/@node-dlc/messaging/__tests__/messages/OracleEvent.spec.ts +143 -0
  34. package/.yalc/@node-dlc/messaging/__tests__/messages/OracleEventContainer.spec.ts +95 -0
  35. package/.yalc/@node-dlc/messaging/__tests__/messages/OracleIdentifier.spec.ts +48 -0
  36. package/.yalc/@node-dlc/messaging/__tests__/messages/OracleInfo.spec.ts +116 -0
  37. package/.yalc/@node-dlc/messaging/__tests__/messages/OrderAccept.spec.ts +77 -0
  38. package/.yalc/@node-dlc/messaging/__tests__/messages/OrderNegotiationFields.spec.ts +216 -0
  39. package/.yalc/@node-dlc/messaging/__tests__/messages/OrderOffer.spec.ts +121 -0
  40. package/.yalc/@node-dlc/messaging/__tests__/messages/OrderPositionInfo.spec.ts +75 -0
  41. package/.yalc/@node-dlc/messaging/__tests__/messages/PayoutCurvePiece.spec.ts +220 -0
  42. package/.yalc/@node-dlc/messaging/__tests__/messages/PayoutFunction.spec.ts +101 -0
  43. package/.yalc/@node-dlc/messaging/__tests__/messages/RoundingIntervals.spec.ts +75 -0
  44. package/.yalc/@node-dlc/messaging/__tests__/serialize/F64.spec.ts +260 -0
  45. package/.yalc/@node-dlc/messaging/__tests__/tsconfig.json +8 -0
  46. package/.yalc/@node-dlc/messaging/coverage/lcov-report/base.css +224 -0
  47. package/.yalc/@node-dlc/messaging/coverage/lcov-report/block-navigation.js +79 -0
  48. package/.yalc/@node-dlc/messaging/coverage/lcov-report/favicon.png +0 -0
  49. package/.yalc/@node-dlc/messaging/coverage/lcov-report/index.html +201 -0
  50. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/MessageType.ts.html +494 -0
  51. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/chain/ChainManager.ts.html +1058 -0
  52. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/chain/ChainMemoryStore.ts.html +182 -0
  53. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/chain/index.html +126 -0
  54. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/domain/Address.ts.html +272 -0
  55. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/domain/index.html +111 -0
  56. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/index.html +141 -0
  57. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/index.ts.html +212 -0
  58. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/irc/IrcMessage.ts.html +563 -0
  59. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/irc/index.html +111 -0
  60. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/AddressCache.ts.html +302 -0
  61. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/BatchFundingGroup.ts.html +503 -0
  62. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/CetAdaptorSignatures.ts.html +347 -0
  63. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/CetAdaptorSignaturesV0.ts.html +347 -0
  64. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/ContractDescriptor.ts.html +1040 -0
  65. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/ContractInfo.ts.html +1382 -0
  66. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/DlcAccept.ts.html +1865 -0
  67. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/DlcCancel.ts.html +251 -0
  68. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/DlcClose.ts.html +986 -0
  69. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/DlcCloseMetadata.ts.html +443 -0
  70. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/DlcIds.ts.html +281 -0
  71. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/DlcInfo.ts.html +323 -0
  72. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/DlcMessage.ts.html +341 -0
  73. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/DlcOffer.ts.html +1895 -0
  74. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/DlcSign.ts.html +1142 -0
  75. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/DlcTransactions.ts.html +719 -0
  76. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/EventDescriptor.ts.html +947 -0
  77. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/FundingInput.ts.html +728 -0
  78. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/FundingSignatures.ts.html +374 -0
  79. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/FundingSignaturesV0.ts.html +374 -0
  80. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/NegotiationFields.ts.html +836 -0
  81. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/NodeAnnouncementMessage.ts.html +515 -0
  82. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/OracleAnnouncement.ts.html +608 -0
  83. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/OracleAnnouncementV0.ts.html +605 -0
  84. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/OracleAttestation.ts.html +956 -0
  85. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/OracleAttestationV0.ts.html +770 -0
  86. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/OracleEvent.ts.html +830 -0
  87. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/OracleEventContainer.ts.html +347 -0
  88. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/OracleEventContainerV0.ts.html +347 -0
  89. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/OracleEventV0.ts.html +827 -0
  90. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/OracleIdentifier.ts.html +314 -0
  91. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/OracleIdentifierV0.ts.html +314 -0
  92. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/OracleInfo.ts.html +1637 -0
  93. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/OracleInfoV0.ts.html +1631 -0
  94. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/OrderAccept.ts.html +557 -0
  95. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/OrderIrcInfo.ts.html +380 -0
  96. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/OrderMetadata.ts.html +437 -0
  97. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/OrderNegotiationFields.ts.html +551 -0
  98. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/OrderOffer.ts.html +1337 -0
  99. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/OrderPositionInfo.ts.html +590 -0
  100. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/PayoutCurvePiece.ts.html +1427 -0
  101. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/PayoutFunction.ts.html +800 -0
  102. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/RoundingIntervals.ts.html +461 -0
  103. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/RoundingIntervalsV0.ts.html +482 -0
  104. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/ScriptWitnessV0.ts.html +269 -0
  105. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/index.html +636 -0
  106. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/serde/SerdeUtils.ts.html +1394 -0
  107. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/serde/index.html +111 -0
  108. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/serialize/F64.ts.html +1136 -0
  109. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/serialize/deserializeTlv.ts.html +125 -0
  110. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/serialize/getTlv.ts.html +143 -0
  111. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/serialize/index.html +141 -0
  112. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/util.ts.html +179 -0
  113. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/validation/index.html +111 -0
  114. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/validation/validate.ts.html +182 -0
  115. package/.yalc/@node-dlc/messaging/coverage/lcov-report/prettify.css +1 -0
  116. package/.yalc/@node-dlc/messaging/coverage/lcov-report/prettify.js +2 -0
  117. package/.yalc/@node-dlc/messaging/coverage/lcov-report/sort-arrow-sprite.png +0 -0
  118. package/.yalc/@node-dlc/messaging/coverage/lcov-report/sorter.js +170 -0
  119. package/.yalc/@node-dlc/messaging/coverage/lcov.info +5394 -0
  120. package/.yalc/@node-dlc/messaging/dist/MessageType.d.ts +100 -0
  121. package/.yalc/@node-dlc/messaging/dist/MessageType.js +117 -0
  122. package/.yalc/@node-dlc/messaging/dist/MessageType.js.map +1 -0
  123. package/.yalc/@node-dlc/messaging/dist/chain/ChainManager.d.ts +50 -0
  124. package/.yalc/@node-dlc/messaging/dist/chain/ChainManager.js +211 -0
  125. package/.yalc/@node-dlc/messaging/dist/chain/ChainManager.js.map +1 -0
  126. package/.yalc/@node-dlc/messaging/dist/chain/ChainMemoryStore.d.ts +14 -0
  127. package/.yalc/@node-dlc/messaging/dist/chain/ChainMemoryStore.js +28 -0
  128. package/.yalc/@node-dlc/messaging/dist/chain/ChainMemoryStore.js.map +1 -0
  129. package/.yalc/@node-dlc/messaging/dist/chain/DlcStore.d.ts +11 -0
  130. package/.yalc/@node-dlc/messaging/dist/chain/DlcStore.js +3 -0
  131. package/.yalc/@node-dlc/messaging/dist/chain/DlcStore.js.map +1 -0
  132. package/.yalc/@node-dlc/messaging/dist/chain/IChainFilterChainClient.d.ts +48 -0
  133. package/.yalc/@node-dlc/messaging/dist/chain/IChainFilterChainClient.js +3 -0
  134. package/.yalc/@node-dlc/messaging/dist/chain/IChainFilterChainClient.js.map +1 -0
  135. package/.yalc/@node-dlc/messaging/dist/domain/Address.d.ts +24 -0
  136. package/.yalc/@node-dlc/messaging/dist/domain/Address.js +46 -0
  137. package/.yalc/@node-dlc/messaging/dist/domain/Address.js.map +1 -0
  138. package/.yalc/@node-dlc/messaging/dist/index.d.ts +44 -0
  139. package/.yalc/@node-dlc/messaging/dist/index.js +63 -0
  140. package/.yalc/@node-dlc/messaging/dist/index.js.map +1 -0
  141. package/.yalc/@node-dlc/messaging/dist/irc/IrcMessage.d.ts +43 -0
  142. package/.yalc/@node-dlc/messaging/dist/irc/IrcMessage.js +116 -0
  143. package/.yalc/@node-dlc/messaging/dist/irc/IrcMessage.js.map +1 -0
  144. package/.yalc/@node-dlc/messaging/dist/messages/AddressCache.d.ts +15 -0
  145. package/.yalc/@node-dlc/messaging/dist/messages/AddressCache.js +51 -0
  146. package/.yalc/@node-dlc/messaging/dist/messages/AddressCache.js.map +1 -0
  147. package/.yalc/@node-dlc/messaging/dist/messages/BatchFundingGroup.d.ts +61 -0
  148. package/.yalc/@node-dlc/messaging/dist/messages/BatchFundingGroup.js +113 -0
  149. package/.yalc/@node-dlc/messaging/dist/messages/BatchFundingGroup.js.map +1 -0
  150. package/.yalc/@node-dlc/messaging/dist/messages/CetAdaptorSignatures.d.ts +40 -0
  151. package/.yalc/@node-dlc/messaging/dist/messages/CetAdaptorSignatures.js +67 -0
  152. package/.yalc/@node-dlc/messaging/dist/messages/CetAdaptorSignatures.js.map +1 -0
  153. package/.yalc/@node-dlc/messaging/dist/messages/ContractDescriptor.d.ts +122 -0
  154. package/.yalc/@node-dlc/messaging/dist/messages/ContractDescriptor.js +222 -0
  155. package/.yalc/@node-dlc/messaging/dist/messages/ContractDescriptor.js.map +1 -0
  156. package/.yalc/@node-dlc/messaging/dist/messages/ContractInfo.d.ts +135 -0
  157. package/.yalc/@node-dlc/messaging/dist/messages/ContractInfo.js +304 -0
  158. package/.yalc/@node-dlc/messaging/dist/messages/ContractInfo.js.map +1 -0
  159. package/.yalc/@node-dlc/messaging/dist/messages/DlcAccept.d.ts +145 -0
  160. package/.yalc/@node-dlc/messaging/dist/messages/DlcAccept.js +428 -0
  161. package/.yalc/@node-dlc/messaging/dist/messages/DlcAccept.js.map +1 -0
  162. package/.yalc/@node-dlc/messaging/dist/messages/DlcCancel.d.ts +31 -0
  163. package/.yalc/@node-dlc/messaging/dist/messages/DlcCancel.js +51 -0
  164. package/.yalc/@node-dlc/messaging/dist/messages/DlcCancel.js.map +1 -0
  165. package/.yalc/@node-dlc/messaging/dist/messages/DlcClose.d.ts +68 -0
  166. package/.yalc/@node-dlc/messaging/dist/messages/DlcClose.js +210 -0
  167. package/.yalc/@node-dlc/messaging/dist/messages/DlcClose.js.map +1 -0
  168. package/.yalc/@node-dlc/messaging/dist/messages/DlcCloseMetadata.d.ts +44 -0
  169. package/.yalc/@node-dlc/messaging/dist/messages/DlcCloseMetadata.js +74 -0
  170. package/.yalc/@node-dlc/messaging/dist/messages/DlcCloseMetadata.js.map +1 -0
  171. package/.yalc/@node-dlc/messaging/dist/messages/DlcIds.d.ts +26 -0
  172. package/.yalc/@node-dlc/messaging/dist/messages/DlcIds.js +58 -0
  173. package/.yalc/@node-dlc/messaging/dist/messages/DlcIds.js.map +1 -0
  174. package/.yalc/@node-dlc/messaging/dist/messages/DlcInfo.d.ts +31 -0
  175. package/.yalc/@node-dlc/messaging/dist/messages/DlcInfo.js +61 -0
  176. package/.yalc/@node-dlc/messaging/dist/messages/DlcInfo.js.map +1 -0
  177. package/.yalc/@node-dlc/messaging/dist/messages/DlcMessage.d.ts +23 -0
  178. package/.yalc/@node-dlc/messaging/dist/messages/DlcMessage.js +54 -0
  179. package/.yalc/@node-dlc/messaging/dist/messages/DlcMessage.js.map +1 -0
  180. package/.yalc/@node-dlc/messaging/dist/messages/DlcOffer.d.ts +131 -0
  181. package/.yalc/@node-dlc/messaging/dist/messages/DlcOffer.js +418 -0
  182. package/.yalc/@node-dlc/messaging/dist/messages/DlcOffer.js.map +1 -0
  183. package/.yalc/@node-dlc/messaging/dist/messages/DlcSign.d.ts +96 -0
  184. package/.yalc/@node-dlc/messaging/dist/messages/DlcSign.js +267 -0
  185. package/.yalc/@node-dlc/messaging/dist/messages/DlcSign.js.map +1 -0
  186. package/.yalc/@node-dlc/messaging/dist/messages/DlcTransactions.d.ts +69 -0
  187. package/.yalc/@node-dlc/messaging/dist/messages/DlcTransactions.js +149 -0
  188. package/.yalc/@node-dlc/messaging/dist/messages/DlcTransactions.js.map +1 -0
  189. package/.yalc/@node-dlc/messaging/dist/messages/EventDescriptor.d.ts +106 -0
  190. package/.yalc/@node-dlc/messaging/dist/messages/EventDescriptor.js +209 -0
  191. package/.yalc/@node-dlc/messaging/dist/messages/EventDescriptor.js.map +1 -0
  192. package/.yalc/@node-dlc/messaging/dist/messages/FundingInput.d.ts +62 -0
  193. package/.yalc/@node-dlc/messaging/dist/messages/FundingInput.js +163 -0
  194. package/.yalc/@node-dlc/messaging/dist/messages/FundingInput.js.map +1 -0
  195. package/.yalc/@node-dlc/messaging/dist/messages/FundingSignatures.d.ts +36 -0
  196. package/.yalc/@node-dlc/messaging/dist/messages/FundingSignatures.js +78 -0
  197. package/.yalc/@node-dlc/messaging/dist/messages/FundingSignatures.js.map +1 -0
  198. package/.yalc/@node-dlc/messaging/dist/messages/IWireMessage.d.ts +6 -0
  199. package/.yalc/@node-dlc/messaging/dist/messages/IWireMessage.js +3 -0
  200. package/.yalc/@node-dlc/messaging/dist/messages/IWireMessage.js.map +1 -0
  201. package/.yalc/@node-dlc/messaging/dist/messages/NegotiationFields.d.ts +86 -0
  202. package/.yalc/@node-dlc/messaging/dist/messages/NegotiationFields.js +185 -0
  203. package/.yalc/@node-dlc/messaging/dist/messages/NegotiationFields.js.map +1 -0
  204. package/.yalc/@node-dlc/messaging/dist/messages/NodeAnnouncementMessage.d.ts +57 -0
  205. package/.yalc/@node-dlc/messaging/dist/messages/NodeAnnouncementMessage.js +127 -0
  206. package/.yalc/@node-dlc/messaging/dist/messages/NodeAnnouncementMessage.js.map +1 -0
  207. package/.yalc/@node-dlc/messaging/dist/messages/OracleAnnouncement.d.ts +76 -0
  208. package/.yalc/@node-dlc/messaging/dist/messages/OracleAnnouncement.js +131 -0
  209. package/.yalc/@node-dlc/messaging/dist/messages/OracleAnnouncement.js.map +1 -0
  210. package/.yalc/@node-dlc/messaging/dist/messages/OracleAttestation.d.ts +68 -0
  211. package/.yalc/@node-dlc/messaging/dist/messages/OracleAttestation.js +239 -0
  212. package/.yalc/@node-dlc/messaging/dist/messages/OracleAttestation.js.map +1 -0
  213. package/.yalc/@node-dlc/messaging/dist/messages/OracleEvent.d.ts +90 -0
  214. package/.yalc/@node-dlc/messaging/dist/messages/OracleEvent.js +189 -0
  215. package/.yalc/@node-dlc/messaging/dist/messages/OracleEvent.js.map +1 -0
  216. package/.yalc/@node-dlc/messaging/dist/messages/OracleEventContainer.d.ts +32 -0
  217. package/.yalc/@node-dlc/messaging/dist/messages/OracleEventContainer.js +67 -0
  218. package/.yalc/@node-dlc/messaging/dist/messages/OracleEventContainer.js.map +1 -0
  219. package/.yalc/@node-dlc/messaging/dist/messages/OracleIdentifier.d.ts +32 -0
  220. package/.yalc/@node-dlc/messaging/dist/messages/OracleIdentifier.js +58 -0
  221. package/.yalc/@node-dlc/messaging/dist/messages/OracleIdentifier.js.map +1 -0
  222. package/.yalc/@node-dlc/messaging/dist/messages/OracleIdentifierV0.d.ts +32 -0
  223. package/.yalc/@node-dlc/messaging/dist/messages/OracleIdentifierV0.js +58 -0
  224. package/.yalc/@node-dlc/messaging/dist/messages/OracleIdentifierV0.js.map +1 -0
  225. package/.yalc/@node-dlc/messaging/dist/messages/OracleInfo.d.ts +161 -0
  226. package/.yalc/@node-dlc/messaging/dist/messages/OracleInfo.js +390 -0
  227. package/.yalc/@node-dlc/messaging/dist/messages/OracleInfo.js.map +1 -0
  228. package/.yalc/@node-dlc/messaging/dist/messages/OracleInfoV0.d.ts +161 -0
  229. package/.yalc/@node-dlc/messaging/dist/messages/OracleInfoV0.js +387 -0
  230. package/.yalc/@node-dlc/messaging/dist/messages/OracleInfoV0.js.map +1 -0
  231. package/.yalc/@node-dlc/messaging/dist/messages/OrderAccept.d.ts +65 -0
  232. package/.yalc/@node-dlc/messaging/dist/messages/OrderAccept.js +125 -0
  233. package/.yalc/@node-dlc/messaging/dist/messages/OrderAccept.js.map +1 -0
  234. package/.yalc/@node-dlc/messaging/dist/messages/OrderIrcInfo.d.ts +42 -0
  235. package/.yalc/@node-dlc/messaging/dist/messages/OrderIrcInfo.js +74 -0
  236. package/.yalc/@node-dlc/messaging/dist/messages/OrderIrcInfo.js.map +1 -0
  237. package/.yalc/@node-dlc/messaging/dist/messages/OrderMetadata.d.ts +56 -0
  238. package/.yalc/@node-dlc/messaging/dist/messages/OrderMetadata.js +87 -0
  239. package/.yalc/@node-dlc/messaging/dist/messages/OrderMetadata.js.map +1 -0
  240. package/.yalc/@node-dlc/messaging/dist/messages/OrderNegotiationFields.d.ts +69 -0
  241. package/.yalc/@node-dlc/messaging/dist/messages/OrderNegotiationFields.js +114 -0
  242. package/.yalc/@node-dlc/messaging/dist/messages/OrderNegotiationFields.js.map +1 -0
  243. package/.yalc/@node-dlc/messaging/dist/messages/OrderOffer.d.ts +97 -0
  244. package/.yalc/@node-dlc/messaging/dist/messages/OrderOffer.js +296 -0
  245. package/.yalc/@node-dlc/messaging/dist/messages/OrderOffer.js.map +1 -0
  246. package/.yalc/@node-dlc/messaging/dist/messages/OrderPositionInfo.d.ts +50 -0
  247. package/.yalc/@node-dlc/messaging/dist/messages/OrderPositionInfo.js +125 -0
  248. package/.yalc/@node-dlc/messaging/dist/messages/OrderPositionInfo.js.map +1 -0
  249. package/.yalc/@node-dlc/messaging/dist/messages/PayoutCurvePiece.d.ts +129 -0
  250. package/.yalc/@node-dlc/messaging/dist/messages/PayoutCurvePiece.js +327 -0
  251. package/.yalc/@node-dlc/messaging/dist/messages/PayoutCurvePiece.js.map +1 -0
  252. package/.yalc/@node-dlc/messaging/dist/messages/PayoutFunction.d.ts +66 -0
  253. package/.yalc/@node-dlc/messaging/dist/messages/PayoutFunction.js +170 -0
  254. package/.yalc/@node-dlc/messaging/dist/messages/PayoutFunction.js.map +1 -0
  255. package/.yalc/@node-dlc/messaging/dist/messages/RoundingIntervals.d.ts +52 -0
  256. package/.yalc/@node-dlc/messaging/dist/messages/RoundingIntervals.js +95 -0
  257. package/.yalc/@node-dlc/messaging/dist/messages/RoundingIntervals.js.map +1 -0
  258. package/.yalc/@node-dlc/messaging/dist/messages/ScriptWitnessV0.d.ts +29 -0
  259. package/.yalc/@node-dlc/messaging/dist/messages/ScriptWitnessV0.js +50 -0
  260. package/.yalc/@node-dlc/messaging/dist/messages/ScriptWitnessV0.js.map +1 -0
  261. package/.yalc/@node-dlc/messaging/dist/messages/Tlv.d.ts +15 -0
  262. package/.yalc/@node-dlc/messaging/dist/messages/Tlv.js +32 -0
  263. package/.yalc/@node-dlc/messaging/dist/messages/Tlv.js.map +1 -0
  264. package/.yalc/@node-dlc/messaging/dist/serialize/F64.d.ts +154 -0
  265. package/.yalc/@node-dlc/messaging/dist/serialize/F64.js +307 -0
  266. package/.yalc/@node-dlc/messaging/dist/serialize/F64.js.map +1 -0
  267. package/.yalc/@node-dlc/messaging/dist/serialize/deserializeTlv.d.ts +9 -0
  268. package/.yalc/@node-dlc/messaging/dist/serialize/deserializeTlv.js +11 -0
  269. package/.yalc/@node-dlc/messaging/dist/serialize/deserializeTlv.js.map +1 -0
  270. package/.yalc/@node-dlc/messaging/dist/serialize/getTlv.d.ts +4 -0
  271. package/.yalc/@node-dlc/messaging/dist/serialize/getTlv.js +23 -0
  272. package/.yalc/@node-dlc/messaging/dist/serialize/getTlv.js.map +1 -0
  273. package/.yalc/@node-dlc/messaging/dist/serialize/readTlvs.d.ts +8 -0
  274. package/.yalc/@node-dlc/messaging/dist/serialize/readTlvs.js +33 -0
  275. package/.yalc/@node-dlc/messaging/dist/serialize/readTlvs.js.map +1 -0
  276. package/.yalc/@node-dlc/messaging/dist/util.d.ts +13 -0
  277. package/.yalc/@node-dlc/messaging/dist/util.js +40 -0
  278. package/.yalc/@node-dlc/messaging/dist/util.js.map +1 -0
  279. package/.yalc/@node-dlc/messaging/dist/validation/validate.d.ts +4 -0
  280. package/.yalc/@node-dlc/messaging/dist/validation/validate.js +31 -0
  281. package/.yalc/@node-dlc/messaging/dist/validation/validate.js.map +1 -0
  282. package/.yalc/@node-dlc/messaging/lib/MessageType.ts +138 -0
  283. package/.yalc/@node-dlc/messaging/lib/chain/ChainManager.ts +326 -0
  284. package/.yalc/@node-dlc/messaging/lib/chain/ChainMemoryStore.ts +34 -0
  285. package/.yalc/@node-dlc/messaging/lib/chain/DlcStore.ts +11 -0
  286. package/.yalc/@node-dlc/messaging/lib/chain/IChainFilterChainClient.ts +57 -0
  287. package/.yalc/@node-dlc/messaging/lib/domain/Address.ts +64 -0
  288. package/.yalc/@node-dlc/messaging/lib/index.ts +44 -0
  289. package/.yalc/@node-dlc/messaging/lib/irc/IrcMessage.ts +161 -0
  290. package/.yalc/@node-dlc/messaging/lib/messages/AddressCache.ts +74 -0
  291. package/.yalc/@node-dlc/messaging/lib/messages/BatchFundingGroup.ts +141 -0
  292. package/.yalc/@node-dlc/messaging/lib/messages/CetAdaptorSignatures.ts +89 -0
  293. package/.yalc/@node-dlc/messaging/lib/messages/ContractDescriptor.ts +318 -0
  294. package/.yalc/@node-dlc/messaging/lib/messages/ContractInfo.ts +434 -0
  295. package/.yalc/@node-dlc/messaging/lib/messages/DlcAccept.ts +595 -0
  296. package/.yalc/@node-dlc/messaging/lib/messages/DlcCancel.ts +57 -0
  297. package/.yalc/@node-dlc/messaging/lib/messages/DlcClose.ts +302 -0
  298. package/.yalc/@node-dlc/messaging/lib/messages/DlcCloseMetadata.ts +121 -0
  299. package/.yalc/@node-dlc/messaging/lib/messages/DlcIds.ts +67 -0
  300. package/.yalc/@node-dlc/messaging/lib/messages/DlcInfo.ts +81 -0
  301. package/.yalc/@node-dlc/messaging/lib/messages/DlcMessage.ts +87 -0
  302. package/.yalc/@node-dlc/messaging/lib/messages/DlcOffer.ts +605 -0
  303. package/.yalc/@node-dlc/messaging/lib/messages/DlcSign.ts +354 -0
  304. package/.yalc/@node-dlc/messaging/lib/messages/DlcTransactions.ts +213 -0
  305. package/.yalc/@node-dlc/messaging/lib/messages/EventDescriptor.ts +289 -0
  306. package/.yalc/@node-dlc/messaging/lib/messages/FundingInput.ts +216 -0
  307. package/.yalc/@node-dlc/messaging/lib/messages/FundingSignatures.ts +98 -0
  308. package/.yalc/@node-dlc/messaging/lib/messages/IWireMessage.ts +6 -0
  309. package/.yalc/@node-dlc/messaging/lib/messages/NegotiationFields.ts +252 -0
  310. package/.yalc/@node-dlc/messaging/lib/messages/NodeAnnouncementMessage.ts +145 -0
  311. package/.yalc/@node-dlc/messaging/lib/messages/OracleAnnouncement.ts +176 -0
  312. package/.yalc/@node-dlc/messaging/lib/messages/OracleAttestation.ts +292 -0
  313. package/.yalc/@node-dlc/messaging/lib/messages/OracleEvent.ts +250 -0
  314. package/.yalc/@node-dlc/messaging/lib/messages/OracleEventContainer.ts +89 -0
  315. package/.yalc/@node-dlc/messaging/lib/messages/OracleIdentifier.ts +78 -0
  316. package/.yalc/@node-dlc/messaging/lib/messages/OracleInfo.ts +519 -0
  317. package/.yalc/@node-dlc/messaging/lib/messages/OrderAccept.ts +159 -0
  318. package/.yalc/@node-dlc/messaging/lib/messages/OrderIrcInfo.ts +100 -0
  319. package/.yalc/@node-dlc/messaging/lib/messages/OrderMetadata.ts +119 -0
  320. package/.yalc/@node-dlc/messaging/lib/messages/OrderNegotiationFields.ts +157 -0
  321. package/.yalc/@node-dlc/messaging/lib/messages/OrderOffer.ts +419 -0
  322. package/.yalc/@node-dlc/messaging/lib/messages/OrderPositionInfo.ts +170 -0
  323. package/.yalc/@node-dlc/messaging/lib/messages/PayoutCurvePiece.ts +449 -0
  324. package/.yalc/@node-dlc/messaging/lib/messages/PayoutFunction.ts +240 -0
  325. package/.yalc/@node-dlc/messaging/lib/messages/RoundingIntervals.ts +127 -0
  326. package/.yalc/@node-dlc/messaging/lib/messages/ScriptWitnessV0.ts +63 -0
  327. package/.yalc/@node-dlc/messaging/lib/messages/Tlv.ts +40 -0
  328. package/.yalc/@node-dlc/messaging/lib/serialize/F64.ts +352 -0
  329. package/.yalc/@node-dlc/messaging/lib/serialize/deserializeTlv.ts +15 -0
  330. package/.yalc/@node-dlc/messaging/lib/serialize/getTlv.ts +21 -0
  331. package/.yalc/@node-dlc/messaging/lib/serialize/readTlvs.ts +37 -0
  332. package/.yalc/@node-dlc/messaging/lib/util.ts +33 -0
  333. package/.yalc/@node-dlc/messaging/lib/validation/validate.ts +34 -0
  334. package/.yalc/@node-dlc/messaging/package.json +42 -0
  335. package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs/enum_3_of_3_test.json +210 -0
  336. package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs/enum_3_of_5_test.json +468 -0
  337. package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs/enum_and_numerical_3_of_5_test.json +1517 -0
  338. package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs/enum_and_numerical_5_of_5_test.json +545 -0
  339. package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs/enum_and_numerical_with_diff_3_of_5_test.json +4761 -0
  340. package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs/enum_and_numerical_with_diff_5_of_5_test.json +2169 -0
  341. package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs/enum_single_oracle_test.json +164 -0
  342. package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs/single_oracle_numerical_hyperbola_test.json +502 -0
  343. package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs/single_oracle_numerical_test.json +262 -0
  344. package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs/three_of_five_oracle_numerical_with_diff_test.json +4382 -0
  345. package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs/three_of_three_oracle_numerical_test.json +324 -0
  346. package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs/three_of_three_oracle_numerical_with_diff_test.json +652 -0
  347. package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs/two_of_five_oracle_numerical_test.json +1138 -0
  348. package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs/two_of_five_oracle_numerical_with_diff_test.json +2222 -0
  349. package/.yalc/@node-dlc/messaging/test_vectors/oracle/external_oracle_announcements.json +0 -0
  350. package/.yalc/@node-dlc/messaging/test_vectors/oracle/oracle_message_test_vectors.json +115 -0
  351. package/.yalc/@node-dlc/messaging/test_vectors/rust-dlc/accept_msg.json +1465 -0
  352. package/.yalc/@node-dlc/messaging/test_vectors/rust-dlc/dlc_fee_test.json +12362 -0
  353. package/.yalc/@node-dlc/messaging/test_vectors/rust-dlc/dlc_fee_test_scripts.json +57 -0
  354. package/.yalc/@node-dlc/messaging/test_vectors/rust-dlc/dlc_test.json +2766 -0
  355. package/.yalc/@node-dlc/messaging/test_vectors/rust-dlc/dlc_tx_test.json +2899 -0
  356. package/.yalc/@node-dlc/messaging/test_vectors/rust-dlc/offer_msg.json +163 -0
  357. package/.yalc/@node-dlc/messaging/test_vectors/rust-dlc/offer_msg_disjoint.json +352 -0
  358. package/.yalc/@node-dlc/messaging/test_vectors/rust-dlc/segment_chunk_msg.json +12635 -0
  359. package/.yalc/@node-dlc/messaging/test_vectors/rust-dlc/segment_start_msg.json +4022 -0
  360. package/.yalc/@node-dlc/messaging/test_vectors/rust-dlc/sign_msg.json +383 -0
  361. package/.yalc/@node-dlc/messaging/tsconfig.json +7 -0
  362. package/.yalc/@node-dlc/messaging/yalc.sig +1 -0
  363. package/CHANGELOG.md +72 -0
  364. package/dist/BitcoinDlcProvider.d.ts +17 -16
  365. package/dist/BitcoinDlcProvider.js +345 -315
  366. package/dist/BitcoinDlcProvider.js.map +1 -1
  367. package/dist/utils/Utils.d.ts +6 -6
  368. package/dist/utils/Utils.js +4 -4
  369. package/dist/utils/Utils.js.map +1 -1
  370. package/lib/BitcoinDlcProvider.ts +624 -612
  371. package/lib/utils/Utils.ts +19 -24
  372. package/package.json +10 -10
  373. package/yalc.lock +10 -0
@@ -0,0 +1,519 @@
1
+ import { BufferReader, BufferWriter } from '@node-dlc/bufio';
2
+
3
+ import { MessageType } from '../MessageType';
4
+ import { getTlv } from '../serialize/getTlv';
5
+ import { IDlcMessage } from './DlcMessage';
6
+ import {
7
+ OracleAnnouncement,
8
+ OracleAnnouncementJSON,
9
+ } from './OracleAnnouncement';
10
+
11
+ /**
12
+ * OracleParams describe allowed differences between oracles in
13
+ * numerical outcome contracts, as per rust-dlc specification.
14
+ */
15
+ export class OracleParams implements IDlcMessage {
16
+ public static type = MessageType.OracleParamsV0;
17
+
18
+ /**
19
+ * Creates an OracleParams from JSON data
20
+ * @param json JSON object representing oracle params
21
+ */
22
+ // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types, @typescript-eslint/no-explicit-any
23
+ public static fromJSON(json: any): OracleParams {
24
+ const instance = new OracleParams();
25
+ instance.maxErrorExp = json.maxErrorExp || json.max_error_exp || 0;
26
+ instance.minFailExp = json.minFailExp || json.min_fail_exp || 0;
27
+ instance.maximizeCoverage =
28
+ json.maximizeCoverage || json.maximize_coverage || false;
29
+ return instance;
30
+ }
31
+
32
+ /**
33
+ * Deserializes oracle_params_v0 message
34
+ */
35
+ public static deserialize(buf: Buffer): OracleParams {
36
+ const instance = new OracleParams();
37
+ const reader = new BufferReader(buf);
38
+
39
+ reader.readBigSize(); // read type
40
+ instance.length = reader.readBigSize();
41
+ instance.maxErrorExp = reader.readUInt16BE();
42
+ instance.minFailExp = reader.readUInt16BE();
43
+ instance.maximizeCoverage = reader.readUInt8() === 1;
44
+
45
+ return instance;
46
+ }
47
+
48
+ /**
49
+ * Deserializes oracle params body without TLV wrapper (for optional deserialization)
50
+ */
51
+ public static deserializeBody(buf: Buffer): OracleParams {
52
+ const instance = new OracleParams();
53
+ const reader = new BufferReader(buf);
54
+
55
+ // No type/length to read - just the body content
56
+ instance.maxErrorExp = reader.readUInt16BE();
57
+ instance.minFailExp = reader.readUInt16BE();
58
+ instance.maximizeCoverage = reader.readUInt8() === 1;
59
+
60
+ return instance;
61
+ }
62
+
63
+ public type = OracleParams.type;
64
+ public length: bigint;
65
+
66
+ /** The maximum allowed difference between oracle expressed as a power of 2. */
67
+ public maxErrorExp: number;
68
+
69
+ /** The minimum allowed difference that should be supported by the contract expressed as a power of 2. */
70
+ public minFailExp: number;
71
+
72
+ /** Whether to maximize coverage of the interval between maxErrorExp and minFailExp. */
73
+ public maximizeCoverage: boolean;
74
+
75
+ public validate(): void {
76
+ if (this.maxErrorExp < 0) {
77
+ throw new Error('maxErrorExp must be greater than or equal to 0');
78
+ }
79
+ if (this.minFailExp < 0) {
80
+ throw new Error('minFailExp must be greater than or equal to 0');
81
+ }
82
+ if (this.maxErrorExp >= this.minFailExp) {
83
+ throw new Error('maxErrorExp must be less than minFailExp');
84
+ }
85
+ }
86
+
87
+ public toJSON(): OracleParamsJSON {
88
+ return {
89
+ maxErrorExp: this.maxErrorExp,
90
+ minFailExp: this.minFailExp,
91
+ maximizeCoverage: this.maximizeCoverage,
92
+ };
93
+ }
94
+
95
+ public serialize(): Buffer {
96
+ const writer = new BufferWriter();
97
+ writer.writeBigSize(this.type);
98
+
99
+ const dataWriter = new BufferWriter();
100
+ dataWriter.writeUInt16BE(this.maxErrorExp);
101
+ dataWriter.writeUInt16BE(this.minFailExp);
102
+ dataWriter.writeUInt8(this.maximizeCoverage ? 1 : 0);
103
+
104
+ writer.writeBigSize(dataWriter.size);
105
+ writer.writeBytes(dataWriter.toBuffer());
106
+
107
+ return writer.toBuffer();
108
+ }
109
+
110
+ /**
111
+ * Serializes the oracle params body without TLV wrapper (for optional serialization)
112
+ */
113
+ public serializeBody(): Buffer {
114
+ const writer = new BufferWriter();
115
+ writer.writeUInt16BE(this.maxErrorExp);
116
+ writer.writeUInt16BE(this.minFailExp);
117
+ writer.writeUInt8(this.maximizeCoverage ? 1 : 0);
118
+ return writer.toBuffer();
119
+ }
120
+ }
121
+
122
+ /**
123
+ * SingleOracleInfo contains information about a single oracle.
124
+ */
125
+ export class SingleOracleInfo implements IDlcMessage {
126
+ public static type = MessageType.SingleOracleInfo;
127
+
128
+ /**
129
+ * Creates a SingleOracleInfo from JSON data
130
+ * @param json JSON object representing single oracle info
131
+ */
132
+ // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types, @typescript-eslint/no-explicit-any
133
+ public static fromJSON(json: any): SingleOracleInfo {
134
+ const instance = new SingleOracleInfo();
135
+
136
+ const announcementData = json.announcement || json.oracleAnnouncement;
137
+ if (!announcementData) {
138
+ throw new Error(
139
+ 'announcement or oracleAnnouncement is required for single oracle info',
140
+ );
141
+ }
142
+
143
+ // Parse announcement using proper fromJSON method
144
+ instance.announcement = OracleAnnouncement.fromJSON(announcementData);
145
+
146
+ return instance;
147
+ }
148
+
149
+ /**
150
+ * Deserializes single oracle info
151
+ */
152
+ public static deserialize(buf: Buffer): SingleOracleInfo {
153
+ const instance = new SingleOracleInfo();
154
+ const reader = new BufferReader(buf);
155
+
156
+ // Read the type and length that serialize() writes
157
+ reader.readBigSize(); // read type
158
+ instance.length = reader.readBigSize(); // read length
159
+
160
+ // Read the announcement data
161
+ instance.announcement = OracleAnnouncement.deserialize(
162
+ reader.readBytes(Number(instance.length)),
163
+ );
164
+
165
+ return instance;
166
+ }
167
+
168
+ public type = SingleOracleInfo.type;
169
+ public length: bigint;
170
+
171
+ /** The oracle announcement from the oracle. */
172
+ public announcement: OracleAnnouncement;
173
+
174
+ /**
175
+ * Returns the closest maturity date amongst all events
176
+ */
177
+ public getClosestMaturityDate(): number {
178
+ return this.announcement.oracleEvent.eventMaturityEpoch;
179
+ }
180
+
181
+ public validate(): void {
182
+ this.announcement.validate();
183
+ }
184
+
185
+ public toJSON(): SingleOracleInfoJSON {
186
+ // Return enum variant format for Rust compatibility
187
+ return {
188
+ single: {
189
+ oracleAnnouncement: this.announcement.toJSON(),
190
+ },
191
+ } as any;
192
+ }
193
+
194
+ public serialize(): Buffer {
195
+ const writer = new BufferWriter();
196
+ writer.writeBigSize(this.type);
197
+
198
+ const dataWriter = new BufferWriter();
199
+ dataWriter.writeBytes(this.announcement.serialize());
200
+
201
+ writer.writeBigSize(dataWriter.size);
202
+ writer.writeBytes(dataWriter.toBuffer());
203
+
204
+ return writer.toBuffer();
205
+ }
206
+
207
+ /**
208
+ * Serializes the body without TLV wrapper (for embedding in ContractInfo)
209
+ * This matches rust-dlc behavior where OracleInfo.write() doesn't add type_id
210
+ */
211
+ public serializeBody(): Buffer {
212
+ return this.announcement.serialize();
213
+ }
214
+
215
+ /**
216
+ * Deserializes the body without TLV wrapper (for embedding in ContractInfo)
217
+ * This matches rust-dlc behavior where OracleInfo is read without type_id
218
+ */
219
+ public static deserializeBody(buf: Buffer): SingleOracleInfo {
220
+ const instance = new SingleOracleInfo();
221
+ // No type/length to read - just the announcement data directly
222
+ instance.announcement = OracleAnnouncement.deserialize(buf);
223
+ return instance;
224
+ }
225
+ }
226
+
227
+ /**
228
+ * MultiOracleInfo contains information about multiple oracles used in multi-oracle based contracts.
229
+ */
230
+ export class MultiOracleInfo implements IDlcMessage {
231
+ public static type = MessageType.MultiOracleInfo;
232
+
233
+ /**
234
+ * Creates a MultiOracleInfo from JSON data
235
+ * @param json JSON object representing multi oracle info
236
+ */
237
+ // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types, @typescript-eslint/no-explicit-any
238
+ public static fromJSON(json: any): MultiOracleInfo {
239
+ const instance = new MultiOracleInfo();
240
+
241
+ instance.threshold = json.threshold || 1;
242
+
243
+ // Parse oracle announcements using proper fromJSON method
244
+ const announcements =
245
+ json.oracleAnnouncements || json.oracle_announcements || [];
246
+ instance.announcements = announcements.map((announcementJson: any) =>
247
+ OracleAnnouncement.fromJSON(announcementJson),
248
+ );
249
+
250
+ // Parse oracle params if present (null means explicitly absent)
251
+ const oracleParamsData = json.oracleParams || json.oracle_params;
252
+ if (oracleParamsData !== null && oracleParamsData !== undefined) {
253
+ // Create OracleParams from JSON data using the fromJSON method
254
+ instance.oracleParams = OracleParams.fromJSON(oracleParamsData);
255
+ } else {
256
+ // Explicitly null/undefined - will serialize as 00 (not present)
257
+ instance.oracleParams = undefined;
258
+ }
259
+
260
+ return instance;
261
+ }
262
+
263
+ /**
264
+ * Deserializes multi oracle info
265
+ */
266
+ public static deserialize(buf: Buffer): MultiOracleInfo {
267
+ const instance = new MultiOracleInfo();
268
+ const reader = new BufferReader(buf);
269
+
270
+ // Read the type and length that serialize() writes
271
+ reader.readBigSize(); // read type
272
+ instance.length = reader.readBigSize(); // read length
273
+
274
+ // In rust-dlc format, MultiOracleInfo body is: threshold + announcements + optional oracle params
275
+ instance.threshold = reader.readUInt16BE();
276
+
277
+ const numAnnouncements = Number(reader.readBigSize()); // Changed from readUInt16BE to readBigSize to match rust-dlc vec_cb
278
+ for (let i = 0; i < numAnnouncements; i++) {
279
+ instance.announcements.push(
280
+ OracleAnnouncement.deserialize(getTlv(reader)),
281
+ );
282
+ }
283
+
284
+ // Optional oracle params using Optional sub-type format
285
+ const oracleParamsData = reader.readOptional();
286
+ if (oracleParamsData) {
287
+ instance.oracleParams = OracleParams.deserializeBody(oracleParamsData);
288
+ }
289
+
290
+ return instance;
291
+ }
292
+
293
+ public type = MultiOracleInfo.type;
294
+ public length: bigint;
295
+
296
+ /** The threshold to be used for the contract (e.g. 2 of 3). */
297
+ public threshold: number;
298
+
299
+ /** The set of oracle announcements. */
300
+ public announcements: OracleAnnouncement[] = [];
301
+
302
+ /** The parameters to be used when allowing differences between oracle outcomes in numerical outcome contracts. */
303
+ public oracleParams?: OracleParams;
304
+
305
+ public validate(): void {
306
+ if (this.threshold <= 0) {
307
+ throw new Error('threshold must be greater than 0');
308
+ }
309
+ if (this.threshold > this.announcements.length) {
310
+ throw new Error(
311
+ 'threshold cannot be greater than number of announcements',
312
+ );
313
+ }
314
+ if (this.announcements.length === 0) {
315
+ throw new Error('must have at least one announcement');
316
+ }
317
+
318
+ // Validate all announcements
319
+ this.announcements.forEach((announcement) => announcement.validate());
320
+
321
+ // Validate oracle params if present
322
+ if (this.oracleParams) {
323
+ this.oracleParams.validate();
324
+ }
325
+ }
326
+
327
+ /**
328
+ * Returns the closest maturity date amongst all events
329
+ */
330
+ public getClosestMaturityDate(): number {
331
+ return Math.min(
332
+ ...this.announcements.map((a) => a.oracleEvent.eventMaturityEpoch),
333
+ );
334
+ }
335
+
336
+ public toJSON(): MultiOracleInfoJSON {
337
+ // Return enum variant format for Rust compatibility
338
+ return {
339
+ multi: {
340
+ threshold: this.threshold,
341
+ oracleAnnouncements: this.announcements.map((a) => a.toJSON()),
342
+ oracleParams: this.oracleParams?.toJSON(),
343
+ },
344
+ } as any;
345
+ }
346
+
347
+ public serialize(): Buffer {
348
+ const writer = new BufferWriter();
349
+ // writer.writeBigSize(this.type);
350
+
351
+ const dataWriter = new BufferWriter();
352
+ dataWriter.writeUInt16BE(this.threshold);
353
+ dataWriter.writeBigSize(this.announcements.length); // Changed from writeUInt16BE to writeBigSize to match rust-dlc vec_cb
354
+
355
+ for (const announcement of this.announcements) {
356
+ dataWriter.writeBytes(announcement.serialize());
357
+ }
358
+
359
+ // Use Optional serialization for oracle params (body content only, not TLV wrapped)
360
+ const oracleParamsData = this.oracleParams
361
+ ? this.oracleParams.serializeBody()
362
+ : null;
363
+ dataWriter.writeOptional(oracleParamsData);
364
+
365
+ // writer.writeBigSize(dataWriter.size);
366
+ writer.writeBytes(dataWriter.toBuffer());
367
+
368
+ return writer.toBuffer();
369
+ }
370
+
371
+ /**
372
+ * Serializes the body without TLV wrapper (for embedding in ContractInfo)
373
+ * This matches rust-dlc behavior where OracleInfo.write() doesn't add type_id
374
+ */
375
+ public serializeBody(): Buffer {
376
+ const writer = new BufferWriter();
377
+ writer.writeUInt16BE(this.threshold);
378
+ writer.writeBigSize(this.announcements.length); // Changed from writeUInt16BE to writeBigSize to match rust-dlc vec_cb
379
+
380
+ for (const announcement of this.announcements) {
381
+ writer.writeBytes(announcement.serialize());
382
+ }
383
+
384
+ // Use Optional serialization for oracle params (body content only, not TLV wrapped)
385
+ const oracleParamsData = this.oracleParams
386
+ ? this.oracleParams.serializeBody()
387
+ : null;
388
+ writer.writeOptional(oracleParamsData);
389
+
390
+ return writer.toBuffer();
391
+ }
392
+
393
+ /**
394
+ * Deserializes the body without TLV wrapper (for embedding in ContractInfo)
395
+ * This matches rust-dlc behavior where OracleInfo is read without type_id
396
+ */
397
+ public static deserializeBody(buf: Buffer): MultiOracleInfo {
398
+ const instance = new MultiOracleInfo();
399
+ const reader = new BufferReader(buf);
400
+
401
+ // No type/length to read - directly read the multi-oracle body
402
+ instance.threshold = reader.readUInt16BE();
403
+
404
+ const numAnnouncements = Number(reader.readBigSize()); // BigSize for announcements count
405
+ for (let i = 0; i < numAnnouncements; i++) {
406
+ instance.announcements.push(
407
+ OracleAnnouncement.deserialize(getTlv(reader)),
408
+ );
409
+ }
410
+
411
+ // Optional oracle params using Optional sub-type format
412
+ const oracleParamsData = reader.readOptional();
413
+ if (oracleParamsData) {
414
+ instance.oracleParams = OracleParams.deserializeBody(oracleParamsData);
415
+ }
416
+
417
+ return instance;
418
+ }
419
+ }
420
+
421
+ /**
422
+ * OracleInfo contains information about the oracles to be used in
423
+ * executing a DLC. Updated to support both single and multi-oracle
424
+ * patterns as per rust-dlc specification.
425
+ */
426
+ export abstract class OracleInfo implements IDlcMessage {
427
+ public static deserialize(buf: Buffer): SingleOracleInfo | MultiOracleInfo {
428
+ const reader = new BufferReader(buf);
429
+ const type = Number(reader.readBigSize());
430
+
431
+ switch (type) {
432
+ case MessageType.SingleOracleInfo:
433
+ return SingleOracleInfo.deserialize(buf);
434
+ case MessageType.MultiOracleInfo:
435
+ return MultiOracleInfo.deserialize(buf);
436
+ default:
437
+ throw new Error(`Unknown oracle info type: ${type}`);
438
+ }
439
+ }
440
+
441
+ /**
442
+ * Creates an OracleInfo from JSON data (e.g., from test vectors)
443
+ * @param json JSON object representing oracle info
444
+ */
445
+ public static fromJSON(json: any): OracleInfo {
446
+ if (!json) {
447
+ throw new Error('oracleInfo is required');
448
+ }
449
+
450
+ // Handle direct single oracle (legacy format)
451
+ if (json.announcement) {
452
+ return SingleOracleInfo.fromJSON(json);
453
+ }
454
+ // Handle wrapped single oracle
455
+ else if (json.single) {
456
+ return SingleOracleInfo.fromJSON(json.single);
457
+ }
458
+ // Handle multi oracle
459
+ else if (json.multi) {
460
+ return MultiOracleInfo.fromJSON(json.multi);
461
+ } else {
462
+ throw new Error(
463
+ 'oracleInfo must have either announcement, single, or multi',
464
+ );
465
+ }
466
+ }
467
+
468
+ public abstract type: number;
469
+ public abstract validate(): void;
470
+ public abstract toJSON(): SingleOracleInfoJSON | MultiOracleInfoJSON;
471
+ public abstract serialize(): Buffer;
472
+ public abstract serializeBody(): Buffer;
473
+
474
+ /**
475
+ * Returns the closest maturity date amongst all events
476
+ */
477
+ public getClosestMaturityDate(): number {
478
+ if (this instanceof SingleOracleInfo) {
479
+ return this.announcement.oracleEvent.eventMaturityEpoch;
480
+ } else if (this instanceof MultiOracleInfo) {
481
+ return this.getClosestMaturityDate();
482
+ }
483
+ throw new Error('Unknown oracle info type');
484
+ }
485
+ }
486
+
487
+ // For backward compatibility, keep the V0 class as alias to SingleOracleInfo
488
+ export class OracleInfoV0 extends SingleOracleInfo {
489
+ /**
490
+ * Creates an OracleInfoV0 from JSON data (alias for SingleOracleInfo.fromJSON)
491
+ * @param json JSON object representing oracle info
492
+ */
493
+ public static fromJSON(json: any): OracleInfoV0 {
494
+ return SingleOracleInfo.fromJSON(json) as OracleInfoV0;
495
+ }
496
+ }
497
+
498
+ // JSON interfaces
499
+ export interface OracleParamsJSON {
500
+ type?: number; // Made optional for rust-dlc compatibility
501
+ maxErrorExp: number;
502
+ minFailExp: number;
503
+ maximizeCoverage: boolean;
504
+ }
505
+
506
+ export interface SingleOracleInfoJSON {
507
+ type?: number; // Made optional for rust-dlc compatibility
508
+ announcement: OracleAnnouncementJSON;
509
+ }
510
+
511
+ export interface MultiOracleInfoJSON {
512
+ type?: number; // Made optional for rust-dlc compatibility
513
+ threshold: number;
514
+ announcements: OracleAnnouncementJSON[];
515
+ oracleParams?: OracleParamsJSON;
516
+ }
517
+
518
+ // Backward compatibility type alias
519
+ export type OracleInfoV0JSON = SingleOracleInfoJSON;
@@ -0,0 +1,159 @@
1
+ import { BufferReader, BufferWriter } from '@node-dlc/bufio';
2
+
3
+ import { MessageType } from '../MessageType';
4
+ import { getTlv } from '../serialize/getTlv';
5
+ import { IDlcMessage } from './DlcMessage';
6
+ import {
7
+ IOrderNegotiationFieldsV0JSON,
8
+ IOrderNegotiationFieldsV1JSON,
9
+ OrderNegotiationFields,
10
+ } from './OrderNegotiationFields';
11
+
12
+ /**
13
+ * OrderAccept contains information about a node and indicates its
14
+ * acceptance of the new order offer. This is the second step towards
15
+ * order negotiation.
16
+ */
17
+ export class OrderAccept implements IDlcMessage {
18
+ public static type = MessageType.OrderAccept;
19
+
20
+ /**
21
+ * Creates an OrderAccept from JSON data
22
+ * @param json JSON object representing an order accept
23
+ */
24
+ // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types, @typescript-eslint/no-explicit-any
25
+ public static fromJSON(json: any): OrderAccept {
26
+ const instance = new OrderAccept();
27
+
28
+ instance.tempOrderId = Buffer.from(
29
+ json.tempOrderId || json.temp_order_id,
30
+ 'hex',
31
+ );
32
+
33
+ // Handle OrderNegotiationFields - will be parsed during deserialization if needed
34
+ instance.negotiationFields =
35
+ json.negotiationFields || json.negotiation_fields;
36
+
37
+ return instance;
38
+ }
39
+
40
+ /**
41
+ * Deserializes an order_accept message
42
+ * @param buf
43
+ */
44
+ public static deserialize(buf: Buffer): OrderAccept {
45
+ const instance = new OrderAccept();
46
+ const reader = new BufferReader(buf);
47
+
48
+ const type = reader.readUInt16BE(); // read type
49
+
50
+ // Validate type matches expected OrderAccept type
51
+ if (type !== MessageType.OrderAccept) {
52
+ throw new Error(
53
+ `Invalid message type. Expected ${MessageType.OrderAccept}, got ${type}`,
54
+ );
55
+ }
56
+
57
+ instance.tempOrderId = reader.readBytes(32);
58
+ instance.negotiationFields = OrderNegotiationFields.deserialize(
59
+ getTlv(reader),
60
+ );
61
+
62
+ return instance;
63
+ }
64
+
65
+ /**
66
+ * The type for order_accept message. order_accept = 62772
67
+ */
68
+ public type = OrderAccept.type;
69
+
70
+ public tempOrderId: Buffer;
71
+
72
+ public negotiationFields: OrderNegotiationFields;
73
+
74
+ /**
75
+ * Converts order_accept to JSON
76
+ */
77
+ public toJSON(): IOrderAcceptJSON {
78
+ return {
79
+ type: this.type,
80
+ tempOrderId: this.tempOrderId.toString('hex'),
81
+ negotiationFields: this.negotiationFields.toJSON(),
82
+ };
83
+ }
84
+
85
+ /**
86
+ * Serializes the order_accept message into a Buffer
87
+ */
88
+ public serialize(): Buffer {
89
+ const writer = new BufferWriter();
90
+ writer.writeUInt16BE(this.type);
91
+ writer.writeBytes(this.tempOrderId);
92
+ writer.writeBytes(this.negotiationFields.serialize());
93
+
94
+ return writer.toBuffer();
95
+ }
96
+ }
97
+
98
+ export interface IOrderAcceptJSON {
99
+ type: number;
100
+ tempOrderId: string;
101
+ negotiationFields:
102
+ | IOrderNegotiationFieldsV0JSON
103
+ | IOrderNegotiationFieldsV1JSON;
104
+ }
105
+
106
+ export class OrderAcceptContainer {
107
+ private accepts: OrderAccept[] = [];
108
+
109
+ /**
110
+ * Adds an OrderAccept to the container.
111
+ * @param accept The OrderAccept to add.
112
+ */
113
+ public addAccept(accept: OrderAccept): void {
114
+ this.accepts.push(accept);
115
+ }
116
+
117
+ /**
118
+ * Returns all OrderAccepts in the container.
119
+ * @returns An array of OrderAccept instances.
120
+ */
121
+ public getAccepts(): OrderAccept[] {
122
+ return this.accepts;
123
+ }
124
+
125
+ /**
126
+ * Serializes all OrderAccepts in the container to a Buffer.
127
+ * @returns A Buffer containing the serialized OrderAccepts.
128
+ */
129
+ public serialize(): Buffer {
130
+ const writer = new BufferWriter();
131
+ // Write the number of accepts in the container first.
132
+ writer.writeBigSize(this.accepts.length);
133
+ // Serialize each accept and write it.
134
+ this.accepts.forEach((accept) => {
135
+ const serializedAccept = accept.serialize();
136
+ writer.writeBigSize(serializedAccept.length);
137
+ writer.writeBytes(serializedAccept);
138
+ });
139
+ return writer.toBuffer();
140
+ }
141
+
142
+ /**
143
+ * Deserializes a Buffer into an OrderAcceptContainer with OrderAccepts.
144
+ * @param buf The Buffer to deserialize.
145
+ * @returns An OrderAcceptContainer instance.
146
+ */
147
+ public static deserialize(buf: Buffer): OrderAcceptContainer {
148
+ const reader = new BufferReader(buf);
149
+ const container = new OrderAcceptContainer();
150
+ const acceptsCount = reader.readBigSize();
151
+ for (let i = 0; i < acceptsCount; i++) {
152
+ const acceptLength = reader.readBigSize();
153
+ const acceptBuf = reader.readBytes(Number(acceptLength));
154
+ const accept = OrderAccept.deserialize(acceptBuf);
155
+ container.addAccept(accept);
156
+ }
157
+ return container;
158
+ }
159
+ }