@atomicfinance/types 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 (368) hide show
  1. package/.yalc/@node-dlc/messaging/.nyc_output/2cf48009-1094-4275-bb91-c164c932feb6.json +1 -0
  2. package/.yalc/@node-dlc/messaging/.nyc_output/processinfo/2cf48009-1094-4275-bb91-c164c932feb6.json +1 -0
  3. package/.yalc/@node-dlc/messaging/.nyc_output/processinfo/index.json +1 -0
  4. package/.yalc/@node-dlc/messaging/README.md +24 -0
  5. package/.yalc/@node-dlc/messaging/__tests__/_test-utils.ts +12 -0
  6. package/.yalc/@node-dlc/messaging/__tests__/chain/ChainManager.spec.ts +178 -0
  7. package/.yalc/@node-dlc/messaging/__tests__/compatibility/dlcspecs-compatibility.spec.ts +473 -0
  8. package/.yalc/@node-dlc/messaging/__tests__/compatibility/rust-dlc-cross-language.spec.ts +342 -0
  9. package/.yalc/@node-dlc/messaging/__tests__/compatibility/true-serialization-compatibility.spec.ts +611 -0
  10. package/.yalc/@node-dlc/messaging/__tests__/dlc_message_test.json +155 -0
  11. package/.yalc/@node-dlc/messaging/__tests__/irc/IrcMessage.spec.ts +94 -0
  12. package/.yalc/@node-dlc/messaging/__tests__/messages/AddressCache.spec.ts +79 -0
  13. package/.yalc/@node-dlc/messaging/__tests__/messages/BatchFundingGroup.spec.ts +72 -0
  14. package/.yalc/@node-dlc/messaging/__tests__/messages/CetAdaptorSignatures.spec.ts +57 -0
  15. package/.yalc/@node-dlc/messaging/__tests__/messages/ContractDescriptor.spec.ts +264 -0
  16. package/.yalc/@node-dlc/messaging/__tests__/messages/ContractInfo.spec.ts +419 -0
  17. package/.yalc/@node-dlc/messaging/__tests__/messages/DigitDecompositionEventDescriptor.spec.ts +59 -0
  18. package/.yalc/@node-dlc/messaging/__tests__/messages/DlcAccept.spec.ts +242 -0
  19. package/.yalc/@node-dlc/messaging/__tests__/messages/DlcCancel.spec.ts +42 -0
  20. package/.yalc/@node-dlc/messaging/__tests__/messages/DlcClose.spec.ts +315 -0
  21. package/.yalc/@node-dlc/messaging/__tests__/messages/DlcOffer.spec.ts +527 -0
  22. package/.yalc/@node-dlc/messaging/__tests__/messages/DlcSign.spec.ts +118 -0
  23. package/.yalc/@node-dlc/messaging/__tests__/messages/DlcTransactions.spec.ts +157 -0
  24. package/.yalc/@node-dlc/messaging/__tests__/messages/EnumEventDescriptor.spec.ts +50 -0
  25. package/.yalc/@node-dlc/messaging/__tests__/messages/EventDescriptor.spec.ts +93 -0
  26. package/.yalc/@node-dlc/messaging/__tests__/messages/FundingInput.spec.ts +84 -0
  27. package/.yalc/@node-dlc/messaging/__tests__/messages/FundingSignatures.spec.ts +83 -0
  28. package/.yalc/@node-dlc/messaging/__tests__/messages/NegotiationFields.spec.ts +328 -0
  29. package/.yalc/@node-dlc/messaging/__tests__/messages/NodeAnnouncementMessage.spec.ts +115 -0
  30. package/.yalc/@node-dlc/messaging/__tests__/messages/OracleAnnouncement.spec.ts +415 -0
  31. package/.yalc/@node-dlc/messaging/__tests__/messages/OracleAttestation.spec.ts +326 -0
  32. package/.yalc/@node-dlc/messaging/__tests__/messages/OracleEvent.spec.ts +143 -0
  33. package/.yalc/@node-dlc/messaging/__tests__/messages/OracleEventContainer.spec.ts +95 -0
  34. package/.yalc/@node-dlc/messaging/__tests__/messages/OracleIdentifier.spec.ts +48 -0
  35. package/.yalc/@node-dlc/messaging/__tests__/messages/OracleInfo.spec.ts +116 -0
  36. package/.yalc/@node-dlc/messaging/__tests__/messages/OrderAccept.spec.ts +77 -0
  37. package/.yalc/@node-dlc/messaging/__tests__/messages/OrderNegotiationFields.spec.ts +216 -0
  38. package/.yalc/@node-dlc/messaging/__tests__/messages/OrderOffer.spec.ts +121 -0
  39. package/.yalc/@node-dlc/messaging/__tests__/messages/OrderPositionInfo.spec.ts +75 -0
  40. package/.yalc/@node-dlc/messaging/__tests__/messages/PayoutCurvePiece.spec.ts +220 -0
  41. package/.yalc/@node-dlc/messaging/__tests__/messages/PayoutFunction.spec.ts +101 -0
  42. package/.yalc/@node-dlc/messaging/__tests__/messages/RoundingIntervals.spec.ts +75 -0
  43. package/.yalc/@node-dlc/messaging/__tests__/serialize/F64.spec.ts +260 -0
  44. package/.yalc/@node-dlc/messaging/__tests__/tsconfig.json +8 -0
  45. package/.yalc/@node-dlc/messaging/coverage/lcov-report/base.css +224 -0
  46. package/.yalc/@node-dlc/messaging/coverage/lcov-report/block-navigation.js +79 -0
  47. package/.yalc/@node-dlc/messaging/coverage/lcov-report/favicon.png +0 -0
  48. package/.yalc/@node-dlc/messaging/coverage/lcov-report/index.html +201 -0
  49. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/MessageType.ts.html +494 -0
  50. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/chain/ChainManager.ts.html +1058 -0
  51. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/chain/ChainMemoryStore.ts.html +182 -0
  52. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/chain/index.html +126 -0
  53. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/domain/Address.ts.html +272 -0
  54. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/domain/index.html +111 -0
  55. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/index.html +141 -0
  56. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/index.ts.html +212 -0
  57. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/irc/IrcMessage.ts.html +563 -0
  58. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/irc/index.html +111 -0
  59. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/AddressCache.ts.html +302 -0
  60. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/BatchFundingGroup.ts.html +503 -0
  61. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/CetAdaptorSignatures.ts.html +347 -0
  62. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/CetAdaptorSignaturesV0.ts.html +347 -0
  63. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/ContractDescriptor.ts.html +1040 -0
  64. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/ContractInfo.ts.html +1382 -0
  65. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/DlcAccept.ts.html +1865 -0
  66. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/DlcCancel.ts.html +251 -0
  67. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/DlcClose.ts.html +986 -0
  68. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/DlcCloseMetadata.ts.html +443 -0
  69. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/DlcIds.ts.html +281 -0
  70. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/DlcInfo.ts.html +323 -0
  71. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/DlcMessage.ts.html +341 -0
  72. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/DlcOffer.ts.html +1895 -0
  73. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/DlcSign.ts.html +1142 -0
  74. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/DlcTransactions.ts.html +719 -0
  75. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/EventDescriptor.ts.html +947 -0
  76. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/FundingInput.ts.html +728 -0
  77. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/FundingSignatures.ts.html +374 -0
  78. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/FundingSignaturesV0.ts.html +374 -0
  79. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/NegotiationFields.ts.html +836 -0
  80. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/NodeAnnouncementMessage.ts.html +515 -0
  81. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/OracleAnnouncement.ts.html +608 -0
  82. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/OracleAnnouncementV0.ts.html +605 -0
  83. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/OracleAttestation.ts.html +956 -0
  84. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/OracleAttestationV0.ts.html +770 -0
  85. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/OracleEvent.ts.html +830 -0
  86. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/OracleEventContainer.ts.html +347 -0
  87. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/OracleEventContainerV0.ts.html +347 -0
  88. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/OracleEventV0.ts.html +827 -0
  89. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/OracleIdentifier.ts.html +314 -0
  90. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/OracleIdentifierV0.ts.html +314 -0
  91. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/OracleInfo.ts.html +1637 -0
  92. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/OracleInfoV0.ts.html +1631 -0
  93. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/OrderAccept.ts.html +557 -0
  94. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/OrderIrcInfo.ts.html +380 -0
  95. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/OrderMetadata.ts.html +437 -0
  96. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/OrderNegotiationFields.ts.html +551 -0
  97. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/OrderOffer.ts.html +1337 -0
  98. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/OrderPositionInfo.ts.html +590 -0
  99. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/PayoutCurvePiece.ts.html +1427 -0
  100. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/PayoutFunction.ts.html +800 -0
  101. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/RoundingIntervals.ts.html +461 -0
  102. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/RoundingIntervalsV0.ts.html +482 -0
  103. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/ScriptWitnessV0.ts.html +269 -0
  104. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/index.html +636 -0
  105. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/serde/SerdeUtils.ts.html +1394 -0
  106. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/serde/index.html +111 -0
  107. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/serialize/F64.ts.html +1136 -0
  108. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/serialize/deserializeTlv.ts.html +125 -0
  109. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/serialize/getTlv.ts.html +143 -0
  110. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/serialize/index.html +141 -0
  111. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/util.ts.html +179 -0
  112. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/validation/index.html +111 -0
  113. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/validation/validate.ts.html +182 -0
  114. package/.yalc/@node-dlc/messaging/coverage/lcov-report/prettify.css +1 -0
  115. package/.yalc/@node-dlc/messaging/coverage/lcov-report/prettify.js +2 -0
  116. package/.yalc/@node-dlc/messaging/coverage/lcov-report/sort-arrow-sprite.png +0 -0
  117. package/.yalc/@node-dlc/messaging/coverage/lcov-report/sorter.js +170 -0
  118. package/.yalc/@node-dlc/messaging/coverage/lcov.info +5394 -0
  119. package/.yalc/@node-dlc/messaging/dist/MessageType.d.ts +100 -0
  120. package/.yalc/@node-dlc/messaging/dist/MessageType.js +117 -0
  121. package/.yalc/@node-dlc/messaging/dist/MessageType.js.map +1 -0
  122. package/.yalc/@node-dlc/messaging/dist/chain/ChainManager.d.ts +50 -0
  123. package/.yalc/@node-dlc/messaging/dist/chain/ChainManager.js +211 -0
  124. package/.yalc/@node-dlc/messaging/dist/chain/ChainManager.js.map +1 -0
  125. package/.yalc/@node-dlc/messaging/dist/chain/ChainMemoryStore.d.ts +14 -0
  126. package/.yalc/@node-dlc/messaging/dist/chain/ChainMemoryStore.js +28 -0
  127. package/.yalc/@node-dlc/messaging/dist/chain/ChainMemoryStore.js.map +1 -0
  128. package/.yalc/@node-dlc/messaging/dist/chain/DlcStore.d.ts +11 -0
  129. package/.yalc/@node-dlc/messaging/dist/chain/DlcStore.js +3 -0
  130. package/.yalc/@node-dlc/messaging/dist/chain/DlcStore.js.map +1 -0
  131. package/.yalc/@node-dlc/messaging/dist/chain/IChainFilterChainClient.d.ts +48 -0
  132. package/.yalc/@node-dlc/messaging/dist/chain/IChainFilterChainClient.js +3 -0
  133. package/.yalc/@node-dlc/messaging/dist/chain/IChainFilterChainClient.js.map +1 -0
  134. package/.yalc/@node-dlc/messaging/dist/domain/Address.d.ts +24 -0
  135. package/.yalc/@node-dlc/messaging/dist/domain/Address.js +46 -0
  136. package/.yalc/@node-dlc/messaging/dist/domain/Address.js.map +1 -0
  137. package/.yalc/@node-dlc/messaging/dist/index.d.ts +44 -0
  138. package/.yalc/@node-dlc/messaging/dist/index.js +63 -0
  139. package/.yalc/@node-dlc/messaging/dist/index.js.map +1 -0
  140. package/.yalc/@node-dlc/messaging/dist/irc/IrcMessage.d.ts +43 -0
  141. package/.yalc/@node-dlc/messaging/dist/irc/IrcMessage.js +116 -0
  142. package/.yalc/@node-dlc/messaging/dist/irc/IrcMessage.js.map +1 -0
  143. package/.yalc/@node-dlc/messaging/dist/messages/AddressCache.d.ts +15 -0
  144. package/.yalc/@node-dlc/messaging/dist/messages/AddressCache.js +51 -0
  145. package/.yalc/@node-dlc/messaging/dist/messages/AddressCache.js.map +1 -0
  146. package/.yalc/@node-dlc/messaging/dist/messages/BatchFundingGroup.d.ts +61 -0
  147. package/.yalc/@node-dlc/messaging/dist/messages/BatchFundingGroup.js +113 -0
  148. package/.yalc/@node-dlc/messaging/dist/messages/BatchFundingGroup.js.map +1 -0
  149. package/.yalc/@node-dlc/messaging/dist/messages/CetAdaptorSignatures.d.ts +40 -0
  150. package/.yalc/@node-dlc/messaging/dist/messages/CetAdaptorSignatures.js +67 -0
  151. package/.yalc/@node-dlc/messaging/dist/messages/CetAdaptorSignatures.js.map +1 -0
  152. package/.yalc/@node-dlc/messaging/dist/messages/ContractDescriptor.d.ts +122 -0
  153. package/.yalc/@node-dlc/messaging/dist/messages/ContractDescriptor.js +222 -0
  154. package/.yalc/@node-dlc/messaging/dist/messages/ContractDescriptor.js.map +1 -0
  155. package/.yalc/@node-dlc/messaging/dist/messages/ContractInfo.d.ts +135 -0
  156. package/.yalc/@node-dlc/messaging/dist/messages/ContractInfo.js +304 -0
  157. package/.yalc/@node-dlc/messaging/dist/messages/ContractInfo.js.map +1 -0
  158. package/.yalc/@node-dlc/messaging/dist/messages/DlcAccept.d.ts +145 -0
  159. package/.yalc/@node-dlc/messaging/dist/messages/DlcAccept.js +428 -0
  160. package/.yalc/@node-dlc/messaging/dist/messages/DlcAccept.js.map +1 -0
  161. package/.yalc/@node-dlc/messaging/dist/messages/DlcCancel.d.ts +31 -0
  162. package/.yalc/@node-dlc/messaging/dist/messages/DlcCancel.js +51 -0
  163. package/.yalc/@node-dlc/messaging/dist/messages/DlcCancel.js.map +1 -0
  164. package/.yalc/@node-dlc/messaging/dist/messages/DlcClose.d.ts +68 -0
  165. package/.yalc/@node-dlc/messaging/dist/messages/DlcClose.js +210 -0
  166. package/.yalc/@node-dlc/messaging/dist/messages/DlcClose.js.map +1 -0
  167. package/.yalc/@node-dlc/messaging/dist/messages/DlcCloseMetadata.d.ts +44 -0
  168. package/.yalc/@node-dlc/messaging/dist/messages/DlcCloseMetadata.js +74 -0
  169. package/.yalc/@node-dlc/messaging/dist/messages/DlcCloseMetadata.js.map +1 -0
  170. package/.yalc/@node-dlc/messaging/dist/messages/DlcIds.d.ts +26 -0
  171. package/.yalc/@node-dlc/messaging/dist/messages/DlcIds.js +58 -0
  172. package/.yalc/@node-dlc/messaging/dist/messages/DlcIds.js.map +1 -0
  173. package/.yalc/@node-dlc/messaging/dist/messages/DlcInfo.d.ts +31 -0
  174. package/.yalc/@node-dlc/messaging/dist/messages/DlcInfo.js +61 -0
  175. package/.yalc/@node-dlc/messaging/dist/messages/DlcInfo.js.map +1 -0
  176. package/.yalc/@node-dlc/messaging/dist/messages/DlcMessage.d.ts +23 -0
  177. package/.yalc/@node-dlc/messaging/dist/messages/DlcMessage.js +54 -0
  178. package/.yalc/@node-dlc/messaging/dist/messages/DlcMessage.js.map +1 -0
  179. package/.yalc/@node-dlc/messaging/dist/messages/DlcOffer.d.ts +131 -0
  180. package/.yalc/@node-dlc/messaging/dist/messages/DlcOffer.js +418 -0
  181. package/.yalc/@node-dlc/messaging/dist/messages/DlcOffer.js.map +1 -0
  182. package/.yalc/@node-dlc/messaging/dist/messages/DlcSign.d.ts +96 -0
  183. package/.yalc/@node-dlc/messaging/dist/messages/DlcSign.js +267 -0
  184. package/.yalc/@node-dlc/messaging/dist/messages/DlcSign.js.map +1 -0
  185. package/.yalc/@node-dlc/messaging/dist/messages/DlcTransactions.d.ts +69 -0
  186. package/.yalc/@node-dlc/messaging/dist/messages/DlcTransactions.js +149 -0
  187. package/.yalc/@node-dlc/messaging/dist/messages/DlcTransactions.js.map +1 -0
  188. package/.yalc/@node-dlc/messaging/dist/messages/EventDescriptor.d.ts +106 -0
  189. package/.yalc/@node-dlc/messaging/dist/messages/EventDescriptor.js +209 -0
  190. package/.yalc/@node-dlc/messaging/dist/messages/EventDescriptor.js.map +1 -0
  191. package/.yalc/@node-dlc/messaging/dist/messages/FundingInput.d.ts +62 -0
  192. package/.yalc/@node-dlc/messaging/dist/messages/FundingInput.js +163 -0
  193. package/.yalc/@node-dlc/messaging/dist/messages/FundingInput.js.map +1 -0
  194. package/.yalc/@node-dlc/messaging/dist/messages/FundingSignatures.d.ts +36 -0
  195. package/.yalc/@node-dlc/messaging/dist/messages/FundingSignatures.js +78 -0
  196. package/.yalc/@node-dlc/messaging/dist/messages/FundingSignatures.js.map +1 -0
  197. package/.yalc/@node-dlc/messaging/dist/messages/IWireMessage.d.ts +6 -0
  198. package/.yalc/@node-dlc/messaging/dist/messages/IWireMessage.js +3 -0
  199. package/.yalc/@node-dlc/messaging/dist/messages/IWireMessage.js.map +1 -0
  200. package/.yalc/@node-dlc/messaging/dist/messages/NegotiationFields.d.ts +86 -0
  201. package/.yalc/@node-dlc/messaging/dist/messages/NegotiationFields.js +185 -0
  202. package/.yalc/@node-dlc/messaging/dist/messages/NegotiationFields.js.map +1 -0
  203. package/.yalc/@node-dlc/messaging/dist/messages/NodeAnnouncementMessage.d.ts +57 -0
  204. package/.yalc/@node-dlc/messaging/dist/messages/NodeAnnouncementMessage.js +127 -0
  205. package/.yalc/@node-dlc/messaging/dist/messages/NodeAnnouncementMessage.js.map +1 -0
  206. package/.yalc/@node-dlc/messaging/dist/messages/OracleAnnouncement.d.ts +76 -0
  207. package/.yalc/@node-dlc/messaging/dist/messages/OracleAnnouncement.js +131 -0
  208. package/.yalc/@node-dlc/messaging/dist/messages/OracleAnnouncement.js.map +1 -0
  209. package/.yalc/@node-dlc/messaging/dist/messages/OracleAttestation.d.ts +68 -0
  210. package/.yalc/@node-dlc/messaging/dist/messages/OracleAttestation.js +239 -0
  211. package/.yalc/@node-dlc/messaging/dist/messages/OracleAttestation.js.map +1 -0
  212. package/.yalc/@node-dlc/messaging/dist/messages/OracleEvent.d.ts +90 -0
  213. package/.yalc/@node-dlc/messaging/dist/messages/OracleEvent.js +189 -0
  214. package/.yalc/@node-dlc/messaging/dist/messages/OracleEvent.js.map +1 -0
  215. package/.yalc/@node-dlc/messaging/dist/messages/OracleEventContainer.d.ts +32 -0
  216. package/.yalc/@node-dlc/messaging/dist/messages/OracleEventContainer.js +67 -0
  217. package/.yalc/@node-dlc/messaging/dist/messages/OracleEventContainer.js.map +1 -0
  218. package/.yalc/@node-dlc/messaging/dist/messages/OracleIdentifier.d.ts +32 -0
  219. package/.yalc/@node-dlc/messaging/dist/messages/OracleIdentifier.js +58 -0
  220. package/.yalc/@node-dlc/messaging/dist/messages/OracleIdentifier.js.map +1 -0
  221. package/.yalc/@node-dlc/messaging/dist/messages/OracleIdentifierV0.d.ts +32 -0
  222. package/.yalc/@node-dlc/messaging/dist/messages/OracleIdentifierV0.js +58 -0
  223. package/.yalc/@node-dlc/messaging/dist/messages/OracleIdentifierV0.js.map +1 -0
  224. package/.yalc/@node-dlc/messaging/dist/messages/OracleInfo.d.ts +161 -0
  225. package/.yalc/@node-dlc/messaging/dist/messages/OracleInfo.js +390 -0
  226. package/.yalc/@node-dlc/messaging/dist/messages/OracleInfo.js.map +1 -0
  227. package/.yalc/@node-dlc/messaging/dist/messages/OracleInfoV0.d.ts +161 -0
  228. package/.yalc/@node-dlc/messaging/dist/messages/OracleInfoV0.js +387 -0
  229. package/.yalc/@node-dlc/messaging/dist/messages/OracleInfoV0.js.map +1 -0
  230. package/.yalc/@node-dlc/messaging/dist/messages/OrderAccept.d.ts +65 -0
  231. package/.yalc/@node-dlc/messaging/dist/messages/OrderAccept.js +125 -0
  232. package/.yalc/@node-dlc/messaging/dist/messages/OrderAccept.js.map +1 -0
  233. package/.yalc/@node-dlc/messaging/dist/messages/OrderIrcInfo.d.ts +42 -0
  234. package/.yalc/@node-dlc/messaging/dist/messages/OrderIrcInfo.js +74 -0
  235. package/.yalc/@node-dlc/messaging/dist/messages/OrderIrcInfo.js.map +1 -0
  236. package/.yalc/@node-dlc/messaging/dist/messages/OrderMetadata.d.ts +56 -0
  237. package/.yalc/@node-dlc/messaging/dist/messages/OrderMetadata.js +87 -0
  238. package/.yalc/@node-dlc/messaging/dist/messages/OrderMetadata.js.map +1 -0
  239. package/.yalc/@node-dlc/messaging/dist/messages/OrderNegotiationFields.d.ts +69 -0
  240. package/.yalc/@node-dlc/messaging/dist/messages/OrderNegotiationFields.js +114 -0
  241. package/.yalc/@node-dlc/messaging/dist/messages/OrderNegotiationFields.js.map +1 -0
  242. package/.yalc/@node-dlc/messaging/dist/messages/OrderOffer.d.ts +97 -0
  243. package/.yalc/@node-dlc/messaging/dist/messages/OrderOffer.js +296 -0
  244. package/.yalc/@node-dlc/messaging/dist/messages/OrderOffer.js.map +1 -0
  245. package/.yalc/@node-dlc/messaging/dist/messages/OrderPositionInfo.d.ts +50 -0
  246. package/.yalc/@node-dlc/messaging/dist/messages/OrderPositionInfo.js +125 -0
  247. package/.yalc/@node-dlc/messaging/dist/messages/OrderPositionInfo.js.map +1 -0
  248. package/.yalc/@node-dlc/messaging/dist/messages/PayoutCurvePiece.d.ts +129 -0
  249. package/.yalc/@node-dlc/messaging/dist/messages/PayoutCurvePiece.js +327 -0
  250. package/.yalc/@node-dlc/messaging/dist/messages/PayoutCurvePiece.js.map +1 -0
  251. package/.yalc/@node-dlc/messaging/dist/messages/PayoutFunction.d.ts +66 -0
  252. package/.yalc/@node-dlc/messaging/dist/messages/PayoutFunction.js +170 -0
  253. package/.yalc/@node-dlc/messaging/dist/messages/PayoutFunction.js.map +1 -0
  254. package/.yalc/@node-dlc/messaging/dist/messages/RoundingIntervals.d.ts +52 -0
  255. package/.yalc/@node-dlc/messaging/dist/messages/RoundingIntervals.js +95 -0
  256. package/.yalc/@node-dlc/messaging/dist/messages/RoundingIntervals.js.map +1 -0
  257. package/.yalc/@node-dlc/messaging/dist/messages/ScriptWitnessV0.d.ts +29 -0
  258. package/.yalc/@node-dlc/messaging/dist/messages/ScriptWitnessV0.js +50 -0
  259. package/.yalc/@node-dlc/messaging/dist/messages/ScriptWitnessV0.js.map +1 -0
  260. package/.yalc/@node-dlc/messaging/dist/messages/Tlv.d.ts +15 -0
  261. package/.yalc/@node-dlc/messaging/dist/messages/Tlv.js +32 -0
  262. package/.yalc/@node-dlc/messaging/dist/messages/Tlv.js.map +1 -0
  263. package/.yalc/@node-dlc/messaging/dist/serialize/F64.d.ts +154 -0
  264. package/.yalc/@node-dlc/messaging/dist/serialize/F64.js +307 -0
  265. package/.yalc/@node-dlc/messaging/dist/serialize/F64.js.map +1 -0
  266. package/.yalc/@node-dlc/messaging/dist/serialize/deserializeTlv.d.ts +9 -0
  267. package/.yalc/@node-dlc/messaging/dist/serialize/deserializeTlv.js +11 -0
  268. package/.yalc/@node-dlc/messaging/dist/serialize/deserializeTlv.js.map +1 -0
  269. package/.yalc/@node-dlc/messaging/dist/serialize/getTlv.d.ts +4 -0
  270. package/.yalc/@node-dlc/messaging/dist/serialize/getTlv.js +23 -0
  271. package/.yalc/@node-dlc/messaging/dist/serialize/getTlv.js.map +1 -0
  272. package/.yalc/@node-dlc/messaging/dist/serialize/readTlvs.d.ts +8 -0
  273. package/.yalc/@node-dlc/messaging/dist/serialize/readTlvs.js +33 -0
  274. package/.yalc/@node-dlc/messaging/dist/serialize/readTlvs.js.map +1 -0
  275. package/.yalc/@node-dlc/messaging/dist/util.d.ts +13 -0
  276. package/.yalc/@node-dlc/messaging/dist/util.js +40 -0
  277. package/.yalc/@node-dlc/messaging/dist/util.js.map +1 -0
  278. package/.yalc/@node-dlc/messaging/dist/validation/validate.d.ts +4 -0
  279. package/.yalc/@node-dlc/messaging/dist/validation/validate.js +31 -0
  280. package/.yalc/@node-dlc/messaging/dist/validation/validate.js.map +1 -0
  281. package/.yalc/@node-dlc/messaging/lib/MessageType.ts +138 -0
  282. package/.yalc/@node-dlc/messaging/lib/chain/ChainManager.ts +326 -0
  283. package/.yalc/@node-dlc/messaging/lib/chain/ChainMemoryStore.ts +34 -0
  284. package/.yalc/@node-dlc/messaging/lib/chain/DlcStore.ts +11 -0
  285. package/.yalc/@node-dlc/messaging/lib/chain/IChainFilterChainClient.ts +57 -0
  286. package/.yalc/@node-dlc/messaging/lib/domain/Address.ts +64 -0
  287. package/.yalc/@node-dlc/messaging/lib/index.ts +44 -0
  288. package/.yalc/@node-dlc/messaging/lib/irc/IrcMessage.ts +161 -0
  289. package/.yalc/@node-dlc/messaging/lib/messages/AddressCache.ts +74 -0
  290. package/.yalc/@node-dlc/messaging/lib/messages/BatchFundingGroup.ts +141 -0
  291. package/.yalc/@node-dlc/messaging/lib/messages/CetAdaptorSignatures.ts +89 -0
  292. package/.yalc/@node-dlc/messaging/lib/messages/ContractDescriptor.ts +318 -0
  293. package/.yalc/@node-dlc/messaging/lib/messages/ContractInfo.ts +434 -0
  294. package/.yalc/@node-dlc/messaging/lib/messages/DlcAccept.ts +595 -0
  295. package/.yalc/@node-dlc/messaging/lib/messages/DlcCancel.ts +57 -0
  296. package/.yalc/@node-dlc/messaging/lib/messages/DlcClose.ts +302 -0
  297. package/.yalc/@node-dlc/messaging/lib/messages/DlcCloseMetadata.ts +121 -0
  298. package/.yalc/@node-dlc/messaging/lib/messages/DlcIds.ts +67 -0
  299. package/.yalc/@node-dlc/messaging/lib/messages/DlcInfo.ts +81 -0
  300. package/.yalc/@node-dlc/messaging/lib/messages/DlcMessage.ts +87 -0
  301. package/.yalc/@node-dlc/messaging/lib/messages/DlcOffer.ts +605 -0
  302. package/.yalc/@node-dlc/messaging/lib/messages/DlcSign.ts +354 -0
  303. package/.yalc/@node-dlc/messaging/lib/messages/DlcTransactions.ts +213 -0
  304. package/.yalc/@node-dlc/messaging/lib/messages/EventDescriptor.ts +289 -0
  305. package/.yalc/@node-dlc/messaging/lib/messages/FundingInput.ts +216 -0
  306. package/.yalc/@node-dlc/messaging/lib/messages/FundingSignatures.ts +98 -0
  307. package/.yalc/@node-dlc/messaging/lib/messages/IWireMessage.ts +6 -0
  308. package/.yalc/@node-dlc/messaging/lib/messages/NegotiationFields.ts +252 -0
  309. package/.yalc/@node-dlc/messaging/lib/messages/NodeAnnouncementMessage.ts +145 -0
  310. package/.yalc/@node-dlc/messaging/lib/messages/OracleAnnouncement.ts +176 -0
  311. package/.yalc/@node-dlc/messaging/lib/messages/OracleAttestation.ts +292 -0
  312. package/.yalc/@node-dlc/messaging/lib/messages/OracleEvent.ts +250 -0
  313. package/.yalc/@node-dlc/messaging/lib/messages/OracleEventContainer.ts +89 -0
  314. package/.yalc/@node-dlc/messaging/lib/messages/OracleIdentifier.ts +78 -0
  315. package/.yalc/@node-dlc/messaging/lib/messages/OracleInfo.ts +519 -0
  316. package/.yalc/@node-dlc/messaging/lib/messages/OrderAccept.ts +159 -0
  317. package/.yalc/@node-dlc/messaging/lib/messages/OrderIrcInfo.ts +100 -0
  318. package/.yalc/@node-dlc/messaging/lib/messages/OrderMetadata.ts +119 -0
  319. package/.yalc/@node-dlc/messaging/lib/messages/OrderNegotiationFields.ts +157 -0
  320. package/.yalc/@node-dlc/messaging/lib/messages/OrderOffer.ts +419 -0
  321. package/.yalc/@node-dlc/messaging/lib/messages/OrderPositionInfo.ts +170 -0
  322. package/.yalc/@node-dlc/messaging/lib/messages/PayoutCurvePiece.ts +449 -0
  323. package/.yalc/@node-dlc/messaging/lib/messages/PayoutFunction.ts +240 -0
  324. package/.yalc/@node-dlc/messaging/lib/messages/RoundingIntervals.ts +127 -0
  325. package/.yalc/@node-dlc/messaging/lib/messages/ScriptWitnessV0.ts +63 -0
  326. package/.yalc/@node-dlc/messaging/lib/messages/Tlv.ts +40 -0
  327. package/.yalc/@node-dlc/messaging/lib/serialize/F64.ts +352 -0
  328. package/.yalc/@node-dlc/messaging/lib/serialize/deserializeTlv.ts +15 -0
  329. package/.yalc/@node-dlc/messaging/lib/serialize/getTlv.ts +21 -0
  330. package/.yalc/@node-dlc/messaging/lib/serialize/readTlvs.ts +37 -0
  331. package/.yalc/@node-dlc/messaging/lib/util.ts +33 -0
  332. package/.yalc/@node-dlc/messaging/lib/validation/validate.ts +34 -0
  333. package/.yalc/@node-dlc/messaging/package.json +42 -0
  334. package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs/enum_3_of_3_test.json +210 -0
  335. package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs/enum_3_of_5_test.json +468 -0
  336. package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs/enum_and_numerical_3_of_5_test.json +1517 -0
  337. package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs/enum_and_numerical_5_of_5_test.json +545 -0
  338. package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs/enum_and_numerical_with_diff_3_of_5_test.json +4761 -0
  339. package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs/enum_and_numerical_with_diff_5_of_5_test.json +2169 -0
  340. package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs/enum_single_oracle_test.json +164 -0
  341. package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs/single_oracle_numerical_hyperbola_test.json +502 -0
  342. package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs/single_oracle_numerical_test.json +262 -0
  343. package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs/three_of_five_oracle_numerical_with_diff_test.json +4382 -0
  344. package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs/three_of_three_oracle_numerical_test.json +324 -0
  345. package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs/three_of_three_oracle_numerical_with_diff_test.json +652 -0
  346. package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs/two_of_five_oracle_numerical_test.json +1138 -0
  347. package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs/two_of_five_oracle_numerical_with_diff_test.json +2222 -0
  348. package/.yalc/@node-dlc/messaging/test_vectors/oracle/external_oracle_announcements.json +0 -0
  349. package/.yalc/@node-dlc/messaging/test_vectors/oracle/oracle_message_test_vectors.json +115 -0
  350. package/.yalc/@node-dlc/messaging/test_vectors/rust-dlc/accept_msg.json +1465 -0
  351. package/.yalc/@node-dlc/messaging/test_vectors/rust-dlc/dlc_fee_test.json +12362 -0
  352. package/.yalc/@node-dlc/messaging/test_vectors/rust-dlc/dlc_fee_test_scripts.json +57 -0
  353. package/.yalc/@node-dlc/messaging/test_vectors/rust-dlc/dlc_test.json +2766 -0
  354. package/.yalc/@node-dlc/messaging/test_vectors/rust-dlc/dlc_tx_test.json +2899 -0
  355. package/.yalc/@node-dlc/messaging/test_vectors/rust-dlc/offer_msg.json +163 -0
  356. package/.yalc/@node-dlc/messaging/test_vectors/rust-dlc/offer_msg_disjoint.json +352 -0
  357. package/.yalc/@node-dlc/messaging/test_vectors/rust-dlc/segment_chunk_msg.json +12635 -0
  358. package/.yalc/@node-dlc/messaging/test_vectors/rust-dlc/segment_start_msg.json +4022 -0
  359. package/.yalc/@node-dlc/messaging/test_vectors/rust-dlc/sign_msg.json +383 -0
  360. package/.yalc/@node-dlc/messaging/tsconfig.json +7 -0
  361. package/.yalc/@node-dlc/messaging/yalc.sig +1 -0
  362. package/CHANGELOG.md +64 -0
  363. package/dist/dlc.d.ts +3 -3
  364. package/dist/models/Output.js.map +1 -1
  365. package/lib/dlc.ts +4 -14
  366. package/lib/models/Output.ts +4 -1
  367. package/package.json +4 -4
  368. package/yalc.lock +10 -0
