@atomicfinance/bitcoin-wallet-provider 4.0.0 → 4.0.2

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 (227) hide show
  1. package/.turbo/turbo-lint.log +1 -0
  2. package/.yalc/@node-dlc/core/.nyc_output/687a3c14-9765-45fd-a1fe-f7db3d56fee4.json +1 -0
  3. package/.yalc/@node-dlc/core/.nyc_output/processinfo/687a3c14-9765-45fd-a1fe-f7db3d56fee4.json +1 -0
  4. package/.yalc/@node-dlc/core/.nyc_output/processinfo/index.json +1 -0
  5. package/.yalc/@node-dlc/core/README.md +11 -0
  6. package/.yalc/@node-dlc/core/__tests__/core.spec.ts +7 -0
  7. package/.yalc/@node-dlc/core/__tests__/dlc/CETCalculator.spec.ts +1029 -0
  8. package/.yalc/@node-dlc/core/__tests__/dlc/CoinSelect.spec.ts +179 -0
  9. package/.yalc/@node-dlc/core/__tests__/dlc/PolynomialPayoutCurve.spec.ts +345 -0
  10. package/.yalc/@node-dlc/core/__tests__/dlc/TxBuilder.spec.ts +424 -0
  11. package/.yalc/@node-dlc/core/__tests__/dlc/finance/Builder.spec.ts +492 -0
  12. package/.yalc/@node-dlc/core/__tests__/dlc/finance/CoveredCall.spec.ts +112 -0
  13. package/.yalc/@node-dlc/core/__tests__/dlc/finance/CsoInfo.spec.ts +1124 -0
  14. package/.yalc/@node-dlc/core/__tests__/dlc/finance/LongCall.spec.ts +55 -0
  15. package/.yalc/@node-dlc/core/__tests__/dlc/finance/LongPut.spec.ts +55 -0
  16. package/.yalc/@node-dlc/core/__tests__/dlc/finance/OptionInfo.spec.ts +226 -0
  17. package/.yalc/@node-dlc/core/__tests__/dlc/finance/ShortPut.spec.ts +62 -0
  18. package/.yalc/@node-dlc/core/__tests__/tsconfig.json +8 -0
  19. package/.yalc/@node-dlc/core/__tests__/utils/precision.spec.ts +40 -0
  20. package/.yalc/@node-dlc/core/coverage/lcov-report/base.css +224 -0
  21. package/.yalc/@node-dlc/core/coverage/lcov-report/block-navigation.js +79 -0
  22. package/.yalc/@node-dlc/core/coverage/lcov-report/favicon.png +0 -0
  23. package/.yalc/@node-dlc/core/coverage/lcov-report/index.html +171 -0
  24. package/.yalc/@node-dlc/core/coverage/lcov-report/lib/AsyncProcessingQueue.ts.html +269 -0
  25. package/.yalc/@node-dlc/core/coverage/lcov-report/lib/Base32.ts.html +86 -0
  26. package/.yalc/@node-dlc/core/coverage/lcov-report/lib/BigIntUtils.ts.html +86 -0
  27. package/.yalc/@node-dlc/core/coverage/lcov-report/lib/BitField.ts.html +86 -0
  28. package/.yalc/@node-dlc/core/coverage/lcov-report/lib/ChannelId.ts.html +86 -0
  29. package/.yalc/@node-dlc/core/coverage/lcov-report/lib/LinkedList.ts.html +413 -0
  30. package/.yalc/@node-dlc/core/coverage/lcov-report/lib/LinkedListNode.ts.html +122 -0
  31. package/.yalc/@node-dlc/core/coverage/lcov-report/lib/Queue.ts.html +188 -0
  32. package/.yalc/@node-dlc/core/coverage/lcov-report/lib/ShortChannelId.ts.html +86 -0
  33. package/.yalc/@node-dlc/core/coverage/lcov-report/lib/ShortChannelIdUtils.ts.html +107 -0
  34. package/.yalc/@node-dlc/core/coverage/lcov-report/lib/dlc/CETCalculator.ts.html +1430 -0
  35. package/.yalc/@node-dlc/core/coverage/lcov-report/lib/dlc/CoinSelect.ts.html +431 -0
  36. package/.yalc/@node-dlc/core/coverage/lcov-report/lib/dlc/HyperbolaPayoutCurve.ts.html +644 -0
  37. package/.yalc/@node-dlc/core/coverage/lcov-report/lib/dlc/PolynomialPayoutCurve.ts.html +878 -0
  38. package/.yalc/@node-dlc/core/coverage/lcov-report/lib/dlc/TxBuilder.ts.html +1088 -0
  39. package/.yalc/@node-dlc/core/coverage/lcov-report/lib/dlc/TxFinalizer.ts.html +731 -0
  40. package/.yalc/@node-dlc/core/coverage/lcov-report/lib/dlc/finance/Builder.ts.html +2270 -0
  41. package/.yalc/@node-dlc/core/coverage/lcov-report/lib/dlc/finance/CoveredCall.ts.html +410 -0
  42. package/.yalc/@node-dlc/core/coverage/lcov-report/lib/dlc/finance/CsoInfo.ts.html +1574 -0
  43. package/.yalc/@node-dlc/core/coverage/lcov-report/lib/dlc/finance/LinearPayout.ts.html +362 -0
  44. package/.yalc/@node-dlc/core/coverage/lcov-report/lib/dlc/finance/LongCall.ts.html +302 -0
  45. package/.yalc/@node-dlc/core/coverage/lcov-report/lib/dlc/finance/LongPut.ts.html +302 -0
  46. package/.yalc/@node-dlc/core/coverage/lcov-report/lib/dlc/finance/OptionInfo.ts.html +626 -0
  47. package/.yalc/@node-dlc/core/coverage/lcov-report/lib/dlc/finance/ShortPut.ts.html +305 -0
  48. package/.yalc/@node-dlc/core/coverage/lcov-report/lib/dlc/finance/index.html +216 -0
  49. package/.yalc/@node-dlc/core/coverage/lcov-report/lib/dlc/index.html +186 -0
  50. package/.yalc/@node-dlc/core/coverage/lcov-report/lib/index.html +261 -0
  51. package/.yalc/@node-dlc/core/coverage/lcov-report/lib/index.ts.html +278 -0
  52. package/.yalc/@node-dlc/core/coverage/lcov-report/lib/lightning/ChannelId.ts.html +242 -0
  53. package/.yalc/@node-dlc/core/coverage/lcov-report/lib/lightning/ChannelKeys.ts.html +407 -0
  54. package/.yalc/@node-dlc/core/coverage/lcov-report/lib/lightning/CommitmentNumber.ts.html +362 -0
  55. package/.yalc/@node-dlc/core/coverage/lcov-report/lib/lightning/CommitmentSecret.ts.html +203 -0
  56. package/.yalc/@node-dlc/core/coverage/lcov-report/lib/lightning/CommitmentSecretStore.ts.html +332 -0
  57. package/.yalc/@node-dlc/core/coverage/lcov-report/lib/lightning/Htlc.ts.html +236 -0
  58. package/.yalc/@node-dlc/core/coverage/lcov-report/lib/lightning/HtlcDirection.ts.html +131 -0
  59. package/.yalc/@node-dlc/core/coverage/lcov-report/lib/lightning/ScriptFactory.ts.html +530 -0
  60. package/.yalc/@node-dlc/core/coverage/lcov-report/lib/lightning/TxFactory.ts.html +1094 -0
  61. package/.yalc/@node-dlc/core/coverage/lcov-report/lib/lightning/index.html +231 -0
  62. package/.yalc/@node-dlc/core/coverage/lcov-report/lib/utils/BigIntUtils.ts.html +272 -0
  63. package/.yalc/@node-dlc/core/coverage/lcov-report/lib/utils/Precision.ts.html +149 -0
  64. package/.yalc/@node-dlc/core/coverage/lcov-report/lib/utils/index.html +126 -0
  65. package/.yalc/@node-dlc/core/coverage/lcov-report/prettify.css +1 -0
  66. package/.yalc/@node-dlc/core/coverage/lcov-report/prettify.js +2 -0
  67. package/.yalc/@node-dlc/core/coverage/lcov-report/sort-arrow-sprite.png +0 -0
  68. package/.yalc/@node-dlc/core/coverage/lcov-report/sorter.js +170 -0
  69. package/.yalc/@node-dlc/core/coverage/lcov.info +2426 -0
  70. package/.yalc/@node-dlc/core/dist/AsyncProcessingQueue.d.ts +22 -0
  71. package/.yalc/@node-dlc/core/dist/AsyncProcessingQueue.js +55 -0
  72. package/.yalc/@node-dlc/core/dist/AsyncProcessingQueue.js.map +1 -0
  73. package/.yalc/@node-dlc/core/dist/Base32.d.ts +1 -0
  74. package/.yalc/@node-dlc/core/dist/Base32.js +7 -0
  75. package/.yalc/@node-dlc/core/dist/Base32.js.map +1 -0
  76. package/.yalc/@node-dlc/core/dist/BigIntUtils.d.ts +1 -0
  77. package/.yalc/@node-dlc/core/dist/BigIntUtils.js +8 -0
  78. package/.yalc/@node-dlc/core/dist/BigIntUtils.js.map +1 -0
  79. package/.yalc/@node-dlc/core/dist/BitField.d.ts +1 -0
  80. package/.yalc/@node-dlc/core/dist/BitField.js +7 -0
  81. package/.yalc/@node-dlc/core/dist/BitField.js.map +1 -0
  82. package/.yalc/@node-dlc/core/dist/ChannelId.d.ts +1 -0
  83. package/.yalc/@node-dlc/core/dist/ChannelId.js +7 -0
  84. package/.yalc/@node-dlc/core/dist/ChannelId.js.map +1 -0
  85. package/.yalc/@node-dlc/core/dist/LinkedList.d.ts +30 -0
  86. package/.yalc/@node-dlc/core/dist/LinkedList.js +104 -0
  87. package/.yalc/@node-dlc/core/dist/LinkedList.js.map +1 -0
  88. package/.yalc/@node-dlc/core/dist/LinkedListNode.d.ts +9 -0
  89. package/.yalc/@node-dlc/core/dist/LinkedListNode.js +15 -0
  90. package/.yalc/@node-dlc/core/dist/LinkedListNode.js.map +1 -0
  91. package/.yalc/@node-dlc/core/dist/Queue.d.ts +22 -0
  92. package/.yalc/@node-dlc/core/dist/Queue.js +38 -0
  93. package/.yalc/@node-dlc/core/dist/Queue.js.map +1 -0
  94. package/.yalc/@node-dlc/core/dist/ShortChannelId.d.ts +1 -0
  95. package/.yalc/@node-dlc/core/dist/ShortChannelId.js +7 -0
  96. package/.yalc/@node-dlc/core/dist/ShortChannelId.js.map +1 -0
  97. package/.yalc/@node-dlc/core/dist/ShortChannelIdUtils.d.ts +1 -0
  98. package/.yalc/@node-dlc/core/dist/ShortChannelIdUtils.js +12 -0
  99. package/.yalc/@node-dlc/core/dist/ShortChannelIdUtils.js.map +1 -0
  100. package/.yalc/@node-dlc/core/dist/dlc/CETCalculator.d.ts +50 -0
  101. package/.yalc/@node-dlc/core/dist/dlc/CETCalculator.js +332 -0
  102. package/.yalc/@node-dlc/core/dist/dlc/CETCalculator.js.map +1 -0
  103. package/.yalc/@node-dlc/core/dist/dlc/CoinSelect.d.ts +23 -0
  104. package/.yalc/@node-dlc/core/dist/dlc/CoinSelect.js +77 -0
  105. package/.yalc/@node-dlc/core/dist/dlc/CoinSelect.js.map +1 -0
  106. package/.yalc/@node-dlc/core/dist/dlc/HyperbolaPayoutCurve.d.ts +20 -0
  107. package/.yalc/@node-dlc/core/dist/dlc/HyperbolaPayoutCurve.js +117 -0
  108. package/.yalc/@node-dlc/core/dist/dlc/HyperbolaPayoutCurve.js.map +1 -0
  109. package/.yalc/@node-dlc/core/dist/dlc/PayoutCurve.d.ts +5 -0
  110. package/.yalc/@node-dlc/core/dist/dlc/PayoutCurve.js +3 -0
  111. package/.yalc/@node-dlc/core/dist/dlc/PayoutCurve.js.map +1 -0
  112. package/.yalc/@node-dlc/core/dist/dlc/PolynomialPayoutCurve.d.ts +52 -0
  113. package/.yalc/@node-dlc/core/dist/dlc/PolynomialPayoutCurve.js +173 -0
  114. package/.yalc/@node-dlc/core/dist/dlc/PolynomialPayoutCurve.js.map +1 -0
  115. package/.yalc/@node-dlc/core/dist/dlc/TxBuilder.d.ts +55 -0
  116. package/.yalc/@node-dlc/core/dist/dlc/TxBuilder.js +217 -0
  117. package/.yalc/@node-dlc/core/dist/dlc/TxBuilder.js.map +1 -0
  118. package/.yalc/@node-dlc/core/dist/dlc/TxFinalizer.d.ts +40 -0
  119. package/.yalc/@node-dlc/core/dist/dlc/TxFinalizer.js +146 -0
  120. package/.yalc/@node-dlc/core/dist/dlc/TxFinalizer.js.map +1 -0
  121. package/.yalc/@node-dlc/core/dist/dlc/finance/Builder.d.ts +193 -0
  122. package/.yalc/@node-dlc/core/dist/dlc/finance/Builder.js +422 -0
  123. package/.yalc/@node-dlc/core/dist/dlc/finance/Builder.js.map +1 -0
  124. package/.yalc/@node-dlc/core/dist/dlc/finance/CoveredCall.d.ts +13 -0
  125. package/.yalc/@node-dlc/core/dist/dlc/finance/CoveredCall.js +67 -0
  126. package/.yalc/@node-dlc/core/dist/dlc/finance/CoveredCall.js.map +1 -0
  127. package/.yalc/@node-dlc/core/dist/dlc/finance/CsoInfo.d.ts +114 -0
  128. package/.yalc/@node-dlc/core/dist/dlc/finance/CsoInfo.js +290 -0
  129. package/.yalc/@node-dlc/core/dist/dlc/finance/CsoInfo.js.map +1 -0
  130. package/.yalc/@node-dlc/core/dist/dlc/finance/LinearPayout.d.ts +6 -0
  131. package/.yalc/@node-dlc/core/dist/dlc/finance/LinearPayout.js +79 -0
  132. package/.yalc/@node-dlc/core/dist/dlc/finance/LinearPayout.js.map +1 -0
  133. package/.yalc/@node-dlc/core/dist/dlc/finance/LongCall.d.ts +13 -0
  134. package/.yalc/@node-dlc/core/dist/dlc/finance/LongCall.js +47 -0
  135. package/.yalc/@node-dlc/core/dist/dlc/finance/LongCall.js.map +1 -0
  136. package/.yalc/@node-dlc/core/dist/dlc/finance/LongPut.d.ts +13 -0
  137. package/.yalc/@node-dlc/core/dist/dlc/finance/LongPut.js +47 -0
  138. package/.yalc/@node-dlc/core/dist/dlc/finance/LongPut.js.map +1 -0
  139. package/.yalc/@node-dlc/core/dist/dlc/finance/OptionInfo.d.ts +20 -0
  140. package/.yalc/@node-dlc/core/dist/dlc/finance/OptionInfo.js +101 -0
  141. package/.yalc/@node-dlc/core/dist/dlc/finance/OptionInfo.js.map +1 -0
  142. package/.yalc/@node-dlc/core/dist/dlc/finance/ShortPut.d.ts +12 -0
  143. package/.yalc/@node-dlc/core/dist/dlc/finance/ShortPut.js +46 -0
  144. package/.yalc/@node-dlc/core/dist/dlc/finance/ShortPut.js.map +1 -0
  145. package/.yalc/@node-dlc/core/dist/index.d.ts +39 -0
  146. package/.yalc/@node-dlc/core/dist/index.js +78 -0
  147. package/.yalc/@node-dlc/core/dist/index.js.map +1 -0
  148. package/.yalc/@node-dlc/core/dist/lightning/ChannelId.d.ts +31 -0
  149. package/.yalc/@node-dlc/core/dist/lightning/ChannelId.js +52 -0
  150. package/.yalc/@node-dlc/core/dist/lightning/ChannelId.js.map +1 -0
  151. package/.yalc/@node-dlc/core/dist/lightning/ChannelKeys.d.ts +55 -0
  152. package/.yalc/@node-dlc/core/dist/lightning/ChannelKeys.js +105 -0
  153. package/.yalc/@node-dlc/core/dist/lightning/ChannelKeys.js.map +1 -0
  154. package/.yalc/@node-dlc/core/dist/lightning/CommitmentNumber.d.ts +55 -0
  155. package/.yalc/@node-dlc/core/dist/lightning/CommitmentNumber.js +76 -0
  156. package/.yalc/@node-dlc/core/dist/lightning/CommitmentNumber.js.map +1 -0
  157. package/.yalc/@node-dlc/core/dist/lightning/CommitmentSecret.d.ts +26 -0
  158. package/.yalc/@node-dlc/core/dist/lightning/CommitmentSecret.js +44 -0
  159. package/.yalc/@node-dlc/core/dist/lightning/CommitmentSecret.js.map +1 -0
  160. package/.yalc/@node-dlc/core/dist/lightning/CommitmentSecretStore.d.ts +41 -0
  161. package/.yalc/@node-dlc/core/dist/lightning/CommitmentSecretStore.js +79 -0
  162. package/.yalc/@node-dlc/core/dist/lightning/CommitmentSecretStore.js.map +1 -0
  163. package/.yalc/@node-dlc/core/dist/lightning/Htlc.d.ts +46 -0
  164. package/.yalc/@node-dlc/core/dist/lightning/Htlc.js +46 -0
  165. package/.yalc/@node-dlc/core/dist/lightning/Htlc.js.map +1 -0
  166. package/.yalc/@node-dlc/core/dist/lightning/HtlcDirection.d.ts +16 -0
  167. package/.yalc/@node-dlc/core/dist/lightning/HtlcDirection.js +21 -0
  168. package/.yalc/@node-dlc/core/dist/lightning/HtlcDirection.js.map +1 -0
  169. package/.yalc/@node-dlc/core/dist/lightning/ScriptFactory.d.ts +76 -0
  170. package/.yalc/@node-dlc/core/dist/lightning/ScriptFactory.js +102 -0
  171. package/.yalc/@node-dlc/core/dist/lightning/ScriptFactory.js.map +1 -0
  172. package/.yalc/@node-dlc/core/dist/lightning/TxFactory.d.ts +83 -0
  173. package/.yalc/@node-dlc/core/dist/lightning/TxFactory.js +222 -0
  174. package/.yalc/@node-dlc/core/dist/lightning/TxFactory.js.map +1 -0
  175. package/.yalc/@node-dlc/core/dist/utils/BigIntUtils.d.ts +9 -0
  176. package/.yalc/@node-dlc/core/dist/utils/BigIntUtils.js +59 -0
  177. package/.yalc/@node-dlc/core/dist/utils/BigIntUtils.js.map +1 -0
  178. package/.yalc/@node-dlc/core/dist/utils/Precision.d.ts +13 -0
  179. package/.yalc/@node-dlc/core/dist/utils/Precision.js +28 -0
  180. package/.yalc/@node-dlc/core/dist/utils/Precision.js.map +1 -0
  181. package/.yalc/@node-dlc/core/lib/AsyncProcessingQueue.ts +63 -0
  182. package/.yalc/@node-dlc/core/lib/Base32.ts +2 -0
  183. package/.yalc/@node-dlc/core/lib/BigIntUtils.ts +2 -0
  184. package/.yalc/@node-dlc/core/lib/BitField.ts +2 -0
  185. package/.yalc/@node-dlc/core/lib/ChannelId.ts +2 -0
  186. package/.yalc/@node-dlc/core/lib/LinkedList.ts +111 -0
  187. package/.yalc/@node-dlc/core/lib/LinkedListNode.ts +14 -0
  188. package/.yalc/@node-dlc/core/lib/Queue.ts +36 -0
  189. package/.yalc/@node-dlc/core/lib/ShortChannelId.ts +2 -0
  190. package/.yalc/@node-dlc/core/lib/ShortChannelIdUtils.ts +9 -0
  191. package/.yalc/@node-dlc/core/lib/dlc/CETCalculator.ts +450 -0
  192. package/.yalc/@node-dlc/core/lib/dlc/CoinSelect.ts +117 -0
  193. package/.yalc/@node-dlc/core/lib/dlc/HyperbolaPayoutCurve.ts +188 -0
  194. package/.yalc/@node-dlc/core/lib/dlc/PayoutCurve.ts +6 -0
  195. package/.yalc/@node-dlc/core/lib/dlc/PolynomialPayoutCurve.ts +266 -0
  196. package/.yalc/@node-dlc/core/lib/dlc/TxBuilder.ts +336 -0
  197. package/.yalc/@node-dlc/core/lib/dlc/TxFinalizer.ts +217 -0
  198. package/.yalc/@node-dlc/core/lib/dlc/finance/Builder.ts +730 -0
  199. package/.yalc/@node-dlc/core/lib/dlc/finance/CoveredCall.ts +110 -0
  200. package/.yalc/@node-dlc/core/lib/dlc/finance/CsoInfo.ts +498 -0
  201. package/.yalc/@node-dlc/core/lib/dlc/finance/LinearPayout.ts +94 -0
  202. package/.yalc/@node-dlc/core/lib/dlc/finance/LongCall.ts +74 -0
  203. package/.yalc/@node-dlc/core/lib/dlc/finance/LongPut.ts +74 -0
  204. package/.yalc/@node-dlc/core/lib/dlc/finance/OptionInfo.ts +182 -0
  205. package/.yalc/@node-dlc/core/lib/dlc/finance/ShortPut.ts +75 -0
  206. package/.yalc/@node-dlc/core/lib/index.ts +66 -0
  207. package/.yalc/@node-dlc/core/lib/lightning/ChannelId.ts +54 -0
  208. package/.yalc/@node-dlc/core/lib/lightning/ChannelKeys.ts +109 -0
  209. package/.yalc/@node-dlc/core/lib/lightning/CommitmentNumber.ts +94 -0
  210. package/.yalc/@node-dlc/core/lib/lightning/CommitmentSecret.ts +41 -0
  211. package/.yalc/@node-dlc/core/lib/lightning/CommitmentSecretStore.ts +84 -0
  212. package/.yalc/@node-dlc/core/lib/lightning/Htlc.ts +52 -0
  213. package/.yalc/@node-dlc/core/lib/lightning/HtlcDirection.ts +17 -0
  214. package/.yalc/@node-dlc/core/lib/lightning/ScriptFactory.ts +150 -0
  215. package/.yalc/@node-dlc/core/lib/lightning/TxFactory.ts +338 -0
  216. package/.yalc/@node-dlc/core/lib/utils/BigIntUtils.ts +64 -0
  217. package/.yalc/@node-dlc/core/lib/utils/Precision.ts +23 -0
  218. package/.yalc/@node-dlc/core/package.json +38 -0
  219. package/.yalc/@node-dlc/core/tsconfig.json +8 -0
  220. package/.yalc/@node-dlc/core/yalc.sig +1 -0
  221. package/CHANGELOG.md +56 -5
  222. package/dist/BitcoinWalletProvider.d.ts +4 -2
  223. package/dist/BitcoinWalletProvider.js +1 -0
  224. package/dist/BitcoinWalletProvider.js.map +1 -1
  225. package/lib/BitcoinWalletProvider.ts +11 -3
  226. package/package.json +5 -5
  227. package/yalc.lock +10 -0
