@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,74 @@
1
+ import { BufferReader, BufferWriter } from '@node-dlc/bufio';
2
+ import { BitcoinNetwork } from 'bitcoin-networks';
3
+ import { address } from 'bitcoinjs-lib';
4
+
5
+ import { MessageType } from '../MessageType';
6
+
7
+ export class AddressCache {
8
+ public static type = MessageType.AddressCache;
9
+
10
+ public static fromAddressCache(
11
+ addressesBlacklist: IAddressCache[],
12
+ network: BitcoinNetwork,
13
+ ): AddressCache {
14
+ const instance = new AddressCache();
15
+
16
+ for (const blacklistAddress of Object.keys(addressesBlacklist)) {
17
+ instance.cacheSPKs.push(
18
+ address.toOutputScript(blacklistAddress, network),
19
+ );
20
+ }
21
+
22
+ return instance;
23
+ }
24
+
25
+ public static deserialize(buf: Buffer): AddressCache {
26
+ const instance = new AddressCache();
27
+ const reader = new BufferReader(buf);
28
+
29
+ reader.readUInt16BE(); // read type
30
+ reader.readBigSize(); // num_cache_spks
31
+
32
+ while (!reader.eof) {
33
+ const cacheSPKLen = reader.readBigSize();
34
+ const cacheSPK = reader.readBytes(Number(cacheSPKLen));
35
+
36
+ instance.cacheSPKs.push(cacheSPK);
37
+ }
38
+
39
+ return instance;
40
+ }
41
+
42
+ public type = AddressCache.type;
43
+
44
+ public cacheSPKs: Buffer[] = [];
45
+
46
+ public toAddressCache(network: BitcoinNetwork): IAddressCache[] {
47
+ const addressCache: IAddressCache[] = [];
48
+
49
+ for (const cacheSPK of this.cacheSPKs) {
50
+ addressCache[address.fromOutputScript(cacheSPK, network)] = true;
51
+ }
52
+
53
+ return addressCache;
54
+ }
55
+
56
+ public serialize(): Buffer {
57
+ const writer = new BufferWriter();
58
+
59
+ writer.writeUInt16BE(this.type);
60
+
61
+ writer.writeBigSize(this.cacheSPKs.length);
62
+
63
+ for (const cacheSPK of this.cacheSPKs) {
64
+ writer.writeBigSize(cacheSPK.length);
65
+ writer.writeBytes(cacheSPK);
66
+ }
67
+
68
+ return writer.toBuffer();
69
+ }
70
+ }
71
+
72
+ export interface IAddressCache {
73
+ [x: string]: boolean;
74
+ }
@@ -0,0 +1,141 @@
1
+ import { Value } from '@node-dlc/bitcoin';
2
+ import { BufferReader, BufferWriter } from '@node-dlc/bufio';
3
+
4
+ import { MessageType } from '../MessageType';
5
+ import { IDlcMessage } from './DlcMessage';
6
+
7
+ /**
8
+ * The BatchFundingGroup TLV contains information about the intent to
9
+ * enter multiple DLCs simulatenously within one batch dlc funding
10
+ * transaction in the contract negotiation stage of the peer protocol
11
+ *
12
+ * This is the first step toward creating a batch dlc funding transaction
13
+ *
14
+ * A DlcOffer or DlcAccept can contain one or multiple BatchFundingInfo
15
+ * TLVs to specify one or more groupings. This allows specification of
16
+ * collateral put towards different types of contracts, such as options
17
+ * contracts, futures contracts, or other investment types.
18
+ *
19
+ * Attributes:
20
+ * - tempContractIds: Temporary identifiers for contracts proposed in DlcOffers.
21
+ * - contractIds: Identifiers for contracts that have been accepted and are
22
+ * part of the funding transaction. These are derived from DlcOffers and DlcAccepts.
23
+ * - allocatedCollateral: The amount of collateral allocated to the contracts
24
+ * within this group. This is specified early in the negotiation process.
25
+ * - eventIds: Oracle event identifiers for the contracts in this group. These
26
+ * are also specified early in the negotiation process.
27
+ *
28
+ * Note: During the early stages of the negotiation protocol, only allocatedCollateral
29
+ * and eventIds are specified. tempContractIds and contractIds are added to the
30
+ * DlcAccept upon creation.
31
+ */
32
+ export class BatchFundingGroup implements IDlcMessage {
33
+ public static type = MessageType.BatchFundingGroup;
34
+
35
+ /**
36
+ * Deserializes a batch_contract_info message
37
+ * @param buf
38
+ */
39
+ public static deserialize(buf: Buffer): BatchFundingGroup {
40
+ const instance = new BatchFundingGroup();
41
+ const reader = new BufferReader(buf);
42
+
43
+ reader.readBigSize(); // read type
44
+ instance.length = reader.readBigSize();
45
+
46
+ const tempContractIdsCount = reader.readBigSize();
47
+ for (let i = 0; i < Number(tempContractIdsCount); i++) {
48
+ const length = reader.readBigSize();
49
+ instance.tempContractIds.push(reader.readBytes(Number(length)));
50
+ }
51
+
52
+ const contractIdsCount = reader.readBigSize();
53
+ for (let i = 0; i < Number(contractIdsCount); i++) {
54
+ const length = reader.readBigSize();
55
+ instance.contractIds.push(reader.readBytes(Number(length)));
56
+ }
57
+
58
+ instance.allocatedCollateral = Value.fromSats(reader.readUInt64BE());
59
+
60
+ const eventIdsCount = reader.readBigSize();
61
+ for (let i = 0; i < Number(eventIdsCount); i++) {
62
+ const eventIdLength = reader.readBigSize();
63
+ const eventIdBuf = reader.readBytes(Number(eventIdLength));
64
+ instance.eventIds.push(eventIdBuf.toString());
65
+ }
66
+
67
+ return instance;
68
+ }
69
+
70
+ /**
71
+ * The type for batch_contract_info message.
72
+ */
73
+ public type = BatchFundingGroup.type;
74
+
75
+ public length: bigint;
76
+
77
+ public tempContractIds: Buffer[] = [];
78
+
79
+ public contractIds: Buffer[] = [];
80
+
81
+ public allocatedCollateral: Value;
82
+
83
+ public eventIds: string[] = [];
84
+
85
+ /**
86
+ * Converts batch_funding_info to JSON
87
+ */
88
+ public toJSON(): IBatchFundingGroupJSON {
89
+ return {
90
+ type: this.type,
91
+ tempContractIds: this.tempContractIds.map((id) => id.toString('hex')),
92
+ contractIds: this.contractIds.map((id) => id.toString('hex')),
93
+ totalCollateral: Number(this.allocatedCollateral.sats),
94
+ eventIds: this.eventIds,
95
+ };
96
+ }
97
+
98
+ /**
99
+ * Serializes the batch_funding_info message into a Buffer
100
+ */
101
+ public serialize(): Buffer {
102
+ const writer = new BufferWriter();
103
+ writer.writeBigSize(this.type);
104
+
105
+ const dataWriter = new BufferWriter();
106
+
107
+ dataWriter.writeBigSize(this.tempContractIds.length);
108
+ this.tempContractIds.forEach((id) => {
109
+ dataWriter.writeBigSize(id.length);
110
+ dataWriter.writeBytes(id);
111
+ });
112
+
113
+ dataWriter.writeBigSize(this.contractIds.length);
114
+ this.contractIds.forEach((id) => {
115
+ dataWriter.writeBigSize(id.length);
116
+ dataWriter.writeBytes(id);
117
+ });
118
+
119
+ dataWriter.writeUInt64BE(this.allocatedCollateral.sats);
120
+
121
+ dataWriter.writeBigSize(this.eventIds.length);
122
+ this.eventIds.forEach((id) => {
123
+ const idBuffer = Buffer.from(id);
124
+ dataWriter.writeBigSize(id.length);
125
+ dataWriter.writeBytes(idBuffer);
126
+ });
127
+
128
+ writer.writeBigSize(dataWriter.size);
129
+ writer.writeBytes(dataWriter.toBuffer());
130
+
131
+ return writer.toBuffer();
132
+ }
133
+ }
134
+
135
+ export interface IBatchFundingGroupJSON {
136
+ type: number;
137
+ tempContractIds: string[];
138
+ contractIds: string[];
139
+ totalCollateral: number;
140
+ eventIds: string[];
141
+ }
@@ -0,0 +1,89 @@
1
+ import { BufferReader, BufferWriter } from '@node-dlc/bufio';
2
+
3
+ import { MessageType } from '../MessageType';
4
+ import { IDlcMessage } from './DlcMessage';
5
+
6
+ /**
7
+ * CetAdaptorSignatures contains CET signatures and any necessary
8
+ * information linking the signatures to their corresponding outcome
9
+ */
10
+ export class CetAdaptorSignatures implements IDlcMessage {
11
+ public static type = MessageType.CetAdaptorSignatures;
12
+
13
+ /**
14
+ * Deserializes a cet_adaptor_signature message
15
+ * @param buf
16
+ */
17
+ public static deserialize(buf: Buffer): CetAdaptorSignatures {
18
+ const instance = new CetAdaptorSignatures();
19
+ const reader = new BufferReader(buf);
20
+
21
+ const nbSignatures = Number(reader.readBigSize()); // nb_signatures
22
+
23
+ // Read exactly nbSignatures * (65 + 97) bytes to match serialize format
24
+ for (let i = 0; i < nbSignatures; i++) {
25
+ const encryptedSig = reader.readBytes(65);
26
+ const dleqProof = reader.readBytes(97);
27
+ instance.sigs.push({ encryptedSig, dleqProof });
28
+ }
29
+
30
+ return instance;
31
+ }
32
+
33
+ /**
34
+ * The type for cet_adaptor_signature message. cet_adaptor_signature = 42774
35
+ */
36
+ public type = CetAdaptorSignatures.type;
37
+
38
+ public length: bigint;
39
+
40
+ public sigs: ISig[] = [];
41
+
42
+ /**
43
+ * Converts cet_adaptor_signature to JSON (canonical rust-dlc format)
44
+ */
45
+ public toJSON(): ICetAdaptorSignaturesJSON {
46
+ return {
47
+ ecdsaAdaptorSignatures: this.sigs.map((sig) => {
48
+ // Combine encryptedSig and dleqProof into single signature field as expected by rust-dlc
49
+ const signature = Buffer.concat([sig.encryptedSig, sig.dleqProof]);
50
+ return {
51
+ signature: signature.toString('hex'),
52
+ };
53
+ }),
54
+ };
55
+ }
56
+
57
+ /**
58
+ * Serializes the cet_adaptor_signature message into a Buffer
59
+ */
60
+ public serialize(): Buffer {
61
+ const writer = new BufferWriter();
62
+ // writer.writeBigSize(this.type);
63
+
64
+ const dataWriter = new BufferWriter();
65
+ dataWriter.writeBigSize(this.sigs.length);
66
+
67
+ for (const sig of this.sigs) {
68
+ dataWriter.writeBytes(sig.encryptedSig);
69
+ dataWriter.writeBytes(sig.dleqProof);
70
+ }
71
+
72
+ // writer.writeBigSize(dataWriter.size);
73
+ writer.writeBytes(dataWriter.toBuffer());
74
+ return writer.toBuffer();
75
+ }
76
+ }
77
+
78
+ interface ISig {
79
+ encryptedSig: Buffer;
80
+ dleqProof: Buffer;
81
+ }
82
+
83
+ export interface ICetAdaptorSignaturesJSON {
84
+ ecdsaAdaptorSignatures: ISigJSON[];
85
+ }
86
+
87
+ export interface ISigJSON {
88
+ signature: string;
89
+ }
@@ -0,0 +1,318 @@
1
+ import { BufferReader, BufferWriter } from '@node-dlc/bufio';
2
+
3
+ import { ContractDescriptorType, MessageType } from '../MessageType';
4
+ import { IDlcMessage } from './DlcMessage';
5
+ import { PayoutFunction, PayoutFunctionV0JSON } from './PayoutFunction';
6
+ import { IRoundingIntervalsJSON, RoundingIntervals } from './RoundingIntervals';
7
+
8
+ export abstract class ContractDescriptor {
9
+ public static deserialize(
10
+ buf: Buffer,
11
+ ): EnumeratedDescriptor | NumericalDescriptor {
12
+ const reader = new BufferReader(buf);
13
+ const typeId = Number(reader.readBigSize());
14
+
15
+ switch (typeId) {
16
+ case ContractDescriptorType.Enumerated:
17
+ return EnumeratedDescriptor.deserialize(buf);
18
+ case ContractDescriptorType.NumericOutcome:
19
+ return NumericalDescriptor.deserialize(buf);
20
+ default:
21
+ throw new Error(
22
+ `Contract descriptor type must be Enumerated (0) or NumericOutcome (1), got ${typeId}`,
23
+ );
24
+ }
25
+ }
26
+
27
+ /**
28
+ * Creates a ContractDescriptor from JSON data (e.g., from test vectors)
29
+ * @param json JSON object representing a contract descriptor
30
+ */
31
+ // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types, @typescript-eslint/no-explicit-any
32
+ public static fromJSON(json: any): ContractDescriptor {
33
+ if (!json) {
34
+ throw new Error('contractDescriptor is required');
35
+ }
36
+
37
+ // Handle enumerated contract descriptor
38
+ if (
39
+ json.enumeratedContractDescriptor ||
40
+ json.enumerated_contract_descriptor
41
+ ) {
42
+ return EnumeratedDescriptor.fromJSON(
43
+ json.enumeratedContractDescriptor ||
44
+ json.enumerated_contract_descriptor,
45
+ );
46
+ }
47
+ // Handle numeric outcome contract descriptor
48
+ else if (
49
+ json.numericOutcomeContractDescriptor ||
50
+ json.numeric_outcome_contract_descriptor
51
+ ) {
52
+ return NumericalDescriptor.fromJSON(
53
+ json.numericOutcomeContractDescriptor ||
54
+ json.numeric_outcome_contract_descriptor,
55
+ );
56
+ } else {
57
+ throw new Error(
58
+ 'contractDescriptor must have either enumeratedContractDescriptor or numericOutcomeContractDescriptor',
59
+ );
60
+ }
61
+ }
62
+
63
+ public abstract contractDescriptorType: ContractDescriptorType;
64
+ public abstract type: number; // For backward compatibility
65
+ public abstract toJSON(): EnumeratedDescriptorJSON | NumericalDescriptorJSON;
66
+ public abstract serialize(): Buffer;
67
+ }
68
+
69
+ /**
70
+ * EnumeratedContractDescriptor contains information about a contract's outcomes
71
+ * and their corresponding payouts (for enumerated outcomes).
72
+ * This corresponds to the previous ContractDescriptorV0.
73
+ */
74
+ export class EnumeratedDescriptor
75
+ extends ContractDescriptor
76
+ implements IDlcMessage {
77
+ public static contractDescriptorType = ContractDescriptorType.Enumerated;
78
+
79
+ /**
80
+ * Creates an EnumeratedContractDescriptor from JSON data
81
+ * @param json JSON object representing an enumerated contract descriptor
82
+ */
83
+ // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types, @typescript-eslint/no-explicit-any
84
+ public static fromJSON(json: any): EnumeratedDescriptor {
85
+ const instance = new EnumeratedDescriptor();
86
+
87
+ const payouts = json.payouts || [];
88
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
89
+ instance.outcomes = payouts.map((payout: any) => ({
90
+ outcome: payout.outcome,
91
+ localPayout: BigInt(payout.offerPayout || 0), // Use canonical offerPayout field
92
+ }));
93
+
94
+ return instance;
95
+ }
96
+
97
+ /**
98
+ * Deserializes an enumerated_contract_descriptor message
99
+ * @param buf
100
+ */
101
+ public static deserialize(buf: Buffer): EnumeratedDescriptor {
102
+ const instance = new EnumeratedDescriptor();
103
+ const reader = new BufferReader(buf);
104
+
105
+ reader.readBigSize(); // read type (0)
106
+ const numOutcomes = Number(reader.readBigSize());
107
+
108
+ for (let i = 0; i < numOutcomes; i++) {
109
+ const outcomeLen = Number(reader.readBigSize());
110
+ const outcome = reader.readBytes(outcomeLen).toString();
111
+ const localPayout = reader.readUInt64BE();
112
+
113
+ instance.outcomes.push({
114
+ outcome,
115
+ localPayout,
116
+ });
117
+ }
118
+
119
+ return instance;
120
+ }
121
+
122
+ /**
123
+ * The type for enumerated_contract_descriptor message - using MessageType for IDlcMessage compatibility
124
+ */
125
+ public type = MessageType.ContractDescriptorV0; // For IDlcMessage compatibility
126
+
127
+ /**
128
+ * The contract descriptor type for new format
129
+ */
130
+ public contractDescriptorType = ContractDescriptorType.Enumerated;
131
+
132
+ public outcomes: IOutcome[] = [];
133
+
134
+ /**
135
+ * Converts enumerated_contract_descriptor to JSON
136
+ */
137
+ public toJSON(): EnumeratedDescriptorJSON {
138
+ // Return enum variant format for Rust compatibility
139
+ return {
140
+ enumeratedContractDescriptor: {
141
+ payouts: this.outcomes.map((outcome) => ({
142
+ outcome: outcome.outcome,
143
+ offerPayout: Number(outcome.localPayout), // Use offerPayout to match Rust
144
+ })),
145
+ },
146
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
147
+ } as any;
148
+ }
149
+
150
+ /**
151
+ * Serializes the enumerated_contract_descriptor message into a Buffer
152
+ */
153
+ public serialize(): Buffer {
154
+ const writer = new BufferWriter();
155
+
156
+ writer.writeBigSize(this.contractDescriptorType);
157
+ writer.writeBigSize(this.outcomes.length);
158
+
159
+ for (const outcome of this.outcomes) {
160
+ writer.writeBigSize(outcome.outcome.length);
161
+ writer.writeBytes(Buffer.from(outcome.outcome));
162
+ writer.writeUInt64BE(outcome.localPayout);
163
+ }
164
+
165
+ return writer.toBuffer();
166
+ }
167
+ }
168
+
169
+ /**
170
+ * NumericOutcomeContractDescriptor contains information about a contract's outcomes
171
+ * and their corresponding payouts (for numeric outcomes).
172
+ * This corresponds to the previous ContractDescriptorV1.
173
+ */
174
+ export class NumericalDescriptor
175
+ extends ContractDescriptor
176
+ implements IDlcMessage {
177
+ public static contractDescriptorType = ContractDescriptorType.NumericOutcome;
178
+
179
+ /**
180
+ * Creates a NumericOutcomeContractDescriptor from JSON data
181
+ * @param json JSON object representing a numeric outcome contract descriptor
182
+ */
183
+ // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types, @typescript-eslint/no-explicit-any
184
+ public static fromJSON(json: any): NumericalDescriptor {
185
+ const instance = new NumericalDescriptor();
186
+
187
+ instance.numDigits = json.numDigits || json.num_digits || 0;
188
+
189
+ // Parse payout function using proper fromJSON method
190
+ instance.payoutFunction = PayoutFunction.fromJSON(
191
+ json.payoutFunction || json.payout_function,
192
+ );
193
+
194
+ // Parse rounding intervals using proper fromJSON method
195
+ instance.roundingIntervals = RoundingIntervals.fromJSON(
196
+ json.roundingIntervals || json.rounding_intervals,
197
+ );
198
+
199
+ return instance;
200
+ }
201
+
202
+ /**
203
+ * Deserializes a numeric_outcome_contract_descriptor message
204
+ * @param buf
205
+ */
206
+ public static deserialize(buf: Buffer): NumericalDescriptor {
207
+ const instance = new NumericalDescriptor();
208
+ const reader = new BufferReader(buf);
209
+
210
+ reader.readBigSize(); // read type (1)
211
+ instance.numDigits = reader.readUInt16BE();
212
+
213
+ // Parse payout function - need to calculate its size to avoid consuming all bytes
214
+ const payoutFunctionStartPos = reader.position;
215
+ const tempPayoutFunction = PayoutFunction.deserialize(
216
+ reader.buffer.subarray(reader.position),
217
+ );
218
+ instance.payoutFunction = tempPayoutFunction;
219
+
220
+ // Skip past the payout function bytes
221
+ const payoutFunctionSize = tempPayoutFunction.serialize().length;
222
+ reader.position = payoutFunctionStartPos + payoutFunctionSize;
223
+
224
+ // Parse remaining bytes as rounding intervals
225
+ instance.roundingIntervals = RoundingIntervals.deserialize(
226
+ reader.buffer.subarray(reader.position),
227
+ );
228
+
229
+ return instance;
230
+ }
231
+
232
+ /**
233
+ * The type for numeric_outcome_contract_descriptor message - using MessageType for IDlcMessage compatibility
234
+ */
235
+ public type = MessageType.ContractDescriptorV1; // For IDlcMessage compatibility
236
+
237
+ /**
238
+ * The contract descriptor type for new format
239
+ */
240
+ public contractDescriptorType = ContractDescriptorType.NumericOutcome;
241
+
242
+ public numDigits: number;
243
+
244
+ public payoutFunction: PayoutFunction;
245
+
246
+ public roundingIntervals: RoundingIntervals;
247
+
248
+ /**
249
+ * Validates correctness of all fields in the message
250
+ * https://github.com/discreetlogcontracts/dlcspecs/blob/master/Messaging.md#the-contract_descriptor-type
251
+ * @throws Will throw an error if validation fails
252
+ */
253
+ public validate(): void {
254
+ this.roundingIntervals.validate();
255
+ }
256
+
257
+ /**
258
+ * Converts numeric_outcome_contract_descriptor to JSON
259
+ */
260
+ public toJSON(): NumericalDescriptorJSON {
261
+ // Return enum variant format for Rust compatibility
262
+ return {
263
+ numericOutcomeContractDescriptor: {
264
+ numDigits: this.numDigits,
265
+ payoutFunction: this.payoutFunction.toJSON(),
266
+ roundingIntervals: this.roundingIntervals.toJSON(),
267
+ },
268
+ } as any;
269
+ }
270
+
271
+ /**
272
+ * Serializes the numeric_outcome_contract_descriptor message into a Buffer
273
+ */
274
+ public serialize(): Buffer {
275
+ const writer = new BufferWriter();
276
+
277
+ writer.writeBigSize(this.contractDescriptorType);
278
+ writer.writeUInt16BE(this.numDigits);
279
+ writer.writeBytes(this.payoutFunction.serialize());
280
+ writer.writeBytes(this.roundingIntervals.serialize());
281
+
282
+ return writer.toBuffer();
283
+ }
284
+ }
285
+
286
+ // Legacy support - keeping old class names as aliases
287
+ export const ContractDescriptorV0 = EnumeratedDescriptor;
288
+ export const ContractDescriptorV1 = NumericalDescriptor;
289
+ export type ContractDescriptorV0 = EnumeratedDescriptor;
290
+ export type ContractDescriptorV1 = NumericalDescriptor;
291
+
292
+ interface IOutcome {
293
+ outcome: string;
294
+ localPayout: bigint;
295
+ }
296
+
297
+ interface IOutcomeJSON {
298
+ outcome: string;
299
+ localPayout: number;
300
+ }
301
+
302
+ export interface EnumeratedDescriptorJSON {
303
+ type?: number; // Made optional for rust-dlc compatibility
304
+ contractDescriptorType?: ContractDescriptorType; // Made optional for rust-dlc compatibility
305
+ outcomes: IOutcomeJSON[];
306
+ }
307
+
308
+ export interface NumericalDescriptorJSON {
309
+ type?: number; // Made optional for rust-dlc compatibility
310
+ contractDescriptorType?: ContractDescriptorType; // Made optional for rust-dlc compatibility
311
+ numDigits: number;
312
+ payoutFunction: PayoutFunctionV0JSON;
313
+ roundingIntervals: IRoundingIntervalsJSON;
314
+ }
315
+
316
+ // Legacy interfaces for backward compatibility
317
+ export type ContractDescriptorV0JSON = EnumeratedDescriptorJSON;
318
+ export type ContractDescriptorV1JSON = NumericalDescriptorJSON;