@atomicfinance/bitcoin-dlc-provider 3.6.1 → 4.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (373) hide show
  1. package/.nvmrc +1 -1
  2. package/.yalc/@node-dlc/messaging/.nyc_output/2cf48009-1094-4275-bb91-c164c932feb6.json +1 -0
  3. package/.yalc/@node-dlc/messaging/.nyc_output/processinfo/2cf48009-1094-4275-bb91-c164c932feb6.json +1 -0
  4. package/.yalc/@node-dlc/messaging/.nyc_output/processinfo/index.json +1 -0
  5. package/.yalc/@node-dlc/messaging/README.md +24 -0
  6. package/.yalc/@node-dlc/messaging/__tests__/_test-utils.ts +12 -0
  7. package/.yalc/@node-dlc/messaging/__tests__/chain/ChainManager.spec.ts +178 -0
  8. package/.yalc/@node-dlc/messaging/__tests__/compatibility/dlcspecs-compatibility.spec.ts +473 -0
  9. package/.yalc/@node-dlc/messaging/__tests__/compatibility/rust-dlc-cross-language.spec.ts +342 -0
  10. package/.yalc/@node-dlc/messaging/__tests__/compatibility/true-serialization-compatibility.spec.ts +611 -0
  11. package/.yalc/@node-dlc/messaging/__tests__/dlc_message_test.json +155 -0
  12. package/.yalc/@node-dlc/messaging/__tests__/irc/IrcMessage.spec.ts +94 -0
  13. package/.yalc/@node-dlc/messaging/__tests__/messages/AddressCache.spec.ts +79 -0
  14. package/.yalc/@node-dlc/messaging/__tests__/messages/BatchFundingGroup.spec.ts +72 -0
  15. package/.yalc/@node-dlc/messaging/__tests__/messages/CetAdaptorSignatures.spec.ts +57 -0
  16. package/.yalc/@node-dlc/messaging/__tests__/messages/ContractDescriptor.spec.ts +264 -0
  17. package/.yalc/@node-dlc/messaging/__tests__/messages/ContractInfo.spec.ts +419 -0
  18. package/.yalc/@node-dlc/messaging/__tests__/messages/DigitDecompositionEventDescriptor.spec.ts +59 -0
  19. package/.yalc/@node-dlc/messaging/__tests__/messages/DlcAccept.spec.ts +242 -0
  20. package/.yalc/@node-dlc/messaging/__tests__/messages/DlcCancel.spec.ts +42 -0
  21. package/.yalc/@node-dlc/messaging/__tests__/messages/DlcClose.spec.ts +315 -0
  22. package/.yalc/@node-dlc/messaging/__tests__/messages/DlcOffer.spec.ts +527 -0
  23. package/.yalc/@node-dlc/messaging/__tests__/messages/DlcSign.spec.ts +118 -0
  24. package/.yalc/@node-dlc/messaging/__tests__/messages/DlcTransactions.spec.ts +157 -0
  25. package/.yalc/@node-dlc/messaging/__tests__/messages/EnumEventDescriptor.spec.ts +50 -0
  26. package/.yalc/@node-dlc/messaging/__tests__/messages/EventDescriptor.spec.ts +93 -0
  27. package/.yalc/@node-dlc/messaging/__tests__/messages/FundingInput.spec.ts +84 -0
  28. package/.yalc/@node-dlc/messaging/__tests__/messages/FundingSignatures.spec.ts +83 -0
  29. package/.yalc/@node-dlc/messaging/__tests__/messages/NegotiationFields.spec.ts +328 -0
  30. package/.yalc/@node-dlc/messaging/__tests__/messages/NodeAnnouncementMessage.spec.ts +115 -0
  31. package/.yalc/@node-dlc/messaging/__tests__/messages/OracleAnnouncement.spec.ts +415 -0
  32. package/.yalc/@node-dlc/messaging/__tests__/messages/OracleAttestation.spec.ts +326 -0
  33. package/.yalc/@node-dlc/messaging/__tests__/messages/OracleEvent.spec.ts +143 -0
  34. package/.yalc/@node-dlc/messaging/__tests__/messages/OracleEventContainer.spec.ts +95 -0
  35. package/.yalc/@node-dlc/messaging/__tests__/messages/OracleIdentifier.spec.ts +48 -0
  36. package/.yalc/@node-dlc/messaging/__tests__/messages/OracleInfo.spec.ts +116 -0
  37. package/.yalc/@node-dlc/messaging/__tests__/messages/OrderAccept.spec.ts +77 -0
  38. package/.yalc/@node-dlc/messaging/__tests__/messages/OrderNegotiationFields.spec.ts +216 -0
  39. package/.yalc/@node-dlc/messaging/__tests__/messages/OrderOffer.spec.ts +121 -0
  40. package/.yalc/@node-dlc/messaging/__tests__/messages/OrderPositionInfo.spec.ts +75 -0
  41. package/.yalc/@node-dlc/messaging/__tests__/messages/PayoutCurvePiece.spec.ts +220 -0
  42. package/.yalc/@node-dlc/messaging/__tests__/messages/PayoutFunction.spec.ts +101 -0
  43. package/.yalc/@node-dlc/messaging/__tests__/messages/RoundingIntervals.spec.ts +75 -0
  44. package/.yalc/@node-dlc/messaging/__tests__/serialize/F64.spec.ts +260 -0
  45. package/.yalc/@node-dlc/messaging/__tests__/tsconfig.json +8 -0
  46. package/.yalc/@node-dlc/messaging/coverage/lcov-report/base.css +224 -0
  47. package/.yalc/@node-dlc/messaging/coverage/lcov-report/block-navigation.js +79 -0
  48. package/.yalc/@node-dlc/messaging/coverage/lcov-report/favicon.png +0 -0
  49. package/.yalc/@node-dlc/messaging/coverage/lcov-report/index.html +201 -0
  50. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/MessageType.ts.html +494 -0
  51. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/chain/ChainManager.ts.html +1058 -0
  52. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/chain/ChainMemoryStore.ts.html +182 -0
  53. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/chain/index.html +126 -0
  54. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/domain/Address.ts.html +272 -0
  55. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/domain/index.html +111 -0
  56. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/index.html +141 -0
  57. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/index.ts.html +212 -0
  58. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/irc/IrcMessage.ts.html +563 -0
  59. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/irc/index.html +111 -0
  60. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/AddressCache.ts.html +302 -0
  61. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/BatchFundingGroup.ts.html +503 -0
  62. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/CetAdaptorSignatures.ts.html +347 -0
  63. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/CetAdaptorSignaturesV0.ts.html +347 -0
  64. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/ContractDescriptor.ts.html +1040 -0
  65. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/ContractInfo.ts.html +1382 -0
  66. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/DlcAccept.ts.html +1865 -0
  67. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/DlcCancel.ts.html +251 -0
  68. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/DlcClose.ts.html +986 -0
  69. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/DlcCloseMetadata.ts.html +443 -0
  70. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/DlcIds.ts.html +281 -0
  71. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/DlcInfo.ts.html +323 -0
  72. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/DlcMessage.ts.html +341 -0
  73. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/DlcOffer.ts.html +1895 -0
  74. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/DlcSign.ts.html +1142 -0
  75. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/DlcTransactions.ts.html +719 -0
  76. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/EventDescriptor.ts.html +947 -0
  77. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/FundingInput.ts.html +728 -0
  78. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/FundingSignatures.ts.html +374 -0
  79. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/FundingSignaturesV0.ts.html +374 -0
  80. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/NegotiationFields.ts.html +836 -0
  81. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/NodeAnnouncementMessage.ts.html +515 -0
  82. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/OracleAnnouncement.ts.html +608 -0
  83. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/OracleAnnouncementV0.ts.html +605 -0
  84. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/OracleAttestation.ts.html +956 -0
  85. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/OracleAttestationV0.ts.html +770 -0
  86. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/OracleEvent.ts.html +830 -0
  87. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/OracleEventContainer.ts.html +347 -0
  88. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/OracleEventContainerV0.ts.html +347 -0
  89. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/OracleEventV0.ts.html +827 -0
  90. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/OracleIdentifier.ts.html +314 -0
  91. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/OracleIdentifierV0.ts.html +314 -0
  92. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/OracleInfo.ts.html +1637 -0
  93. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/OracleInfoV0.ts.html +1631 -0
  94. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/OrderAccept.ts.html +557 -0
  95. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/OrderIrcInfo.ts.html +380 -0
  96. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/OrderMetadata.ts.html +437 -0
  97. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/OrderNegotiationFields.ts.html +551 -0
  98. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/OrderOffer.ts.html +1337 -0
  99. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/OrderPositionInfo.ts.html +590 -0
  100. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/PayoutCurvePiece.ts.html +1427 -0
  101. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/PayoutFunction.ts.html +800 -0
  102. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/RoundingIntervals.ts.html +461 -0
  103. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/RoundingIntervalsV0.ts.html +482 -0
  104. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/ScriptWitnessV0.ts.html +269 -0
  105. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/messages/index.html +636 -0
  106. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/serde/SerdeUtils.ts.html +1394 -0
  107. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/serde/index.html +111 -0
  108. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/serialize/F64.ts.html +1136 -0
  109. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/serialize/deserializeTlv.ts.html +125 -0
  110. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/serialize/getTlv.ts.html +143 -0
  111. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/serialize/index.html +141 -0
  112. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/util.ts.html +179 -0
  113. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/validation/index.html +111 -0
  114. package/.yalc/@node-dlc/messaging/coverage/lcov-report/lib/validation/validate.ts.html +182 -0
  115. package/.yalc/@node-dlc/messaging/coverage/lcov-report/prettify.css +1 -0
  116. package/.yalc/@node-dlc/messaging/coverage/lcov-report/prettify.js +2 -0
  117. package/.yalc/@node-dlc/messaging/coverage/lcov-report/sort-arrow-sprite.png +0 -0
  118. package/.yalc/@node-dlc/messaging/coverage/lcov-report/sorter.js +170 -0
  119. package/.yalc/@node-dlc/messaging/coverage/lcov.info +5394 -0
  120. package/.yalc/@node-dlc/messaging/dist/MessageType.d.ts +100 -0
  121. package/.yalc/@node-dlc/messaging/dist/MessageType.js +117 -0
  122. package/.yalc/@node-dlc/messaging/dist/MessageType.js.map +1 -0
  123. package/.yalc/@node-dlc/messaging/dist/chain/ChainManager.d.ts +50 -0
  124. package/.yalc/@node-dlc/messaging/dist/chain/ChainManager.js +211 -0
  125. package/.yalc/@node-dlc/messaging/dist/chain/ChainManager.js.map +1 -0
  126. package/.yalc/@node-dlc/messaging/dist/chain/ChainMemoryStore.d.ts +14 -0
  127. package/.yalc/@node-dlc/messaging/dist/chain/ChainMemoryStore.js +28 -0
  128. package/.yalc/@node-dlc/messaging/dist/chain/ChainMemoryStore.js.map +1 -0
  129. package/.yalc/@node-dlc/messaging/dist/chain/DlcStore.d.ts +11 -0
  130. package/.yalc/@node-dlc/messaging/dist/chain/DlcStore.js +3 -0
  131. package/.yalc/@node-dlc/messaging/dist/chain/DlcStore.js.map +1 -0
  132. package/.yalc/@node-dlc/messaging/dist/chain/IChainFilterChainClient.d.ts +48 -0
  133. package/.yalc/@node-dlc/messaging/dist/chain/IChainFilterChainClient.js +3 -0
  134. package/.yalc/@node-dlc/messaging/dist/chain/IChainFilterChainClient.js.map +1 -0
  135. package/.yalc/@node-dlc/messaging/dist/domain/Address.d.ts +24 -0
  136. package/.yalc/@node-dlc/messaging/dist/domain/Address.js +46 -0
  137. package/.yalc/@node-dlc/messaging/dist/domain/Address.js.map +1 -0
  138. package/.yalc/@node-dlc/messaging/dist/index.d.ts +44 -0
  139. package/.yalc/@node-dlc/messaging/dist/index.js +63 -0
  140. package/.yalc/@node-dlc/messaging/dist/index.js.map +1 -0
  141. package/.yalc/@node-dlc/messaging/dist/irc/IrcMessage.d.ts +43 -0
  142. package/.yalc/@node-dlc/messaging/dist/irc/IrcMessage.js +116 -0
  143. package/.yalc/@node-dlc/messaging/dist/irc/IrcMessage.js.map +1 -0
  144. package/.yalc/@node-dlc/messaging/dist/messages/AddressCache.d.ts +15 -0
  145. package/.yalc/@node-dlc/messaging/dist/messages/AddressCache.js +51 -0
  146. package/.yalc/@node-dlc/messaging/dist/messages/AddressCache.js.map +1 -0
  147. package/.yalc/@node-dlc/messaging/dist/messages/BatchFundingGroup.d.ts +61 -0
  148. package/.yalc/@node-dlc/messaging/dist/messages/BatchFundingGroup.js +113 -0
  149. package/.yalc/@node-dlc/messaging/dist/messages/BatchFundingGroup.js.map +1 -0
  150. package/.yalc/@node-dlc/messaging/dist/messages/CetAdaptorSignatures.d.ts +40 -0
  151. package/.yalc/@node-dlc/messaging/dist/messages/CetAdaptorSignatures.js +67 -0
  152. package/.yalc/@node-dlc/messaging/dist/messages/CetAdaptorSignatures.js.map +1 -0
  153. package/.yalc/@node-dlc/messaging/dist/messages/ContractDescriptor.d.ts +122 -0
  154. package/.yalc/@node-dlc/messaging/dist/messages/ContractDescriptor.js +222 -0
  155. package/.yalc/@node-dlc/messaging/dist/messages/ContractDescriptor.js.map +1 -0
  156. package/.yalc/@node-dlc/messaging/dist/messages/ContractInfo.d.ts +135 -0
  157. package/.yalc/@node-dlc/messaging/dist/messages/ContractInfo.js +304 -0
  158. package/.yalc/@node-dlc/messaging/dist/messages/ContractInfo.js.map +1 -0
  159. package/.yalc/@node-dlc/messaging/dist/messages/DlcAccept.d.ts +145 -0
  160. package/.yalc/@node-dlc/messaging/dist/messages/DlcAccept.js +428 -0
  161. package/.yalc/@node-dlc/messaging/dist/messages/DlcAccept.js.map +1 -0
  162. package/.yalc/@node-dlc/messaging/dist/messages/DlcCancel.d.ts +31 -0
  163. package/.yalc/@node-dlc/messaging/dist/messages/DlcCancel.js +51 -0
  164. package/.yalc/@node-dlc/messaging/dist/messages/DlcCancel.js.map +1 -0
  165. package/.yalc/@node-dlc/messaging/dist/messages/DlcClose.d.ts +68 -0
  166. package/.yalc/@node-dlc/messaging/dist/messages/DlcClose.js +210 -0
  167. package/.yalc/@node-dlc/messaging/dist/messages/DlcClose.js.map +1 -0
  168. package/.yalc/@node-dlc/messaging/dist/messages/DlcCloseMetadata.d.ts +44 -0
  169. package/.yalc/@node-dlc/messaging/dist/messages/DlcCloseMetadata.js +74 -0
  170. package/.yalc/@node-dlc/messaging/dist/messages/DlcCloseMetadata.js.map +1 -0
  171. package/.yalc/@node-dlc/messaging/dist/messages/DlcIds.d.ts +26 -0
  172. package/.yalc/@node-dlc/messaging/dist/messages/DlcIds.js +58 -0
  173. package/.yalc/@node-dlc/messaging/dist/messages/DlcIds.js.map +1 -0
  174. package/.yalc/@node-dlc/messaging/dist/messages/DlcInfo.d.ts +31 -0
  175. package/.yalc/@node-dlc/messaging/dist/messages/DlcInfo.js +61 -0
  176. package/.yalc/@node-dlc/messaging/dist/messages/DlcInfo.js.map +1 -0
  177. package/.yalc/@node-dlc/messaging/dist/messages/DlcMessage.d.ts +23 -0
  178. package/.yalc/@node-dlc/messaging/dist/messages/DlcMessage.js +54 -0
  179. package/.yalc/@node-dlc/messaging/dist/messages/DlcMessage.js.map +1 -0
  180. package/.yalc/@node-dlc/messaging/dist/messages/DlcOffer.d.ts +131 -0
  181. package/.yalc/@node-dlc/messaging/dist/messages/DlcOffer.js +418 -0
  182. package/.yalc/@node-dlc/messaging/dist/messages/DlcOffer.js.map +1 -0
  183. package/.yalc/@node-dlc/messaging/dist/messages/DlcSign.d.ts +96 -0
  184. package/.yalc/@node-dlc/messaging/dist/messages/DlcSign.js +267 -0
  185. package/.yalc/@node-dlc/messaging/dist/messages/DlcSign.js.map +1 -0
  186. package/.yalc/@node-dlc/messaging/dist/messages/DlcTransactions.d.ts +69 -0
  187. package/.yalc/@node-dlc/messaging/dist/messages/DlcTransactions.js +149 -0
  188. package/.yalc/@node-dlc/messaging/dist/messages/DlcTransactions.js.map +1 -0
  189. package/.yalc/@node-dlc/messaging/dist/messages/EventDescriptor.d.ts +106 -0
  190. package/.yalc/@node-dlc/messaging/dist/messages/EventDescriptor.js +209 -0
  191. package/.yalc/@node-dlc/messaging/dist/messages/EventDescriptor.js.map +1 -0
  192. package/.yalc/@node-dlc/messaging/dist/messages/FundingInput.d.ts +62 -0
  193. package/.yalc/@node-dlc/messaging/dist/messages/FundingInput.js +163 -0
  194. package/.yalc/@node-dlc/messaging/dist/messages/FundingInput.js.map +1 -0
  195. package/.yalc/@node-dlc/messaging/dist/messages/FundingSignatures.d.ts +36 -0
  196. package/.yalc/@node-dlc/messaging/dist/messages/FundingSignatures.js +78 -0
  197. package/.yalc/@node-dlc/messaging/dist/messages/FundingSignatures.js.map +1 -0
  198. package/.yalc/@node-dlc/messaging/dist/messages/IWireMessage.d.ts +6 -0
  199. package/.yalc/@node-dlc/messaging/dist/messages/IWireMessage.js +3 -0
  200. package/.yalc/@node-dlc/messaging/dist/messages/IWireMessage.js.map +1 -0
  201. package/.yalc/@node-dlc/messaging/dist/messages/NegotiationFields.d.ts +86 -0
  202. package/.yalc/@node-dlc/messaging/dist/messages/NegotiationFields.js +185 -0
  203. package/.yalc/@node-dlc/messaging/dist/messages/NegotiationFields.js.map +1 -0
  204. package/.yalc/@node-dlc/messaging/dist/messages/NodeAnnouncementMessage.d.ts +57 -0
  205. package/.yalc/@node-dlc/messaging/dist/messages/NodeAnnouncementMessage.js +127 -0
  206. package/.yalc/@node-dlc/messaging/dist/messages/NodeAnnouncementMessage.js.map +1 -0
  207. package/.yalc/@node-dlc/messaging/dist/messages/OracleAnnouncement.d.ts +76 -0
  208. package/.yalc/@node-dlc/messaging/dist/messages/OracleAnnouncement.js +131 -0
  209. package/.yalc/@node-dlc/messaging/dist/messages/OracleAnnouncement.js.map +1 -0
  210. package/.yalc/@node-dlc/messaging/dist/messages/OracleAttestation.d.ts +68 -0
  211. package/.yalc/@node-dlc/messaging/dist/messages/OracleAttestation.js +239 -0
  212. package/.yalc/@node-dlc/messaging/dist/messages/OracleAttestation.js.map +1 -0
  213. package/.yalc/@node-dlc/messaging/dist/messages/OracleEvent.d.ts +90 -0
  214. package/.yalc/@node-dlc/messaging/dist/messages/OracleEvent.js +189 -0
  215. package/.yalc/@node-dlc/messaging/dist/messages/OracleEvent.js.map +1 -0
  216. package/.yalc/@node-dlc/messaging/dist/messages/OracleEventContainer.d.ts +32 -0
  217. package/.yalc/@node-dlc/messaging/dist/messages/OracleEventContainer.js +67 -0
  218. package/.yalc/@node-dlc/messaging/dist/messages/OracleEventContainer.js.map +1 -0
  219. package/.yalc/@node-dlc/messaging/dist/messages/OracleIdentifier.d.ts +32 -0
  220. package/.yalc/@node-dlc/messaging/dist/messages/OracleIdentifier.js +58 -0
  221. package/.yalc/@node-dlc/messaging/dist/messages/OracleIdentifier.js.map +1 -0
  222. package/.yalc/@node-dlc/messaging/dist/messages/OracleIdentifierV0.d.ts +32 -0
  223. package/.yalc/@node-dlc/messaging/dist/messages/OracleIdentifierV0.js +58 -0
  224. package/.yalc/@node-dlc/messaging/dist/messages/OracleIdentifierV0.js.map +1 -0
  225. package/.yalc/@node-dlc/messaging/dist/messages/OracleInfo.d.ts +161 -0
  226. package/.yalc/@node-dlc/messaging/dist/messages/OracleInfo.js +390 -0
  227. package/.yalc/@node-dlc/messaging/dist/messages/OracleInfo.js.map +1 -0
  228. package/.yalc/@node-dlc/messaging/dist/messages/OracleInfoV0.d.ts +161 -0
  229. package/.yalc/@node-dlc/messaging/dist/messages/OracleInfoV0.js +387 -0
  230. package/.yalc/@node-dlc/messaging/dist/messages/OracleInfoV0.js.map +1 -0
  231. package/.yalc/@node-dlc/messaging/dist/messages/OrderAccept.d.ts +65 -0
  232. package/.yalc/@node-dlc/messaging/dist/messages/OrderAccept.js +125 -0
  233. package/.yalc/@node-dlc/messaging/dist/messages/OrderAccept.js.map +1 -0
  234. package/.yalc/@node-dlc/messaging/dist/messages/OrderIrcInfo.d.ts +42 -0
  235. package/.yalc/@node-dlc/messaging/dist/messages/OrderIrcInfo.js +74 -0
  236. package/.yalc/@node-dlc/messaging/dist/messages/OrderIrcInfo.js.map +1 -0
  237. package/.yalc/@node-dlc/messaging/dist/messages/OrderMetadata.d.ts +56 -0
  238. package/.yalc/@node-dlc/messaging/dist/messages/OrderMetadata.js +87 -0
  239. package/.yalc/@node-dlc/messaging/dist/messages/OrderMetadata.js.map +1 -0
  240. package/.yalc/@node-dlc/messaging/dist/messages/OrderNegotiationFields.d.ts +69 -0
  241. package/.yalc/@node-dlc/messaging/dist/messages/OrderNegotiationFields.js +114 -0
  242. package/.yalc/@node-dlc/messaging/dist/messages/OrderNegotiationFields.js.map +1 -0
  243. package/.yalc/@node-dlc/messaging/dist/messages/OrderOffer.d.ts +97 -0
  244. package/.yalc/@node-dlc/messaging/dist/messages/OrderOffer.js +296 -0
  245. package/.yalc/@node-dlc/messaging/dist/messages/OrderOffer.js.map +1 -0
  246. package/.yalc/@node-dlc/messaging/dist/messages/OrderPositionInfo.d.ts +50 -0
  247. package/.yalc/@node-dlc/messaging/dist/messages/OrderPositionInfo.js +125 -0
  248. package/.yalc/@node-dlc/messaging/dist/messages/OrderPositionInfo.js.map +1 -0
  249. package/.yalc/@node-dlc/messaging/dist/messages/PayoutCurvePiece.d.ts +129 -0
  250. package/.yalc/@node-dlc/messaging/dist/messages/PayoutCurvePiece.js +327 -0
  251. package/.yalc/@node-dlc/messaging/dist/messages/PayoutCurvePiece.js.map +1 -0
  252. package/.yalc/@node-dlc/messaging/dist/messages/PayoutFunction.d.ts +66 -0
  253. package/.yalc/@node-dlc/messaging/dist/messages/PayoutFunction.js +170 -0
  254. package/.yalc/@node-dlc/messaging/dist/messages/PayoutFunction.js.map +1 -0
  255. package/.yalc/@node-dlc/messaging/dist/messages/RoundingIntervals.d.ts +52 -0
  256. package/.yalc/@node-dlc/messaging/dist/messages/RoundingIntervals.js +95 -0
  257. package/.yalc/@node-dlc/messaging/dist/messages/RoundingIntervals.js.map +1 -0
  258. package/.yalc/@node-dlc/messaging/dist/messages/ScriptWitnessV0.d.ts +29 -0
  259. package/.yalc/@node-dlc/messaging/dist/messages/ScriptWitnessV0.js +50 -0
  260. package/.yalc/@node-dlc/messaging/dist/messages/ScriptWitnessV0.js.map +1 -0
  261. package/.yalc/@node-dlc/messaging/dist/messages/Tlv.d.ts +15 -0
  262. package/.yalc/@node-dlc/messaging/dist/messages/Tlv.js +32 -0
  263. package/.yalc/@node-dlc/messaging/dist/messages/Tlv.js.map +1 -0
  264. package/.yalc/@node-dlc/messaging/dist/serialize/F64.d.ts +154 -0
  265. package/.yalc/@node-dlc/messaging/dist/serialize/F64.js +307 -0
  266. package/.yalc/@node-dlc/messaging/dist/serialize/F64.js.map +1 -0
  267. package/.yalc/@node-dlc/messaging/dist/serialize/deserializeTlv.d.ts +9 -0
  268. package/.yalc/@node-dlc/messaging/dist/serialize/deserializeTlv.js +11 -0
  269. package/.yalc/@node-dlc/messaging/dist/serialize/deserializeTlv.js.map +1 -0
  270. package/.yalc/@node-dlc/messaging/dist/serialize/getTlv.d.ts +4 -0
  271. package/.yalc/@node-dlc/messaging/dist/serialize/getTlv.js +23 -0
  272. package/.yalc/@node-dlc/messaging/dist/serialize/getTlv.js.map +1 -0
  273. package/.yalc/@node-dlc/messaging/dist/serialize/readTlvs.d.ts +8 -0
  274. package/.yalc/@node-dlc/messaging/dist/serialize/readTlvs.js +33 -0
  275. package/.yalc/@node-dlc/messaging/dist/serialize/readTlvs.js.map +1 -0
  276. package/.yalc/@node-dlc/messaging/dist/util.d.ts +13 -0
  277. package/.yalc/@node-dlc/messaging/dist/util.js +40 -0
  278. package/.yalc/@node-dlc/messaging/dist/util.js.map +1 -0
  279. package/.yalc/@node-dlc/messaging/dist/validation/validate.d.ts +4 -0
  280. package/.yalc/@node-dlc/messaging/dist/validation/validate.js +31 -0
  281. package/.yalc/@node-dlc/messaging/dist/validation/validate.js.map +1 -0
  282. package/.yalc/@node-dlc/messaging/lib/MessageType.ts +138 -0
  283. package/.yalc/@node-dlc/messaging/lib/chain/ChainManager.ts +326 -0
  284. package/.yalc/@node-dlc/messaging/lib/chain/ChainMemoryStore.ts +34 -0
  285. package/.yalc/@node-dlc/messaging/lib/chain/DlcStore.ts +11 -0
  286. package/.yalc/@node-dlc/messaging/lib/chain/IChainFilterChainClient.ts +57 -0
  287. package/.yalc/@node-dlc/messaging/lib/domain/Address.ts +64 -0
  288. package/.yalc/@node-dlc/messaging/lib/index.ts +44 -0
  289. package/.yalc/@node-dlc/messaging/lib/irc/IrcMessage.ts +161 -0
  290. package/.yalc/@node-dlc/messaging/lib/messages/AddressCache.ts +74 -0
  291. package/.yalc/@node-dlc/messaging/lib/messages/BatchFundingGroup.ts +141 -0
  292. package/.yalc/@node-dlc/messaging/lib/messages/CetAdaptorSignatures.ts +89 -0
  293. package/.yalc/@node-dlc/messaging/lib/messages/ContractDescriptor.ts +318 -0
  294. package/.yalc/@node-dlc/messaging/lib/messages/ContractInfo.ts +434 -0
  295. package/.yalc/@node-dlc/messaging/lib/messages/DlcAccept.ts +595 -0
  296. package/.yalc/@node-dlc/messaging/lib/messages/DlcCancel.ts +57 -0
  297. package/.yalc/@node-dlc/messaging/lib/messages/DlcClose.ts +302 -0
  298. package/.yalc/@node-dlc/messaging/lib/messages/DlcCloseMetadata.ts +121 -0
  299. package/.yalc/@node-dlc/messaging/lib/messages/DlcIds.ts +67 -0
  300. package/.yalc/@node-dlc/messaging/lib/messages/DlcInfo.ts +81 -0
  301. package/.yalc/@node-dlc/messaging/lib/messages/DlcMessage.ts +87 -0
  302. package/.yalc/@node-dlc/messaging/lib/messages/DlcOffer.ts +605 -0
  303. package/.yalc/@node-dlc/messaging/lib/messages/DlcSign.ts +354 -0
  304. package/.yalc/@node-dlc/messaging/lib/messages/DlcTransactions.ts +213 -0
  305. package/.yalc/@node-dlc/messaging/lib/messages/EventDescriptor.ts +289 -0
  306. package/.yalc/@node-dlc/messaging/lib/messages/FundingInput.ts +216 -0
  307. package/.yalc/@node-dlc/messaging/lib/messages/FundingSignatures.ts +98 -0
  308. package/.yalc/@node-dlc/messaging/lib/messages/IWireMessage.ts +6 -0
  309. package/.yalc/@node-dlc/messaging/lib/messages/NegotiationFields.ts +252 -0
  310. package/.yalc/@node-dlc/messaging/lib/messages/NodeAnnouncementMessage.ts +145 -0
  311. package/.yalc/@node-dlc/messaging/lib/messages/OracleAnnouncement.ts +176 -0
  312. package/.yalc/@node-dlc/messaging/lib/messages/OracleAttestation.ts +292 -0
  313. package/.yalc/@node-dlc/messaging/lib/messages/OracleEvent.ts +250 -0
  314. package/.yalc/@node-dlc/messaging/lib/messages/OracleEventContainer.ts +89 -0
  315. package/.yalc/@node-dlc/messaging/lib/messages/OracleIdentifier.ts +78 -0
  316. package/.yalc/@node-dlc/messaging/lib/messages/OracleInfo.ts +519 -0
  317. package/.yalc/@node-dlc/messaging/lib/messages/OrderAccept.ts +159 -0
  318. package/.yalc/@node-dlc/messaging/lib/messages/OrderIrcInfo.ts +100 -0
  319. package/.yalc/@node-dlc/messaging/lib/messages/OrderMetadata.ts +119 -0
  320. package/.yalc/@node-dlc/messaging/lib/messages/OrderNegotiationFields.ts +157 -0
  321. package/.yalc/@node-dlc/messaging/lib/messages/OrderOffer.ts +419 -0
  322. package/.yalc/@node-dlc/messaging/lib/messages/OrderPositionInfo.ts +170 -0
  323. package/.yalc/@node-dlc/messaging/lib/messages/PayoutCurvePiece.ts +449 -0
  324. package/.yalc/@node-dlc/messaging/lib/messages/PayoutFunction.ts +240 -0
  325. package/.yalc/@node-dlc/messaging/lib/messages/RoundingIntervals.ts +127 -0
  326. package/.yalc/@node-dlc/messaging/lib/messages/ScriptWitnessV0.ts +63 -0
  327. package/.yalc/@node-dlc/messaging/lib/messages/Tlv.ts +40 -0
  328. package/.yalc/@node-dlc/messaging/lib/serialize/F64.ts +352 -0
  329. package/.yalc/@node-dlc/messaging/lib/serialize/deserializeTlv.ts +15 -0
  330. package/.yalc/@node-dlc/messaging/lib/serialize/getTlv.ts +21 -0
  331. package/.yalc/@node-dlc/messaging/lib/serialize/readTlvs.ts +37 -0
  332. package/.yalc/@node-dlc/messaging/lib/util.ts +33 -0
  333. package/.yalc/@node-dlc/messaging/lib/validation/validate.ts +34 -0
  334. package/.yalc/@node-dlc/messaging/package.json +42 -0
  335. package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs/enum_3_of_3_test.json +210 -0
  336. package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs/enum_3_of_5_test.json +468 -0
  337. package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs/enum_and_numerical_3_of_5_test.json +1517 -0
  338. package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs/enum_and_numerical_5_of_5_test.json +545 -0
  339. package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs/enum_and_numerical_with_diff_3_of_5_test.json +4761 -0
  340. package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs/enum_and_numerical_with_diff_5_of_5_test.json +2169 -0
  341. package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs/enum_single_oracle_test.json +164 -0
  342. package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs/single_oracle_numerical_hyperbola_test.json +502 -0
  343. package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs/single_oracle_numerical_test.json +262 -0
  344. package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs/three_of_five_oracle_numerical_with_diff_test.json +4382 -0
  345. package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs/three_of_three_oracle_numerical_test.json +324 -0
  346. package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs/three_of_three_oracle_numerical_with_diff_test.json +652 -0
  347. package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs/two_of_five_oracle_numerical_test.json +1138 -0
  348. package/.yalc/@node-dlc/messaging/test_vectors/dlcspecs/two_of_five_oracle_numerical_with_diff_test.json +2222 -0
  349. package/.yalc/@node-dlc/messaging/test_vectors/oracle/external_oracle_announcements.json +0 -0
  350. package/.yalc/@node-dlc/messaging/test_vectors/oracle/oracle_message_test_vectors.json +115 -0
  351. package/.yalc/@node-dlc/messaging/test_vectors/rust-dlc/accept_msg.json +1465 -0
  352. package/.yalc/@node-dlc/messaging/test_vectors/rust-dlc/dlc_fee_test.json +12362 -0
  353. package/.yalc/@node-dlc/messaging/test_vectors/rust-dlc/dlc_fee_test_scripts.json +57 -0
  354. package/.yalc/@node-dlc/messaging/test_vectors/rust-dlc/dlc_test.json +2766 -0
  355. package/.yalc/@node-dlc/messaging/test_vectors/rust-dlc/dlc_tx_test.json +2899 -0
  356. package/.yalc/@node-dlc/messaging/test_vectors/rust-dlc/offer_msg.json +163 -0
  357. package/.yalc/@node-dlc/messaging/test_vectors/rust-dlc/offer_msg_disjoint.json +352 -0
  358. package/.yalc/@node-dlc/messaging/test_vectors/rust-dlc/segment_chunk_msg.json +12635 -0
  359. package/.yalc/@node-dlc/messaging/test_vectors/rust-dlc/segment_start_msg.json +4022 -0
  360. package/.yalc/@node-dlc/messaging/test_vectors/rust-dlc/sign_msg.json +383 -0
  361. package/.yalc/@node-dlc/messaging/tsconfig.json +7 -0
  362. package/.yalc/@node-dlc/messaging/yalc.sig +1 -0
  363. package/CHANGELOG.md +72 -0
  364. package/dist/BitcoinDlcProvider.d.ts +17 -16
  365. package/dist/BitcoinDlcProvider.js +345 -315
  366. package/dist/BitcoinDlcProvider.js.map +1 -1
  367. package/dist/utils/Utils.d.ts +6 -6
  368. package/dist/utils/Utils.js +4 -4
  369. package/dist/utils/Utils.js.map +1 -1
  370. package/lib/BitcoinDlcProvider.ts +624 -612
  371. package/lib/utils/Utils.ts +19 -24
  372. package/package.json +10 -10
  373. package/yalc.lock +10 -0
