@atomiqlabs/sdk 8.7.7 → 8.8.4

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 (339) hide show
  1. package/LICENSE +201 -201
  2. package/README.md +1760 -1760
  3. package/dist/SmartChainAssets.d.ts +181 -181
  4. package/dist/SmartChainAssets.js +181 -181
  5. package/dist/bitcoin/coinselect2/accumulative.d.ts +7 -6
  6. package/dist/bitcoin/coinselect2/accumulative.js +52 -52
  7. package/dist/bitcoin/coinselect2/blackjack.d.ts +7 -6
  8. package/dist/bitcoin/coinselect2/blackjack.js +38 -38
  9. package/dist/bitcoin/coinselect2/index.d.ts +20 -19
  10. package/dist/bitcoin/coinselect2/index.js +69 -69
  11. package/dist/bitcoin/coinselect2/utils.d.ts +82 -77
  12. package/dist/bitcoin/coinselect2/utils.js +158 -123
  13. package/dist/bitcoin/wallet/BitcoinWallet.d.ts +113 -130
  14. package/dist/bitcoin/wallet/BitcoinWallet.js +335 -322
  15. package/dist/bitcoin/wallet/IBitcoinWallet.d.ts +116 -78
  16. package/dist/bitcoin/wallet/IBitcoinWallet.js +21 -21
  17. package/dist/bitcoin/wallet/SingleAddressBitcoinWallet.d.ts +106 -101
  18. package/dist/bitcoin/wallet/SingleAddressBitcoinWallet.js +196 -190
  19. package/dist/enums/FeeType.d.ts +15 -15
  20. package/dist/enums/FeeType.js +19 -19
  21. package/dist/enums/SwapAmountType.d.ts +15 -15
  22. package/dist/enums/SwapAmountType.js +19 -19
  23. package/dist/enums/SwapDirection.d.ts +15 -15
  24. package/dist/enums/SwapDirection.js +19 -19
  25. package/dist/enums/SwapSide.d.ts +15 -15
  26. package/dist/enums/SwapSide.js +19 -19
  27. package/dist/enums/SwapType.d.ts +75 -75
  28. package/dist/enums/SwapType.js +79 -79
  29. package/dist/errors/IntermediaryError.d.ts +13 -13
  30. package/dist/errors/IntermediaryError.js +27 -27
  31. package/dist/errors/RequestError.d.ts +32 -32
  32. package/dist/errors/RequestError.js +54 -54
  33. package/dist/errors/UserError.d.ts +8 -8
  34. package/dist/errors/UserError.js +16 -16
  35. package/dist/events/UnifiedSwapEventListener.d.ts +23 -23
  36. package/dist/events/UnifiedSwapEventListener.js +132 -132
  37. package/dist/http/HttpUtils.d.ts +27 -27
  38. package/dist/http/HttpUtils.js +91 -91
  39. package/dist/http/paramcoders/IParamReader.d.ts +8 -8
  40. package/dist/http/paramcoders/IParamReader.js +2 -2
  41. package/dist/http/paramcoders/ParamDecoder.d.ts +44 -44
  42. package/dist/http/paramcoders/ParamDecoder.js +137 -137
  43. package/dist/http/paramcoders/ParamEncoder.d.ts +20 -20
  44. package/dist/http/paramcoders/ParamEncoder.js +36 -36
  45. package/dist/http/paramcoders/SchemaVerifier.d.ts +26 -26
  46. package/dist/http/paramcoders/SchemaVerifier.js +145 -145
  47. package/dist/http/paramcoders/client/ResponseParamDecoder.d.ts +11 -11
  48. package/dist/http/paramcoders/client/ResponseParamDecoder.js +57 -57
  49. package/dist/http/paramcoders/client/StreamParamEncoder.d.ts +13 -13
  50. package/dist/http/paramcoders/client/StreamParamEncoder.js +26 -26
  51. package/dist/http/paramcoders/client/StreamingFetchPromise.d.ts +16 -16
  52. package/dist/http/paramcoders/client/StreamingFetchPromise.js +174 -174
  53. package/dist/index.d.ts +85 -85
  54. package/dist/index.js +158 -158
  55. package/dist/intermediaries/Intermediary.d.ts +178 -178
  56. package/dist/intermediaries/Intermediary.js +166 -166
  57. package/dist/intermediaries/IntermediaryDiscovery.d.ts +211 -211
  58. package/dist/intermediaries/IntermediaryDiscovery.js +424 -424
  59. package/dist/intermediaries/apis/IntermediaryAPI.d.ts +450 -440
  60. package/dist/intermediaries/apis/IntermediaryAPI.js +618 -603
  61. package/dist/intermediaries/apis/TrustedIntermediaryAPI.d.ts +155 -155
  62. package/dist/intermediaries/apis/TrustedIntermediaryAPI.js +137 -137
  63. package/dist/lnurl/LNURL.d.ts +102 -102
  64. package/dist/lnurl/LNURL.js +321 -321
  65. package/dist/prices/RedundantSwapPrice.d.ts +110 -110
  66. package/dist/prices/RedundantSwapPrice.js +222 -222
  67. package/dist/prices/SingleSwapPrice.d.ts +34 -34
  68. package/dist/prices/SingleSwapPrice.js +44 -44
  69. package/dist/prices/SwapPriceWithChain.d.ts +107 -107
  70. package/dist/prices/SwapPriceWithChain.js +128 -128
  71. package/dist/prices/abstract/ICachedSwapPrice.d.ts +28 -28
  72. package/dist/prices/abstract/ICachedSwapPrice.js +62 -62
  73. package/dist/prices/abstract/IPriceProvider.d.ts +81 -81
  74. package/dist/prices/abstract/IPriceProvider.js +74 -74
  75. package/dist/prices/abstract/ISwapPrice.d.ts +168 -168
  76. package/dist/prices/abstract/ISwapPrice.js +279 -279
  77. package/dist/prices/providers/BinancePriceProvider.d.ts +23 -23
  78. package/dist/prices/providers/BinancePriceProvider.js +30 -30
  79. package/dist/prices/providers/CoinGeckoPriceProvider.d.ts +23 -23
  80. package/dist/prices/providers/CoinGeckoPriceProvider.js +29 -29
  81. package/dist/prices/providers/CoinPaprikaPriceProvider.d.ts +25 -25
  82. package/dist/prices/providers/CoinPaprikaPriceProvider.js +29 -29
  83. package/dist/prices/providers/CustomPriceProvider.d.ts +24 -24
  84. package/dist/prices/providers/CustomPriceProvider.js +35 -35
  85. package/dist/prices/providers/KrakenPriceProvider.d.ts +38 -38
  86. package/dist/prices/providers/KrakenPriceProvider.js +45 -45
  87. package/dist/prices/providers/OKXPriceProvider.d.ts +34 -34
  88. package/dist/prices/providers/OKXPriceProvider.js +29 -29
  89. package/dist/prices/providers/abstract/ExchangePriceProvider.d.ts +17 -17
  90. package/dist/prices/providers/abstract/ExchangePriceProvider.js +21 -21
  91. package/dist/prices/providers/abstract/HttpPriceProvider.d.ts +7 -7
  92. package/dist/prices/providers/abstract/HttpPriceProvider.js +12 -12
  93. package/dist/storage/IUnifiedStorage.d.ts +85 -85
  94. package/dist/storage/IUnifiedStorage.js +2 -2
  95. package/dist/storage/UnifiedSwapStorage.d.ts +114 -114
  96. package/dist/storage/UnifiedSwapStorage.js +116 -116
  97. package/dist/storage-browser/IndexedDBUnifiedStorage.d.ts +63 -63
  98. package/dist/storage-browser/IndexedDBUnifiedStorage.js +298 -298
  99. package/dist/storage-browser/LocalStorageManager.d.ts +49 -49
  100. package/dist/storage-browser/LocalStorageManager.js +93 -93
  101. package/dist/swapper/Swapper.d.ts +732 -692
  102. package/dist/swapper/Swapper.js +1713 -1657
  103. package/dist/swapper/SwapperFactory.d.ts +135 -135
  104. package/dist/swapper/SwapperFactory.js +162 -162
  105. package/dist/swapper/SwapperUtils.d.ts +206 -206
  106. package/dist/swapper/SwapperUtils.js +481 -481
  107. package/dist/swapper/SwapperWithChain.d.ts +404 -404
  108. package/dist/swapper/SwapperWithChain.js +469 -469
  109. package/dist/swapper/SwapperWithSigner.d.ts +322 -322
  110. package/dist/swapper/SwapperWithSigner.js +318 -318
  111. package/dist/swaps/IAddressSwap.d.ts +22 -22
  112. package/dist/swaps/IAddressSwap.js +14 -14
  113. package/dist/swaps/IBTCWalletSwap.d.ts +73 -73
  114. package/dist/swaps/IBTCWalletSwap.js +18 -18
  115. package/dist/swaps/IClaimableSwap.d.ts +49 -49
  116. package/dist/swaps/IClaimableSwap.js +15 -15
  117. package/dist/swaps/IClaimableSwapWrapper.d.ts +15 -15
  118. package/dist/swaps/IClaimableSwapWrapper.js +2 -2
  119. package/dist/swaps/IRefundableSwap.d.ts +43 -43
  120. package/dist/swaps/IRefundableSwap.js +14 -14
  121. package/dist/swaps/ISwap.d.ts +392 -392
  122. package/dist/swaps/ISwap.js +349 -349
  123. package/dist/swaps/ISwapWithGasDrop.d.ts +21 -21
  124. package/dist/swaps/ISwapWithGasDrop.js +12 -12
  125. package/dist/swaps/ISwapWrapper.d.ts +285 -285
  126. package/dist/swaps/ISwapWrapper.js +353 -353
  127. package/dist/swaps/escrow_swaps/IEscrowSelfInitSwap.d.ts +98 -98
  128. package/dist/swaps/escrow_swaps/IEscrowSelfInitSwap.js +126 -126
  129. package/dist/swaps/escrow_swaps/IEscrowSwap.d.ts +139 -139
  130. package/dist/swaps/escrow_swaps/IEscrowSwap.js +170 -170
  131. package/dist/swaps/escrow_swaps/IEscrowSwapWrapper.d.ts +128 -128
  132. package/dist/swaps/escrow_swaps/IEscrowSwapWrapper.js +167 -167
  133. package/dist/swaps/escrow_swaps/frombtc/IFromBTCLNWrapper.d.ts +105 -105
  134. package/dist/swaps/escrow_swaps/frombtc/IFromBTCLNWrapper.js +129 -129
  135. package/dist/swaps/escrow_swaps/frombtc/IFromBTCSelfInitSwap.d.ts +162 -162
  136. package/dist/swaps/escrow_swaps/frombtc/IFromBTCSelfInitSwap.js +190 -190
  137. package/dist/swaps/escrow_swaps/frombtc/IFromBTCWrapper.d.ts +64 -64
  138. package/dist/swaps/escrow_swaps/frombtc/IFromBTCWrapper.js +82 -82
  139. package/dist/swaps/escrow_swaps/frombtc/ln/FromBTCLNSwap.d.ts +531 -531
  140. package/dist/swaps/escrow_swaps/frombtc/ln/FromBTCLNSwap.js +1285 -1285
  141. package/dist/swaps/escrow_swaps/frombtc/ln/FromBTCLNWrapper.d.ts +190 -190
  142. package/dist/swaps/escrow_swaps/frombtc/ln/FromBTCLNWrapper.js +432 -432
  143. package/dist/swaps/escrow_swaps/frombtc/ln_auto/FromBTCLNAutoSwap.d.ts +583 -583
  144. package/dist/swaps/escrow_swaps/frombtc/ln_auto/FromBTCLNAutoSwap.js +1371 -1371
  145. package/dist/swaps/escrow_swaps/frombtc/ln_auto/FromBTCLNAutoWrapper.d.ts +235 -235
  146. package/dist/swaps/escrow_swaps/frombtc/ln_auto/FromBTCLNAutoWrapper.js +525 -525
  147. package/dist/swaps/escrow_swaps/frombtc/onchain/FromBTCSwap.d.ts +458 -458
  148. package/dist/swaps/escrow_swaps/frombtc/onchain/FromBTCSwap.js +1126 -1126
  149. package/dist/swaps/escrow_swaps/frombtc/onchain/FromBTCWrapper.d.ts +202 -202
  150. package/dist/swaps/escrow_swaps/frombtc/onchain/FromBTCWrapper.js +406 -406
  151. package/dist/swaps/escrow_swaps/tobtc/IToBTCSwap.d.ts +403 -403
  152. package/dist/swaps/escrow_swaps/tobtc/IToBTCSwap.js +924 -924
  153. package/dist/swaps/escrow_swaps/tobtc/IToBTCWrapper.d.ts +68 -68
  154. package/dist/swaps/escrow_swaps/tobtc/IToBTCWrapper.js +117 -117
  155. package/dist/swaps/escrow_swaps/tobtc/ln/ToBTCLNSwap.d.ts +127 -127
  156. package/dist/swaps/escrow_swaps/tobtc/ln/ToBTCLNSwap.js +256 -256
  157. package/dist/swaps/escrow_swaps/tobtc/ln/ToBTCLNWrapper.d.ts +251 -251
  158. package/dist/swaps/escrow_swaps/tobtc/ln/ToBTCLNWrapper.js +536 -536
  159. package/dist/swaps/escrow_swaps/tobtc/onchain/ToBTCSwap.d.ts +73 -73
  160. package/dist/swaps/escrow_swaps/tobtc/onchain/ToBTCSwap.js +155 -155
  161. package/dist/swaps/escrow_swaps/tobtc/onchain/ToBTCWrapper.d.ts +132 -132
  162. package/dist/swaps/escrow_swaps/tobtc/onchain/ToBTCWrapper.js +286 -286
  163. package/dist/swaps/spv_swaps/SpvFromBTCSwap.d.ts +637 -631
  164. package/dist/swaps/spv_swaps/SpvFromBTCSwap.js +1448 -1444
  165. package/dist/swaps/spv_swaps/SpvFromBTCWrapper.d.ts +257 -225
  166. package/dist/swaps/spv_swaps/SpvFromBTCWrapper.js +947 -822
  167. package/dist/swaps/trusted/ln/LnForGasSwap.d.ts +261 -261
  168. package/dist/swaps/trusted/ln/LnForGasSwap.js +511 -511
  169. package/dist/swaps/trusted/ln/LnForGasWrapper.d.ts +40 -40
  170. package/dist/swaps/trusted/ln/LnForGasWrapper.js +83 -83
  171. package/dist/swaps/trusted/onchain/OnchainForGasSwap.d.ts +342 -342
  172. package/dist/swaps/trusted/onchain/OnchainForGasSwap.js +715 -715
  173. package/dist/swaps/trusted/onchain/OnchainForGasWrapper.d.ts +69 -69
  174. package/dist/swaps/trusted/onchain/OnchainForGasWrapper.js +93 -93
  175. package/dist/types/AmountData.d.ts +10 -10
  176. package/dist/types/AmountData.js +2 -2
  177. package/dist/types/CustomPriceFunction.d.ts +11 -11
  178. package/dist/types/CustomPriceFunction.js +2 -2
  179. package/dist/types/PriceInfoType.d.ts +28 -28
  180. package/dist/types/PriceInfoType.js +57 -57
  181. package/dist/types/SwapExecutionAction.d.ts +88 -88
  182. package/dist/types/SwapExecutionAction.js +2 -2
  183. package/dist/types/SwapStateInfo.d.ts +5 -5
  184. package/dist/types/SwapStateInfo.js +2 -2
  185. package/dist/types/SwapWithSigner.d.ts +17 -17
  186. package/dist/types/SwapWithSigner.js +43 -43
  187. package/dist/types/Token.d.ts +99 -99
  188. package/dist/types/Token.js +76 -76
  189. package/dist/types/TokenAmount.d.ts +69 -69
  190. package/dist/types/TokenAmount.js +60 -60
  191. package/dist/types/fees/Fee.d.ts +50 -50
  192. package/dist/types/fees/Fee.js +2 -2
  193. package/dist/types/fees/FeeBreakdown.d.ts +11 -11
  194. package/dist/types/fees/FeeBreakdown.js +2 -2
  195. package/dist/types/fees/PercentagePPM.d.ts +17 -17
  196. package/dist/types/fees/PercentagePPM.js +18 -18
  197. package/dist/types/lnurl/LNURLPay.d.ts +61 -61
  198. package/dist/types/lnurl/LNURLPay.js +31 -31
  199. package/dist/types/lnurl/LNURLWithdraw.d.ts +48 -48
  200. package/dist/types/lnurl/LNURLWithdraw.js +27 -27
  201. package/dist/types/wallets/LightningInvoiceCreateService.d.ts +24 -24
  202. package/dist/types/wallets/LightningInvoiceCreateService.js +15 -15
  203. package/dist/types/wallets/MinimalBitcoinWalletInterface.d.ts +23 -23
  204. package/dist/types/wallets/MinimalBitcoinWalletInterface.js +2 -2
  205. package/dist/types/wallets/MinimalLightningNetworkWalletInterface.d.ts +9 -9
  206. package/dist/types/wallets/MinimalLightningNetworkWalletInterface.js +2 -2
  207. package/dist/utils/AutomaticClockDriftCorrection.d.ts +1 -1
  208. package/dist/utils/AutomaticClockDriftCorrection.js +70 -70
  209. package/dist/utils/BitcoinUtils.d.ts +16 -14
  210. package/dist/utils/BitcoinUtils.js +141 -102
  211. package/dist/utils/BitcoinWalletUtils.d.ts +7 -7
  212. package/dist/utils/BitcoinWalletUtils.js +14 -14
  213. package/dist/utils/Logger.d.ts +7 -7
  214. package/dist/utils/Logger.js +12 -12
  215. package/dist/utils/RetryUtils.d.ts +22 -22
  216. package/dist/utils/RetryUtils.js +67 -67
  217. package/dist/utils/SwapUtils.d.ts +88 -88
  218. package/dist/utils/SwapUtils.js +72 -72
  219. package/dist/utils/TimeoutUtils.d.ts +17 -17
  220. package/dist/utils/TimeoutUtils.js +55 -55
  221. package/dist/utils/TokenUtils.d.ts +19 -19
  222. package/dist/utils/TokenUtils.js +37 -37
  223. package/dist/utils/TypeUtils.d.ts +7 -7
  224. package/dist/utils/TypeUtils.js +2 -2
  225. package/dist/utils/Utils.d.ts +67 -67
  226. package/dist/utils/Utils.js +208 -208
  227. package/package.json +43 -43
  228. package/src/SmartChainAssets.ts +186 -186
  229. package/src/bitcoin/coinselect2/accumulative.ts +69 -68
  230. package/src/bitcoin/coinselect2/blackjack.ts +50 -49
  231. package/src/bitcoin/coinselect2/index.ts +93 -92
  232. package/src/bitcoin/coinselect2/utils.ts +236 -195
  233. package/src/bitcoin/wallet/BitcoinWallet.ts +439 -427
  234. package/src/bitcoin/wallet/IBitcoinWallet.ts +140 -99
  235. package/src/bitcoin/wallet/SingleAddressBitcoinWallet.ts +225 -217
  236. package/src/enums/FeeType.ts +15 -15
  237. package/src/enums/SwapAmountType.ts +16 -16
  238. package/src/enums/SwapDirection.ts +15 -15
  239. package/src/enums/SwapSide.ts +16 -16
  240. package/src/enums/SwapType.ts +75 -75
  241. package/src/errors/IntermediaryError.ts +28 -28
  242. package/src/errors/RequestError.ts +64 -64
  243. package/src/errors/UserError.ts +15 -15
  244. package/src/events/UnifiedSwapEventListener.ts +173 -173
  245. package/src/http/HttpUtils.ts +91 -91
  246. package/src/http/paramcoders/IParamReader.ts +9 -9
  247. package/src/http/paramcoders/ParamDecoder.ts +145 -145
  248. package/src/http/paramcoders/ParamEncoder.ts +40 -40
  249. package/src/http/paramcoders/SchemaVerifier.ts +153 -153
  250. package/src/http/paramcoders/client/ResponseParamDecoder.ts +57 -57
  251. package/src/http/paramcoders/client/StreamParamEncoder.ts +28 -28
  252. package/src/http/paramcoders/client/StreamingFetchPromise.ts +192 -192
  253. package/src/index.ts +140 -140
  254. package/src/intermediaries/Intermediary.ts +280 -280
  255. package/src/intermediaries/IntermediaryDiscovery.ts +541 -541
  256. package/src/intermediaries/apis/IntermediaryAPI.ts +963 -947
  257. package/src/intermediaries/apis/TrustedIntermediaryAPI.ts +257 -257
  258. package/src/lnurl/LNURL.ts +402 -402
  259. package/src/prices/RedundantSwapPrice.ts +264 -264
  260. package/src/prices/SingleSwapPrice.ts +50 -50
  261. package/src/prices/SwapPriceWithChain.ts +194 -194
  262. package/src/prices/abstract/ICachedSwapPrice.ts +85 -85
  263. package/src/prices/abstract/IPriceProvider.ts +127 -127
  264. package/src/prices/abstract/ISwapPrice.ts +390 -390
  265. package/src/prices/providers/BinancePriceProvider.ts +48 -48
  266. package/src/prices/providers/CoinGeckoPriceProvider.ts +46 -46
  267. package/src/prices/providers/CoinPaprikaPriceProvider.ts +49 -49
  268. package/src/prices/providers/CustomPriceProvider.ts +40 -40
  269. package/src/prices/providers/KrakenPriceProvider.ts +83 -83
  270. package/src/prices/providers/OKXPriceProvider.ts +59 -59
  271. package/src/prices/providers/abstract/ExchangePriceProvider.ts +31 -31
  272. package/src/prices/providers/abstract/HttpPriceProvider.ts +14 -14
  273. package/src/storage/IUnifiedStorage.ts +95 -95
  274. package/src/storage/UnifiedSwapStorage.ts +141 -141
  275. package/src/storage-browser/IndexedDBUnifiedStorage.ts +350 -350
  276. package/src/storage-browser/LocalStorageManager.ts +106 -106
  277. package/src/swapper/Swapper.ts +2488 -2416
  278. package/src/swapper/SwapperFactory.ts +307 -307
  279. package/src/swapper/SwapperUtils.ts +570 -570
  280. package/src/swapper/SwapperWithChain.ts +707 -707
  281. package/src/swapper/SwapperWithSigner.ts +511 -511
  282. package/src/swaps/IAddressSwap.ts +30 -30
  283. package/src/swaps/IBTCWalletSwap.ts +92 -92
  284. package/src/swaps/IClaimableSwap.ts +65 -65
  285. package/src/swaps/IClaimableSwapWrapper.ts +17 -17
  286. package/src/swaps/IRefundableSwap.ts +58 -58
  287. package/src/swaps/ISwap.ts +703 -703
  288. package/src/swaps/ISwapWithGasDrop.ts +25 -25
  289. package/src/swaps/ISwapWrapper.ts +539 -539
  290. package/src/swaps/escrow_swaps/IEscrowSelfInitSwap.ts +217 -217
  291. package/src/swaps/escrow_swaps/IEscrowSwap.ts +269 -269
  292. package/src/swaps/escrow_swaps/IEscrowSwapWrapper.ts +282 -282
  293. package/src/swaps/escrow_swaps/frombtc/IFromBTCLNWrapper.ts +169 -169
  294. package/src/swaps/escrow_swaps/frombtc/IFromBTCSelfInitSwap.ts +300 -300
  295. package/src/swaps/escrow_swaps/frombtc/IFromBTCWrapper.ts +107 -107
  296. package/src/swaps/escrow_swaps/frombtc/ln/FromBTCLNSwap.ts +1473 -1474
  297. package/src/swaps/escrow_swaps/frombtc/ln/FromBTCLNWrapper.ts +601 -601
  298. package/src/swaps/escrow_swaps/frombtc/ln_auto/FromBTCLNAutoSwap.ts +1582 -1582
  299. package/src/swaps/escrow_swaps/frombtc/ln_auto/FromBTCLNAutoWrapper.ts +750 -750
  300. package/src/swaps/escrow_swaps/frombtc/onchain/FromBTCSwap.ts +1299 -1299
  301. package/src/swaps/escrow_swaps/frombtc/onchain/FromBTCWrapper.ts +610 -610
  302. package/src/swaps/escrow_swaps/tobtc/IToBTCSwap.ts +1096 -1096
  303. package/src/swaps/escrow_swaps/tobtc/IToBTCWrapper.ts +138 -138
  304. package/src/swaps/escrow_swaps/tobtc/ln/ToBTCLNSwap.ts +304 -304
  305. package/src/swaps/escrow_swaps/tobtc/ln/ToBTCLNWrapper.ts +786 -786
  306. package/src/swaps/escrow_swaps/tobtc/onchain/ToBTCSwap.ts +206 -206
  307. package/src/swaps/escrow_swaps/tobtc/onchain/ToBTCWrapper.ts +401 -401
  308. package/src/swaps/spv_swaps/SpvFromBTCSwap.ts +1812 -1799
  309. package/src/swaps/spv_swaps/SpvFromBTCWrapper.ts +1236 -1060
  310. package/src/swaps/trusted/ln/LnForGasSwap.ts +589 -589
  311. package/src/swaps/trusted/ln/LnForGasWrapper.ts +91 -91
  312. package/src/swaps/trusted/onchain/OnchainForGasSwap.ts +862 -862
  313. package/src/swaps/trusted/onchain/OnchainForGasWrapper.ts +131 -131
  314. package/src/types/AmountData.ts +9 -9
  315. package/src/types/CustomPriceFunction.ts +11 -11
  316. package/src/types/PriceInfoType.ts +66 -66
  317. package/src/types/SwapExecutionAction.ts +99 -99
  318. package/src/types/SwapStateInfo.ts +6 -6
  319. package/src/types/SwapWithSigner.ts +61 -61
  320. package/src/types/Token.ts +163 -163
  321. package/src/types/TokenAmount.ts +132 -132
  322. package/src/types/fees/Fee.ts +56 -56
  323. package/src/types/fees/FeeBreakdown.ts +11 -11
  324. package/src/types/fees/PercentagePPM.ts +26 -26
  325. package/src/types/lnurl/LNURLPay.ts +79 -79
  326. package/src/types/lnurl/LNURLWithdraw.ts +61 -61
  327. package/src/types/wallets/LightningInvoiceCreateService.ts +30 -30
  328. package/src/types/wallets/MinimalBitcoinWalletInterface.ts +21 -21
  329. package/src/types/wallets/MinimalLightningNetworkWalletInterface.ts +9 -9
  330. package/src/utils/AutomaticClockDriftCorrection.ts +71 -71
  331. package/src/utils/BitcoinUtils.ts +132 -91
  332. package/src/utils/BitcoinWalletUtils.ts +15 -15
  333. package/src/utils/Logger.ts +14 -14
  334. package/src/utils/RetryUtils.ts +78 -78
  335. package/src/utils/SwapUtils.ts +99 -99
  336. package/src/utils/TimeoutUtils.ts +49 -49
  337. package/src/utils/TokenUtils.ts +33 -33
  338. package/src/utils/TypeUtils.ts +8 -8
  339. package/src/utils/Utils.ts +212 -212
