@atomicfinance/bitcoin-wallet-provider 4.0.3 → 4.1.1

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 (230) hide show
  1. package/.turbo/turbo-build.log +3 -0
  2. package/CHANGELOG.md +31 -0
  3. package/LICENSE +674 -0
  4. package/dist/BitcoinWalletProvider.d.ts +8 -11
  5. package/dist/BitcoinWalletProvider.js +18 -10
  6. package/dist/BitcoinWalletProvider.js.map +1 -1
  7. package/lib/BitcoinWalletProvider.ts +0 -2
  8. package/package.json +14 -13
  9. package/.turbo/turbo-lint.log +0 -1
  10. package/.turbo/turbo-test.log +0 -0
  11. package/.yalc/@node-dlc/core/.nyc_output/687a3c14-9765-45fd-a1fe-f7db3d56fee4.json +0 -1
  12. package/.yalc/@node-dlc/core/.nyc_output/processinfo/687a3c14-9765-45fd-a1fe-f7db3d56fee4.json +0 -1
  13. package/.yalc/@node-dlc/core/.nyc_output/processinfo/index.json +0 -1
  14. package/.yalc/@node-dlc/core/README.md +0 -11
  15. package/.yalc/@node-dlc/core/__tests__/core.spec.ts +0 -7
  16. package/.yalc/@node-dlc/core/__tests__/dlc/CETCalculator.spec.ts +0 -1029
  17. package/.yalc/@node-dlc/core/__tests__/dlc/CoinSelect.spec.ts +0 -179
  18. package/.yalc/@node-dlc/core/__tests__/dlc/PolynomialPayoutCurve.spec.ts +0 -345
  19. package/.yalc/@node-dlc/core/__tests__/dlc/TxBuilder.spec.ts +0 -424
  20. package/.yalc/@node-dlc/core/__tests__/dlc/finance/Builder.spec.ts +0 -492
  21. package/.yalc/@node-dlc/core/__tests__/dlc/finance/CoveredCall.spec.ts +0 -112
  22. package/.yalc/@node-dlc/core/__tests__/dlc/finance/CsoInfo.spec.ts +0 -1124
  23. package/.yalc/@node-dlc/core/__tests__/dlc/finance/LongCall.spec.ts +0 -55
  24. package/.yalc/@node-dlc/core/__tests__/dlc/finance/LongPut.spec.ts +0 -55
  25. package/.yalc/@node-dlc/core/__tests__/dlc/finance/OptionInfo.spec.ts +0 -226
  26. package/.yalc/@node-dlc/core/__tests__/dlc/finance/ShortPut.spec.ts +0 -62
  27. package/.yalc/@node-dlc/core/__tests__/tsconfig.json +0 -8
  28. package/.yalc/@node-dlc/core/__tests__/utils/precision.spec.ts +0 -40
  29. package/.yalc/@node-dlc/core/coverage/lcov-report/base.css +0 -224
  30. package/.yalc/@node-dlc/core/coverage/lcov-report/block-navigation.js +0 -79
  31. package/.yalc/@node-dlc/core/coverage/lcov-report/favicon.png +0 -0
  32. package/.yalc/@node-dlc/core/coverage/lcov-report/index.html +0 -171
  33. package/.yalc/@node-dlc/core/coverage/lcov-report/lib/AsyncProcessingQueue.ts.html +0 -269
  34. package/.yalc/@node-dlc/core/coverage/lcov-report/lib/Base32.ts.html +0 -86
  35. package/.yalc/@node-dlc/core/coverage/lcov-report/lib/BigIntUtils.ts.html +0 -86
  36. package/.yalc/@node-dlc/core/coverage/lcov-report/lib/BitField.ts.html +0 -86
  37. package/.yalc/@node-dlc/core/coverage/lcov-report/lib/ChannelId.ts.html +0 -86
  38. package/.yalc/@node-dlc/core/coverage/lcov-report/lib/LinkedList.ts.html +0 -413
  39. package/.yalc/@node-dlc/core/coverage/lcov-report/lib/LinkedListNode.ts.html +0 -122
  40. package/.yalc/@node-dlc/core/coverage/lcov-report/lib/Queue.ts.html +0 -188
  41. package/.yalc/@node-dlc/core/coverage/lcov-report/lib/ShortChannelId.ts.html +0 -86
  42. package/.yalc/@node-dlc/core/coverage/lcov-report/lib/ShortChannelIdUtils.ts.html +0 -107
  43. package/.yalc/@node-dlc/core/coverage/lcov-report/lib/dlc/CETCalculator.ts.html +0 -1430
  44. package/.yalc/@node-dlc/core/coverage/lcov-report/lib/dlc/CoinSelect.ts.html +0 -431
  45. package/.yalc/@node-dlc/core/coverage/lcov-report/lib/dlc/HyperbolaPayoutCurve.ts.html +0 -644
  46. package/.yalc/@node-dlc/core/coverage/lcov-report/lib/dlc/PolynomialPayoutCurve.ts.html +0 -878
  47. package/.yalc/@node-dlc/core/coverage/lcov-report/lib/dlc/TxBuilder.ts.html +0 -1088
  48. package/.yalc/@node-dlc/core/coverage/lcov-report/lib/dlc/TxFinalizer.ts.html +0 -731
  49. package/.yalc/@node-dlc/core/coverage/lcov-report/lib/dlc/finance/Builder.ts.html +0 -2270
  50. package/.yalc/@node-dlc/core/coverage/lcov-report/lib/dlc/finance/CoveredCall.ts.html +0 -410
  51. package/.yalc/@node-dlc/core/coverage/lcov-report/lib/dlc/finance/CsoInfo.ts.html +0 -1574
  52. package/.yalc/@node-dlc/core/coverage/lcov-report/lib/dlc/finance/LinearPayout.ts.html +0 -362
  53. package/.yalc/@node-dlc/core/coverage/lcov-report/lib/dlc/finance/LongCall.ts.html +0 -302
  54. package/.yalc/@node-dlc/core/coverage/lcov-report/lib/dlc/finance/LongPut.ts.html +0 -302
  55. package/.yalc/@node-dlc/core/coverage/lcov-report/lib/dlc/finance/OptionInfo.ts.html +0 -626
  56. package/.yalc/@node-dlc/core/coverage/lcov-report/lib/dlc/finance/ShortPut.ts.html +0 -305
  57. package/.yalc/@node-dlc/core/coverage/lcov-report/lib/dlc/finance/index.html +0 -216
  58. package/.yalc/@node-dlc/core/coverage/lcov-report/lib/dlc/index.html +0 -186
  59. package/.yalc/@node-dlc/core/coverage/lcov-report/lib/index.html +0 -261
  60. package/.yalc/@node-dlc/core/coverage/lcov-report/lib/index.ts.html +0 -278
  61. package/.yalc/@node-dlc/core/coverage/lcov-report/lib/lightning/ChannelId.ts.html +0 -242
  62. package/.yalc/@node-dlc/core/coverage/lcov-report/lib/lightning/ChannelKeys.ts.html +0 -407
  63. package/.yalc/@node-dlc/core/coverage/lcov-report/lib/lightning/CommitmentNumber.ts.html +0 -362
  64. package/.yalc/@node-dlc/core/coverage/lcov-report/lib/lightning/CommitmentSecret.ts.html +0 -203
  65. package/.yalc/@node-dlc/core/coverage/lcov-report/lib/lightning/CommitmentSecretStore.ts.html +0 -332
  66. package/.yalc/@node-dlc/core/coverage/lcov-report/lib/lightning/Htlc.ts.html +0 -236
  67. package/.yalc/@node-dlc/core/coverage/lcov-report/lib/lightning/HtlcDirection.ts.html +0 -131
  68. package/.yalc/@node-dlc/core/coverage/lcov-report/lib/lightning/ScriptFactory.ts.html +0 -530
  69. package/.yalc/@node-dlc/core/coverage/lcov-report/lib/lightning/TxFactory.ts.html +0 -1094
  70. package/.yalc/@node-dlc/core/coverage/lcov-report/lib/lightning/index.html +0 -231
  71. package/.yalc/@node-dlc/core/coverage/lcov-report/lib/utils/BigIntUtils.ts.html +0 -272
  72. package/.yalc/@node-dlc/core/coverage/lcov-report/lib/utils/Precision.ts.html +0 -149
  73. package/.yalc/@node-dlc/core/coverage/lcov-report/lib/utils/index.html +0 -126
  74. package/.yalc/@node-dlc/core/coverage/lcov-report/prettify.css +0 -1
  75. package/.yalc/@node-dlc/core/coverage/lcov-report/prettify.js +0 -2
  76. package/.yalc/@node-dlc/core/coverage/lcov-report/sort-arrow-sprite.png +0 -0
  77. package/.yalc/@node-dlc/core/coverage/lcov-report/sorter.js +0 -170
  78. package/.yalc/@node-dlc/core/coverage/lcov.info +0 -2426
  79. package/.yalc/@node-dlc/core/dist/AsyncProcessingQueue.d.ts +0 -22
  80. package/.yalc/@node-dlc/core/dist/AsyncProcessingQueue.js +0 -55
  81. package/.yalc/@node-dlc/core/dist/AsyncProcessingQueue.js.map +0 -1
  82. package/.yalc/@node-dlc/core/dist/Base32.d.ts +0 -1
  83. package/.yalc/@node-dlc/core/dist/Base32.js +0 -7
  84. package/.yalc/@node-dlc/core/dist/Base32.js.map +0 -1
  85. package/.yalc/@node-dlc/core/dist/BigIntUtils.d.ts +0 -1
  86. package/.yalc/@node-dlc/core/dist/BigIntUtils.js +0 -8
  87. package/.yalc/@node-dlc/core/dist/BigIntUtils.js.map +0 -1
  88. package/.yalc/@node-dlc/core/dist/BitField.d.ts +0 -1
  89. package/.yalc/@node-dlc/core/dist/BitField.js +0 -7
  90. package/.yalc/@node-dlc/core/dist/BitField.js.map +0 -1
  91. package/.yalc/@node-dlc/core/dist/ChannelId.d.ts +0 -1
  92. package/.yalc/@node-dlc/core/dist/ChannelId.js +0 -7
  93. package/.yalc/@node-dlc/core/dist/ChannelId.js.map +0 -1
  94. package/.yalc/@node-dlc/core/dist/LinkedList.d.ts +0 -30
  95. package/.yalc/@node-dlc/core/dist/LinkedList.js +0 -104
  96. package/.yalc/@node-dlc/core/dist/LinkedList.js.map +0 -1
  97. package/.yalc/@node-dlc/core/dist/LinkedListNode.d.ts +0 -9
  98. package/.yalc/@node-dlc/core/dist/LinkedListNode.js +0 -15
  99. package/.yalc/@node-dlc/core/dist/LinkedListNode.js.map +0 -1
  100. package/.yalc/@node-dlc/core/dist/Queue.d.ts +0 -22
  101. package/.yalc/@node-dlc/core/dist/Queue.js +0 -38
  102. package/.yalc/@node-dlc/core/dist/Queue.js.map +0 -1
  103. package/.yalc/@node-dlc/core/dist/ShortChannelId.d.ts +0 -1
  104. package/.yalc/@node-dlc/core/dist/ShortChannelId.js +0 -7
  105. package/.yalc/@node-dlc/core/dist/ShortChannelId.js.map +0 -1
  106. package/.yalc/@node-dlc/core/dist/ShortChannelIdUtils.d.ts +0 -1
  107. package/.yalc/@node-dlc/core/dist/ShortChannelIdUtils.js +0 -12
  108. package/.yalc/@node-dlc/core/dist/ShortChannelIdUtils.js.map +0 -1
  109. package/.yalc/@node-dlc/core/dist/dlc/CETCalculator.d.ts +0 -50
  110. package/.yalc/@node-dlc/core/dist/dlc/CETCalculator.js +0 -332
  111. package/.yalc/@node-dlc/core/dist/dlc/CETCalculator.js.map +0 -1
  112. package/.yalc/@node-dlc/core/dist/dlc/CoinSelect.d.ts +0 -23
  113. package/.yalc/@node-dlc/core/dist/dlc/CoinSelect.js +0 -77
  114. package/.yalc/@node-dlc/core/dist/dlc/CoinSelect.js.map +0 -1
  115. package/.yalc/@node-dlc/core/dist/dlc/HyperbolaPayoutCurve.d.ts +0 -20
  116. package/.yalc/@node-dlc/core/dist/dlc/HyperbolaPayoutCurve.js +0 -117
  117. package/.yalc/@node-dlc/core/dist/dlc/HyperbolaPayoutCurve.js.map +0 -1
  118. package/.yalc/@node-dlc/core/dist/dlc/PayoutCurve.d.ts +0 -5
  119. package/.yalc/@node-dlc/core/dist/dlc/PayoutCurve.js +0 -3
  120. package/.yalc/@node-dlc/core/dist/dlc/PayoutCurve.js.map +0 -1
  121. package/.yalc/@node-dlc/core/dist/dlc/PolynomialPayoutCurve.d.ts +0 -52
  122. package/.yalc/@node-dlc/core/dist/dlc/PolynomialPayoutCurve.js +0 -173
  123. package/.yalc/@node-dlc/core/dist/dlc/PolynomialPayoutCurve.js.map +0 -1
  124. package/.yalc/@node-dlc/core/dist/dlc/TxBuilder.d.ts +0 -55
  125. package/.yalc/@node-dlc/core/dist/dlc/TxBuilder.js +0 -217
  126. package/.yalc/@node-dlc/core/dist/dlc/TxBuilder.js.map +0 -1
  127. package/.yalc/@node-dlc/core/dist/dlc/TxFinalizer.d.ts +0 -40
  128. package/.yalc/@node-dlc/core/dist/dlc/TxFinalizer.js +0 -146
  129. package/.yalc/@node-dlc/core/dist/dlc/TxFinalizer.js.map +0 -1
  130. package/.yalc/@node-dlc/core/dist/dlc/finance/Builder.d.ts +0 -193
  131. package/.yalc/@node-dlc/core/dist/dlc/finance/Builder.js +0 -422
  132. package/.yalc/@node-dlc/core/dist/dlc/finance/Builder.js.map +0 -1
  133. package/.yalc/@node-dlc/core/dist/dlc/finance/CoveredCall.d.ts +0 -13
  134. package/.yalc/@node-dlc/core/dist/dlc/finance/CoveredCall.js +0 -67
  135. package/.yalc/@node-dlc/core/dist/dlc/finance/CoveredCall.js.map +0 -1
  136. package/.yalc/@node-dlc/core/dist/dlc/finance/CsoInfo.d.ts +0 -114
  137. package/.yalc/@node-dlc/core/dist/dlc/finance/CsoInfo.js +0 -290
  138. package/.yalc/@node-dlc/core/dist/dlc/finance/CsoInfo.js.map +0 -1
  139. package/.yalc/@node-dlc/core/dist/dlc/finance/LinearPayout.d.ts +0 -6
  140. package/.yalc/@node-dlc/core/dist/dlc/finance/LinearPayout.js +0 -79
  141. package/.yalc/@node-dlc/core/dist/dlc/finance/LinearPayout.js.map +0 -1
  142. package/.yalc/@node-dlc/core/dist/dlc/finance/LongCall.d.ts +0 -13
  143. package/.yalc/@node-dlc/core/dist/dlc/finance/LongCall.js +0 -47
  144. package/.yalc/@node-dlc/core/dist/dlc/finance/LongCall.js.map +0 -1
  145. package/.yalc/@node-dlc/core/dist/dlc/finance/LongPut.d.ts +0 -13
  146. package/.yalc/@node-dlc/core/dist/dlc/finance/LongPut.js +0 -47
  147. package/.yalc/@node-dlc/core/dist/dlc/finance/LongPut.js.map +0 -1
  148. package/.yalc/@node-dlc/core/dist/dlc/finance/OptionInfo.d.ts +0 -20
  149. package/.yalc/@node-dlc/core/dist/dlc/finance/OptionInfo.js +0 -101
  150. package/.yalc/@node-dlc/core/dist/dlc/finance/OptionInfo.js.map +0 -1
  151. package/.yalc/@node-dlc/core/dist/dlc/finance/ShortPut.d.ts +0 -12
  152. package/.yalc/@node-dlc/core/dist/dlc/finance/ShortPut.js +0 -46
  153. package/.yalc/@node-dlc/core/dist/dlc/finance/ShortPut.js.map +0 -1
  154. package/.yalc/@node-dlc/core/dist/index.d.ts +0 -39
  155. package/.yalc/@node-dlc/core/dist/index.js +0 -78
  156. package/.yalc/@node-dlc/core/dist/index.js.map +0 -1
  157. package/.yalc/@node-dlc/core/dist/lightning/ChannelId.d.ts +0 -31
  158. package/.yalc/@node-dlc/core/dist/lightning/ChannelId.js +0 -52
  159. package/.yalc/@node-dlc/core/dist/lightning/ChannelId.js.map +0 -1
  160. package/.yalc/@node-dlc/core/dist/lightning/ChannelKeys.d.ts +0 -55
  161. package/.yalc/@node-dlc/core/dist/lightning/ChannelKeys.js +0 -105
  162. package/.yalc/@node-dlc/core/dist/lightning/ChannelKeys.js.map +0 -1
  163. package/.yalc/@node-dlc/core/dist/lightning/CommitmentNumber.d.ts +0 -55
  164. package/.yalc/@node-dlc/core/dist/lightning/CommitmentNumber.js +0 -76
  165. package/.yalc/@node-dlc/core/dist/lightning/CommitmentNumber.js.map +0 -1
  166. package/.yalc/@node-dlc/core/dist/lightning/CommitmentSecret.d.ts +0 -26
  167. package/.yalc/@node-dlc/core/dist/lightning/CommitmentSecret.js +0 -44
  168. package/.yalc/@node-dlc/core/dist/lightning/CommitmentSecret.js.map +0 -1
  169. package/.yalc/@node-dlc/core/dist/lightning/CommitmentSecretStore.d.ts +0 -41
  170. package/.yalc/@node-dlc/core/dist/lightning/CommitmentSecretStore.js +0 -79
  171. package/.yalc/@node-dlc/core/dist/lightning/CommitmentSecretStore.js.map +0 -1
  172. package/.yalc/@node-dlc/core/dist/lightning/Htlc.d.ts +0 -46
  173. package/.yalc/@node-dlc/core/dist/lightning/Htlc.js +0 -46
  174. package/.yalc/@node-dlc/core/dist/lightning/Htlc.js.map +0 -1
  175. package/.yalc/@node-dlc/core/dist/lightning/HtlcDirection.d.ts +0 -16
  176. package/.yalc/@node-dlc/core/dist/lightning/HtlcDirection.js +0 -21
  177. package/.yalc/@node-dlc/core/dist/lightning/HtlcDirection.js.map +0 -1
  178. package/.yalc/@node-dlc/core/dist/lightning/ScriptFactory.d.ts +0 -76
  179. package/.yalc/@node-dlc/core/dist/lightning/ScriptFactory.js +0 -102
  180. package/.yalc/@node-dlc/core/dist/lightning/ScriptFactory.js.map +0 -1
  181. package/.yalc/@node-dlc/core/dist/lightning/TxFactory.d.ts +0 -83
  182. package/.yalc/@node-dlc/core/dist/lightning/TxFactory.js +0 -222
  183. package/.yalc/@node-dlc/core/dist/lightning/TxFactory.js.map +0 -1
  184. package/.yalc/@node-dlc/core/dist/utils/BigIntUtils.d.ts +0 -9
  185. package/.yalc/@node-dlc/core/dist/utils/BigIntUtils.js +0 -59
  186. package/.yalc/@node-dlc/core/dist/utils/BigIntUtils.js.map +0 -1
  187. package/.yalc/@node-dlc/core/dist/utils/Precision.d.ts +0 -13
  188. package/.yalc/@node-dlc/core/dist/utils/Precision.js +0 -28
  189. package/.yalc/@node-dlc/core/dist/utils/Precision.js.map +0 -1
  190. package/.yalc/@node-dlc/core/lib/AsyncProcessingQueue.ts +0 -63
  191. package/.yalc/@node-dlc/core/lib/Base32.ts +0 -2
  192. package/.yalc/@node-dlc/core/lib/BigIntUtils.ts +0 -2
  193. package/.yalc/@node-dlc/core/lib/BitField.ts +0 -2
  194. package/.yalc/@node-dlc/core/lib/ChannelId.ts +0 -2
  195. package/.yalc/@node-dlc/core/lib/LinkedList.ts +0 -111
  196. package/.yalc/@node-dlc/core/lib/LinkedListNode.ts +0 -14
  197. package/.yalc/@node-dlc/core/lib/Queue.ts +0 -36
  198. package/.yalc/@node-dlc/core/lib/ShortChannelId.ts +0 -2
  199. package/.yalc/@node-dlc/core/lib/ShortChannelIdUtils.ts +0 -9
  200. package/.yalc/@node-dlc/core/lib/dlc/CETCalculator.ts +0 -450
  201. package/.yalc/@node-dlc/core/lib/dlc/CoinSelect.ts +0 -117
  202. package/.yalc/@node-dlc/core/lib/dlc/HyperbolaPayoutCurve.ts +0 -188
  203. package/.yalc/@node-dlc/core/lib/dlc/PayoutCurve.ts +0 -6
  204. package/.yalc/@node-dlc/core/lib/dlc/PolynomialPayoutCurve.ts +0 -266
  205. package/.yalc/@node-dlc/core/lib/dlc/TxBuilder.ts +0 -336
  206. package/.yalc/@node-dlc/core/lib/dlc/TxFinalizer.ts +0 -217
  207. package/.yalc/@node-dlc/core/lib/dlc/finance/Builder.ts +0 -730
  208. package/.yalc/@node-dlc/core/lib/dlc/finance/CoveredCall.ts +0 -110
  209. package/.yalc/@node-dlc/core/lib/dlc/finance/CsoInfo.ts +0 -498
  210. package/.yalc/@node-dlc/core/lib/dlc/finance/LinearPayout.ts +0 -94
  211. package/.yalc/@node-dlc/core/lib/dlc/finance/LongCall.ts +0 -74
  212. package/.yalc/@node-dlc/core/lib/dlc/finance/LongPut.ts +0 -74
  213. package/.yalc/@node-dlc/core/lib/dlc/finance/OptionInfo.ts +0 -182
  214. package/.yalc/@node-dlc/core/lib/dlc/finance/ShortPut.ts +0 -75
  215. package/.yalc/@node-dlc/core/lib/index.ts +0 -66
  216. package/.yalc/@node-dlc/core/lib/lightning/ChannelId.ts +0 -54
  217. package/.yalc/@node-dlc/core/lib/lightning/ChannelKeys.ts +0 -109
  218. package/.yalc/@node-dlc/core/lib/lightning/CommitmentNumber.ts +0 -94
  219. package/.yalc/@node-dlc/core/lib/lightning/CommitmentSecret.ts +0 -41
  220. package/.yalc/@node-dlc/core/lib/lightning/CommitmentSecretStore.ts +0 -84
  221. package/.yalc/@node-dlc/core/lib/lightning/Htlc.ts +0 -52
  222. package/.yalc/@node-dlc/core/lib/lightning/HtlcDirection.ts +0 -17
  223. package/.yalc/@node-dlc/core/lib/lightning/ScriptFactory.ts +0 -150
  224. package/.yalc/@node-dlc/core/lib/lightning/TxFactory.ts +0 -338
  225. package/.yalc/@node-dlc/core/lib/utils/BigIntUtils.ts +0 -64
  226. package/.yalc/@node-dlc/core/lib/utils/Precision.ts +0 -23
  227. package/.yalc/@node-dlc/core/package.json +0 -38
  228. package/.yalc/@node-dlc/core/tsconfig.json +0 -8
  229. package/.yalc/@node-dlc/core/yalc.sig +0 -1
  230. package/yalc.lock +0 -10