@@ -0,0 +1,146 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getFinalizerByCount = exports.getFinalizer = exports.DualClosingTxFinalizer = exports.DualFundingTxFinalizer = void 0;
4
+ const messaging_1 = require("@node-dlc/messaging");
5
+ const decimal_js_1 = require("decimal.js");
6
+ const BATCH_FUND_TX_BASE_WEIGHT = 42;
7
+ const FUNDING_OUTPUT_SIZE = 43;
8
+ class DualFundingTxFinalizer {
9
+ constructor(offerInputs, offerPayoutSPK, offerChangeSPK, acceptInputs, acceptPayoutSPK, acceptChangeSPK, feeRate, numContracts = 1) {
10
+ this.offerInputs = offerInputs;
11
+ this.offerPayoutSPK = offerPayoutSPK;
12
+ this.offerChangeSPK = offerChangeSPK;
13
+ this.acceptInputs = acceptInputs;
14
+ this.acceptPayoutSPK = acceptPayoutSPK;
15
+ this.acceptChangeSPK = acceptChangeSPK;
16
+ this.feeRate = feeRate;
17
+ this.numContracts = numContracts;
18
+ }
19
+ computeFees(_inputs, payoutSPK, changeSPK, numContracts) {
20
+ // If no inputs, return zero fees (matches C++ layer behavior for single-funded DLCs)
21
+ if (_inputs.length === 0) {
22
+ return { futureFee: BigInt(0), fundingFee: BigInt(0) };
23
+ }
24
+ _inputs.forEach((input) => {
25
+ if (input.type !== messaging_1.MessageType.FundingInput) {
26
+ console.error('input', input);
27
+ throw new Error('Input is not a funding input');
28
+ }
29
+ });
30
+ const inputs = _inputs.map((input) => input);
31
+ // https://github.com/discreetlogcontracts/dlcspecs/blob/8ee4bbe816c9881c832b1ce320b9f14c72e3506f/Transactions.md#expected-weight-of-the-contract-execution-or-refund-transaction
32
+ const futureFeeWeight = 249 + 4 * payoutSPK.length;
33
+ const futureFeeVBytes = new decimal_js_1.Decimal(futureFeeWeight)
34
+ .times(numContracts)
35
+ .div(4)
36
+ .ceil()
37
+ .toNumber();
38
+ const futureFee = this.feeRate * BigInt(futureFeeVBytes);
39
+ // https://github.com/discreetlogcontracts/dlcspecs/blob/8ee4bbe816c9881c832b1ce320b9f14c72e3506f/Transactions.md#expected-weight-of-the-funding-transaction
40
+ const inputWeight = inputs.reduce((total, input) => {
41
+ return total + 164 + input.maxWitnessLen + input.scriptSigLength();
42
+ }, 0);
43
+ const contractWeight = (BATCH_FUND_TX_BASE_WEIGHT + FUNDING_OUTPUT_SIZE * numContracts * 4) / 2;
44
+ const outputWeight = 36 + 4 * changeSPK.length + contractWeight;
45
+ const weight = outputWeight + inputWeight;
46
+ const vbytes = new decimal_js_1.Decimal(weight).div(4).ceil().toNumber();
47
+ const fundingFee = this.feeRate * BigInt(vbytes);
48
+ return { futureFee, fundingFee };
49
+ }
50
+ getOfferFees() {
51
+ return this.computeFees(this.offerInputs, this.offerPayoutSPK, this.offerChangeSPK, this.numContracts);
52
+ }
53
+ getAcceptFees() {
54
+ return this.computeFees(this.acceptInputs, this.acceptPayoutSPK, this.acceptChangeSPK, this.numContracts);
55
+ }
56
+ get offerFees() {
57
+ const { futureFee, fundingFee } = this.getOfferFees();
58
+ return futureFee + fundingFee;
59
+ }
60
+ get offerFutureFee() {
61
+ return this.getOfferFees().futureFee;
62
+ }
63
+ get offerFundingFee() {
64
+ return this.getOfferFees().fundingFee;
65
+ }
66
+ get acceptFees() {
67
+ const { futureFee, fundingFee } = this.getAcceptFees();
68
+ return futureFee + fundingFee;
69
+ }
70
+ get acceptFutureFee() {
71
+ return this.getAcceptFees().futureFee;
72
+ }
73
+ get acceptFundingFee() {
74
+ return this.getAcceptFees().fundingFee;
75
+ }
76
+ }
77
+ exports.DualFundingTxFinalizer = DualFundingTxFinalizer;
78
+ class DualClosingTxFinalizer {
79
+ constructor(initiatorInputs, offerPayoutSPK, acceptPayoutSPK, feeRate) {
80
+ this.initiatorInputs = initiatorInputs;
81
+ this.offerPayoutSPK = offerPayoutSPK;
82
+ this.acceptPayoutSPK = acceptPayoutSPK;
83
+ this.feeRate = feeRate;
84
+ }
85
+ computeFees(payoutSPK, _inputs = []) {
86
+ _inputs.forEach((input) => {
87
+ if (input.type !== messaging_1.MessageType.FundingInput)
88
+ throw new Error('Input is not a funding input');
89
+ });
90
+ const inputs = _inputs.map((input) => input);
91
+ // https://gist.github.com/matthewjablack/08c36baa513af9377508111405b22e03
92
+ const inputWeight = inputs.reduce((total, input) => {
93
+ return total + 164 + input.maxWitnessLen + input.scriptSigLength();
94
+ }, 0);
95
+ const outputWeight = 36 + 4 * payoutSPK.length;
96
+ const weight = 213 + outputWeight + inputWeight;
97
+ const vbytes = new decimal_js_1.Decimal(weight).div(4).ceil().toNumber();
98
+ const fee = this.feeRate * BigInt(vbytes);
99
+ return fee;
100
+ }
101
+ getOfferInitiatorFees() {
102
+ return this.computeFees(this.offerPayoutSPK, this.initiatorInputs);
103
+ }
104
+ getOfferReciprocatorFees() {
105
+ return this.computeFees(this.offerPayoutSPK);
106
+ }
107
+ getAcceptInitiatorFees() {
108
+ return this.computeFees(this.acceptPayoutSPK, this.initiatorInputs);
109
+ }
110
+ getAcceptReciprocatorFees() {
111
+ return this.computeFees(this.acceptPayoutSPK);
112
+ }
113
+ get offerInitiatorFees() {
114
+ return this.getOfferInitiatorFees();
115
+ }
116
+ get offerReciprocatorFees() {
117
+ return this.getOfferReciprocatorFees();
118
+ }
119
+ get acceptInitiatorFees() {
120
+ return this.getAcceptInitiatorFees();
121
+ }
122
+ get acceptReciprocatorFees() {
123
+ return this.getAcceptReciprocatorFees();
124
+ }
125
+ }
126
+ exports.DualClosingTxFinalizer = DualClosingTxFinalizer;
127
+ const getFinalizer = (feeRate, offerInputs, acceptInputs, numContracts) => {
128
+ const input = new messaging_1.FundingInput();
129
+ input.maxWitnessLen = 108;
130
+ input.redeemScript = Buffer.from('', 'hex');
131
+ const fakeSPK = Buffer.from('0014663117d27e78eb432505180654e603acb30e8a4a', 'hex');
132
+ offerInputs = offerInputs || Array.from({ length: 1 }, () => input);
133
+ acceptInputs = acceptInputs || Array.from({ length: 1 }, () => input);
134
+ return new DualFundingTxFinalizer(offerInputs, fakeSPK, fakeSPK, acceptInputs, fakeSPK, fakeSPK, feeRate, numContracts);
135
+ };
136
+ exports.getFinalizer = getFinalizer;
137
+ const getFinalizerByCount = (feeRate, numOfferInputs, numAcceptInputs, numContracts) => {
138
+ const input = new messaging_1.FundingInput();
139
+ input.maxWitnessLen = 108;
140
+ input.redeemScript = Buffer.from('', 'hex');
141
+ const offerInputs = Array.from({ length: numOfferInputs }, () => input);
142
+ const acceptInputs = Array.from({ length: numAcceptInputs }, () => input);
143
+ return (0, exports.getFinalizer)(feeRate, offerInputs, acceptInputs, numContracts);
144
+ };
145
+ exports.getFinalizerByCount = getFinalizerByCount;
146
+ //# sourceMappingURL=TxFinalizer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TxFinalizer.js","sourceRoot":"","sources":["../../lib/dlc/TxFinalizer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,193 @@
1
+ import { Value } from '@node-dlc/bitcoin';
2
+ import { DigitDecompositionEventDescriptorV0, OracleAnnouncement, OrderOffer, PayoutFunction, RoundingIntervals } from '@node-dlc/messaging';
3
+ import { BitcoinNetwork } from 'bitcoin-networks';
4
+ export declare const UNIT_MULTIPLIER: {
5
+ bits: bigint;
6
+ sats: bigint;
7
+ };
8
+ /**
9
+ * Round a number to the nearest multiple of a given multiplier.
10
+ *
11
+ * @param num - The number to be rounded.
12
+ * @param multiplier - The multiplier to round to.
13
+ * @returns The number rounded to the nearest multiple of the multiplier.
14
+ *
15
+ * @example
16
+ * ```typescript
17
+ * // Example: rounding to nearest 100
18
+ * const number = BigInt(354);
19
+ * const multiplier = BigInt(100);
20
+ * const roundedNumber = roundToNearestMultiplier(number, multiplier);
21
+ * console.log(roundedNumber); // Output: 300
22
+ * ```
23
+ */
24
+ export declare const roundToNearestMultiplier: (num: bigint, multiplier: bigint) => bigint;
25
+ /**
26
+ * Round a number up to the nearest multiple of a given multiplier.
27
+ *
28
+ * @param num - The number to be rounded.
29
+ * @param multiplier - The multiplier to round to.
30
+ * @returns The number rounded up to the nearest multiple of the multiplier.
31
+ *
32
+ * @example
33
+ * ```typescript
34
+ * // Example: rounding up to nearest 100
35
+ * const number = BigInt(354);
36
+ * const multiplier = BigInt(100);
37
+ * const roundedNumber = roundToNearestMultiplier(number, multiplier);
38
+ * console.log(roundedNumber); // Output: 400
39
+ * ```
40
+ */
41
+ export declare const roundUpToNearestMultiplier: (num: bigint, multiplier: bigint) => bigint;
42
+ export declare const roundDownToNearestMultiplier: (num: bigint, multiplier: bigint) => bigint;
43
+ export type DlcParty = 'offeror' | 'acceptor' | 'neither';
44
+ /**
45
+ * Compute rounding intervals for a linear or hyperbola payout curve
46
+ *
47
+ * @param {number | bigint | Value} rounding rounding interval in sats
48
+ * @param {number | bigint | Value} contractSize contract size in sats
49
+ * @returns rounding mod for contract size
50
+ */
51
+ export declare const computeRoundingModulus: (rounding: number | bigint | Value, contractSize: number | bigint | Value) => bigint;
52
+ /**
53
+ * Get digit decomposition event descriptor from oracle announcement
54
+ *
55
+ * @param {OracleAnnouncement} announcement oracle announcement
56
+ * @returns {DigitDecompositionEventDescriptorV0} event descriptor
57
+ */
58
+ export declare const getDigitDecompositionEventDescriptor: (announcement: OracleAnnouncement) => DigitDecompositionEventDescriptorV0;
59
+ /**
60
+ * Build an orderoffer for ContractDescriptorV1
61
+ *
62
+ * @param {OracleAnnouncement} announcement oracle announcement
63
+ * @param {bigint} totalCollateral total collateral in satoshis
64
+ * @param {bigint} offerCollateral offer collateral in satoshis
65
+ * @param {PayoutFunction} payoutFunction
66
+ * @param {RoundingIntervals} roundingIntervals
67
+ * @param {bigint} feePerByte sats/vbyte
68
+ * @param {NetworkName} network
69
+ * @returns {OrderOffer} Returns order offer
70
+ */
71
+ export declare const buildOrderOffer: (announcement: OracleAnnouncement, totalCollateral: bigint, offerCollateral: bigint, payoutFunction: PayoutFunction, roundingIntervals: RoundingIntervals, feePerByte: bigint, network: string) => OrderOffer;
72
+ /**
73
+ * Builds an order offer for a covered call or short put
74
+ *
75
+ * @param {OracleAnnouncement} announcement oracle announcement
76
+ * @param {number} contractSize contract size in satoshis
77
+ * @param {number} strikePrice strike price of contract
78
+ * @param {number} premium premium of contract in satoshis
79
+ * @param {number | bigint} feePerByte sats/vbyte
80
+ * @param {number} rounding rounding interval
81
+ * @param {string} network bitcoin network type
82
+ * @param {string} type call or put
83
+ * @param {number} _totalCollateral total collateral in satoshis (applicable only for short put)
84
+ * @returns {OrderOffer} Returns order offer
85
+ */
86
+ export declare const buildOptionOrderOffer: (announcement: OracleAnnouncement, contractSize: Value, strikePrice: number, premium: Value, feePerByte: number | bigint, rounding: number, network: string, type: 'call' | 'put', direction: 'long' | 'short', _totalCollateral?: Value) => OrderOffer;
87
+ /**
88
+ * Builds an order offer for a covered call
89
+ *
90
+ * @param {OracleAnnouncement} announcement oracle announcement
91
+ * @param {number} contractSize contract size in satoshis
92
+ * @param {number} strikePrice strike price of contract
93
+ * @param {number} premium premium of contract in satoshis
94
+ * @param {number} feePerByte sats/vbyte
95
+ * @param {number} rounding rounding interval
96
+ * @param {string} network bitcoin network type
97
+ * @returns {OrderOffer} Returns order offer
98
+ */
99
+ export declare const buildCoveredCallOrderOffer: (announcement: OracleAnnouncement, contractSize: Value, strikePrice: number, premium: Value, feePerByte: number, rounding: number, network: string) => OrderOffer;
100
+ /**
101
+ * Builds an order offer for a short put
102
+ *
103
+ * @param {OracleAnnouncement} announcement oracle announcement
104
+ * @param {number} contractSize contract size in satoshis
105
+ * @param {number} strikePrice strike price of contract
106
+ * @param {number} totalCollateral total collateral in satoshis
107
+ * @param {number} premium premium of contract in satoshis
108
+ * @param {number} feePerByte sats/vbyte
109
+ * @param {number} rounding rounding interval
110
+ * @param {string} network bitcoin network type
111
+ * @returns {OrderOffer} Returns order offer
112
+ */
113
+ export declare const buildShortPutOrderOffer: (announcement: OracleAnnouncement, contractSize: Value, strikePrice: number, totalCollateral: Value, premium: Value, feePerByte: number, rounding: number, network: string) => OrderOffer;
114
+ /**
115
+ * Builds an order offer for a long call
116
+ *
117
+ * @param {OracleAnnouncement} announcement oracle announcement
118
+ * @param {number} contractSize contract size in satoshis
119
+ * @param {number} strikePrice strike price of contract
120
+ * @param {number} maxGain maximum amount that can be gained (totalCollateral)
121
+ * @param {number} premium premium of contract in satoshis
122
+ * @param {number} feePerByte sats/vbyte
123
+ * @param {number} rounding rounding interval
124
+ * @param {string} network bitcoin network type
125
+ * @returns {OrderOffer} Returns order offer
126
+ */
127
+ export declare const buildLongCallOrderOffer: (announcement: OracleAnnouncement, contractSize: Value, strikePrice: number, maxGain: Value, premium: Value, feePerByte: number, rounding: number, network: string) => OrderOffer;
128
+ /**
129
+ * Builds an order offer for a long put
130
+ *
131
+ * @param {OracleAnnouncement} announcement oracle announcement
132
+ * @param {number} contractSize contract size in satoshis
133
+ * @param {number} strikePrice strike price of contract
134
+ * @param {number} maxGain maximum amount that can be gained (totalCollateral)
135
+ * @param {number} premium premium of contract in satoshis
136
+ * @param {number} feePerByte sats/vbyte
137
+ * @param {number} rounding rounding interval
138
+ * @param {string} network bitcoin network type
139
+ * @returns {OrderOffer} Returns order offer
140
+ */
141
+ export declare const buildLongPutOrderOffer: (announcement: OracleAnnouncement, contractSize: Value, strikePrice: number, maxGain: Value, premium: Value, feePerByte: number, rounding: number, network: string) => OrderOffer;
142
+ /**
143
+ * Builds an order offer for a linear curve
144
+ *
145
+ * @param {OracleAnnouncement} announcement oracle announcement
146
+ * @param {Value} offerCollateral offer collateral amount
147
+ * @param {Value} minPayout minimum payout
148
+ * @param {Value} maxPayout maximum payout (also total collateral)
149
+ * @param {bigint} startOutcome oracle outcome (in bits or sats)
150
+ * @param {bigint} endOutcome oracle outcome (in bits or sats)
151
+ * @param {bigint} feePerByte sats/vbyte
152
+ * @param {Value} rounding rounding mod for RoundingInterval
153
+ * @param {BitcoinNetwork} network bitcoin, bitcoin_testnet or bitcoin_regtest
154
+ * @param {DlcParty} [shiftForFees] shift for offerer, acceptor or neither (who should pay fees)
155
+ * @param {Value} [fees] fees to shift
156
+ * @returns {OrderOffer}
157
+ */
158
+ export declare const buildLinearOrderOffer: (announcement: OracleAnnouncement, offerCollateral: Value, minPayout: Value, maxPayout: Value, startOutcome: bigint, endOutcome: bigint, feePerByte: bigint, roundingIntervals: RoundingIntervals, network: BitcoinNetwork, shiftForFees?: DlcParty, fees?: Value) => OrderOffer;
159
+ /**
160
+ * Builds a custom strategy order offer
161
+ *
162
+ * Calculates offer fees
163
+ * calculates the minimum max gain
164
+ * maxLoss and maxGain are normalized to 1 BTC contracts
165
+ *
166
+ * shiftForFees 'offeror' means 'offeror' pays network fees
167
+ * shiftForFees 'acceptor' means 'acceptor' pays network fees
168
+ *
169
+ * numContracts refers to the number of DLCs in the funding transaction
170
+ * if it's not a batch dlc funding transaction, then this is not relevant
171
+ *
172
+ * @param {OracleAnnouncement} announcement oracle announcement
173
+ * @param {Value} contractSize contract size
174
+ * @param {Value} normalizedMaxLoss maximum amount that can be lost based on 1 BTC contract
175
+ * @param {Value} normalizedMaxGain maximum amount that can be gained based on 1 BTC contract
176
+ * @param {bigint} feePerByte sats/vbyte
177
+ * @param {Value} roundingIntervals rounding mod for RoundingInterval
178
+ * @param {BitcoinNetwork} network bitcoin, bitcoin_testnet or bitcoin_regtest
179
+ * @param {DlcParty} [shiftForFees] shift for offerer, acceptor or neither
180
+ * @param {Value} [fees_] fees to shift
181
+ * @param {Value} [collateral] collateral to use
182
+ * @param {number} [numOfferInputs] number of inputs to use
183
+ * @param {number} [numContracts] number of DLCs in the funding transaction
184
+ *
185
+ * @returns {OrderOffer}
186
+ */
187
+ export declare const buildCustomStrategyOrderOffer: (announcement: OracleAnnouncement, contractSize: Value, normalizedMaxLoss: Value, normalizedMaxGain: Value, feePerByte: bigint, roundingIntervals: RoundingIntervals, network: BitcoinNetwork, shiftForFees?: DlcParty, fees_?: Value, collateral?: Value, numOfferInputs?: number, numContracts?: number, skipValidation?: boolean) => OrderOffer;
188
+ interface IInterval {
189
+ beginInterval: bigint;
190
+ rounding: number | bigint | Value;
191
+ }
192
+ export declare const buildRoundingIntervalsFromIntervals: (contractSize: Value, intervals: IInterval[]) => RoundingIntervals;
193
+ export {};