@@ -0,0 +1,326 @@
1
+ import { expect } from 'chai';
2
+ import * as fs from 'fs';
3
+ import * as path from 'path';
4
+
5
+ import { OracleAnnouncement } from '../../lib/messages/OracleAnnouncement';
6
+ import { OracleAttestation } from '../../lib/messages/OracleAttestation';
7
+
8
+ // Load test vectors
9
+ const testVectorsPath = path.join(
10
+ __dirname,
11
+ '../../test_vectors/oracle/oracle_message_test_vectors.json',
12
+ );
13
+ const testVectors = JSON.parse(fs.readFileSync(testVectorsPath, 'utf8'));
14
+
15
+ describe('OracleAttestation', () => {
16
+ const attestationSig = Buffer.from(
17
+ '424c11a44c2e522f90bbe4abab6ec1bc8ab44c9b29316ce6e1d0d7d08385a474' +
18
+ 'de6b75f1da183a2a4f9ad144b48bf1026cee9687221df58f04128db79ca17e2a',
19
+ 'hex',
20
+ );
21
+
22
+ const oraclePubkey = Buffer.from(
23
+ '1d5dcdba2e64cb116cc0c375a0856298f0058b778f46bfe625ac6576204889e4',
24
+ 'hex',
25
+ );
26
+
27
+ const invalidOraclePubkey = Buffer.from(
28
+ '5d1bcfab252c6dd9edd7aea4c5eeeef138f7ff7346061ea40143a9f5ae80baa9',
29
+ 'hex',
30
+ );
31
+
32
+ describe('serialize', () => {
33
+ it('serializes', () => {
34
+ const instance = new OracleAttestation();
35
+
36
+ instance.eventId = 'BTC-USD-OVER-50K-COINBASE';
37
+ instance.oraclePubkey = oraclePubkey;
38
+ instance.signatures.push(attestationSig);
39
+ instance.outcomes.push('NO');
40
+
41
+ // Test that it serializes without errors (new dlcspecs PR #163 format)
42
+ const serialized = instance.serialize();
43
+ expect(serialized).to.be.instanceof(Buffer);
44
+ expect(serialized.length).to.be.greaterThan(0);
45
+ });
46
+ });
47
+
48
+ describe('deserialize', () => {
49
+ it('deserializes', () => {
50
+ // Create a test instance and serialize it first for round-trip testing
51
+ const originalInstance = new OracleAttestation();
52
+ originalInstance.eventId = 'BTC-USD-OVER-50K-COINBASE';
53
+ originalInstance.oraclePubkey = oraclePubkey;
54
+ originalInstance.signatures.push(attestationSig);
55
+ originalInstance.outcomes.push('NO');
56
+
57
+ // Serialize and then deserialize to ensure round-trip consistency
58
+ const serialized = originalInstance.serialize();
59
+ const instance = OracleAttestation.deserialize(serialized);
60
+
61
+ expect(Number(instance.length)).to.be.greaterThan(0); // Length is calculated automatically
62
+ expect(instance.eventId).to.equal('BTC-USD-OVER-50K-COINBASE');
63
+ expect(instance.oraclePubkey).to.deep.equal(oraclePubkey);
64
+ expect(instance.signatures[0]).to.deep.equal(attestationSig);
65
+ expect(instance.outcomes[0]).to.equal('NO');
66
+ });
67
+ });
68
+
69
+ describe('validate', () => {
70
+ it('should validate when correct outcome signatures', () => {
71
+ const instance = new OracleAttestation();
72
+
73
+ instance.eventId = 'BTC-USD-OVER-50K-COINBASE';
74
+ instance.oraclePubkey = oraclePubkey;
75
+ instance.signatures.push(attestationSig);
76
+ instance.outcomes.push('NO');
77
+
78
+ expect(function () {
79
+ instance.validate();
80
+ }).to.not.throw(Error);
81
+ });
82
+
83
+ it('should invalidate when incorrect outcome signatures', () => {
84
+ const instance = new OracleAttestation();
85
+
86
+ instance.eventId = 'BTC-USD-OVER-50K-COINBASE';
87
+ instance.oraclePubkey = invalidOraclePubkey;
88
+ instance.signatures.push(attestationSig);
89
+ instance.outcomes.push('NO');
90
+
91
+ expect(function () {
92
+ instance.validate();
93
+ }).to.throw(Error);
94
+ });
95
+ });
96
+
97
+ /**
98
+ * Comprehensive Test Vectors
99
+ * Tests oracle attestations from various implementations and oracle providers
100
+ */
101
+ describe('comprehensive attestation test vectors', () => {
102
+ describe('Atomic Finance attestation', () => {
103
+ let announcement: OracleAnnouncement;
104
+ let instance: OracleAttestation;
105
+
106
+ before(() => {
107
+ const announcementBuf = Buffer.from(
108
+ testVectors.atomic.announcement,
109
+ 'hex',
110
+ );
111
+ announcement = OracleAnnouncement.deserialize(announcementBuf);
112
+ const attestationBuf = Buffer.from(
113
+ testVectors.atomic.attestation,
114
+ 'hex',
115
+ );
116
+ instance = OracleAttestation.deserialize(attestationBuf);
117
+ });
118
+
119
+ it('deserializes Atomic oracle attestation', () => {
120
+ expect(Number(instance.length)).to.be.greaterThan(0);
121
+ expect(instance.eventId).to.equal(testVectors.atomic.metadata.eventId);
122
+ expect(instance.oraclePubkey).to.be.instanceOf(Buffer);
123
+ expect(instance.oraclePubkey.length).to.equal(32);
124
+ expect(instance.signatures).to.be.an('array');
125
+ expect(instance.outcomes).to.be.an('array');
126
+ expect(instance.signatures.length).to.equal(instance.outcomes.length);
127
+ });
128
+
129
+ it('validates Atomic oracle attestation', () => {
130
+ expect(() => instance.validate()).to.not.throw();
131
+ });
132
+
133
+ it('validates against corresponding announcement', () => {
134
+ expect(() => instance.validate(announcement)).to.not.throw();
135
+ });
136
+
137
+ it('has correct number of signatures for digit decomposition', () => {
138
+ expect(instance.signatures).to.have.length(18); // 18-digit binary decomposition
139
+ expect(instance.outcomes).to.have.length(18);
140
+ });
141
+
142
+ it('has binary outcomes (0 or 1)', () => {
143
+ instance.outcomes.forEach((outcome) => {
144
+ expect(['0', '1']).to.include(outcome);
145
+ });
146
+ });
147
+
148
+ it('round-trip serialization works', () => {
149
+ const serialized = instance.serialize();
150
+ const deserialized = OracleAttestation.deserialize(serialized);
151
+ expect(deserialized.eventId).to.equal(instance.eventId);
152
+ expect(deserialized.oraclePubkey).to.deep.equal(instance.oraclePubkey);
153
+ expect(deserialized.outcomes).to.deep.equal(instance.outcomes);
154
+ });
155
+ });
156
+
157
+ describe('Lava attestation', () => {
158
+ let announcement: OracleAnnouncement;
159
+ let instance: OracleAttestation;
160
+
161
+ before(() => {
162
+ const announcementBuf = Buffer.from(
163
+ testVectors.lava.announcement,
164
+ 'hex',
165
+ );
166
+ announcement = OracleAnnouncement.deserialize(announcementBuf);
167
+ const attestationBuf = Buffer.from(testVectors.lava.attestation, 'hex');
168
+ instance = OracleAttestation.deserialize(attestationBuf);
169
+ });
170
+
171
+ it('deserializes Lava oracle attestation', () => {
172
+ expect(Number(instance.length)).to.be.greaterThan(0);
173
+ expect(instance.eventId).to.be.a('string');
174
+ expect(instance.oraclePubkey).to.be.instanceOf(Buffer);
175
+ expect(instance.oraclePubkey.length).to.equal(32);
176
+ expect(instance.signatures).to.be.an('array');
177
+ expect(instance.outcomes).to.be.an('array');
178
+ expect(instance.signatures.length).to.equal(instance.outcomes.length);
179
+ });
180
+
181
+ it('has correct number of signatures for digit decomposition', () => {
182
+ expect(instance.signatures).to.have.length(18); // 18-digit binary decomposition
183
+ expect(instance.outcomes).to.have.length(18);
184
+ });
185
+
186
+ it('has binary outcomes (0 or 1)', () => {
187
+ instance.outcomes.forEach((outcome) => {
188
+ expect(['0', '1']).to.include(outcome);
189
+ });
190
+ });
191
+
192
+ it('round-trip serialization works', () => {
193
+ const serialized = instance.serialize();
194
+ const deserialized = OracleAttestation.deserialize(serialized);
195
+ expect(deserialized.eventId).to.equal(instance.eventId);
196
+ expect(deserialized.oraclePubkey).to.deep.equal(instance.oraclePubkey);
197
+ expect(deserialized.outcomes).to.deep.equal(instance.outcomes);
198
+ });
199
+ });
200
+
201
+ describe('rust-dlc enum oracle', () => {
202
+ let announcement: OracleAnnouncement;
203
+ let instance: OracleAttestation;
204
+
205
+ before(() => {
206
+ const announcementBuf = Buffer.from(
207
+ testVectors.rust_dlc_enum.announcement,
208
+ 'hex',
209
+ );
210
+ announcement = OracleAnnouncement.deserialize(announcementBuf);
211
+ const attestationBuf = Buffer.from(
212
+ testVectors.rust_dlc_enum.attestation,
213
+ 'hex',
214
+ );
215
+ instance = OracleAttestation.deserialize(attestationBuf);
216
+ });
217
+
218
+ it('deserializes rust-dlc enum oracle attestation', () => {
219
+ expect(Number(instance.length)).to.be.greaterThan(0);
220
+ expect(instance.eventId).to.equal('sports-match-001');
221
+ expect(instance.oraclePubkey).to.be.instanceOf(Buffer);
222
+ expect(instance.oraclePubkey.length).to.equal(32);
223
+ expect(instance.signatures).to.be.an('array');
224
+ expect(instance.outcomes).to.be.an('array');
225
+ expect(instance.signatures.length).to.equal(instance.outcomes.length);
226
+ });
227
+
228
+ it('has single signature for enum event', () => {
229
+ expect(instance.signatures).to.have.length(1);
230
+ expect(instance.outcomes).to.have.length(1);
231
+ });
232
+
233
+ it('has valid enum outcome', () => {
234
+ expect(instance.outcomes[0]).to.equal('win');
235
+ expect(['win', 'lose', 'draw']).to.include(instance.outcomes[0]);
236
+ });
237
+
238
+ it('round-trip serialization works', () => {
239
+ const serialized = instance.serialize();
240
+ const deserialized = OracleAttestation.deserialize(serialized);
241
+ expect(deserialized.eventId).to.equal(instance.eventId);
242
+ expect(deserialized.oraclePubkey).to.deep.equal(instance.oraclePubkey);
243
+ expect(deserialized.outcomes).to.deep.equal(instance.outcomes);
244
+ });
245
+ });
246
+
247
+ describe('rust-dlc numeric oracle', () => {
248
+ let instance: OracleAttestation;
249
+
250
+ before(() => {
251
+ const attestationBuf = Buffer.from(
252
+ testVectors.rust_dlc_numeric.attestation,
253
+ 'hex',
254
+ );
255
+ instance = OracleAttestation.deserialize(attestationBuf);
256
+ });
257
+
258
+ it('deserializes rust-dlc numeric oracle attestation', () => {
259
+ expect(Number(instance.length)).to.be.greaterThan(0);
260
+ expect(instance.eventId).to.equal('btc-price-test');
261
+ expect(instance.oraclePubkey).to.be.instanceOf(Buffer);
262
+ expect(instance.oraclePubkey.length).to.equal(32);
263
+ expect(instance.signatures).to.be.an('array');
264
+ expect(instance.outcomes).to.be.an('array');
265
+ expect(instance.signatures.length).to.equal(instance.outcomes.length);
266
+ });
267
+
268
+ it('has correct number of signatures for 8-digit decomposition', () => {
269
+ expect(instance.signatures).to.have.length(8); // 8-digit binary decomposition
270
+ expect(instance.outcomes).to.have.length(8);
271
+ });
272
+
273
+ it('has binary outcomes (0 or 1)', () => {
274
+ instance.outcomes.forEach((outcome) => {
275
+ expect(['0', '1']).to.include(outcome);
276
+ });
277
+ });
278
+
279
+ it('represents number 42 in binary (00101010)', () => {
280
+ // Outcomes are in little-endian order (LSB first)
281
+ const expectedBinary = ['0', '1', '0', '1', '0', '1', '0', '0'];
282
+ expect(instance.outcomes).to.deep.equal(expectedBinary);
283
+ });
284
+
285
+ it('round-trip serialization works', () => {
286
+ const serialized = instance.serialize();
287
+ const deserialized = OracleAttestation.deserialize(serialized);
288
+ expect(deserialized.eventId).to.equal(instance.eventId);
289
+ expect(deserialized.oraclePubkey).to.deep.equal(instance.oraclePubkey);
290
+ expect(deserialized.outcomes).to.deep.equal(instance.outcomes);
291
+ });
292
+ });
293
+
294
+ describe('cross-validation tests', () => {
295
+ it('attestations have consistent event IDs with announcements', () => {
296
+ const testCases = [
297
+ {
298
+ announcement: testVectors.atomic.announcement,
299
+ attestation: testVectors.atomic.attestation,
300
+ },
301
+ {
302
+ announcement: testVectors.lava.announcement,
303
+ attestation: testVectors.lava.attestation,
304
+ },
305
+ {
306
+ announcement: testVectors.rust_dlc_enum.announcement,
307
+ attestation: testVectors.rust_dlc_enum.attestation,
308
+ },
309
+ {
310
+ announcement: testVectors.rust_dlc_numeric.announcement,
311
+ attestation: testVectors.rust_dlc_numeric.attestation,
312
+ },
313
+ ];
314
+ testCases.forEach((testCase) => {
315
+ const announcement = OracleAnnouncement.deserialize(
316
+ Buffer.from(testCase.announcement, 'hex'),
317
+ );
318
+ const attestation = OracleAttestation.deserialize(
319
+ Buffer.from(testCase.attestation, 'hex'),
320
+ );
321
+ expect(attestation.eventId).to.equal(announcement.getEventId());
322
+ });
323
+ });
324
+ });
325
+ });
326
+ });
@@ -0,0 +1,143 @@
1
+ import { expect } from 'chai';
2
+
3
+ import {
4
+ DigitDecompositionEventDescriptor,
5
+ EnumEventDescriptor,
6
+ } from '../../lib/messages/EventDescriptor';
7
+ import { OracleEvent } from '../../lib/messages/OracleEvent';
8
+
9
+ describe('OracleEvent', () => {
10
+ const oracleNonce = Buffer.from(
11
+ '3cfba011378411b20a5ab773cb95daab93e9bcd1e4cce44986a7dda84e01841b',
12
+ 'hex',
13
+ );
14
+
15
+ const eventId = Buffer.from('64756d6d79', 'hex');
16
+
17
+ describe('serialize', () => {
18
+ it('serializes', () => {
19
+ const instance = new OracleEvent();
20
+
21
+ instance.length = BigInt(64);
22
+ instance.oracleNonces.push(oracleNonce);
23
+ instance.eventMaturityEpoch = 0;
24
+ instance.eventDescriptor = EnumEventDescriptor.deserialize(
25
+ Buffer.from(
26
+ 'fdd806' + // type enum_event_descriptor
27
+ '10' + // length
28
+ '0002' + // num_outcomes
29
+ '06' + // outcome_1_len
30
+ '64756d6d7931' + // outcome_1
31
+ '06' + // outcome_2_len
32
+ '64756d6d7932', // outcome_2
33
+ 'hex',
34
+ ),
35
+ );
36
+ instance.eventId = eventId.toString();
37
+
38
+ expect(instance.serialize().toString("hex")).to.equal(
39
+ "fdd822" + // type oracle_event
40
+ "40" + // length
41
+ "0001" + // nb_nonces
42
+ "3cfba011378411b20a5ab773cb95daab93e9bcd1e4cce44986a7dda84e01841b" + // oracle_nonces
43
+ "00000000" + // event_maturity_epoch
44
+ "fdd806" + // type enum_event_descriptor
45
+ "10" + // length
46
+ "0002" + // num_outcomes
47
+ "06" + // outcome_1_len
48
+ "64756d6d7931" + // outcome_1
49
+ "06" + // outcome_2_len
50
+ "64756d6d7932" + // outcome_2
51
+ "05" + // event_id_length
52
+ "64756d6d79" // event_id
53
+ ); // prettier-ignore
54
+ });
55
+ });
56
+
57
+ describe('deserialize', () => {
58
+ it('deserializes', () => {
59
+ const buf = Buffer.from(
60
+ "fdd822" + // type oracle_event
61
+ "40" + // length
62
+ "0001" + // nb_nonces
63
+ "3cfba011378411b20a5ab773cb95daab93e9bcd1e4cce44986a7dda84e01841b" + // oracle_nonces
64
+ "00000000" + // event_maturity_epoch
65
+ "fdd806" + // type enum_event_descriptor
66
+ "10" + // length
67
+ "0002" + // num_outcomes
68
+ "06" + // outcome_1_len
69
+ "64756d6d7931" + // outcome_1
70
+ "06" + // outcome_2_len
71
+ "64756d6d7932" + // outcome_2
72
+ "05" + // event_id_length
73
+ "64756d6d79" // event_id
74
+ , "hex"
75
+ ); // prettier-ignore
76
+
77
+ const instance = OracleEvent.deserialize(buf);
78
+
79
+ expect(instance.oracleNonces[0]).to.deep.equal(oracleNonce);
80
+ expect(instance.eventMaturityEpoch).to.equal(0);
81
+ expect(instance.eventDescriptor.serialize().toString('hex')).to.equal(
82
+ 'fdd806' + // type enum_event_descriptor
83
+ '10' + // length
84
+ '0002' + // num_outcomes
85
+ '06' + // outcome_1_len
86
+ '64756d6d7931' + // outcome_1
87
+ '06' + // outcome_2_len
88
+ '64756d6d7932', // outcome_2
89
+ );
90
+ expect(instance.eventId).to.equal(eventId.toString());
91
+ });
92
+ });
93
+
94
+ describe('validate', () => {
95
+ const instance = new OracleEvent();
96
+
97
+ beforeEach(() => {
98
+ instance.length = BigInt(64);
99
+ instance.oracleNonces.push(oracleNonce);
100
+ instance.eventMaturityEpoch = 0;
101
+ instance.eventDescriptor = EnumEventDescriptor.deserialize(
102
+ Buffer.from(
103
+ 'fdd806' + // type enum_event_descriptor
104
+ '10' + // length
105
+ '0002' + // num_outcomes
106
+ '06' + // outcome_1_len
107
+ '64756d6d7931' + // outcome_1
108
+ '06' + // outcome_2_len
109
+ '64756d6d7932', // outcome_2
110
+ 'hex',
111
+ ),
112
+ );
113
+ instance.eventId = eventId.toString();
114
+ });
115
+
116
+ it('should not throw error', () => {
117
+ expect(() => instance.validate()).to.not.throw();
118
+ });
119
+
120
+ it('should throw if eventMaturityEpoch is less than 0', () => {
121
+ instance.eventMaturityEpoch = -1;
122
+ expect(() => instance.validate()).to.throw();
123
+ });
124
+
125
+ it('should throw if oracleNonces.length !== eventDescriptor.nbDigits', () => {
126
+ instance.eventDescriptor = DigitDecompositionEventDescriptor.deserialize(
127
+ Buffer.from(
128
+ 'fdd80a' + // type
129
+ '11' + // length
130
+ '0002' + // base (Switch to '02' with oracle_announcement_v1)
131
+ '00' + // isSigned
132
+ '07' + // unit_Len
133
+ '6274632f757364' + // btc/usd (unit)
134
+ '00000000' + // precision
135
+ '0011', // nb_digits
136
+ 'hex',
137
+ ),
138
+ ); // prettier-ignore);
139
+ instance.oracleNonces = [];
140
+ expect(() => instance.validate()).to.throw();
141
+ });
142
+ });
143
+ });
@@ -0,0 +1,95 @@
1
+ import { expect } from 'chai';
2
+
3
+ import { EnumEventDescriptorV0 } from '../../lib/messages/EventDescriptor';
4
+ import { OracleAnnouncement } from '../../lib/messages/OracleAnnouncement';
5
+ import { OracleAttestation } from '../../lib/messages/OracleAttestation';
6
+ import { OracleEvent } from '../../lib/messages/OracleEvent';
7
+ import { OracleEventContainer } from '../../lib/messages/OracleEventContainer';
8
+
9
+ describe('OracleEventContainer', () => {
10
+ function createTestOracleAnnouncement(): OracleAnnouncement {
11
+ const announcement = new OracleAnnouncement();
12
+ announcement.announcementSig = Buffer.from(
13
+ 'fab22628f6e2602e1671c286a2f63a9246794008627a1749639217f4214cb4a9494c93d1a852221080f44f697adb4355df59eb339f6ba0f9b01ba661a8b108d4',
14
+ 'hex',
15
+ );
16
+ announcement.oraclePubkey = Buffer.from(
17
+ 'da078bbb1d34e7729e38e2ae34236e776da121af442626fa31e31ae55a279a0b',
18
+ 'hex',
19
+ );
20
+
21
+ const oracleEvent = new OracleEvent();
22
+ oracleEvent.oracleNonces = [
23
+ Buffer.from(
24
+ '3cfba011378411b20a5ab773cb95daab93e9bcd1e4cce44986a7dda84e01841b',
25
+ 'hex',
26
+ ),
27
+ ];
28
+ oracleEvent.eventMaturityEpoch = 0;
29
+
30
+ const eventDescriptor = new EnumEventDescriptorV0();
31
+ eventDescriptor.outcomes = ['dummy1', 'dummy2'];
32
+ oracleEvent.eventDescriptor = eventDescriptor;
33
+ oracleEvent.eventId = 'dummy';
34
+
35
+ announcement.oracleEvent = oracleEvent;
36
+ return announcement;
37
+ }
38
+
39
+ function createTestOracleAttestation(): OracleAttestation {
40
+ const attestation = new OracleAttestation();
41
+ attestation.eventId = 'BTC-USD-OVER-50K-COINBASE';
42
+ attestation.oraclePubkey = Buffer.from(
43
+ '1d5dcdba2e64cb116cc0c375a0856298f0058b778f46bfe625ac6576204889e4',
44
+ 'hex',
45
+ );
46
+ attestation.signatures.push(
47
+ Buffer.from(
48
+ '424c11a44c2e522f90bbe4abab6ec1bc8ab44c9b29316ce6e1d0d7d08385a474de6b75f1da183a2a4f9ad144b48bf1026cee9687221df58f04128db79ca17e2a',
49
+ 'hex',
50
+ ),
51
+ );
52
+ attestation.outcomes.push('NO');
53
+ return attestation;
54
+ }
55
+
56
+ describe('serialize', () => {
57
+ it('serializes', () => {
58
+ const instance = new OracleEventContainer();
59
+
60
+ instance.oracleName = 'Atomic';
61
+ instance.uri = '';
62
+ instance.announcement = createTestOracleAnnouncement();
63
+ instance.attestation = createTestOracleAttestation();
64
+ instance.outcome = '45354';
65
+
66
+ // Test that it serializes without errors (new dlcspecs PR #163 format)
67
+ const serialized = instance.serialize();
68
+ expect(serialized).to.be.instanceof(Buffer);
69
+ expect(serialized.length).to.be.greaterThan(0);
70
+ });
71
+ });
72
+
73
+ describe('deserialize', () => {
74
+ it('deserializes', () => {
75
+ // Create a test instance and serialize it first for round-trip testing
76
+ const originalInstance = new OracleEventContainer();
77
+ originalInstance.oracleName = 'Atomic';
78
+ originalInstance.uri = '';
79
+ originalInstance.announcement = createTestOracleAnnouncement();
80
+ originalInstance.attestation = createTestOracleAttestation();
81
+ originalInstance.outcome = '45354';
82
+
83
+ // Serialize and then deserialize to ensure round-trip consistency
84
+ const serialized = originalInstance.serialize();
85
+ const instance = OracleEventContainer.deserialize(serialized);
86
+
87
+ expect(Number(instance.length)).to.be.greaterThan(0); // Length is calculated automatically
88
+ expect(instance.oracleName).to.equal('Atomic');
89
+ expect(instance.uri).to.equal('');
90
+ expect(instance.announcement).to.be.instanceof(OracleAnnouncement);
91
+ expect(instance.attestation).to.be.instanceof(OracleAttestation);
92
+ expect(instance.outcome).to.equal('45354');
93
+ });
94
+ });
95
+ });
@@ -0,0 +1,48 @@
1
+ import { expect } from 'chai';
2
+
3
+ import { OracleIdentifier } from '../../lib/messages/OracleIdentifier';
4
+
5
+ describe('OracleIdentifierV0', () => {
6
+ const oraclePubkey = Buffer.from(
7
+ '5d1bcfab252c6dd9edd7aea4c5eeeef138f7ff7346061ea40143a9f5ae80baa9',
8
+ 'hex',
9
+ );
10
+
11
+ const oracleName = 'atomic';
12
+
13
+ describe('serialize', () => {
14
+ it('serializes', () => {
15
+ const instance = new OracleIdentifier();
16
+
17
+ instance.length = BigInt(64);
18
+ instance.oracleName = oracleName;
19
+ instance.oraclePubkey = oraclePubkey;
20
+
21
+ expect(instance.serialize().toString("hex")).to.equal(
22
+ "fdf020" + // type oracle_identifier
23
+ "27" + // length
24
+ "06" + // oracle_name length
25
+ "61746f6d6963" + // oracle_name
26
+ "5d1bcfab252c6dd9edd7aea4c5eeeef138f7ff7346061ea40143a9f5ae80baa9" // oracle_pubkey
27
+ ); // prettier-ignore
28
+ });
29
+ });
30
+
31
+ describe('deserialize', () => {
32
+ it('deserializes', () => {
33
+ const buf = Buffer.from(
34
+ "fdf020" + // type oracle_identifier
35
+ "27" + // length
36
+ "06" + // oracle_name length
37
+ "61746f6d6963" + // oracle_name
38
+ "5d1bcfab252c6dd9edd7aea4c5eeeef138f7ff7346061ea40143a9f5ae80baa9" // oracle_pubkey
39
+ , "hex"
40
+ ); // prettier-ignore
41
+
42
+ const instance = OracleIdentifier.deserialize(buf);
43
+
44
+ expect(instance.oracleName).to.equal(oracleName);
45
+ expect(instance.oraclePubkey).to.deep.equal(oraclePubkey);
46
+ });
47
+ });
48
+ });