@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,220 @@
1
+ import { F64 } from '../../lib/serialize/F64';
2
+ import { expect } from 'chai';
3
+
4
+ import {
5
+ HyperbolaPayoutCurvePiece,
6
+ PayoutCurvePiece,
7
+ PolynomialPayoutCurvePiece,
8
+ } from '../../lib/messages/PayoutCurvePiece';
9
+
10
+ describe('PayoutCurvePiece', () => {
11
+ describe('PolynomialPayoutCurvePiece', () => {
12
+ it('serializes and deserializes correctly', () => {
13
+ const instance = new PolynomialPayoutCurvePiece();
14
+
15
+ instance.points = [
16
+ {
17
+ eventOutcome: BigInt(0),
18
+ outcomePayout: BigInt(0),
19
+ extraPrecision: 0,
20
+ },
21
+ {
22
+ eventOutcome: BigInt(1),
23
+ outcomePayout: BigInt(1),
24
+ extraPrecision: 0,
25
+ },
26
+ ];
27
+
28
+ // Test that it serializes without errors (new dlcspecs PR #163 format)
29
+ const serialized = instance.serialize();
30
+ expect(serialized).to.be.instanceof(Buffer);
31
+ expect(serialized.length).to.be.greaterThan(0);
32
+
33
+ // Test round-trip serialization
34
+ const deserialized = PayoutCurvePiece.deserialize(
35
+ serialized,
36
+ ) as PolynomialPayoutCurvePiece;
37
+ expect(deserialized).to.be.instanceof(PolynomialPayoutCurvePiece);
38
+ expect(deserialized.points.length).to.equal(2);
39
+ expect(deserialized.points[0].eventOutcome).to.equal(BigInt(0));
40
+ expect(deserialized.points[0].outcomePayout).to.equal(BigInt(0));
41
+ expect(deserialized.points[1].eventOutcome).to.equal(BigInt(1));
42
+ expect(deserialized.points[1].outcomePayout).to.equal(BigInt(1));
43
+ });
44
+
45
+ it('handles large BigInt values correctly', () => {
46
+ const instance = new PolynomialPayoutCurvePiece();
47
+ const largeBigInt = BigInt('18446744073709551615'); // Max uint64
48
+
49
+ instance.points = [
50
+ {
51
+ eventOutcome: largeBigInt,
52
+ outcomePayout: largeBigInt,
53
+ extraPrecision: 0,
54
+ },
55
+ ];
56
+
57
+ const serialized = instance.serialize();
58
+ const deserialized = PayoutCurvePiece.deserialize(
59
+ serialized,
60
+ ) as PolynomialPayoutCurvePiece;
61
+
62
+ expect(deserialized.points[0].eventOutcome).to.equal(largeBigInt);
63
+ expect(deserialized.points[0].outcomePayout).to.equal(largeBigInt);
64
+ });
65
+ });
66
+
67
+ describe('HyperbolaPayoutCurvePiece', () => {
68
+ it('serializes and deserializes correctly with normal values', () => {
69
+ const instance = new HyperbolaPayoutCurvePiece();
70
+ instance.usePositivePiece = true;
71
+ instance.translateOutcome = F64.fromNumber(100.5);
72
+ instance.translatePayout = F64.fromNumber(50.25);
73
+ instance.a = F64.fromNumber(1.0);
74
+ instance.b = F64.fromNumber(0.0);
75
+ instance.c = F64.fromNumber(0.0);
76
+ instance.d = F64.fromNumber(200.0);
77
+
78
+ const serialized = instance.serialize();
79
+ expect(serialized).to.be.instanceof(Buffer);
80
+ expect(serialized.length).to.be.greaterThan(0);
81
+
82
+ // Test round-trip
83
+ const deserialized = PayoutCurvePiece.deserialize(
84
+ serialized,
85
+ ) as HyperbolaPayoutCurvePiece;
86
+ expect(deserialized.usePositivePiece).to.equal(true);
87
+ expect(deserialized.translateOutcome.toNumber()).to.equal(100.5);
88
+ });
89
+
90
+ it('handles very large f64 values without precision loss', () => {
91
+ // Test values that exceed JavaScript MAX_SAFE_INTEGER
92
+ const testCases = [
93
+ {
94
+ name: 'Large positive number',
95
+ value: 1.7976931348623157e100, // Very large but valid f64
96
+ },
97
+ {
98
+ name: 'Very small number',
99
+ value: 5e-324, // Smallest positive denormalized f64
100
+ },
101
+ {
102
+ name: 'Beyond safe integer',
103
+ value: 9007199254740992, // MAX_SAFE_INTEGER + 1
104
+ },
105
+ {
106
+ name: 'Scientific notation',
107
+ value: 1.23456789e50,
108
+ },
109
+ ];
110
+
111
+ testCases.forEach(({ value }) => {
112
+ const instance = new HyperbolaPayoutCurvePiece();
113
+ instance.usePositivePiece = false;
114
+ instance.translateOutcome = F64.fromNumber(value);
115
+ instance.translatePayout = F64.fromNumber(123.456);
116
+ instance.a = F64.fromNumber(1.0);
117
+ instance.b = F64.fromNumber(0.0);
118
+ instance.c = F64.fromNumber(0.0);
119
+ instance.d = F64.fromNumber(value * 2);
120
+
121
+ // Test round-trip serialization preserves exact binary representation
122
+ const serialized = instance.serialize();
123
+ const deserialized = PayoutCurvePiece.deserialize(
124
+ serialized,
125
+ ) as HyperbolaPayoutCurvePiece;
126
+
127
+ // The F64 should maintain exact binary representation
128
+ expect(deserialized.translateOutcome.equals(instance.translateOutcome))
129
+ .to.be.true;
130
+ expect(deserialized.d.equals(instance.d)).to.be.true;
131
+ });
132
+ });
133
+
134
+ it('handles JSON with string values (for very large numbers)', () => {
135
+ // Test JSON with string values for large numbers
136
+ const jsonWithStrings = {
137
+ usePositivePiece: true,
138
+ translateOutcome: '1.7976931348623157e+100', // String representation
139
+ translatePayout: 50000.0, // Regular number
140
+ a: '9007199254740992', // String for large integer
141
+ b: 0.0,
142
+ c: 0.0,
143
+ d: 1.5,
144
+ };
145
+
146
+ const instance = HyperbolaPayoutCurvePiece.fromJSON(jsonWithStrings);
147
+
148
+ // Should handle both string and number inputs correctly
149
+ expect(instance.usePositivePiece).to.be.true;
150
+ expect(instance.translateOutcome.toNumber()).to.equal(
151
+ 1.7976931348623157e100,
152
+ );
153
+ expect(instance.translatePayout.toNumber()).to.equal(50000.0);
154
+ expect(instance.a.toNumber()).to.equal(9007199254740992);
155
+ });
156
+
157
+ it('JSON round-trip maintains values within JavaScript precision limits', () => {
158
+ const instance = new HyperbolaPayoutCurvePiece();
159
+ instance.usePositivePiece = true;
160
+ instance.translateOutcome = F64.fromNumber(50000.5);
161
+ instance.translatePayout = F64.fromNumber(25000.25);
162
+ instance.a = F64.fromNumber(1.5);
163
+ instance.b = F64.fromNumber(0.0);
164
+ instance.c = F64.fromNumber(0.0);
165
+ instance.d = F64.fromNumber(10000.0);
166
+
167
+ // Test JSON round-trip
168
+ const json = instance.toJSON();
169
+ const restored = HyperbolaPayoutCurvePiece.fromJSON(
170
+ json.hyperbolaPayoutCurvePiece,
171
+ );
172
+
173
+ expect(restored.usePositivePiece).to.equal(instance.usePositivePiece);
174
+ expect(restored.translateOutcome.toNumber()).to.equal(
175
+ instance.translateOutcome.toNumber(),
176
+ );
177
+ expect(restored.translatePayout.toNumber()).to.equal(
178
+ instance.translatePayout.toNumber(),
179
+ );
180
+ expect(restored.a.toNumber()).to.equal(instance.a.toNumber());
181
+ expect(restored.d.toNumber()).to.equal(instance.d.toNumber());
182
+ });
183
+
184
+ it('demonstrates precision limits with very large numbers in JSON', () => {
185
+ // This test demonstrates the precision tradeoff we're making
186
+ const veryLargeNumber = 1.2345678901234567e100;
187
+
188
+ const instance = new HyperbolaPayoutCurvePiece();
189
+ instance.usePositivePiece = false;
190
+ instance.translateOutcome = F64.fromNumber(veryLargeNumber);
191
+ instance.translatePayout = F64.fromNumber(0);
192
+ instance.a = F64.fromNumber(0);
193
+ instance.b = F64.fromNumber(0);
194
+ instance.c = F64.fromNumber(0);
195
+ instance.d = F64.fromNumber(0);
196
+
197
+ // Binary serialization preserves exact representation
198
+ const binarySerialized = instance.serialize();
199
+ const binaryDeserialized = PayoutCurvePiece.deserialize(
200
+ binarySerialized,
201
+ ) as HyperbolaPayoutCurvePiece;
202
+
203
+ expect(
204
+ binaryDeserialized.translateOutcome.equals(instance.translateOutcome),
205
+ ).to.be.true;
206
+
207
+ // JSON serialization may lose precision for very large numbers
208
+ const json = instance.toJSON();
209
+ const jsonRestored = HyperbolaPayoutCurvePiece.fromJSON(
210
+ json.hyperbolaPayoutCurvePiece,
211
+ );
212
+
213
+ // This may not be exactly equal due to JSON number precision limits
214
+ const jsonValue = jsonRestored.translateOutcome.toNumber();
215
+
216
+ // The important thing is that both are very large numbers in the same ballpark
217
+ expect(jsonValue).to.be.greaterThan(1e99);
218
+ });
219
+ });
220
+ });
@@ -0,0 +1,101 @@
1
+ import { F64 } from '../../lib/serialize/F64';
2
+ import { expect } from 'chai';
3
+
4
+ import { HyperbolaPayoutCurvePiece } from '../../lib/messages/PayoutCurvePiece';
5
+ import { PayoutFunction } from '../../lib/messages/PayoutFunction';
6
+
7
+ describe('PayoutFunction', () => {
8
+ describe('serialize', () => {
9
+ it('serializes', () => {
10
+ const instance = new PayoutFunction();
11
+
12
+ // Create PayoutCurvePiece programmatically instead of using legacy hex data
13
+ const payoutCurvePiece = new HyperbolaPayoutCurvePiece();
14
+ payoutCurvePiece.usePositivePiece = true;
15
+ payoutCurvePiece.translateOutcome = F64.fromNumber(5000);
16
+ payoutCurvePiece.translatePayout = F64.fromNumber(1);
17
+ payoutCurvePiece.a = F64.fromNumber(1);
18
+ payoutCurvePiece.b = F64.fromNumber(1);
19
+ payoutCurvePiece.c = F64.fromNumber(1);
20
+ payoutCurvePiece.d = F64.fromNumber(312000000);
21
+
22
+ instance.payoutFunctionPieces = [
23
+ {
24
+ endPoint: {
25
+ eventOutcome: BigInt(999999),
26
+ outcomePayout: BigInt(0),
27
+ extraPrecision: 0,
28
+ },
29
+ payoutCurvePiece,
30
+ },
31
+ ];
32
+
33
+ instance.lastEndpoint = {
34
+ eventOutcome: BigInt(50000),
35
+ outcomePayout: BigInt(100000),
36
+ extraPrecision: 0,
37
+ };
38
+
39
+ // Test that it serializes without errors (new dlcspecs PR #163 format)
40
+ const serialized = instance.serialize();
41
+ expect(serialized).to.be.instanceof(Buffer);
42
+ expect(serialized.length).to.be.greaterThan(0);
43
+ });
44
+ });
45
+
46
+ describe('deserialize', () => {
47
+ it('deserializes', () => {
48
+ // Create a test instance and serialize it first for round-trip testing
49
+ const originalInstance = new PayoutFunction();
50
+
51
+ // Create PayoutCurvePiece programmatically
52
+ const payoutCurvePiece = new HyperbolaPayoutCurvePiece();
53
+ payoutCurvePiece.usePositivePiece = true;
54
+ payoutCurvePiece.translateOutcome = F64.fromNumber(5000);
55
+ payoutCurvePiece.translatePayout = F64.fromNumber(1);
56
+ payoutCurvePiece.a = F64.fromNumber(1);
57
+ payoutCurvePiece.b = F64.fromNumber(1);
58
+ payoutCurvePiece.c = F64.fromNumber(1);
59
+ payoutCurvePiece.d = F64.fromNumber(312000000);
60
+
61
+ originalInstance.payoutFunctionPieces = [
62
+ {
63
+ endPoint: {
64
+ eventOutcome: BigInt(999999),
65
+ outcomePayout: BigInt(0),
66
+ extraPrecision: 0,
67
+ },
68
+ payoutCurvePiece,
69
+ },
70
+ ];
71
+
72
+ originalInstance.lastEndpoint = {
73
+ eventOutcome: BigInt(50000),
74
+ outcomePayout: BigInt(100000),
75
+ extraPrecision: 0,
76
+ };
77
+
78
+ // Serialize and then deserialize to ensure round-trip consistency
79
+ const serialized = originalInstance.serialize();
80
+ const instance = PayoutFunction.deserialize(serialized);
81
+
82
+ expect(instance.lastEndpoint.eventOutcome).to.equal(BigInt(50000));
83
+ expect(instance.lastEndpoint.outcomePayout).to.equal(BigInt(100000));
84
+ expect(instance.lastEndpoint.extraPrecision).to.equal(0);
85
+
86
+ expect(instance.payoutFunctionPieces.length).to.equal(1);
87
+ expect(
88
+ instance.payoutFunctionPieces[0].payoutCurvePiece,
89
+ ).to.be.instanceof(HyperbolaPayoutCurvePiece);
90
+ expect(instance.payoutFunctionPieces[0].endPoint.eventOutcome).to.equal(
91
+ BigInt(999999),
92
+ );
93
+ expect(instance.payoutFunctionPieces[0].endPoint.outcomePayout).to.equal(
94
+ BigInt(0),
95
+ );
96
+ expect(instance.payoutFunctionPieces[0].endPoint.extraPrecision).to.equal(
97
+ 0,
98
+ );
99
+ });
100
+ });
101
+ });
@@ -0,0 +1,75 @@
1
+ import { expect } from 'chai';
2
+
3
+ import { RoundingIntervals } from '../../lib';
4
+
5
+ describe('RoundingIntervals', () => {
6
+ describe('serialize', () => {
7
+ it('serializes', () => {
8
+ const instance = new RoundingIntervals();
9
+
10
+ const intervals = [
11
+ { beginInterval: 1n, roundingMod: 2n },
12
+ { beginInterval: 3n, roundingMod: 4n },
13
+ ];
14
+ instance.intervals = intervals;
15
+
16
+ expect(instance.serialize().toString("hex")).to.equal(
17
+ '02' + // number of intervals (bigsize)
18
+ '0000000000000001' + // begin_interval (u64)
19
+ '0000000000000002' + // rounding_mod (u64)
20
+ '0000000000000003' + // begin_interval (u64)
21
+ '0000000000000004' // rounding_mod (u64)
22
+ ); // prettier-ignore
23
+ });
24
+ });
25
+
26
+ describe('deserialize', () => {
27
+ it('deserializes', () => {
28
+ const buf = Buffer.from(
29
+ '02' + // number of intervals (bigsize)
30
+ '0000000000000001' + // begin_interval (u64)
31
+ '0000000000000002' + // rounding_mod (u64)
32
+ '0000000000000003' + // begin_interval (u64)
33
+ '0000000000000004' // rounding_mod (u64)
34
+ , 'hex'); // prettier-ignore
35
+
36
+ const instance = RoundingIntervals.deserialize(buf);
37
+
38
+ expect(instance.intervals.length).to.eq(2); // Check number of intervals instead of instance.length
39
+ expect(instance.intervals[0].beginInterval).to.eq(1n);
40
+ expect(instance.intervals[0].roundingMod).to.eq(2n);
41
+ expect(instance.intervals[1].beginInterval).to.eq(3n);
42
+ expect(instance.intervals[1].roundingMod).to.eq(4n);
43
+ });
44
+ });
45
+
46
+ describe('validate', () => {
47
+ const instance = new RoundingIntervals();
48
+
49
+ beforeEach(() => {
50
+ const intervals = [
51
+ { beginInterval: 1n, roundingMod: 2n },
52
+ { beginInterval: 3n, roundingMod: 4n },
53
+ ];
54
+ instance.intervals = intervals;
55
+ });
56
+
57
+ it('should not throw error', () => {
58
+ expect(() => instance.validate()).to.not.throw();
59
+ });
60
+
61
+ it('should throw error if negative intervals', () => {
62
+ instance.intervals[0].beginInterval = -1n;
63
+ expect(() => instance.validate()).to.throw(
64
+ 'beginInterval must be non-negative',
65
+ );
66
+ });
67
+
68
+ it('should throw error if non-increasing intervals', () => {
69
+ instance.intervals[1].beginInterval = 0n;
70
+ expect(() => instance.validate()).to.throw(
71
+ 'Intervals must be strictly increasing',
72
+ );
73
+ });
74
+ });
75
+ });
@@ -0,0 +1,260 @@
1
+ import { expect } from 'chai';
2
+ import { F64 } from '../../lib/serialize/F64';
3
+
4
+ describe('F64', () => {
5
+ describe('Construction and basic operations', () => {
6
+ it('should create F64 from number', () => {
7
+ const f64 = F64.fromNumber(123.456);
8
+ expect(f64.toNumber()).to.equal(123.456);
9
+ });
10
+
11
+ it('should create F64 from string', () => {
12
+ const f64 = F64.fromString('123.456');
13
+ expect(f64.toNumber()).to.equal(123.456);
14
+ });
15
+
16
+ it('should create F64 from bigint', () => {
17
+ const f64 = F64.fromBigInt(BigInt(123456789));
18
+ expect(f64.toNumber()).to.equal(123456789);
19
+ });
20
+
21
+ it('should create zero F64', () => {
22
+ const f64 = F64.zero();
23
+ expect(f64.toNumber()).to.equal(0);
24
+ expect(f64.isZero()).to.be.true;
25
+ });
26
+ });
27
+
28
+ describe('Large number handling', () => {
29
+ it('should handle very large integers within safe range', () => {
30
+ const largeNum = Number.MAX_SAFE_INTEGER; // 9,007,199,254,740,991
31
+ const f64 = F64.fromNumber(largeNum);
32
+ expect(f64.toNumber()).to.equal(largeNum);
33
+ });
34
+
35
+ it('should handle numbers beyond JavaScript safe integer range', () => {
36
+ // This is beyond MAX_SAFE_INTEGER, where JavaScript loses precision
37
+ const veryLargeNum = 9007199254740992; // MAX_SAFE_INTEGER + 1
38
+ const f64 = F64.fromNumber(veryLargeNum);
39
+
40
+ // The F64 should maintain the IEEE 754 representation
41
+ expect(f64.toNumber()).to.equal(veryLargeNum);
42
+ });
43
+
44
+ it('should handle maximum finite f64 value', () => {
45
+ const maxFinite = 1.7976931348623157e308;
46
+ const f64 = F64.fromNumber(maxFinite);
47
+ expect(f64.toNumber()).to.equal(maxFinite);
48
+ expect(f64.isFinite()).to.be.true;
49
+ });
50
+
51
+ it('should handle minimum positive normal f64 value', () => {
52
+ const minNormal = 2.2250738585072014e-308;
53
+ const f64 = F64.fromNumber(minNormal);
54
+ expect(f64.toNumber()).to.equal(minNormal);
55
+ });
56
+
57
+ it('should handle very small denormalized numbers', () => {
58
+ const denormal = 5e-324; // Smallest positive denormalized number
59
+ const f64 = F64.fromNumber(denormal);
60
+ expect(f64.toNumber()).to.equal(denormal);
61
+ });
62
+ });
63
+
64
+ describe('Special values', () => {
65
+ it('should handle positive infinity', () => {
66
+ const f64 = F64.fromNumber(Number.POSITIVE_INFINITY);
67
+ expect(f64.isInfinite()).to.be.true;
68
+ expect(f64.isFinite()).to.be.false;
69
+ expect(f64.toNumber()).to.equal(Number.POSITIVE_INFINITY);
70
+ });
71
+
72
+ it('should handle negative infinity', () => {
73
+ const f64 = F64.fromNumber(Number.NEGATIVE_INFINITY);
74
+ expect(f64.isInfinite()).to.be.true;
75
+ expect(f64.isFinite()).to.be.false;
76
+ expect(f64.toNumber()).to.equal(Number.NEGATIVE_INFINITY);
77
+ });
78
+
79
+ it('should handle NaN', () => {
80
+ const f64 = F64.fromNumber(Number.NaN);
81
+ expect(f64.isNaN()).to.be.true;
82
+ expect(f64.isFinite()).to.be.false;
83
+ expect(Number.isNaN(f64.toNumber())).to.be.true;
84
+ });
85
+
86
+ it('should handle negative zero', () => {
87
+ const f64 = F64.fromNumber(-0);
88
+ expect(f64.toNumber()).to.equal(-0);
89
+ expect(Object.is(f64.toNumber(), -0)).to.be.true;
90
+ });
91
+ });
92
+
93
+ describe('Serialization and deserialization', () => {
94
+ it('should serialize and deserialize correctly', () => {
95
+ const original = 123.456789;
96
+ const f64 = F64.fromNumber(original);
97
+ const serialized = f64.serialize();
98
+ const deserialized = F64.deserialize(serialized);
99
+
100
+ expect(deserialized.toNumber()).to.equal(original);
101
+ expect(deserialized.equals(f64)).to.be.true;
102
+ });
103
+
104
+ it('should maintain exact binary representation for large numbers', () => {
105
+ const largeNum = 1.2345678901234567e100;
106
+ const f64 = F64.fromNumber(largeNum);
107
+ const serialized = f64.serialize();
108
+ const deserialized = F64.deserialize(serialized);
109
+
110
+ expect(deserialized.equals(f64)).to.be.true;
111
+ expect(deserialized.toHex()).to.equal(f64.toHex());
112
+ });
113
+
114
+ it('should handle round-trip with buffer', () => {
115
+ const testValues = [
116
+ 0,
117
+ -0,
118
+ 1,
119
+ -1,
120
+ Math.PI,
121
+ Math.E,
122
+ Number.MAX_SAFE_INTEGER,
123
+ Number.MIN_SAFE_INTEGER,
124
+ 1.7976931348623157e308, // MAX_VALUE
125
+ 2.2250738585072014e-308, // MIN_VALUE
126
+ ];
127
+
128
+ testValues.forEach((value) => {
129
+ const f64 = F64.fromNumber(value);
130
+ const buffer = f64.getBuffer();
131
+ const restored = new F64(buffer);
132
+ expect(restored.equals(f64)).to.be.true;
133
+ });
134
+ });
135
+ });
136
+
137
+ describe('Hex representation', () => {
138
+ it('should convert to and from hex correctly', () => {
139
+ const f64 = F64.fromNumber(123.456);
140
+ const hex = f64.toHex();
141
+ const restored = F64.fromHex(hex);
142
+
143
+ expect(restored.equals(f64)).to.be.true;
144
+ expect(hex).to.be.a('string');
145
+ expect(hex.length).to.equal(16); // 8 bytes = 16 hex chars
146
+ });
147
+
148
+ it('should handle special values in hex', () => {
149
+ const testValues = [
150
+ { value: 0, expectedHex: '0000000000000000' },
151
+ { value: 1, expectedHex: '3ff0000000000000' },
152
+ { value: -1, expectedHex: 'bff0000000000000' },
153
+ { value: Number.POSITIVE_INFINITY, expectedHex: '7ff0000000000000' },
154
+ { value: Number.NEGATIVE_INFINITY, expectedHex: 'fff0000000000000' },
155
+ ];
156
+
157
+ testValues.forEach(({ value, expectedHex }) => {
158
+ const f64 = F64.fromNumber(value);
159
+ expect(f64.toHex()).to.equal(expectedHex);
160
+ });
161
+ });
162
+ });
163
+
164
+ describe('Comparison operations', () => {
165
+ it('should compare F64 instances correctly', () => {
166
+ const a = F64.fromNumber(123.456);
167
+ const b = F64.fromNumber(123.456);
168
+ const c = F64.fromNumber(123.457);
169
+
170
+ expect(a.equals(b)).to.be.true;
171
+ expect(a.equals(c)).to.be.false;
172
+ expect(a.eq(123.456)).to.be.true;
173
+ expect(a.eq(123.457)).to.be.false;
174
+ });
175
+
176
+ it('should handle greater than comparisons', () => {
177
+ const a = F64.fromNumber(10);
178
+ const b = F64.fromNumber(5);
179
+
180
+ expect(a.gt(b)).to.be.true;
181
+ expect(b.gt(a)).to.be.false;
182
+ expect(a.gt(5)).to.be.true;
183
+ expect(a.gt(15)).to.be.false;
184
+ });
185
+
186
+ it('should handle less than comparisons', () => {
187
+ const a = F64.fromNumber(5);
188
+ const b = F64.fromNumber(10);
189
+
190
+ expect(a.lt(b)).to.be.true;
191
+ expect(b.lt(a)).to.be.false;
192
+ expect(a.lt(10)).to.be.true;
193
+ expect(a.lt(3)).to.be.false;
194
+ });
195
+ });
196
+
197
+ describe('Constants', () => {
198
+ it('should provide correct constant values', () => {
199
+ expect(F64.ZERO.toNumber()).to.equal(0);
200
+ expect(F64.ONE.toNumber()).to.equal(1);
201
+ expect(F64.NEGATIVE_ONE.toNumber()).to.equal(-1);
202
+ expect(F64.INFINITY.isInfinite()).to.be.true;
203
+ expect(F64.NEGATIVE_INFINITY.isInfinite()).to.be.true;
204
+ expect(F64.NaN.isNaN()).to.be.true;
205
+ });
206
+ });
207
+
208
+ describe('Precision test cases for DLC usage', () => {
209
+ it('should handle typical DLC payout curve parameters', () => {
210
+ // These are typical values that might appear in DLC payout curves
211
+ const testValues = [
212
+ 1000000.0, // 1 million
213
+ 50000.0, // Strike price
214
+ 0.00000001, // Very small precision
215
+ 1.7976931348623157e100, // Very large number
216
+ -50000.0, // Negative strike
217
+ 0.0, // Zero
218
+ Math.PI * 1000000, // Irrational number scaled up
219
+ ];
220
+
221
+ testValues.forEach((value) => {
222
+ const f64 = F64.fromNumber(value);
223
+ const serialized = f64.serialize();
224
+ const deserialized = F64.deserialize(serialized);
225
+
226
+ expect(deserialized.equals(f64)).to.be.true;
227
+ expect(deserialized.toNumber()).to.equal(value);
228
+ });
229
+ });
230
+
231
+ it('should handle edge cases for financial calculations', () => {
232
+ // Test satoshi-level precision scaled to different units
233
+ const satoshi = 0.00000001; // 1 satoshi in BTC
234
+ const f64 = F64.fromNumber(satoshi);
235
+
236
+ expect(f64.toNumber()).to.equal(satoshi);
237
+ expect(f64.serialize().length).to.equal(8);
238
+ });
239
+ });
240
+
241
+ describe('Error handling', () => {
242
+ it('should throw error for invalid buffer size', () => {
243
+ expect(() => new F64(Buffer.alloc(4))).to.throw(
244
+ 'F64 buffer must be exactly 8 bytes',
245
+ );
246
+ expect(() => new F64(Buffer.alloc(10))).to.throw(
247
+ 'F64 buffer must be exactly 8 bytes',
248
+ );
249
+ });
250
+
251
+ it('should throw error for invalid hex string', () => {
252
+ expect(() => F64.fromHex('invalid')).to.throw(
253
+ 'Hex string must represent exactly 8 bytes',
254
+ );
255
+ expect(() => F64.fromHex('1234')).to.throw(
256
+ 'Hex string must represent exactly 8 bytes',
257
+ );
258
+ });
259
+ });
260
+ });
@@ -0,0 +1,8 @@
1
+ {
2
+ "extends": "../tsconfig.json",
3
+ "compilerOptions": {
4
+ "noEmit": true
5
+ },
6
+ "include": ["**/*.ts"],
7
+ "exclude": []
8
+ }