@@ -1,181 +1,181 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.SmartChainAssets = void 0;
4
- /**
5
- * Asset definitions for supported smart chain tokens with pricing information
6
- * @category Tokens
7
- */
8
- exports.SmartChainAssets = {
9
- _TESTNET_strkBTC: {
10
- pricing: {
11
- binancePair: "$fixed-100000000",
12
- okxPair: "$fixed-100000000",
13
- coinGeckoCoinId: "$fixed-100000000",
14
- coinPaprikaCoinId: "$fixed-100000000",
15
- krakenPair: "$fixed-100000000"
16
- },
17
- name: "strkBTC (dev)"
18
- },
19
- _TESTNET_WBTC_VESU: {
20
- pricing: {
21
- binancePair: "WBTCBTC",
22
- okxPair: "WBTC-BTC",
23
- coinGeckoCoinId: "wrapped-bitcoin",
24
- coinPaprikaCoinId: "wbtc-wrapped-bitcoin",
25
- krakenPair: "WBTCXBT"
26
- },
27
- name: "Wrapped BTC (WBTC)"
28
- },
29
- _PBTC_DEV: {
30
- pricing: {
31
- binancePair: "$fixed-100000000",
32
- okxPair: "$fixed-100000000",
33
- coinGeckoCoinId: "$fixed-100000000",
34
- coinPaprikaCoinId: "$fixed-100000000",
35
- krakenPair: "$fixed-100000000"
36
- },
37
- name: "pegBTC (dev)"
38
- },
39
- strkBTC: {
40
- pricing: {
41
- binancePair: "$fixed-100000000",
42
- okxPair: "$fixed-100000000",
43
- coinGeckoCoinId: "$fixed-100000000",
44
- coinPaprikaCoinId: "$fixed-100000000",
45
- krakenPair: "$fixed-100000000"
46
- },
47
- name: "strkBTC"
48
- },
49
- WBTC: {
50
- pricing: {
51
- binancePair: "WBTCBTC",
52
- okxPair: "WBTC-BTC",
53
- coinGeckoCoinId: "wrapped-bitcoin",
54
- coinPaprikaCoinId: "wbtc-wrapped-bitcoin",
55
- krakenPair: "WBTCXBT"
56
- },
57
- name: "Wrapped BTC (WBTC)"
58
- },
59
- TBTC: {
60
- pricing: {
61
- binancePair: undefined,
62
- okxPair: undefined,
63
- coinGeckoCoinId: "tbtc",
64
- coinPaprikaCoinId: "tbtc-tbtc",
65
- krakenPair: undefined
66
- },
67
- name: "Threshold BTC (tBTC)"
68
- },
69
- USDC: {
70
- pricing: {
71
- binancePair: "!BTCUSDC",
72
- okxPair: "!BTC-USDC",
73
- coinGeckoCoinId: "usd-coin",
74
- coinPaprikaCoinId: "usdc-usd-coin",
75
- krakenPair: "!XBTUSDC"
76
- },
77
- name: "USD Circle"
78
- },
79
- USDT: {
80
- pricing: {
81
- binancePair: "!BTCUSDT",
82
- okxPair: "!BTC-USDT",
83
- coinGeckoCoinId: "tether",
84
- coinPaprikaCoinId: "usdt-tether",
85
- krakenPair: "!XBTUSDT"
86
- },
87
- name: "Tether USD"
88
- },
89
- SOL: {
90
- pricing: {
91
- binancePair: "SOLBTC",
92
- okxPair: "SOL-BTC",
93
- coinGeckoCoinId: "solana",
94
- coinPaprikaCoinId: "sol-solana",
95
- krakenPair: "SOLXBT"
96
- },
97
- name: "Solana"
98
- },
99
- BONK: {
100
- pricing: {
101
- binancePair: "BONKUSDC;!BTCUSDC",
102
- okxPair: "BONK-USDT;!BTC-USDT",
103
- coinGeckoCoinId: "bonk",
104
- coinPaprikaCoinId: "bonk-bonk",
105
- krakenPair: "BONKUSD;!XXBTZUSD"
106
- },
107
- name: "Bonk"
108
- },
109
- ETH: {
110
- pricing: {
111
- binancePair: "ETHBTC",
112
- okxPair: "ETH-BTC",
113
- coinGeckoCoinId: "ethereum",
114
- coinPaprikaCoinId: "eth-ethereum",
115
- krakenPair: "XETHXXBT"
116
- },
117
- name: "Ether"
118
- },
119
- STRK: {
120
- pricing: {
121
- binancePair: "STRKUSDT;!BTCUSDT",
122
- okxPair: "STRK-USDT;!BTC-USDT",
123
- coinGeckoCoinId: "starknet",
124
- coinPaprikaCoinId: "strk-starknet",
125
- krakenPair: "STRKUSD;!XXBTZUSD"
126
- },
127
- name: "Starknet"
128
- },
129
- CBTC: {
130
- pricing: {
131
- binancePair: "$fixed-100000000",
132
- okxPair: "$fixed-100000000",
133
- coinGeckoCoinId: "$fixed-100000000",
134
- coinPaprikaCoinId: "$fixed-100000000",
135
- krakenPair: "$fixed-100000000"
136
- },
137
- name: "Citrea BTC"
138
- },
139
- //Used by both Botanix and Alpen
140
- BTC: {
141
- pricing: {
142
- binancePair: "$fixed-100000000",
143
- okxPair: "$fixed-100000000",
144
- coinGeckoCoinId: "$fixed-100000000",
145
- coinPaprikaCoinId: "$fixed-100000000",
146
- krakenPair: "$fixed-100000000"
147
- },
148
- name: "Bitcoin"
149
- },
150
- BBTC: {
151
- pricing: {
152
- binancePair: "$fixed-100000000",
153
- okxPair: "$fixed-100000000",
154
- coinGeckoCoinId: "$fixed-100000000",
155
- coinPaprikaCoinId: "$fixed-100000000",
156
- krakenPair: "$fixed-100000000"
157
- },
158
- name: "Botanix BTC"
159
- },
160
- ABTC: {
161
- pricing: {
162
- binancePair: "$fixed-100000000",
163
- okxPair: "$fixed-100000000",
164
- coinGeckoCoinId: "$fixed-100000000",
165
- coinPaprikaCoinId: "$fixed-100000000",
166
- krakenPair: "$fixed-100000000"
167
- },
168
- name: "Alpen BTC"
169
- },
170
- //Used by GOAT network
171
- PBTC: {
172
- pricing: {
173
- binancePair: "$fixed-100000000",
174
- okxPair: "$fixed-100000000",
175
- coinGeckoCoinId: "$fixed-100000000",
176
- coinPaprikaCoinId: "$fixed-100000000",
177
- krakenPair: "$fixed-100000000"
178
- },
179
- name: "pegBTC"
180
- }
181
- };
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SmartChainAssets = void 0;
4
+ /**
5
+ * Asset definitions for supported smart chain tokens with pricing information
6
+ * @category Tokens
7
+ */
8
+ exports.SmartChainAssets = {
9
+ _TESTNET_strkBTC: {
10
+ pricing: {
11
+ binancePair: "$fixed-100000000",
12
+ okxPair: "$fixed-100000000",
13
+ coinGeckoCoinId: "$fixed-100000000",
14
+ coinPaprikaCoinId: "$fixed-100000000",
15
+ krakenPair: "$fixed-100000000"
16
+ },
17
+ name: "strkBTC (dev)"
18
+ },
19
+ _TESTNET_WBTC_VESU: {
20
+ pricing: {
21
+ binancePair: "WBTCBTC",
22
+ okxPair: "WBTC-BTC",
23
+ coinGeckoCoinId: "wrapped-bitcoin",
24
+ coinPaprikaCoinId: "wbtc-wrapped-bitcoin",
25
+ krakenPair: "WBTCXBT"
26
+ },
27
+ name: "Wrapped BTC (WBTC)"
28
+ },
29
+ _PBTC_DEV: {
30
+ pricing: {
31
+ binancePair: "$fixed-100000000",
32
+ okxPair: "$fixed-100000000",
33
+ coinGeckoCoinId: "$fixed-100000000",
34
+ coinPaprikaCoinId: "$fixed-100000000",
35
+ krakenPair: "$fixed-100000000"
36
+ },
37
+ name: "pegBTC (dev)"
38
+ },
39
+ strkBTC: {
40
+ pricing: {
41
+ binancePair: "$fixed-100000000",
42
+ okxPair: "$fixed-100000000",
43
+ coinGeckoCoinId: "$fixed-100000000",
44
+ coinPaprikaCoinId: "$fixed-100000000",
45
+ krakenPair: "$fixed-100000000"
46
+ },
47
+ name: "strkBTC"
48
+ },
49
+ WBTC: {
50
+ pricing: {
51
+ binancePair: "WBTCBTC",
52
+ okxPair: "WBTC-BTC",
53
+ coinGeckoCoinId: "wrapped-bitcoin",
54
+ coinPaprikaCoinId: "wbtc-wrapped-bitcoin",
55
+ krakenPair: "WBTCXBT"
56
+ },
57
+ name: "Wrapped BTC (WBTC)"
58
+ },
59
+ TBTC: {
60
+ pricing: {
61
+ binancePair: undefined,
62
+ okxPair: undefined,
63
+ coinGeckoCoinId: "tbtc",
64
+ coinPaprikaCoinId: "tbtc-tbtc",
65
+ krakenPair: undefined
66
+ },
67
+ name: "Threshold BTC (tBTC)"
68
+ },
69
+ USDC: {
70
+ pricing: {
71
+ binancePair: "!BTCUSDC",
72
+ okxPair: "!BTC-USDC",
73
+ coinGeckoCoinId: "usd-coin",
74
+ coinPaprikaCoinId: "usdc-usd-coin",
75
+ krakenPair: "!XBTUSDC"
76
+ },
77
+ name: "USD Circle"
78
+ },
79
+ USDT: {
80
+ pricing: {
81
+ binancePair: "!BTCUSDT",
82
+ okxPair: "!BTC-USDT",
83
+ coinGeckoCoinId: "tether",
84
+ coinPaprikaCoinId: "usdt-tether",
85
+ krakenPair: "!XBTUSDT"
86
+ },
87
+ name: "Tether USD"
88
+ },
89
+ SOL: {
90
+ pricing: {
91
+ binancePair: "SOLBTC",
92
+ okxPair: "SOL-BTC",
93
+ coinGeckoCoinId: "solana",
94
+ coinPaprikaCoinId: "sol-solana",
95
+ krakenPair: "SOLXBT"
96
+ },
97
+ name: "Solana"
98
+ },
99
+ BONK: {
100
+ pricing: {
101
+ binancePair: "BONKUSDC;!BTCUSDC",
102
+ okxPair: "BONK-USDT;!BTC-USDT",
103
+ coinGeckoCoinId: "bonk",
104
+ coinPaprikaCoinId: "bonk-bonk",
105
+ krakenPair: "BONKUSD;!XXBTZUSD"
106
+ },
107
+ name: "Bonk"
108
+ },
109
+ ETH: {
110
+ pricing: {
111
+ binancePair: "ETHBTC",
112
+ okxPair: "ETH-BTC",
113
+ coinGeckoCoinId: "ethereum",
114
+ coinPaprikaCoinId: "eth-ethereum",
115
+ krakenPair: "XETHXXBT"
116
+ },
117
+ name: "Ether"
118
+ },
119
+ STRK: {
120
+ pricing: {
121
+ binancePair: "STRKUSDT;!BTCUSDT",
122
+ okxPair: "STRK-USDT;!BTC-USDT",
123
+ coinGeckoCoinId: "starknet",
124
+ coinPaprikaCoinId: "strk-starknet",
125
+ krakenPair: "STRKUSD;!XXBTZUSD"
126
+ },
127
+ name: "Starknet"
128
+ },
129
+ CBTC: {
130
+ pricing: {
131
+ binancePair: "$fixed-100000000",
132
+ okxPair: "$fixed-100000000",
133
+ coinGeckoCoinId: "$fixed-100000000",
134
+ coinPaprikaCoinId: "$fixed-100000000",
135
+ krakenPair: "$fixed-100000000"
136
+ },
137
+ name: "Citrea BTC"
138
+ },
139
+ //Used by both Botanix and Alpen
140
+ BTC: {
141
+ pricing: {
142
+ binancePair: "$fixed-100000000",
143
+ okxPair: "$fixed-100000000",
144
+ coinGeckoCoinId: "$fixed-100000000",
145
+ coinPaprikaCoinId: "$fixed-100000000",
146
+ krakenPair: "$fixed-100000000"
147
+ },
148
+ name: "Bitcoin"
149
+ },
150
+ BBTC: {
151
+ pricing: {
152
+ binancePair: "$fixed-100000000",
153
+ okxPair: "$fixed-100000000",
154
+ coinGeckoCoinId: "$fixed-100000000",
155
+ coinPaprikaCoinId: "$fixed-100000000",
156
+ krakenPair: "$fixed-100000000"
157
+ },
158
+ name: "Botanix BTC"
159
+ },
160
+ ABTC: {
161
+ pricing: {
162
+ binancePair: "$fixed-100000000",
163
+ okxPair: "$fixed-100000000",
164
+ coinGeckoCoinId: "$fixed-100000000",
165
+ coinPaprikaCoinId: "$fixed-100000000",
166
+ krakenPair: "$fixed-100000000"
167
+ },
168
+ name: "Alpen BTC"
169
+ },
170
+ //Used by GOAT network
171
+ PBTC: {
172
+ pricing: {
173
+ binancePair: "$fixed-100000000",
174
+ okxPair: "$fixed-100000000",
175
+ coinGeckoCoinId: "$fixed-100000000",
176
+ coinPaprikaCoinId: "$fixed-100000000",
177
+ krakenPair: "$fixed-100000000"
178
+ },
179
+ name: "pegBTC"
180
+ }
181
+ };
@@ -1,6 +1,7 @@
1
- import { CoinselectAddressTypes, CoinselectTxInput, CoinselectTxOutput } from "./utils";
2
- export declare function accumulative(utxos: CoinselectTxInput[], outputs: CoinselectTxOutput[], feeRate: number, type: CoinselectAddressTypes, requiredInputs?: CoinselectTxInput[]): {
3
- inputs?: CoinselectTxInput[];
4
- outputs?: CoinselectTxOutput[];
5
- fee: number;
6
- };
1
+ import { CoinselectAddressTypes, CoinselectTxInput, CoinselectTxOutput } from "./utils";
2
+ export declare function accumulative(utxos: CoinselectTxInput[], outputs: CoinselectTxOutput[], feeRate: number, type: CoinselectAddressTypes, requiredInputs?: CoinselectTxInput[]): {
3
+ inputs?: CoinselectTxInput[];
4
+ outputs?: CoinselectTxOutput[];
5
+ effectiveFeeRate?: number;
6
+ fee: number;
7
+ };
@@ -1,52 +1,52 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.accumulative = void 0;
4
- const utils_1 = require("./utils");
5
- const Logger_1 = require("../../utils/Logger");
6
- const logger = (0, Logger_1.getLogger)("CoinSelect: ");
7
- // add inputs until we reach or surpass the target value (or deplete)
8
- // worst-case: O(n)
9
- function accumulative(utxos, outputs, feeRate, type, requiredInputs) {
10
- if (!isFinite(utils_1.utils.uintOrNaN(feeRate)))
11
- throw new Error("Invalid feeRate passed!");
12
- const inputs = requiredInputs == null ? [] : [...requiredInputs];
13
- let bytesAccum = utils_1.utils.transactionBytes(inputs, outputs, type);
14
- let fee = feeRate * bytesAccum;
15
- let cpfpAddFee = 0;
16
- let inAccum = utils_1.utils.sumOrNaN(inputs);
17
- const outAccum = utils_1.utils.sumOrNaN(outputs);
18
- logger.debug("accumulative(): total output: ", outAccum);
19
- for (let i = 0; i < utxos.length; ++i) {
20
- const utxo = utxos[i];
21
- const utxoBytes = utils_1.utils.inputBytes(utxo);
22
- const utxoFee = feeRate * utxoBytes;
23
- const utxoValue = utils_1.utils.uintOrNaN(utxo.value);
24
- let cpfpFee = 0;
25
- if (utxo.cpfp != null && utxo.cpfp.txEffectiveFeeRate < feeRate)
26
- cpfpFee = Math.ceil(utxo.cpfp.txVsize * (feeRate - utxo.cpfp.txEffectiveFeeRate));
27
- // skip detrimental input
28
- if (utxoFee + cpfpFee > utxo.value) {
29
- logger.debug("accumulative(" + i + "): Skipping detrimental output, cpfpFee: " + cpfpFee + " utxoFee: " + utxoFee + " value: " + utxo.value);
30
- if (i === utxos.length - 1)
31
- return { fee: (feeRate * (bytesAccum + utxoBytes)) + cpfpAddFee + cpfpFee };
32
- continue;
33
- }
34
- bytesAccum += utxoBytes;
35
- inAccum += utxoValue;
36
- cpfpAddFee += cpfpFee;
37
- inputs.push(utxo);
38
- fee = Math.ceil((feeRate * bytesAccum) + cpfpAddFee);
39
- logger.debug("accumulative(" + i + "): total fee: ", fee);
40
- logger.debug("accumulative(" + i + "): input value: ", inAccum);
41
- logger.debug("accumulative(" + i + "): cpfpAddFee: ", cpfpAddFee);
42
- // go again?
43
- if (inAccum < outAccum + fee)
44
- continue;
45
- logger.debug("accumulative(" + i + "): Finalizing transaction, inputs: ", inputs);
46
- logger.debug("accumulative(" + i + "): Finalizing transaction, outputs: ", outputs);
47
- logger.debug("accumulative(" + i + "): Finalizing transaction, feeRate: ", feeRate);
48
- return utils_1.utils.finalize(inputs, outputs, feeRate, type, cpfpAddFee);
49
- }
50
- return { fee };
51
- }
52
- exports.accumulative = accumulative;
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.accumulative = void 0;
4
+ const utils_1 = require("./utils");
5
+ const Logger_1 = require("../../utils/Logger");
6
+ const logger = (0, Logger_1.getLogger)("CoinSelect: ");
7
+ // add inputs until we reach or surpass the target value (or deplete)
8
+ // worst-case: O(n)
9
+ function accumulative(utxos, outputs, feeRate, type, requiredInputs) {
10
+ if (!isFinite(utils_1.utils.numberOrNaN(feeRate)))
11
+ throw new Error("Invalid feeRate passed!");
12
+ const inputs = requiredInputs == null ? [] : [...requiredInputs];
13
+ let bytesAccum = utils_1.utils.transactionBytes(inputs, outputs, type);
14
+ let fee = feeRate * bytesAccum;
15
+ let cpfpAddFee = 0;
16
+ let inAccum = utils_1.utils.sumOrNaN(inputs);
17
+ const outAccum = utils_1.utils.sumOrNaN(outputs);
18
+ logger.debug("accumulative(): total output: ", outAccum);
19
+ for (let i = 0; i < utxos.length; ++i) {
20
+ const utxo = utxos[i];
21
+ const utxoBytes = utils_1.utils.inputBytes(utxo);
22
+ const utxoFee = feeRate * utxoBytes;
23
+ const utxoValue = utils_1.utils.uintOrNaN(utxo.value);
24
+ let cpfpFee = 0;
25
+ if (utxo.cpfp != null && utxo.cpfp.txEffectiveFeeRate < feeRate)
26
+ cpfpFee = Math.ceil(utxo.cpfp.txVsize * (feeRate - utxo.cpfp.txEffectiveFeeRate));
27
+ // skip detrimental input
28
+ if (utxoFee + cpfpFee > utxo.value) {
29
+ logger.debug("accumulative(" + i + "): Skipping detrimental output, cpfpFee: " + cpfpFee + " utxoFee: " + utxoFee + " value: " + utxo.value);
30
+ if (i === utxos.length - 1)
31
+ return { fee: (feeRate * (bytesAccum + utxoBytes)) + cpfpAddFee + cpfpFee };
32
+ continue;
33
+ }
34
+ bytesAccum += utxoBytes;
35
+ inAccum += utxoValue;
36
+ cpfpAddFee += cpfpFee;
37
+ inputs.push(utxo);
38
+ fee = Math.ceil((feeRate * bytesAccum) + cpfpAddFee);
39
+ logger.debug("accumulative(" + i + "): total fee: ", fee);
40
+ logger.debug("accumulative(" + i + "): input value: ", inAccum);
41
+ logger.debug("accumulative(" + i + "): cpfpAddFee: ", cpfpAddFee);
42
+ // go again?
43
+ if (inAccum < outAccum + fee)
44
+ continue;
45
+ logger.debug("accumulative(" + i + "): Finalizing transaction, inputs: ", inputs);
46
+ logger.debug("accumulative(" + i + "): Finalizing transaction, outputs: ", outputs);
47
+ logger.debug("accumulative(" + i + "): Finalizing transaction, feeRate: ", feeRate);
48
+ return utils_1.utils.finalize(inputs, outputs, feeRate, type, cpfpAddFee);
49
+ }
50
+ return { fee };
51
+ }
52
+ exports.accumulative = accumulative;
@@ -1,6 +1,7 @@
1
- import { CoinselectAddressTypes, CoinselectTxInput, CoinselectTxOutput } from "./utils";
2
- export declare function blackjack(utxos: CoinselectTxInput[], outputs: CoinselectTxOutput[], feeRate: number, type: CoinselectAddressTypes, requiredInputs?: CoinselectTxInput[]): {
3
- inputs?: CoinselectTxInput[];
4
- outputs?: CoinselectTxOutput[];
5
- fee: number;
6
- };
1
+ import { CoinselectAddressTypes, CoinselectTxInput, CoinselectTxOutput } from "./utils";
2
+ export declare function blackjack(utxos: CoinselectTxInput[], outputs: CoinselectTxOutput[], feeRate: number, type: CoinselectAddressTypes, requiredInputs?: CoinselectTxInput[]): {
3
+ inputs?: CoinselectTxInput[];
4
+ outputs?: CoinselectTxOutput[];
5
+ effectiveFeeRate?: number;
6
+ fee: number;
7
+ };
@@ -1,38 +1,38 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.blackjack = void 0;
4
- const utils_1 = require("./utils");
5
- // add inputs until we reach or surpass the target value (or deplete)
6
- // worst-case: O(n)
7
- function blackjack(utxos, outputs, feeRate, type, requiredInputs) {
8
- if (!isFinite(utils_1.utils.uintOrNaN(feeRate)))
9
- throw new Error("Invalid feeRate passed!");
10
- const inputs = requiredInputs == null ? [] : [...requiredInputs];
11
- let bytesAccum = utils_1.utils.transactionBytes(inputs, outputs, type);
12
- let inAccum = utils_1.utils.sumOrNaN(inputs);
13
- let cpfpAddFee = 0;
14
- const outAccum = utils_1.utils.sumOrNaN(outputs);
15
- const threshold = utils_1.utils.dustThreshold({ type });
16
- for (let i = 0; i < utxos.length; ++i) {
17
- const input = utxos[i];
18
- const inputBytes = utils_1.utils.inputBytes(input);
19
- let cpfpFee = 0;
20
- if (input.cpfp != null && input.cpfp.txEffectiveFeeRate < feeRate)
21
- cpfpFee = Math.ceil(input.cpfp.txVsize * (feeRate - input.cpfp.txEffectiveFeeRate));
22
- const fee = Math.ceil((feeRate * (bytesAccum + inputBytes)) + cpfpAddFee + cpfpFee);
23
- const inputValue = utils_1.utils.uintOrNaN(input.value);
24
- // would it waste value?
25
- if ((inAccum + inputValue) > (outAccum + fee + threshold))
26
- continue;
27
- bytesAccum += inputBytes;
28
- inAccum += inputValue;
29
- cpfpAddFee += cpfpFee;
30
- inputs.push(input);
31
- // go again?
32
- if (inAccum < outAccum + fee)
33
- continue;
34
- return utils_1.utils.finalize(inputs, outputs, feeRate, type, cpfpAddFee);
35
- }
36
- return { fee: (feeRate * bytesAccum) + cpfpAddFee };
37
- }
38
- exports.blackjack = blackjack;
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.blackjack = void 0;
4
+ const utils_1 = require("./utils");
5
+ // add inputs until we reach or surpass the target value (or deplete)
6
+ // worst-case: O(n)
7
+ function blackjack(utxos, outputs, feeRate, type, requiredInputs) {
8
+ if (!isFinite(utils_1.utils.numberOrNaN(feeRate)))
9
+ throw new Error("Invalid feeRate passed!");
10
+ const inputs = requiredInputs == null ? [] : [...requiredInputs];
11
+ let bytesAccum = utils_1.utils.transactionBytes(inputs, outputs, type);
12
+ let inAccum = utils_1.utils.sumOrNaN(inputs);
13
+ let cpfpAddFee = 0;
14
+ const outAccum = utils_1.utils.sumOrNaN(outputs);
15
+ const threshold = utils_1.utils.dustThreshold({ type });
16
+ for (let i = 0; i < utxos.length; ++i) {
17
+ const input = utxos[i];
18
+ const inputBytes = utils_1.utils.inputBytes(input);
19
+ let cpfpFee = 0;
20
+ if (input.cpfp != null && input.cpfp.txEffectiveFeeRate < feeRate)
21
+ cpfpFee = Math.ceil(input.cpfp.txVsize * (feeRate - input.cpfp.txEffectiveFeeRate));
22
+ const fee = Math.ceil((feeRate * (bytesAccum + inputBytes)) + cpfpAddFee + cpfpFee);
23
+ const inputValue = utils_1.utils.uintOrNaN(input.value);
24
+ // would it waste value?
25
+ if ((inAccum + inputValue) > (outAccum + fee + threshold))
26
+ continue;
27
+ bytesAccum += inputBytes;
28
+ inAccum += inputValue;
29
+ cpfpAddFee += cpfpFee;
30
+ inputs.push(input);
31
+ // go again?
32
+ if (inAccum < outAccum + fee)
33
+ continue;
34
+ return utils_1.utils.finalize(inputs, outputs, feeRate, type, cpfpAddFee);
35
+ }
36
+ return { fee: (feeRate * bytesAccum) + cpfpAddFee };
37
+ }
38
+ exports.blackjack = blackjack;
@@ -1,19 +1,20 @@
1
- /// <reference types="node" />
2
- /// <reference types="node" />
3
- import { CoinselectAddressTypes, CoinselectTxInput, CoinselectTxOutput, DUST_THRESHOLDS } from "./utils";
4
- export { CoinselectAddressTypes, CoinselectTxInput, CoinselectTxOutput, DUST_THRESHOLDS };
5
- export declare function coinSelect(utxos: CoinselectTxInput[], outputs: CoinselectTxOutput[], feeRate: number, type: CoinselectAddressTypes, requiredInputs?: CoinselectTxInput[]): {
6
- inputs?: CoinselectTxInput[];
7
- outputs?: CoinselectTxOutput[];
8
- fee: number;
9
- };
10
- export declare function maxSendable(utxos: CoinselectTxInput[], output: {
11
- script: Buffer;
12
- type: CoinselectAddressTypes;
13
- }, feeRate: number, requiredInputs?: CoinselectTxInput[], additionalOutputs?: {
14
- script: Buffer;
15
- value: number;
16
- }[]): {
17
- value: number;
18
- fee: number;
19
- };
1
+ /// <reference types="node" />
2
+ /// <reference types="node" />
3
+ import { CoinselectAddressTypes, CoinselectTxInput, CoinselectTxOutput, DUST_THRESHOLDS } from "./utils";
4
+ export { CoinselectAddressTypes, CoinselectTxInput, CoinselectTxOutput, DUST_THRESHOLDS };
5
+ export declare function coinSelect(utxos: CoinselectTxInput[], outputs: CoinselectTxOutput[], feeRate: number, type: CoinselectAddressTypes, requiredInputs?: CoinselectTxInput[]): {
6
+ inputs?: CoinselectTxInput[];
7
+ outputs?: CoinselectTxOutput[];
8
+ effectiveFeeRate?: number;
9
+ fee: number;
10
+ };
11
+ export declare function maxSendable(utxos: Omit<CoinselectTxInput, "txId" | "address" | "vout" | "outputScript">[], output: {
12
+ script: Buffer;
13
+ type: CoinselectAddressTypes;
14
+ }, feeRate: number, requiredInputs?: Omit<CoinselectTxInput, "txId" | "address" | "vout" | "outputScript">[], additionalOutputs?: {
15
+ script: Buffer;
16
+ value: number;
17
+ }[]): {
18
+ value: number;
19
+ fee: number;
20
+ };