@@ -0,0 +1,127 @@
1
+ import { BufferReader, BufferWriter } from '@node-dlc/bufio';
2
+
3
+ import { MessageType } from '../MessageType';
4
+ import { toBigInt } from '../util';
5
+ import { IDlcMessage } from './DlcMessage';
6
+
7
+ /**
8
+ * RoundingIntervals defines rounding intervals for numeric outcome contracts.
9
+ * Updated to match dlcspecs format (no longer uses TLV).
10
+ */
11
+ export class RoundingIntervals implements IDlcMessage {
12
+ public static type = MessageType.RoundingIntervals;
13
+
14
+ /**
15
+ * Creates a RoundingIntervals from JSON data
16
+ * @param json JSON object representing rounding intervals
17
+ */
18
+ // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types, @typescript-eslint/no-explicit-any
19
+ public static fromJSON(json: any): RoundingIntervals {
20
+ const instance = new RoundingIntervals();
21
+
22
+ const intervals = json.intervals || [];
23
+ instance.intervals = intervals.map((interval: any) => ({
24
+ beginInterval: toBigInt(
25
+ interval.beginInterval || interval.begin_interval,
26
+ ),
27
+ roundingMod: toBigInt(interval.roundingMod || interval.rounding_mod),
28
+ }));
29
+
30
+ return instance;
31
+ }
32
+
33
+ /**
34
+ * Deserializes a rounding_intervals message
35
+ * @param buf
36
+ */
37
+ public static deserialize(buf: Buffer): RoundingIntervals {
38
+ const instance = new RoundingIntervals();
39
+ const reader = new BufferReader(buf);
40
+
41
+ const numRoundingIntervals = Number(reader.readBigSize());
42
+
43
+ for (let i = 0; i < numRoundingIntervals; i++) {
44
+ const beginInterval = reader.readUInt64BE();
45
+ const roundingMod = reader.readUInt64BE();
46
+
47
+ instance.intervals.push({ beginInterval, roundingMod });
48
+ }
49
+
50
+ return instance;
51
+ }
52
+
53
+ /**
54
+ * The type for rounding_intervals message. rounding_intervals = 42788
55
+ */
56
+ public type = RoundingIntervals.type;
57
+
58
+ public intervals: IInterval[] = [];
59
+
60
+ /**
61
+ * Validates correctness of all fields in the message
62
+ * https://github.com/discreetlogcontracts/dlcspecs/blob/master/NumericOutcome.md#requirements
63
+ * @throws Will throw an error if validation fails
64
+ */
65
+ public validate(): void {
66
+ // 1. Intervals must be non-negative
67
+ for (const interval of this.intervals) {
68
+ if (interval.beginInterval < 0) {
69
+ throw new Error('beginInterval must be non-negative');
70
+ }
71
+ }
72
+
73
+ // 2. Intervals must be strictly increasing
74
+ for (let i = 1; i < this.intervals.length; ++i) {
75
+ if (
76
+ this.intervals[i - 1].beginInterval >= this.intervals[i].beginInterval
77
+ ) {
78
+ throw new Error(`Intervals must be strictly increasing`);
79
+ }
80
+ }
81
+ }
82
+
83
+ /**
84
+ * Converts rounding_intervals to JSON
85
+ */
86
+ public toJSON(): IRoundingIntervalsJSON {
87
+ return {
88
+ intervals: this.intervals.map((interval) => {
89
+ return {
90
+ beginInterval: Number(interval.beginInterval),
91
+ roundingMod: Number(interval.roundingMod),
92
+ };
93
+ }),
94
+ };
95
+ }
96
+
97
+ /**
98
+ * Serializes the rounding_intervals message into a Buffer
99
+ */
100
+ public serialize(): Buffer {
101
+ const writer = new BufferWriter();
102
+
103
+ writer.writeBigSize(this.intervals.length);
104
+
105
+ for (const interval of this.intervals) {
106
+ writer.writeUInt64BE(interval.beginInterval);
107
+ writer.writeUInt64BE(interval.roundingMod);
108
+ }
109
+
110
+ return writer.toBuffer();
111
+ }
112
+ }
113
+
114
+ interface IInterval {
115
+ beginInterval: bigint;
116
+ roundingMod: bigint;
117
+ }
118
+
119
+ interface IIntervalJSON {
120
+ beginInterval: number;
121
+ roundingMod: number;
122
+ }
123
+
124
+ export interface IRoundingIntervalsJSON {
125
+ type?: number; // Optional for rust-dlc compatibility
126
+ intervals: IIntervalJSON[];
127
+ }
@@ -0,0 +1,63 @@
1
+ import { BufferReader, BufferWriter } from '@node-dlc/bufio';
2
+
3
+ /**
4
+ * ScriptWitness is the data for a witness element in a witness stack.
5
+ * An empty witness_stack is an error, as every input must be Segwit.
6
+ * Witness elements should not include their length as part of the witness
7
+ * data.
8
+ */
9
+ export class ScriptWitnessV0 {
10
+ /**
11
+ * Deserializes an script_witness_v0 message
12
+ * @param buf
13
+ */
14
+ public static deserialize(buf: Buffer): ScriptWitnessV0 {
15
+ const instance = new ScriptWitnessV0();
16
+ const reader = new BufferReader(buf);
17
+
18
+ instance.length = Number(reader.readBigSize());
19
+ instance.witness = reader.readBytes(instance.length);
20
+
21
+ return instance;
22
+ }
23
+
24
+ public static getWitness(reader: BufferReader): Buffer {
25
+ const length = Number(reader.readBigSize());
26
+ const body = reader.readBytes(Number(length));
27
+
28
+ const writer = new BufferWriter();
29
+ writer.writeBigSize(length);
30
+ writer.writeBytes(body);
31
+
32
+ return writer.toBuffer();
33
+ }
34
+
35
+ public length: number;
36
+
37
+ public witness: Buffer;
38
+
39
+ /**
40
+ * Converts script_witness_v0 to JSON
41
+ */
42
+ public toJSON(): IScriptWitnessV0JSON {
43
+ return {
44
+ witness: this.witness.toString('hex'),
45
+ };
46
+ }
47
+
48
+ /**
49
+ * Serializes the script_witness_v0 message into a Buffer
50
+ */
51
+ public serialize(): Buffer {
52
+ const writer = new BufferWriter();
53
+
54
+ writer.writeBigSize(this.witness.length);
55
+ writer.writeBytes(this.witness);
56
+
57
+ return writer.toBuffer();
58
+ }
59
+ }
60
+
61
+ export interface IScriptWitnessV0JSON {
62
+ witness: string;
63
+ }
@@ -0,0 +1,40 @@
1
+ import { BufferReader, BufferWriter } from '@node-dlc/bufio';
2
+
3
+ export class Tlv {
4
+ /**
5
+ * Deserializes an tlv message
6
+ * @param buf
7
+ */
8
+ public static deserialize(buf: Buffer): Tlv {
9
+ const instance = new Tlv();
10
+ const reader = new BufferReader(buf);
11
+
12
+ instance.type = Number(reader.readBigSize()); // read type
13
+ instance.length = reader.readBigSize();
14
+ instance.body = reader.readBytes(Number(instance.length));
15
+
16
+ return instance;
17
+ }
18
+
19
+ public type: number;
20
+
21
+ public length: bigint;
22
+
23
+ public body: Buffer;
24
+
25
+ /**
26
+ * Serializes the tlv message into a Buffer
27
+ */
28
+ public serialize(): Buffer {
29
+ const writer = new BufferWriter();
30
+ writer.writeBigSize(this.type);
31
+ const dataWriter = new BufferWriter();
32
+
33
+ dataWriter.writeBytes(this.body);
34
+
35
+ writer.writeBigSize(dataWriter.size);
36
+ writer.writeBytes(dataWriter.toBuffer());
37
+
38
+ return writer.toBuffer();
39
+ }
40
+ }
@@ -0,0 +1,352 @@
1
+ import Decimal from 'decimal.js';
2
+
3
+ /**
4
+ * IEEE 754 double-precision floating-point number implementation
5
+ *
6
+ * Format: 1 bit sign + 11 bits exponent + 52 bits mantissa
7
+ *
8
+ * This class works directly with the binary representation to avoid
9
+ * precision loss when serializing/deserializing f64 values to/from buffers.
10
+ */
11
+ export class F64 {
12
+ private _buffer: Buffer; // 8 bytes storing the IEEE 754 representation
13
+
14
+ /**
15
+ * Create an F64 from raw bytes (IEEE 754 format)
16
+ */
17
+ constructor(buffer?: Buffer) {
18
+ if (buffer) {
19
+ if (buffer.length !== 8) {
20
+ throw new Error('F64 buffer must be exactly 8 bytes');
21
+ }
22
+ this._buffer = Buffer.from(buffer);
23
+ } else {
24
+ this._buffer = Buffer.alloc(8);
25
+ }
26
+ }
27
+
28
+ /**
29
+ * Create F64 from JavaScript number
30
+ */
31
+ static fromNumber(num: number): F64 {
32
+ const buffer = Buffer.alloc(8);
33
+ buffer.writeDoubleBE(num, 0);
34
+ return new F64(buffer);
35
+ }
36
+
37
+ /**
38
+ * Create F64 from Decimal.js value
39
+ * Uses the most precise conversion possible
40
+ */
41
+ static fromDecimal(decimal: Decimal): F64 {
42
+ // Convert to number and let IEEE 754 handle the precision
43
+ const num = decimal.toNumber();
44
+ return F64.fromNumber(num);
45
+ }
46
+
47
+ /**
48
+ * Create F64 from string representation
49
+ * Uses Decimal.js to parse the string without precision loss from JavaScript Number
50
+ */
51
+ static fromString(str: string): F64 {
52
+ // Parse string using Decimal.js to avoid JavaScript Number precision loss
53
+ const decimal = new Decimal(str);
54
+ return F64.fromDecimal(decimal);
55
+ }
56
+
57
+ /**
58
+ * Create F64 from bigint (treating as integer value)
59
+ */
60
+ static fromBigInt(bigint: bigint): F64 {
61
+ const num = Number(bigint);
62
+ return F64.fromNumber(num);
63
+ }
64
+
65
+ /**
66
+ * Create F64 representing zero (static method for API compatibility)
67
+ */
68
+ static zero(): F64 {
69
+ return F64.fromNumber(0);
70
+ }
71
+
72
+ /**
73
+ * Create F64 with specific IEEE 754 components
74
+ */
75
+ static fromComponents(
76
+ sign: boolean,
77
+ exponent: number,
78
+ mantissa: bigint,
79
+ ): F64 {
80
+ if (exponent < 0 || exponent > 2047) {
81
+ throw new Error('Exponent must be between 0 and 2047');
82
+ }
83
+ if (mantissa < BigInt(0) || mantissa >= BigInt(1) << BigInt(52)) {
84
+ throw new Error('Mantissa must be between 0 and 2^52-1');
85
+ }
86
+
87
+ const buffer = Buffer.alloc(8);
88
+
89
+ // Pack into 64-bit big-endian format
90
+ // Bit layout: SEEEEEEE EEEEMMMM MMMMMMMM MMMMMMMM MMMMMMMM MMMMMMMM MMMMMMMM MMMMMMMM
91
+ const signBit = sign ? BigInt(1) : BigInt(0);
92
+ const expBits = BigInt(exponent);
93
+ const mantissaBits = mantissa;
94
+
95
+ const ieee754Bits =
96
+ (signBit << BigInt(63)) | (expBits << BigInt(52)) | mantissaBits;
97
+
98
+ // Write as big-endian bytes
99
+ for (let i = 0; i < 8; i++) {
100
+ const byteValue = Number(
101
+ (ieee754Bits >> BigInt(56 - i * 8)) & BigInt(0xff),
102
+ );
103
+ buffer.writeUInt8(byteValue, i);
104
+ }
105
+
106
+ return new F64(buffer);
107
+ }
108
+
109
+ /**
110
+ * Get the raw buffer containing IEEE 754 representation
111
+ */
112
+ getBuffer(): Buffer {
113
+ return Buffer.from(this._buffer);
114
+ }
115
+
116
+ /**
117
+ * Serialize to buffer (big-endian)
118
+ */
119
+ serialize(): Buffer {
120
+ return this.getBuffer();
121
+ }
122
+
123
+ /**
124
+ * Deserialize from buffer (big-endian)
125
+ */
126
+ static deserialize(buffer: Buffer): F64 {
127
+ return new F64(buffer);
128
+ }
129
+
130
+ /**
131
+ * Write to BufferWriter
132
+ */
133
+ writeTo(writer: any): void {
134
+ writer.writeBytes(this._buffer);
135
+ }
136
+
137
+ /**
138
+ * Read from BufferReader
139
+ */
140
+ static readFrom(reader: any): F64 {
141
+ const buffer = reader.readBytes(8);
142
+ return new F64(buffer);
143
+ }
144
+
145
+ /**
146
+ * Convert to JavaScript number
147
+ * This may lose precision for very large or very precise values
148
+ */
149
+ toNumber(): number {
150
+ return this._buffer.readDoubleBE(0);
151
+ }
152
+
153
+ /**
154
+ * Convert to Decimal.js for arbitrary precision
155
+ */
156
+ toDecimal(): Decimal {
157
+ return new Decimal(this.toNumber());
158
+ }
159
+
160
+ /**
161
+ * Extract IEEE 754 components
162
+ */
163
+ getComponents(): { sign: boolean; exponent: number; mantissa: bigint } {
164
+ // Read as big-endian 64-bit integer
165
+ let ieee754Bits = BigInt(0);
166
+ for (let i = 0; i < 8; i++) {
167
+ ieee754Bits =
168
+ (ieee754Bits << BigInt(8)) | BigInt(this._buffer.readUInt8(i));
169
+ }
170
+
171
+ const sign = (ieee754Bits & (BigInt(1) << BigInt(63))) !== BigInt(0);
172
+ const exponent = Number((ieee754Bits >> BigInt(52)) & BigInt(0x7ff));
173
+ const mantissa = ieee754Bits & ((BigInt(1) << BigInt(52)) - BigInt(1));
174
+
175
+ return { sign, exponent, mantissa };
176
+ }
177
+
178
+ /**
179
+ * Check if the value is finite
180
+ */
181
+ isFinite(): boolean {
182
+ const { exponent } = this.getComponents();
183
+ return exponent !== 2047; // NaN and Infinity have exponent = 2047
184
+ }
185
+
186
+ /**
187
+ * Check if the value is NaN
188
+ */
189
+ isNaN(): boolean {
190
+ const { exponent, mantissa } = this.getComponents();
191
+ return exponent === 2047 && mantissa !== BigInt(0);
192
+ }
193
+
194
+ /**
195
+ * Check if the value is infinite
196
+ */
197
+ isInfinite(): boolean {
198
+ const { exponent, mantissa } = this.getComponents();
199
+ return exponent === 2047 && mantissa === BigInt(0);
200
+ }
201
+
202
+ /**
203
+ * Check if the value is zero
204
+ */
205
+ isZero(): boolean {
206
+ const { exponent, mantissa } = this.getComponents();
207
+ return exponent === 0 && mantissa === BigInt(0);
208
+ }
209
+
210
+ /**
211
+ * Get string representation
212
+ */
213
+ toString(): string {
214
+ return this.toNumber().toString();
215
+ }
216
+
217
+ /**
218
+ * Convert to JSON-safe value: number if within safe range, string if too large
219
+ * This preserves precision for very large numbers that exceed JavaScript's MAX_SAFE_INTEGER
220
+ */
221
+ toJSONValue(): number | string {
222
+ const num = this.toNumber();
223
+
224
+ // Check if the number is within JavaScript's safe integer range
225
+ if (num <= Number.MAX_SAFE_INTEGER && num >= Number.MIN_SAFE_INTEGER) {
226
+ return num;
227
+ }
228
+
229
+ // For very large numbers, return as string to preserve precision
230
+ return num.toString();
231
+ }
232
+
233
+ /**
234
+ * Create F64 from JSON value (handles both number and string inputs)
235
+ */
236
+ static fromJSONValue(value: number | string): F64 {
237
+ if (typeof value === 'string') {
238
+ return F64.fromString(value);
239
+ } else {
240
+ return F64.fromNumber(value);
241
+ }
242
+ }
243
+
244
+ /**
245
+ * Get hex representation of the raw bytes
246
+ */
247
+ toHex(): string {
248
+ return this._buffer.toString('hex');
249
+ }
250
+
251
+ /**
252
+ * Create F64 from hex string
253
+ */
254
+ static fromHex(hex: string): F64 {
255
+ const buffer = Buffer.from(hex, 'hex');
256
+ if (buffer.length !== 8) {
257
+ throw new Error('Hex string must represent exactly 8 bytes');
258
+ }
259
+ return new F64(buffer);
260
+ }
261
+
262
+ /**
263
+ * Compare with another F64
264
+ */
265
+ equals(other: F64): boolean {
266
+ return this._buffer.equals(other._buffer);
267
+ }
268
+
269
+ /**
270
+ * Equality comparison (alias for equals, for API compatibility)
271
+ */
272
+ eq(other: F64 | number): boolean {
273
+ if (typeof other === 'number') {
274
+ return this.toNumber() === other;
275
+ }
276
+ return this.equals(other);
277
+ }
278
+
279
+ /**
280
+ * Greater than comparison
281
+ */
282
+ gt(other: F64 | number): boolean {
283
+ if (typeof other === 'number') {
284
+ return this.toNumber() > other;
285
+ }
286
+ return this.toNumber() > other.toNumber();
287
+ }
288
+
289
+ /**
290
+ * Less than comparison
291
+ */
292
+ lt(other: F64 | number): boolean {
293
+ if (typeof other === 'number') {
294
+ return this.toNumber() < other;
295
+ }
296
+ return this.toNumber() < other.toNumber();
297
+ }
298
+
299
+ /**
300
+ * Greater than or equal comparison
301
+ */
302
+ gte(other: F64 | number): boolean {
303
+ if (typeof other === 'number') {
304
+ return this.toNumber() >= other;
305
+ }
306
+ return this.toNumber() >= other.toNumber();
307
+ }
308
+
309
+ /**
310
+ * Less than or equal comparison
311
+ */
312
+ lte(other: F64 | number): boolean {
313
+ if (typeof other === 'number') {
314
+ return this.toNumber() <= other;
315
+ }
316
+ return this.toNumber() <= other.toNumber();
317
+ }
318
+
319
+ /**
320
+ * Create a copy
321
+ */
322
+ clone(): F64 {
323
+ return new F64(this._buffer);
324
+ }
325
+
326
+ /**
327
+ * Constants
328
+ */
329
+ static get ZERO(): F64 {
330
+ return F64.fromNumber(0);
331
+ }
332
+
333
+ static get ONE(): F64 {
334
+ return F64.fromNumber(1);
335
+ }
336
+
337
+ static get NEGATIVE_ONE(): F64 {
338
+ return F64.fromNumber(-1);
339
+ }
340
+
341
+ static get INFINITY(): F64 {
342
+ return F64.fromNumber(Number.POSITIVE_INFINITY);
343
+ }
344
+
345
+ static get NEGATIVE_INFINITY(): F64 {
346
+ return F64.fromNumber(Number.NEGATIVE_INFINITY);
347
+ }
348
+
349
+ static get NaN(): F64 {
350
+ return F64.fromNumber(Number.NaN);
351
+ }
352
+ }
@@ -0,0 +1,15 @@
1
+ import { BufferReader } from '@node-dlc/bufio';
2
+
3
+ export function deserializeTlv(reader: BufferReader): ITlv {
4
+ const type = reader.readBigSize();
5
+ const length = reader.readBigSize();
6
+ const body = reader.readBytes(Number(length));
7
+
8
+ return { type, length, body };
9
+ }
10
+
11
+ interface ITlv {
12
+ type: bigint;
13
+ length: bigint;
14
+ body: Buffer;
15
+ }
@@ -0,0 +1,21 @@
1
+ import { BufferReader, BufferWriter } from '@node-dlc/bufio';
2
+
3
+ // TODO: add unit tests
4
+ export function getTlv(reader: BufferReader): Buffer {
5
+ const type = reader.readBigSize();
6
+ const length = reader.readBigSize();
7
+ const body = reader.readBytes(Number(length));
8
+
9
+ const writer = new BufferWriter();
10
+ writer.writeBigSize(type);
11
+ writer.writeBigSize(length);
12
+ writer.writeBytes(body);
13
+
14
+ return writer.toBuffer();
15
+ }
16
+
17
+ export function skipTlv(reader: BufferReader): void {
18
+ reader.readBigSize();
19
+ const length = reader.readBigSize();
20
+ reader.readBytes(Number(length));
21
+ }
@@ -0,0 +1,37 @@
1
+ import { BufferReader } from '@node-dlc/bufio';
2
+
3
+ /**
4
+ * Reads TLVs from a reader until the entire stream is processed. The handler is
5
+ * responsible for doing something with the data bytes.
6
+ * @param reader
7
+ * @param handler
8
+ */
9
+ export function readTlvs(
10
+ reader: BufferReader,
11
+ handler: (type: bigint, value: BufferReader) => boolean,
12
+ ) {
13
+ let lastType: bigint;
14
+ while (!reader.eof) {
15
+ const type = reader.readBigSize();
16
+ const len = reader.readBigSize();
17
+ const value = reader.readBytes(Number(len));
18
+ const valueReader = new BufferReader(value);
19
+
20
+ if (type <= lastType) {
21
+ throw new Error('Invalid TLV stream');
22
+ }
23
+
24
+ const isEven = type % BigInt(2) === BigInt(0);
25
+ const wasHandled = handler(type, valueReader);
26
+
27
+ if (!wasHandled && isEven) {
28
+ throw new Error('Unknown even type');
29
+ }
30
+
31
+ if (wasHandled && !valueReader.eof) {
32
+ throw new Error('Non-canonical length');
33
+ }
34
+
35
+ lastType = type;
36
+ }
37
+ }
@@ -0,0 +1,33 @@
1
+ export function sleep(ms: number): Promise<void> {
2
+ return new Promise((resolve) => setTimeout(resolve, ms));
3
+ }
4
+
5
+ /**
6
+ * Safely converts various input types to BigInt
7
+ * @param value Value to convert to BigInt
8
+ * @returns BigInt representation of the value, or BigInt(0) for null/undefined
9
+ */
10
+ export function toBigInt(value: any): bigint {
11
+ if (value === null || value === undefined) return BigInt(0);
12
+ if (typeof value === 'bigint') return value;
13
+ if (typeof value === 'string') return BigInt(value);
14
+ if (typeof value === 'number') return BigInt(value);
15
+ return BigInt(0);
16
+ }
17
+
18
+ /**
19
+ * Safely converts BigInt to number, preserving precision for safe integers
20
+ * @param value BigInt value to convert
21
+ * @returns Number if within safe range, otherwise returns the BigInt as-is for JSON serialization
22
+ */
23
+ export function bigIntToNumber(value: bigint): number | any {
24
+ // For values within safe integer range, convert to number
25
+ if (
26
+ value <= BigInt(Number.MAX_SAFE_INTEGER) &&
27
+ value >= BigInt(Number.MIN_SAFE_INTEGER)
28
+ ) {
29
+ return Number(value);
30
+ }
31
+ // For larger values, preserve as BigInt (json-bigint will handle serialization)
32
+ return value as any;
33
+ }