@@ -1,332 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.roundPayout = exports.mergePayouts = exports.splitIntoRanges = exports.groupByIgnoringDigits = exports.middleGroupings = exports.backGroupings = exports.frontGroupings = exports.separatePrefix = exports.decompose = exports.dropUntil = exports.zipWithIndex = void 0;
7
- const bignumber_js_1 = __importDefault(require("bignumber.js"));
8
- const BigIntUtils_1 = require("../utils/BigIntUtils");
9
- function zipWithIndex(arr) {
10
- return arr.map((a, i) => [a, i]);
11
- }
12
- exports.zipWithIndex = zipWithIndex;
13
- function dropUntil(data, check) {
14
- for (let i = 0; i < data.length; i++) {
15
- if (check(data[i])) {
16
- return data.slice(i);
17
- }
18
- }
19
- return [];
20
- }
21
- exports.dropUntil = dropUntil;
22
- function decompose(num, base, numDigits) {
23
- let currentNumber = num;
24
- const digits = [];
25
- while (numDigits > 0) {
26
- digits.push(Number(currentNumber % BigInt(base)));
27
- currentNumber = currentNumber / BigInt(base);
28
- numDigits--;
29
- }
30
- return digits.reverse();
31
- }
32
- exports.decompose = decompose;
33
- function separatePrefix(start, end, base, numDigits) {
34
- const startDigits = decompose(start, base, numDigits);
35
- const endDigits = decompose(end, base, numDigits);
36
- const prefixDigits = [];
37
- for (let i = 0; i < startDigits.length; i++) {
38
- if (startDigits[i] === endDigits[i]) {
39
- prefixDigits.push(startDigits[i]);
40
- }
41
- else
42
- break;
43
- }
44
- return {
45
- prefixDigits,
46
- startDigits: startDigits.splice(prefixDigits.length),
47
- endDigits: endDigits.splice(prefixDigits.length),
48
- };
49
- }
50
- exports.separatePrefix = separatePrefix;
51
- function frontGroupings(digits, base) {
52
- const digitsReversed = Array.from(digits).reverse();
53
- const nonZeroDigits = dropUntil(zipWithIndex(digitsReversed), (a) => a[0] !== 0);
54
- if (nonZeroDigits.length === 0) {
55
- return [[0]];
56
- }
57
- const fromFront = nonZeroDigits
58
- .filter((_, i) => i !== nonZeroDigits.length - 1)
59
- .flatMap(([d, i]) => {
60
- const fixedDigits = Array.from(digits);
61
- fixedDigits.length = fixedDigits.length - (i + 1);
62
- const result = [];
63
- for (let n = d + 1; n < base; n++) {
64
- result.push([...Array.from(fixedDigits), n]);
65
- }
66
- return result;
67
- });
68
- return [nonZeroDigits.map((a) => a[0]).reverse(), ...fromFront];
69
- }
70
- exports.frontGroupings = frontGroupings;
71
- function backGroupings(digits, base) {
72
- const digitsReversed = Array.from(digits).reverse();
73
- const nonMaxDigits = dropUntil(zipWithIndex(digitsReversed), (a) => a[0] !== base - 1);
74
- if (nonMaxDigits.length === 0) {
75
- return [[base - 1]];
76
- }
77
- const fromBack = nonMaxDigits
78
- .filter((_, i) => i !== nonMaxDigits.length - 1)
79
- .flatMap(([d, i]) => {
80
- const fixedDigits = Array.from(digits);
81
- fixedDigits.length = fixedDigits.length - (i + 1);
82
- const result = [];
83
- for (let n = d - 1; n >= 0; n--) {
84
- result.push([...Array.from(fixedDigits), n]);
85
- }
86
- return result;
87
- });
88
- return [...fromBack.reverse(), nonMaxDigits.map((a) => a[0]).reverse()];
89
- }
90
- exports.backGroupings = backGroupings;
91
- function middleGroupings(firstDigitStart, firstDigitEnd) {
92
- const result = [];
93
- while (++firstDigitStart < firstDigitEnd) {
94
- result.push([firstDigitStart]);
95
- }
96
- return result;
97
- }
98
- exports.middleGroupings = middleGroupings;
99
- function groupByIgnoringDigits(start, end, base, numDigits) {
100
- const { prefixDigits, startDigits, endDigits } = separatePrefix(start, end, base, numDigits);
101
- if (start === end ||
102
- (startDigits.every((n) => n === 0) &&
103
- endDigits.every((n) => n === base - 1) &&
104
- prefixDigits.length !== 0)) {
105
- return [prefixDigits];
106
- }
107
- else if (prefixDigits.length === numDigits - 1) {
108
- const result = [];
109
- for (let i = startDigits[startDigits.length - 1]; i <= endDigits[endDigits.length - 1]; i++) {
110
- result.push([...prefixDigits, i]);
111
- }
112
- return result;
113
- }
114
- else {
115
- const front = frontGroupings(startDigits, base);
116
- const middle = middleGroupings(startDigits[0], endDigits[0]);
117
- const back = backGroupings(endDigits, base);
118
- const groupings = [...front, ...middle, ...back];
119
- return groupings.map((g) => [...prefixDigits, ...g]);
120
- }
121
- }
122
- exports.groupByIgnoringDigits = groupByIgnoringDigits;
123
- /**
124
- * Performs optimized evaluation and rounding for strictly monotonic hyperbolas on intervals (from, to)
125
- * e.g. hyperbolas with the form b = c = 0
126
- *
127
- * The next start of a payout range is determined by finding the outcome at the next mid-rounding payout.
128
- * Uses an inverse function of the hyperbola to find the outcome.
129
- *
130
- * Optimizes rounding from O(to - from) to O(totalCollateral / rounding)
131
- *
132
- *
133
- * Evaluates and rounds a payout_function equivalent to:
134
- *
135
- * payout_function_v0
136
- * num_pieces: 1
137
- * endpoint_0: from
138
- * endpoint_payout_0: fromPayout
139
- * extra_precision_0: 0
140
- * payout_curve_piece: HyperbolaPayoutCurve
141
- * endpoint_1: to
142
- * endpoint_payout_1: toPayout
143
- */
144
- function splitIntoRanges(from, to, fromPayout, // endpoint_payout
145
- toPayout, // endpoint_payout
146
- totalCollateral, curve, roundingIntervals) {
147
- if (to - from <= 0) {
148
- throw new Error('`to` must be strictly greater than `from`');
149
- }
150
- const reversedIntervals = [...roundingIntervals].reverse();
151
- const getRoundingForOutcome = (outcome) => {
152
- const roundingIndex = reversedIntervals.findIndex((interval) => interval.beginInterval <= outcome);
153
- return [
154
- roundingIndex !== -1
155
- ? reversedIntervals[roundingIndex].roundingMod
156
- : BigInt(1),
157
- roundingIndex,
158
- ];
159
- };
160
- const clamp = (val) => BigIntUtils_1.BigIntMath.clamp(BigInt(0), val, totalCollateral);
161
- const totalCollateralBN = new bignumber_js_1.default(totalCollateral.toString());
162
- const clampBN = (val) => bignumber_js_1.default.max(0, bignumber_js_1.default.min(val, totalCollateralBN));
163
- const result = [];
164
- // outcome = endpoint_0
165
- result.push({
166
- payout: fromPayout,
167
- indexFrom: from,
168
- indexTo: from,
169
- });
170
- // In the case of a constant payout curve (fromPayout === toPayout), we can skip the range evaluation
171
- if (fromPayout === toPayout) {
172
- result.push({
173
- payout: toPayout,
174
- indexFrom: from,
175
- indexTo: to,
176
- });
177
- // outcome = endpoint_1
178
- result.push({
179
- payout: toPayout,
180
- indexFrom: to,
181
- indexTo: to,
182
- });
183
- // merge neighbouring ranges with same payout
184
- return (0, exports.mergePayouts)(result);
185
- }
186
- let currentOutcome = from + BigInt(1);
187
- // iterate over entire range of outcomes from [from, to]
188
- while (currentOutcome < to) {
189
- const [rounding, roundingIndex] = getRoundingForOutcome(currentOutcome);
190
- // either the next rounding interval, or the end of the range
191
- const nextFirstRoundingOutcome = reversedIntervals[roundingIndex - 1]?.beginInterval || to;
192
- // temporary variable to hold the current payout
193
- let currentPayout = new bignumber_js_1.default(roundPayout(clampBN(curve.getPayout(currentOutcome)), rounding).toString());
194
- let currentMidRoundedOutcome = currentOutcome;
195
- const isAscending = curve
196
- .getPayout(nextFirstRoundingOutcome)
197
- .gt(currentPayout);
198
- // Add loop counter to prevent infinite loops
199
- let loopCounter = 0;
200
- const maxIterations = Number(to - from) + 1000; // Allow some extra iterations
201
- while (currentMidRoundedOutcome < nextFirstRoundingOutcome) {
202
- // Prevent infinite loops
203
- if (++loopCounter > maxIterations) {
204
- // Breaking out of potential infinite loop - add remaining range and exit
205
- result.push({
206
- payout: clamp((0, BigIntUtils_1.toBigInt)(currentPayout)),
207
- indexFrom: currentMidRoundedOutcome,
208
- indexTo: to - BigInt(1),
209
- });
210
- currentOutcome = to;
211
- break;
212
- }
213
- const nextRoundedPayout = currentPayout
214
- .integerValue()
215
- .plus(isAscending ? Number(rounding) : -Number(rounding));
216
- const nextRoundedPayoutBigInt = (0, BigIntUtils_1.toBigInt)(nextRoundedPayout);
217
- const nextMidRoundedPayout = currentPayout.plus(isAscending ? Number(rounding) / 2 : -Number(rounding) / 2);
218
- let nextMidRoundedOutcome = curve.getOutcomeForPayout(nextMidRoundedPayout);
219
- // Handle invalid outcomes from getOutcomeForPayout
220
- if (nextMidRoundedOutcome < 0) {
221
- // If getOutcomeForPayout returns invalid value, advance manually
222
- nextMidRoundedOutcome = currentMidRoundedOutcome + BigInt(1);
223
- }
224
- if ((!isAscending &&
225
- nextMidRoundedOutcome >= 0 &&
226
- curve.getPayout(nextMidRoundedOutcome).lt(nextMidRoundedPayout)) ||
227
- (isAscending &&
228
- nextMidRoundedOutcome >= 0 &&
229
- curve.getPayout(nextMidRoundedOutcome).gte(nextMidRoundedPayout))) {
230
- nextMidRoundedOutcome = nextMidRoundedOutcome - BigInt(1);
231
- // Ensure we don't go negative
232
- if (nextMidRoundedOutcome < 0) {
233
- nextMidRoundedOutcome = currentMidRoundedOutcome;
234
- }
235
- }
236
- const nextOutcome = curve.getOutcomeForPayout(nextRoundedPayout);
237
- if (nextMidRoundedOutcome >= nextFirstRoundingOutcome) {
238
- result.push({
239
- payout: clamp((0, BigIntUtils_1.toBigInt)(currentPayout)),
240
- indexFrom: currentMidRoundedOutcome,
241
- indexTo: nextFirstRoundingOutcome - BigInt(1),
242
- });
243
- currentOutcome = nextFirstRoundingOutcome;
244
- break;
245
- }
246
- if (nextRoundedPayoutBigInt > totalCollateral ||
247
- nextRoundedPayoutBigInt < 0 ||
248
- nextOutcome >= to ||
249
- nextOutcome < 0 // undefined on curve
250
- ) {
251
- if (nextMidRoundedOutcome < from || nextMidRoundedOutcome > to) {
252
- result.push({
253
- payout: clamp((0, BigIntUtils_1.toBigInt)(currentPayout)),
254
- indexFrom: currentMidRoundedOutcome,
255
- indexTo: to,
256
- });
257
- }
258
- else {
259
- result.push({
260
- payout: clamp((0, BigIntUtils_1.toBigInt)(currentPayout)),
261
- indexFrom: currentMidRoundedOutcome,
262
- indexTo: nextMidRoundedOutcome,
263
- }, {
264
- payout: clamp(nextRoundedPayoutBigInt),
265
- indexFrom: nextMidRoundedOutcome + BigInt(1),
266
- indexTo: to - BigInt(1),
267
- });
268
- }
269
- currentOutcome = to;
270
- break;
271
- }
272
- result.push({
273
- payout: clamp((0, BigIntUtils_1.toBigInt)(currentPayout)),
274
- indexFrom: currentMidRoundedOutcome,
275
- indexTo: nextMidRoundedOutcome,
276
- });
277
- // Handle case where nextOutcome is invalid
278
- if (nextOutcome < 0) {
279
- // Advance manually if getOutcomeForPayout returns invalid value
280
- currentOutcome = currentMidRoundedOutcome + BigInt(1);
281
- }
282
- else {
283
- currentOutcome = nextOutcome + BigInt(1);
284
- }
285
- currentPayout = nextRoundedPayout;
286
- // Additional safety check: ensure we're making progress
287
- const previousMidRoundedOutcome = currentMidRoundedOutcome;
288
- currentMidRoundedOutcome = nextMidRoundedOutcome + BigInt(1);
289
- if (currentMidRoundedOutcome <= previousMidRoundedOutcome) {
290
- // No progress detected in splitIntoRanges loop, breaking
291
- currentOutcome = nextFirstRoundingOutcome;
292
- break;
293
- }
294
- }
295
- }
296
- // outcome = endpoint_1
297
- result.push({
298
- payout: toPayout,
299
- indexFrom: to,
300
- indexTo: to,
301
- });
302
- // merge neighbouring ranges with same payout
303
- return (0, exports.mergePayouts)(result);
304
- }
305
- exports.splitIntoRanges = splitIntoRanges;
306
- const mergePayouts = (payouts) => {
307
- return payouts.reduce((acc, range) => {
308
- const prev = acc[acc.length - 1];
309
- if (prev) {
310
- if ((prev.indexTo === range.indexFrom ||
311
- prev.indexTo + BigInt(1) === range.indexFrom) &&
312
- prev.payout === range.payout) {
313
- prev.indexTo = range.indexTo;
314
- return acc;
315
- }
316
- }
317
- return [...acc, range];
318
- }, []);
319
- };
320
- exports.mergePayouts = mergePayouts;
321
- function roundPayout(payout, rounding) {
322
- const roundingBN = new bignumber_js_1.default(rounding.toString());
323
- const mod = payout.gte(0)
324
- ? payout.mod(roundingBN)
325
- : payout.mod(roundingBN).plus(roundingBN);
326
- const roundedPayout = mod.gte(roundingBN.dividedBy(2))
327
- ? payout.plus(roundingBN).minus(mod)
328
- : payout.minus(mod);
329
- return (0, BigIntUtils_1.toBigInt)(roundedPayout);
330
- }
331
- exports.roundPayout = roundPayout;
332
- //# sourceMappingURL=CETCalculator.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"CETCalculator.js","sourceRoot":"","sources":["../../lib/dlc/CETCalculator.ts"],"names":[],"mappings":"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"}
@@ -1,23 +0,0 @@
1
- export interface UTXO {
2
- txid: string;
3
- vout: number;
4
- value: number;
5
- address: string;
6
- derivationPath?: string;
7
- }
8
- export declare const dustThreshold: (feeRate: bigint) => bigint;
9
- export declare const dualFees: (feeRate: bigint, numInputs: number, numContracts: number) => bigint;
10
- /**
11
- * Selects UTXOs for dual funding
12
- * @param utxos - UTXOs to select from
13
- * @param collaterals - Collaterals to fund (just one for non-batch tx)
14
- * @param feeRate - Fee rate in satoshis per byte
15
- * @returns Inputs and fee
16
- * @description
17
- * Add inputs until we reach or surpass the target value (or deplete)
18
- * Worst-case: O(n)
19
- */
20
- export declare const dualFundingCoinSelect: (utxos: UTXO[], collaterals: bigint[], feeRate: bigint) => {
21
- inputs: UTXO[];
22
- fee: bigint;
23
- };
@@ -1,77 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.dualFundingCoinSelect = exports.dualFees = exports.dustThreshold = void 0;
4
- const messaging_1 = require("@node-dlc/messaging");
5
- const TxFinalizer_1 = require("./TxFinalizer");
6
- const TX_INPUT_SIZE = {
7
- LEGACY: 148,
8
- P2SH: 92,
9
- BECH32: 69,
10
- };
11
- const inputBytes = () => {
12
- return BigInt(TX_INPUT_SIZE.BECH32);
13
- };
14
- const dustThreshold = (feeRate) => {
15
- return BigInt(inputBytes()) * feeRate;
16
- };
17
- exports.dustThreshold = dustThreshold;
18
- // order by descending value, minus the inputs approximate fee
19
- const utxoScore = (x, feeRate) => {
20
- return BigInt(x.value) - feeRate * inputBytes();
21
- };
22
- const dualFees = (feeRate, numInputs, numContracts) => {
23
- const input = new messaging_1.FundingInput();
24
- input.maxWitnessLen = 108;
25
- input.redeemScript = Buffer.from('', 'hex');
26
- const fakeSPK = Buffer.from('0014663117d27e78eb432505180654e603acb30e8a4a', 'hex');
27
- const offerInputs = Array.from({ length: numInputs }, () => input);
28
- const acceptInputs = Array.from({ length: 1 }, () => input);
29
- return new TxFinalizer_1.DualFundingTxFinalizer(offerInputs, fakeSPK, fakeSPK, acceptInputs, fakeSPK, fakeSPK, feeRate, numContracts).offerFees;
30
- };
31
- exports.dualFees = dualFees;
32
- /**
33
- * Selects UTXOs for dual funding
34
- * @param utxos - UTXOs to select from
35
- * @param collaterals - Collaterals to fund (just one for non-batch tx)
36
- * @param feeRate - Fee rate in satoshis per byte
37
- * @returns Inputs and fee
38
- * @description
39
- * Add inputs until we reach or surpass the target value (or deplete)
40
- * Worst-case: O(n)
41
- */
42
- const dualFundingCoinSelect = (utxos, collaterals, // in satoshis
43
- feeRate) => {
44
- utxos = [...utxos].sort((a, b) => Number(utxoScore(b, feeRate) - utxoScore(a, feeRate)));
45
- let inAccum = 0;
46
- const inputs = [];
47
- const outAccum = collaterals.reduce((acc, val) => acc + val, BigInt(0)) +
48
- (0, exports.dustThreshold)(feeRate); // sum of collaterals
49
- for (let i = 0; i < utxos.length; ++i) {
50
- const utxo = utxos[i];
51
- const utxoBytes = inputBytes();
52
- const utxoFee = feeRate * utxoBytes;
53
- const utxoValue = utxo.value;
54
- // skip detrimental input
55
- if (utxoFee > utxo.value) {
56
- if (i === utxos.length - 1)
57
- return {
58
- fee: (0, exports.dualFees)(feeRate, 1, collaterals.length),
59
- inputs: [],
60
- };
61
- continue;
62
- }
63
- inAccum += utxoValue;
64
- inputs.push(utxo);
65
- const fee = (0, exports.dualFees)(feeRate, inputs.length, collaterals.length);
66
- // go again?
67
- if (inAccum < outAccum + fee)
68
- continue;
69
- return { inputs, fee };
70
- }
71
- return {
72
- fee: (0, exports.dualFees)(feeRate, 1, collaterals.length),
73
- inputs: [],
74
- };
75
- };
76
- exports.dualFundingCoinSelect = dualFundingCoinSelect;
77
- //# sourceMappingURL=CoinSelect.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"CoinSelect.js","sourceRoot":"","sources":["../../lib/dlc/CoinSelect.ts"],"names":[],"mappings":"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"}
@@ -1,20 +0,0 @@
1
- import { HyperbolaPayoutCurvePiece, PayoutFunctionV0, RoundingIntervals } from '@node-dlc/messaging';
2
- import BigNumber from 'bignumber.js';
3
- import { CETPayout } from '..';
4
- import PayoutCurve from './PayoutCurve';
5
- export declare class HyperbolaPayoutCurve implements PayoutCurve {
6
- private a;
7
- private b;
8
- private c;
9
- private d;
10
- private translateOutcome;
11
- private translatePayout;
12
- private positive;
13
- constructor(a: BigNumber, b: BigNumber, c: BigNumber, d: BigNumber, translateOutcome: BigNumber, translatePayout: BigNumber, positive?: boolean);
14
- getPayout(_x: bigint): BigNumber;
15
- getOutcomeForPayout(payout: BigNumber): bigint;
16
- toPayoutCurvePiece(): HyperbolaPayoutCurvePiece;
17
- equals(curve: HyperbolaPayoutCurve): boolean;
18
- static fromPayoutCurvePiece(piece: HyperbolaPayoutCurvePiece): HyperbolaPayoutCurve;
19
- static computePayouts(payoutFunction: PayoutFunctionV0, totalCollateral: bigint, roundingIntervals: RoundingIntervals): CETPayout[];
20
- }
@@ -1,117 +0,0 @@
1
- "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
- Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.HyperbolaPayoutCurve = void 0;
7
- const messaging_1 = require("@node-dlc/messaging");
8
- const bignumber_js_1 = __importDefault(require("bignumber.js"));
9
- const CETCalculator_1 = require("./CETCalculator");
10
- class HyperbolaPayoutCurve {
11
- constructor(a, b, c, d, translateOutcome, translatePayout, positive = true) {
12
- this.a = a;
13
- this.b = b;
14
- this.c = c;
15
- this.d = d;
16
- this.translateOutcome = translateOutcome;
17
- this.translatePayout = translatePayout;
18
- this.positive = positive;
19
- }
20
- getPayout(_x) {
21
- const { a, b, c, d, translateOutcome, translatePayout } = this;
22
- const x = new bignumber_js_1.default(Number(_x));
23
- const payout = c
24
- .times(x
25
- .minus(translateOutcome)
26
- .plus(x
27
- .minus(translateOutcome)
28
- .exponentiatedBy(2)
29
- .minus(a.times(b).times(4))
30
- .squareRoot())
31
- .div(a.times(2)))
32
- .plus(a
33
- .times(d)
34
- .times(2)
35
- .div(x
36
- .minus(translateOutcome)
37
- .plus(x
38
- .minus(translateOutcome)
39
- .exponentiatedBy(2)
40
- .minus(a.times(b).times(4))
41
- .squareRoot())))
42
- .plus(translatePayout);
43
- return payout;
44
- }
45
- getOutcomeForPayout(payout) {
46
- const { a, b, c, d, translateOutcome, translatePayout } = this;
47
- // Inverse function
48
- // y=(-ad^{2}-bf_{2}^{2}+2bf_{2}x-bx^{2}+df_{1}f_{2}-df_{1}x)/(d(f_{2}-x))
49
- if (c.eq(0)) {
50
- const denominator = d.times(translatePayout.minus(payout));
51
- if (denominator.eq(0)) {
52
- return BigInt(-1);
53
- }
54
- const outcome = a
55
- .negated()
56
- .times(d.exponentiatedBy(2))
57
- .minus(b.times(translatePayout.exponentiatedBy(2)))
58
- .plus(b.times(translatePayout).times(payout).times(2))
59
- .minus(b.times(payout.exponentiatedBy(2)))
60
- .plus(d.times(translateOutcome).times(translatePayout))
61
- .minus(d.times(translateOutcome).times(payout))
62
- .dividedBy(denominator)
63
- .integerValue();
64
- if (outcome.isFinite())
65
- return BigInt(outcome.toString());
66
- return BigInt(-1);
67
- }
68
- else {
69
- // y=\left((\sqrt{((adf_{2}-adx+bcf_{2}-bcx-2c\cdot d\cdot f_{1})^{2}-4cd(a^{2}d^{2}-2abcd+abf_{2}^{2}-2abf_{2}x+abx^{2}-adf_{1}f_{2}+adf_{1}x+b^{2}c^{2}-bcf_{1}f_{2}+bcf_{1}x+c\cdot d\cdot f_{1}^{2}))}-adf_{2}+adx-bcf_{2}+bcx+2c\cdot d\cdot f_{1})\right)/(2cd)
70
- throw new Error('Not supported');
71
- }
72
- }
73
- toPayoutCurvePiece() {
74
- const { a, b, c, d, translateOutcome, translatePayout, positive } = this;
75
- // Use the constructor with string values to avoid F64 dependency issues
76
- const piece = new messaging_1.HyperbolaPayoutCurvePiece(positive, translateOutcome.toString(), translatePayout.toString(), a.toString(), b.toString(), c.toString(), d.toString());
77
- return piece;
78
- }
79
- equals(curve) {
80
- return (this.a.eq(curve.a) &&
81
- this.b.eq(curve.b) &&
82
- this.c.eq(curve.c) &&
83
- this.d.eq(curve.d) &&
84
- this.translateOutcome.eq(curve.translateOutcome) &&
85
- this.translatePayout.eq(curve.translatePayout) &&
86
- this.positive === curve.positive);
87
- }
88
- static fromPayoutCurvePiece(piece) {
89
- // Convert F64 values to BigNumber using toDecimal().toString() to preserve precision
90
- const a = new bignumber_js_1.default(piece.a.toDecimal().toString());
91
- const b = new bignumber_js_1.default(piece.b.toDecimal().toString());
92
- const c = new bignumber_js_1.default(piece.c.toDecimal().toString());
93
- const d = new bignumber_js_1.default(piece.d.toDecimal().toString());
94
- const translateOutcome = new bignumber_js_1.default(piece.translateOutcome.toDecimal().toString());
95
- const translatePayout = new bignumber_js_1.default(piece.translatePayout.toDecimal().toString());
96
- return new HyperbolaPayoutCurve(a, b, c, d, translateOutcome, translatePayout, piece.usePositivePiece);
97
- }
98
- static computePayouts(payoutFunction, totalCollateral, roundingIntervals) {
99
- if (payoutFunction.payoutFunctionPieces.length !== 1)
100
- throw new Error('Must have at least one piece');
101
- const { endPoint, payoutCurvePiece, } = payoutFunction.payoutFunctionPieces[0];
102
- if (payoutCurvePiece.payoutCurvePieceType !==
103
- messaging_1.PayoutCurvePieceType.Hyperbola &&
104
- payoutCurvePiece.type !== messaging_1.MessageType.HyperbolaPayoutCurvePiece &&
105
- payoutCurvePiece.type !== messaging_1.MessageType.OldHyperbolaPayoutCurvePiece)
106
- throw new Error('Payout curve piece must be a hyperbola');
107
- const _payoutCurvePiece = payoutCurvePiece;
108
- const curve = this.fromPayoutCurvePiece(_payoutCurvePiece);
109
- // For the new PayoutFunction structure, get the starting point from the hyperbola piece's leftEndPoint
110
- // This matches the rust-dlc implementation where get_first_outcome() returns left_end_point.event_outcome
111
- const initialEventOutcome = _payoutCurvePiece.leftEndPoint?.eventOutcome || BigInt(0);
112
- const initialOutcomePayout = _payoutCurvePiece.leftEndPoint?.outcomePayout || BigInt(0);
113
- return (0, CETCalculator_1.splitIntoRanges)(initialEventOutcome, endPoint.eventOutcome, initialOutcomePayout, endPoint.outcomePayout, totalCollateral, curve, roundingIntervals.intervals);
114
- }
115
- }
116
- exports.HyperbolaPayoutCurve = HyperbolaPayoutCurve;
117
- //# sourceMappingURL=HyperbolaPayoutCurve.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"HyperbolaPayoutCurve.js","sourceRoot":"","sources":["../../lib/dlc/HyperbolaPayoutCurve.ts"],"names":[],"mappings":";;;;;;AAAA,mDAM6B;AAC7B,gEAAqC;AAGrC,mDAAkD;AAGlD,MAAa,oBAAoB;IAC/B,YACU,CAAY,EACZ,CAAY,EACZ,CAAY,EACZ,CAAY,EACZ,gBAA2B,EAC3B,eAA0B,EAC1B,WAAoB,IAAI;QANxB,MAAC,GAAD,CAAC,CAAW;QACZ,MAAC,GAAD,CAAC,CAAW;QACZ,MAAC,GAAD,CAAC,CAAW;QACZ,MAAC,GAAD,CAAC,CAAW;QACZ,qBAAgB,GAAhB,gBAAgB,CAAW;QAC3B,oBAAe,GAAf,eAAe,CAAW;QAC1B,aAAQ,GAAR,QAAQ,CAAgB;IAC/B,CAAC;IAEJ,SAAS,CAAC,EAAU;QAClB,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,gBAAgB,EAAE,eAAe,EAAE,GAAG,IAAI,CAAC;QAC/D,MAAM,CAAC,GAAG,IAAI,sBAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;QAEpC,MAAM,MAAM,GAAG,CAAC;aACb,KAAK,CACJ,CAAC;aACE,KAAK,CAAC,gBAAgB,CAAC;aACvB,IAAI,CACH,CAAC;aACE,KAAK,CAAC,gBAAgB,CAAC;aACvB,eAAe,CAAC,CAAC,CAAC;aAClB,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;aAC1B,UAAU,EAAE,CAChB;aACA,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CACnB;aACA,IAAI,CACH,CAAC;aACE,KAAK,CAAC,CAAC,CAAC;aACR,KAAK,CAAC,CAAC,CAAC;aACR,GAAG,CACF,CAAC;aACE,KAAK,CAAC,gBAAgB,CAAC;aACvB,IAAI,CACH,CAAC;aACE,KAAK,CAAC,gBAAgB,CAAC;aACvB,eAAe,CAAC,CAAC,CAAC;aAClB,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;aAC1B,UAAU,EAAE,CAChB,CACJ,CACJ;aACA,IAAI,CAAC,eAAe,CAAC,CAAC;QAEzB,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,mBAAmB,CAAC,MAAiB;QACnC,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,gBAAgB,EAAE,eAAe,EAAE,GAAG,IAAI,CAAC;QAE/D,mBAAmB;QACnB,0EAA0E;QAC1E,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;YACX,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,eAAe,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;YAE3D,IAAI,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;gBACrB,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;aACnB;YAED,MAAM,OAAO,GAAG,CAAC;iBACd,OAAO,EAAE;iBACT,KAAK,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;iBAC3B,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,eAAe,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC;iBAClD,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;iBACrD,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC;iBACzC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;iBACtD,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;iBAC9C,SAAS,CAAC,WAAW,CAAC;iBACtB,YAAY,EAAE,CAAC;YAElB,IAAI,OAAO,CAAC,QAAQ,EAAE;gBAAE,OAAO,MAAM,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC;YAC1D,OAAO,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;SACnB;aAAM;YACL,qQAAqQ;YACrQ,MAAM,IAAI,KAAK,CAAC,eAAe,CAAC,CAAC;SAClC;IACH,CAAC;IAED,kBAAkB;QAChB,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,gBAAgB,EAAE,eAAe,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC;QAEzE,wEAAwE;QACxE,MAAM,KAAK,GAAG,IAAI,qCAAyB,CACzC,QAAQ,EACR,gBAAgB,CAAC,QAAQ,EAAE,EAC3B,eAAe,CAAC,QAAQ,EAAE,EAC1B,CAAC,CAAC,QAAQ,EAAE,EACZ,CAAC,CAAC,QAAQ,EAAE,EACZ,CAAC,CAAC,QAAQ,EAAE,EACZ,CAAC,CAAC,QAAQ,EAAE,CACb,CAAC;QAEF,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,CAAC,KAA2B;QAChC,OAAO,CACL,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;YAClB,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;YAClB,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;YAClB,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;YAClB,IAAI,CAAC,gBAAgB,CAAC,EAAE,CAAC,KAAK,CAAC,gBAAgB,CAAC;YAChD,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC,KAAK,CAAC,eAAe,CAAC;YAC9C,IAAI,CAAC,QAAQ,KAAK,KAAK,CAAC,QAAQ,CACjC,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,oBAAoB,CACzB,KAAgC;QAEhC,qFAAqF;QACrF,MAAM,CAAC,GAAG,IAAI,sBAAS,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC;QACxD,MAAM,CAAC,GAAG,IAAI,sBAAS,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC;QACxD,MAAM,CAAC,GAAG,IAAI,sBAAS,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC;QACxD,MAAM,CAAC,GAAG,IAAI,sBAAS,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC;QACxD,MAAM,gBAAgB,GAAG,IAAI,sBAAS,CACpC,KAAK,CAAC,gBAAgB,CAAC,SAAS,EAAE,CAAC,QAAQ,EAAE,CAC9C,CAAC;QACF,MAAM,eAAe,GAAG,IAAI,sBAAS,CACnC,KAAK,CAAC,eAAe,CAAC,SAAS,EAAE,CAAC,QAAQ,EAAE,CAC7C,CAAC;QAEF,OAAO,IAAI,oBAAoB,CAC7B,CAAC,EACD,CAAC,EACD,CAAC,EACD,CAAC,EACD,gBAAgB,EAChB,eAAe,EACf,KAAK,CAAC,gBAAgB,CACvB,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,cAAc,CACnB,cAAgC,EAChC,eAAuB,EACvB,iBAAoC;QAEpC,IAAI,cAAc,CAAC,oBAAoB,CAAC,MAAM,KAAK,CAAC;YAClD,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;QAClD,MAAM,EACJ,QAAQ,EACR,gBAAgB,GACjB,GAAG,cAAc,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC;QAE3C,IACE,gBAAgB,CAAC,oBAAoB;YACnC,gCAAoB,CAAC,SAAS;YAChC,gBAAgB,CAAC,IAAI,KAAK,uBAAW,CAAC,yBAAyB;YAC/D,gBAAgB,CAAC,IAAI,KAAK,uBAAW,CAAC,4BAA4B;YAElE,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;QAE5D,MAAM,iBAAiB,GAAG,gBAA6C,CAAC;QACxE,MAAM,KAAK,GAAG,IAAI,CAAC,oBAAoB,CAAC,iBAAiB,CAAC,CAAC;QAE3D,uGAAuG;QACvG,0GAA0G;QAC1G,MAAM,mBAAmB,GACvB,iBAAiB,CAAC,YAAY,EAAE,YAAY,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC;QAC5D,MAAM,oBAAoB,GACxB,iBAAiB,CAAC,YAAY,EAAE,aAAa,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC;QAC7D,OAAO,IAAA,+BAAe,EACpB,mBAAmB,EACnB,QAAQ,CAAC,YAAY,EACrB,oBAAoB,EACpB,QAAQ,CAAC,aAAa,EACtB,eAAe,EACf,KAAK,EACL,iBAAiB,CAAC,SAAS,CAC5B,CAAC;IACJ,CAAC;CACF;AA9KD,oDA8KC"}
@@ -1,5 +0,0 @@
1
- import BigNumber from 'bignumber.js';
2
- export default interface PayoutCurve {
3
- getPayout(x: bigint): BigNumber;
4
- getOutcomeForPayout(y: BigNumber): bigint;
5
- }
@@ -1,3 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=PayoutCurve.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"PayoutCurve.js","sourceRoot":"","sources":["../../lib/dlc/PayoutCurve.ts"],"names":[],"mappings":""}