@atomiqlabs/sdk 7.0.11 → 8.0.7

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 (364) hide show
  1. package/README.md +45 -29
  2. package/dist/SmartChainAssets.d.ts +11 -3
  3. package/dist/SmartChainAssets.js +7 -3
  4. package/dist/bitcoin/BitcoinRpcWithAddressIndex.d.ts +68 -0
  5. package/dist/bitcoin/BitcoinRpcWithAddressIndex.js +2 -0
  6. package/dist/bitcoin/LightningNetworkApi.d.ts +12 -0
  7. package/dist/bitcoin/LightningNetworkApi.js +2 -0
  8. package/dist/bitcoin/coinselect2/accumulative.d.ts +6 -0
  9. package/dist/bitcoin/coinselect2/accumulative.js +52 -0
  10. package/dist/bitcoin/coinselect2/blackjack.d.ts +6 -0
  11. package/dist/bitcoin/coinselect2/blackjack.js +38 -0
  12. package/dist/bitcoin/coinselect2/index.d.ts +19 -0
  13. package/dist/bitcoin/coinselect2/index.js +69 -0
  14. package/dist/bitcoin/coinselect2/utils.d.ts +71 -0
  15. package/dist/bitcoin/coinselect2/utils.js +123 -0
  16. package/dist/bitcoin/mempool/MempoolApi.d.ts +350 -0
  17. package/dist/bitcoin/mempool/MempoolApi.js +311 -0
  18. package/dist/bitcoin/mempool/MempoolBitcoinBlock.d.ts +44 -0
  19. package/dist/bitcoin/mempool/MempoolBitcoinBlock.js +48 -0
  20. package/dist/bitcoin/mempool/MempoolBitcoinRpc.d.ts +119 -0
  21. package/dist/bitcoin/mempool/MempoolBitcoinRpc.js +361 -0
  22. package/dist/bitcoin/mempool/synchronizer/MempoolBtcRelaySynchronizer.d.ts +22 -0
  23. package/dist/bitcoin/mempool/synchronizer/MempoolBtcRelaySynchronizer.js +105 -0
  24. package/dist/bitcoin/wallet/BitcoinWallet.d.ts +93 -0
  25. package/dist/bitcoin/wallet/BitcoinWallet.js +273 -0
  26. package/dist/bitcoin/wallet/IBitcoinWallet.d.ts +28 -0
  27. package/dist/bitcoin/wallet/IBitcoinWallet.js +20 -0
  28. package/dist/bitcoin/wallet/MinimalBitcoinWalletInterface.d.ts +21 -0
  29. package/dist/bitcoin/wallet/MinimalBitcoinWalletInterface.js +2 -0
  30. package/dist/bitcoin/wallet/MinimalLightningNetworkWalletInterface.d.ts +7 -0
  31. package/dist/bitcoin/wallet/MinimalLightningNetworkWalletInterface.js +2 -0
  32. package/dist/bitcoin/wallet/SingleAddressBitcoinWallet.d.ts +40 -0
  33. package/dist/bitcoin/wallet/SingleAddressBitcoinWallet.js +86 -0
  34. package/dist/enums/FeeType.d.ts +8 -0
  35. package/dist/enums/FeeType.js +12 -0
  36. package/dist/enums/SwapAmountType.d.ts +8 -0
  37. package/dist/enums/SwapAmountType.js +12 -0
  38. package/dist/enums/SwapDirection.d.ts +8 -0
  39. package/dist/enums/SwapDirection.js +12 -0
  40. package/dist/enums/SwapType.d.ts +14 -0
  41. package/dist/enums/SwapType.js +18 -0
  42. package/dist/errors/IntermediaryError.d.ts +9 -0
  43. package/dist/errors/IntermediaryError.js +26 -0
  44. package/dist/errors/PaymentAuthError.d.ts +11 -0
  45. package/dist/errors/PaymentAuthError.js +23 -0
  46. package/dist/errors/RequestError.d.ts +18 -0
  47. package/dist/errors/RequestError.js +46 -0
  48. package/dist/errors/UserError.d.ts +7 -0
  49. package/dist/errors/UserError.js +15 -0
  50. package/dist/events/UnifiedSwapEventListener.d.ts +23 -0
  51. package/dist/events/UnifiedSwapEventListener.js +130 -0
  52. package/dist/http/HttpUtils.d.ts +27 -0
  53. package/dist/http/HttpUtils.js +91 -0
  54. package/dist/http/paramcoders/IParamReader.d.ts +8 -0
  55. package/dist/http/paramcoders/IParamReader.js +2 -0
  56. package/dist/http/paramcoders/ParamDecoder.d.ts +44 -0
  57. package/dist/http/paramcoders/ParamDecoder.js +132 -0
  58. package/dist/http/paramcoders/ParamEncoder.d.ts +20 -0
  59. package/dist/http/paramcoders/ParamEncoder.js +31 -0
  60. package/dist/http/paramcoders/SchemaVerifier.d.ts +26 -0
  61. package/dist/http/paramcoders/SchemaVerifier.js +145 -0
  62. package/dist/http/paramcoders/client/ResponseParamDecoder.d.ts +11 -0
  63. package/dist/http/paramcoders/client/ResponseParamDecoder.js +57 -0
  64. package/dist/http/paramcoders/client/StreamParamEncoder.d.ts +13 -0
  65. package/dist/http/paramcoders/client/StreamParamEncoder.js +26 -0
  66. package/dist/http/paramcoders/client/StreamingFetchPromise.d.ts +16 -0
  67. package/dist/http/paramcoders/client/StreamingFetchPromise.js +174 -0
  68. package/dist/index.d.ts +82 -4
  69. package/dist/index.js +128 -4
  70. package/dist/intermediaries/Intermediary.d.ts +111 -0
  71. package/dist/intermediaries/Intermediary.js +115 -0
  72. package/dist/intermediaries/IntermediaryDiscovery.d.ts +166 -0
  73. package/dist/intermediaries/IntermediaryDiscovery.js +390 -0
  74. package/dist/intermediaries/apis/IntermediaryAPI.d.ts +436 -0
  75. package/dist/intermediaries/apis/IntermediaryAPI.js +600 -0
  76. package/dist/intermediaries/apis/TrustedIntermediaryAPI.d.ts +154 -0
  77. package/dist/intermediaries/apis/TrustedIntermediaryAPI.js +136 -0
  78. package/dist/lnurl/LNURL.d.ts +102 -0
  79. package/dist/lnurl/LNURL.js +321 -0
  80. package/dist/prices/RedundantSwapPrice.d.ts +89 -0
  81. package/dist/prices/RedundantSwapPrice.js +202 -0
  82. package/dist/prices/SingleSwapPrice.d.ts +31 -0
  83. package/dist/prices/SingleSwapPrice.js +41 -0
  84. package/dist/prices/SwapPriceWithChain.d.ts +70 -0
  85. package/dist/prices/SwapPriceWithChain.js +91 -0
  86. package/dist/prices/abstract/ICachedSwapPrice.d.ts +28 -0
  87. package/dist/prices/abstract/ICachedSwapPrice.js +62 -0
  88. package/dist/prices/abstract/IPriceProvider.d.ts +81 -0
  89. package/dist/prices/abstract/IPriceProvider.js +74 -0
  90. package/dist/prices/abstract/ISwapPrice.d.ts +117 -0
  91. package/dist/prices/abstract/ISwapPrice.js +219 -0
  92. package/dist/prices/providers/BinancePriceProvider.d.ts +16 -0
  93. package/dist/prices/providers/BinancePriceProvider.js +23 -0
  94. package/dist/prices/providers/CoinGeckoPriceProvider.d.ts +17 -0
  95. package/dist/prices/providers/CoinGeckoPriceProvider.js +23 -0
  96. package/dist/prices/providers/CoinPaprikaPriceProvider.d.ts +19 -0
  97. package/dist/prices/providers/CoinPaprikaPriceProvider.js +23 -0
  98. package/dist/prices/providers/CustomPriceProvider.d.ts +13 -0
  99. package/dist/prices/providers/CustomPriceProvider.js +24 -0
  100. package/dist/prices/providers/KrakenPriceProvider.d.ts +29 -0
  101. package/dist/prices/providers/KrakenPriceProvider.js +36 -0
  102. package/dist/prices/providers/OKXPriceProvider.d.ts +28 -0
  103. package/dist/prices/providers/OKXPriceProvider.js +23 -0
  104. package/dist/prices/providers/abstract/ExchangePriceProvider.d.ts +14 -0
  105. package/dist/prices/providers/abstract/ExchangePriceProvider.js +18 -0
  106. package/dist/prices/providers/abstract/HttpPriceProvider.d.ts +7 -0
  107. package/dist/prices/providers/abstract/HttpPriceProvider.js +12 -0
  108. package/dist/storage/IUnifiedStorage.d.ts +73 -0
  109. package/dist/storage/IUnifiedStorage.js +2 -0
  110. package/dist/storage/UnifiedSwapStorage.d.ts +82 -0
  111. package/dist/storage/UnifiedSwapStorage.js +83 -0
  112. package/dist/storage-browser/IndexedDBUnifiedStorage.d.ts +39 -0
  113. package/dist/storage-browser/IndexedDBUnifiedStorage.js +275 -0
  114. package/dist/{storage → storage-browser}/LocalStorageManager.d.ts +1 -0
  115. package/dist/{storage → storage-browser}/LocalStorageManager.js +2 -1
  116. package/dist/swapper/Swapper.d.ts +533 -0
  117. package/dist/swapper/Swapper.js +1566 -0
  118. package/dist/swapper/SwapperFactory.d.ts +87 -0
  119. package/dist/{SwapperFactory.js → swapper/SwapperFactory.js} +40 -22
  120. package/dist/swapper/SwapperUtils.d.ts +153 -0
  121. package/dist/swapper/SwapperUtils.js +420 -0
  122. package/dist/swapper/SwapperWithChain.d.ts +214 -0
  123. package/dist/swapper/SwapperWithChain.js +315 -0
  124. package/dist/swapper/SwapperWithSigner.d.ts +178 -0
  125. package/dist/swapper/SwapperWithSigner.js +172 -0
  126. package/dist/swaps/IAddressSwap.d.ts +13 -0
  127. package/dist/swaps/IAddressSwap.js +13 -0
  128. package/dist/swaps/IBTCWalletSwap.d.ts +55 -0
  129. package/dist/swaps/IBTCWalletSwap.js +17 -0
  130. package/dist/swaps/IClaimableSwap.d.ts +17 -0
  131. package/dist/swaps/IClaimableSwap.js +14 -0
  132. package/dist/swaps/IClaimableSwapWrapper.d.ts +5 -0
  133. package/dist/swaps/IClaimableSwapWrapper.js +2 -0
  134. package/dist/swaps/IRefundableSwap.d.ts +17 -0
  135. package/dist/swaps/IRefundableSwap.js +13 -0
  136. package/dist/swaps/ISwap.d.ts +207 -0
  137. package/dist/swaps/ISwap.js +264 -0
  138. package/dist/swaps/ISwapWithGasDrop.d.ts +15 -0
  139. package/dist/swaps/ISwapWithGasDrop.js +11 -0
  140. package/dist/swaps/ISwapWrapper.d.ts +153 -0
  141. package/dist/swaps/ISwapWrapper.js +227 -0
  142. package/dist/swaps/escrow_swaps/IEscrowSelfInitSwap.d.ts +53 -0
  143. package/dist/swaps/escrow_swaps/IEscrowSelfInitSwap.js +116 -0
  144. package/dist/swaps/escrow_swaps/IEscrowSwap.d.ts +70 -0
  145. package/dist/swaps/escrow_swaps/IEscrowSwap.js +132 -0
  146. package/dist/swaps/escrow_swaps/IEscrowSwapWrapper.d.ts +85 -0
  147. package/dist/swaps/escrow_swaps/IEscrowSwapWrapper.js +122 -0
  148. package/dist/swaps/escrow_swaps/frombtc/IFromBTCLNWrapper.d.ts +86 -0
  149. package/dist/swaps/escrow_swaps/frombtc/IFromBTCLNWrapper.js +115 -0
  150. package/dist/swaps/escrow_swaps/frombtc/IFromBTCSelfInitSwap.d.ts +93 -0
  151. package/dist/swaps/escrow_swaps/frombtc/IFromBTCSelfInitSwap.js +121 -0
  152. package/dist/swaps/escrow_swaps/frombtc/IFromBTCWrapper.d.ts +45 -0
  153. package/dist/swaps/escrow_swaps/frombtc/IFromBTCWrapper.js +65 -0
  154. package/dist/swaps/escrow_swaps/frombtc/ln/FromBTCLNSwap.d.ts +263 -0
  155. package/dist/swaps/escrow_swaps/frombtc/ln/FromBTCLNSwap.js +933 -0
  156. package/dist/swaps/escrow_swaps/frombtc/ln/FromBTCLNWrapper.d.ts +110 -0
  157. package/dist/swaps/escrow_swaps/frombtc/ln/FromBTCLNWrapper.js +307 -0
  158. package/dist/swaps/escrow_swaps/frombtc/ln_auto/FromBTCLNAutoSwap.d.ts +236 -0
  159. package/dist/swaps/escrow_swaps/frombtc/ln_auto/FromBTCLNAutoSwap.js +898 -0
  160. package/dist/swaps/escrow_swaps/frombtc/ln_auto/FromBTCLNAutoWrapper.d.ts +125 -0
  161. package/dist/swaps/escrow_swaps/frombtc/ln_auto/FromBTCLNAutoWrapper.js +393 -0
  162. package/dist/swaps/escrow_swaps/frombtc/onchain/FromBTCSwap.d.ts +245 -0
  163. package/dist/swaps/escrow_swaps/frombtc/onchain/FromBTCSwap.js +841 -0
  164. package/dist/swaps/escrow_swaps/frombtc/onchain/FromBTCWrapper.d.ts +120 -0
  165. package/dist/swaps/escrow_swaps/frombtc/onchain/FromBTCWrapper.js +294 -0
  166. package/dist/swaps/escrow_swaps/tobtc/IToBTCSwap.d.ts +228 -0
  167. package/dist/swaps/escrow_swaps/tobtc/IToBTCSwap.js +721 -0
  168. package/dist/swaps/escrow_swaps/tobtc/IToBTCWrapper.d.ts +37 -0
  169. package/dist/swaps/escrow_swaps/tobtc/IToBTCWrapper.js +93 -0
  170. package/dist/swaps/escrow_swaps/tobtc/ln/ToBTCLNSwap.d.ts +86 -0
  171. package/dist/swaps/escrow_swaps/tobtc/ln/ToBTCLNSwap.js +213 -0
  172. package/dist/swaps/escrow_swaps/tobtc/ln/ToBTCLNWrapper.d.ts +170 -0
  173. package/dist/swaps/escrow_swaps/tobtc/ln/ToBTCLNWrapper.js +520 -0
  174. package/dist/swaps/escrow_swaps/tobtc/onchain/ToBTCSwap.d.ts +50 -0
  175. package/dist/swaps/escrow_swaps/tobtc/onchain/ToBTCSwap.js +109 -0
  176. package/dist/swaps/escrow_swaps/tobtc/onchain/ToBTCWrapper.d.ts +93 -0
  177. package/dist/swaps/escrow_swaps/tobtc/onchain/ToBTCWrapper.js +217 -0
  178. package/dist/swaps/spv_swaps/SpvFromBTCSwap.d.ts +315 -0
  179. package/dist/swaps/spv_swaps/SpvFromBTCSwap.js +1098 -0
  180. package/dist/swaps/spv_swaps/SpvFromBTCWrapper.d.ts +125 -0
  181. package/dist/swaps/spv_swaps/SpvFromBTCWrapper.js +631 -0
  182. package/dist/swaps/trusted/ln/LnForGasSwap.d.ts +107 -0
  183. package/dist/swaps/trusted/ln/LnForGasSwap.js +343 -0
  184. package/dist/swaps/trusted/ln/LnForGasWrapper.d.ts +21 -0
  185. package/dist/swaps/trusted/ln/LnForGasWrapper.js +62 -0
  186. package/dist/swaps/trusted/onchain/OnchainForGasSwap.d.ts +164 -0
  187. package/dist/swaps/trusted/onchain/OnchainForGasSwap.js +520 -0
  188. package/dist/swaps/trusted/onchain/OnchainForGasWrapper.d.ts +48 -0
  189. package/dist/swaps/trusted/onchain/OnchainForGasWrapper.js +74 -0
  190. package/dist/types/AmountData.d.ts +9 -0
  191. package/dist/types/AmountData.js +2 -0
  192. package/dist/types/CustomPriceFunction.d.ts +5 -0
  193. package/dist/types/CustomPriceFunction.js +2 -0
  194. package/dist/types/PriceInfoType.d.ts +28 -0
  195. package/dist/types/PriceInfoType.js +57 -0
  196. package/dist/types/SwapExecutionAction.d.ts +7 -0
  197. package/dist/types/SwapExecutionAction.js +2 -0
  198. package/dist/types/SwapWithSigner.d.ts +14 -0
  199. package/dist/types/SwapWithSigner.js +40 -0
  200. package/dist/types/Token.d.ts +53 -0
  201. package/dist/types/Token.js +58 -0
  202. package/dist/types/TokenAmount.d.ts +57 -0
  203. package/dist/types/TokenAmount.js +47 -0
  204. package/dist/types/fees/Fee.d.ts +49 -0
  205. package/dist/types/fees/Fee.js +2 -0
  206. package/dist/types/fees/FeeBreakdown.d.ts +10 -0
  207. package/dist/types/fees/FeeBreakdown.js +2 -0
  208. package/dist/types/fees/PercentagePPM.d.ts +15 -0
  209. package/dist/types/fees/PercentagePPM.js +17 -0
  210. package/dist/types/lnurl/LNURLPay.d.ts +54 -0
  211. package/dist/types/lnurl/LNURLPay.js +28 -0
  212. package/dist/types/lnurl/LNURLWithdraw.d.ts +42 -0
  213. package/dist/types/lnurl/LNURLWithdraw.js +24 -0
  214. package/dist/utils/AutomaticClockDriftCorrection.d.ts +1 -0
  215. package/dist/utils/AutomaticClockDriftCorrection.js +70 -0
  216. package/dist/utils/BitcoinUtils.d.ts +13 -0
  217. package/dist/utils/BitcoinUtils.js +98 -0
  218. package/dist/utils/BitcoinWalletUtils.d.ts +7 -0
  219. package/dist/utils/BitcoinWalletUtils.js +14 -0
  220. package/dist/utils/Logger.d.ts +7 -0
  221. package/dist/utils/Logger.js +12 -0
  222. package/dist/utils/RetryUtils.d.ts +21 -0
  223. package/dist/utils/RetryUtils.js +66 -0
  224. package/dist/utils/SwapUtils.d.ts +31 -0
  225. package/dist/utils/SwapUtils.js +18 -0
  226. package/dist/{Utils.d.ts → utils/TimeoutUtils.d.ts} +9 -3
  227. package/dist/utils/TimeoutUtils.js +55 -0
  228. package/dist/utils/TokenUtils.d.ts +11 -0
  229. package/dist/utils/TokenUtils.js +29 -0
  230. package/dist/utils/TypeUtils.d.ts +7 -0
  231. package/dist/utils/TypeUtils.js +2 -0
  232. package/dist/utils/Utils.d.ts +57 -0
  233. package/dist/utils/Utils.js +178 -0
  234. package/package.json +14 -6
  235. package/src/SmartChainAssets.ts +11 -3
  236. package/src/bitcoin/BitcoinRpcWithAddressIndex.ts +87 -0
  237. package/src/bitcoin/LightningNetworkApi.ts +16 -0
  238. package/src/bitcoin/coinselect2/accumulative.ts +68 -0
  239. package/src/bitcoin/coinselect2/blackjack.ts +49 -0
  240. package/src/bitcoin/coinselect2/index.ts +92 -0
  241. package/src/bitcoin/coinselect2/utils.ts +189 -0
  242. package/src/bitcoin/mempool/MempoolApi.ts +554 -0
  243. package/src/bitcoin/mempool/MempoolBitcoinBlock.ts +88 -0
  244. package/src/bitcoin/mempool/MempoolBitcoinRpc.ts +437 -0
  245. package/src/bitcoin/mempool/synchronizer/MempoolBtcRelaySynchronizer.ts +134 -0
  246. package/src/bitcoin/wallet/BitcoinWallet.ts +375 -0
  247. package/src/bitcoin/wallet/IBitcoinWallet.ts +44 -0
  248. package/src/bitcoin/wallet/MinimalBitcoinWalletInterface.ts +19 -0
  249. package/src/bitcoin/wallet/MinimalLightningNetworkWalletInterface.ts +7 -0
  250. package/src/bitcoin/wallet/SingleAddressBitcoinWallet.ts +108 -0
  251. package/src/enums/FeeType.ts +9 -0
  252. package/src/enums/SwapAmountType.ts +9 -0
  253. package/src/enums/SwapDirection.ts +9 -0
  254. package/src/enums/SwapType.ts +15 -0
  255. package/src/errors/IntermediaryError.ts +24 -0
  256. package/src/errors/PaymentAuthError.ts +26 -0
  257. package/src/errors/RequestError.ts +51 -0
  258. package/src/errors/UserError.ts +14 -0
  259. package/src/events/UnifiedSwapEventListener.ts +171 -0
  260. package/src/http/HttpUtils.ts +92 -0
  261. package/src/http/paramcoders/IParamReader.ts +10 -0
  262. package/src/http/paramcoders/ParamDecoder.ts +142 -0
  263. package/src/http/paramcoders/ParamEncoder.ts +37 -0
  264. package/src/http/paramcoders/SchemaVerifier.ts +153 -0
  265. package/src/http/paramcoders/client/ResponseParamDecoder.ts +58 -0
  266. package/src/http/paramcoders/client/StreamParamEncoder.ts +29 -0
  267. package/src/http/paramcoders/client/StreamingFetchPromise.ts +193 -0
  268. package/src/index.ts +102 -4
  269. package/src/intermediaries/Intermediary.ts +204 -0
  270. package/src/intermediaries/IntermediaryDiscovery.ts +485 -0
  271. package/src/intermediaries/apis/IntermediaryAPI.ts +940 -0
  272. package/src/intermediaries/apis/TrustedIntermediaryAPI.ts +257 -0
  273. package/src/lnurl/LNURL.ts +403 -0
  274. package/src/prices/RedundantSwapPrice.ts +245 -0
  275. package/src/prices/SingleSwapPrice.ts +47 -0
  276. package/src/prices/SwapPriceWithChain.ts +157 -0
  277. package/src/prices/abstract/ICachedSwapPrice.ts +86 -0
  278. package/src/prices/abstract/IPriceProvider.ts +128 -0
  279. package/src/prices/abstract/ISwapPrice.ts +328 -0
  280. package/src/prices/providers/BinancePriceProvider.ts +41 -0
  281. package/src/prices/providers/CoinGeckoPriceProvider.ts +40 -0
  282. package/src/prices/providers/CoinPaprikaPriceProvider.ts +44 -0
  283. package/src/prices/providers/CustomPriceProvider.ts +29 -0
  284. package/src/prices/providers/KrakenPriceProvider.ts +74 -0
  285. package/src/prices/providers/OKXPriceProvider.ts +53 -0
  286. package/src/prices/providers/abstract/ExchangePriceProvider.ts +29 -0
  287. package/src/prices/providers/abstract/HttpPriceProvider.ts +15 -0
  288. package/src/storage/IUnifiedStorage.ts +83 -0
  289. package/src/storage/UnifiedSwapStorage.ts +104 -0
  290. package/src/storage-browser/IndexedDBUnifiedStorage.ts +328 -0
  291. package/src/{storage → storage-browser}/LocalStorageManager.ts +2 -1
  292. package/src/swapper/Swapper.ts +2107 -0
  293. package/src/{SwapperFactory.ts → swapper/SwapperFactory.ts} +116 -75
  294. package/src/swapper/SwapperUtils.ts +510 -0
  295. package/src/swapper/SwapperWithChain.ts +464 -0
  296. package/src/swapper/SwapperWithSigner.ts +300 -0
  297. package/src/swaps/IAddressSwap.ts +20 -0
  298. package/src/swaps/IBTCWalletSwap.ts +77 -0
  299. package/src/swaps/IClaimableSwap.ts +30 -0
  300. package/src/swaps/IClaimableSwapWrapper.ts +9 -0
  301. package/src/swaps/IRefundableSwap.ts +29 -0
  302. package/src/swaps/ISwap.ts +490 -0
  303. package/src/swaps/ISwapWithGasDrop.ts +19 -0
  304. package/src/swaps/ISwapWrapper.ts +344 -0
  305. package/src/swaps/escrow_swaps/IEscrowSelfInitSwap.ts +168 -0
  306. package/src/swaps/escrow_swaps/IEscrowSwap.ts +197 -0
  307. package/src/swaps/escrow_swaps/IEscrowSwapWrapper.ts +210 -0
  308. package/src/swaps/escrow_swaps/frombtc/IFromBTCLNWrapper.ts +150 -0
  309. package/src/swaps/escrow_swaps/frombtc/IFromBTCSelfInitSwap.ts +219 -0
  310. package/src/swaps/escrow_swaps/frombtc/IFromBTCWrapper.ts +84 -0
  311. package/src/swaps/escrow_swaps/frombtc/ln/FromBTCLNSwap.ts +1082 -0
  312. package/src/swaps/escrow_swaps/frombtc/ln/FromBTCLNWrapper.ts +429 -0
  313. package/src/swaps/escrow_swaps/frombtc/ln_auto/FromBTCLNAutoSwap.ts +1078 -0
  314. package/src/swaps/escrow_swaps/frombtc/ln_auto/FromBTCLNAutoWrapper.ts +549 -0
  315. package/src/swaps/escrow_swaps/frombtc/onchain/FromBTCSwap.ts +974 -0
  316. package/src/swaps/escrow_swaps/frombtc/onchain/FromBTCWrapper.ts +443 -0
  317. package/src/swaps/escrow_swaps/tobtc/IToBTCSwap.ts +860 -0
  318. package/src/swaps/escrow_swaps/tobtc/IToBTCWrapper.ts +104 -0
  319. package/src/swaps/escrow_swaps/tobtc/ln/ToBTCLNSwap.ts +256 -0
  320. package/src/swaps/escrow_swaps/tobtc/ln/ToBTCLNWrapper.ts +716 -0
  321. package/src/swaps/escrow_swaps/tobtc/onchain/ToBTCSwap.ts +151 -0
  322. package/src/swaps/escrow_swaps/tobtc/onchain/ToBTCWrapper.ts +299 -0
  323. package/src/swaps/spv_swaps/SpvFromBTCSwap.ts +1394 -0
  324. package/src/swaps/spv_swaps/SpvFromBTCWrapper.ts +796 -0
  325. package/src/swaps/trusted/ln/LnForGasSwap.ts +402 -0
  326. package/src/swaps/trusted/ln/LnForGasWrapper.ts +70 -0
  327. package/src/swaps/trusted/onchain/OnchainForGasSwap.ts +633 -0
  328. package/src/swaps/trusted/onchain/OnchainForGasWrapper.ts +110 -0
  329. package/src/types/AmountData.ts +9 -0
  330. package/src/types/CustomPriceFunction.ts +5 -0
  331. package/src/types/PriceInfoType.ts +67 -0
  332. package/src/types/SwapExecutionAction.ts +8 -0
  333. package/src/types/SwapWithSigner.ts +57 -0
  334. package/src/types/Token.ts +90 -0
  335. package/src/types/TokenAmount.ts +110 -0
  336. package/src/types/fees/Fee.ts +55 -0
  337. package/src/types/fees/FeeBreakdown.ts +11 -0
  338. package/src/types/fees/PercentagePPM.ts +24 -0
  339. package/src/types/lnurl/LNURLPay.ts +72 -0
  340. package/src/types/lnurl/LNURLWithdraw.ts +55 -0
  341. package/src/utils/AutomaticClockDriftCorrection.ts +71 -0
  342. package/src/utils/BitcoinUtils.ts +86 -0
  343. package/src/utils/BitcoinWalletUtils.ts +16 -0
  344. package/src/utils/Logger.ts +15 -0
  345. package/src/utils/RetryUtils.ts +71 -0
  346. package/src/utils/SwapUtils.ts +38 -0
  347. package/src/utils/TimeoutUtils.ts +50 -0
  348. package/src/utils/TokenUtils.ts +25 -0
  349. package/src/utils/TypeUtils.ts +9 -0
  350. package/src/utils/Utils.ts +182 -0
  351. package/dist/SwapperFactory.d.ts +0 -52
  352. package/dist/Utils.js +0 -37
  353. package/dist/fs-storage/FileSystemStorageManager.d.ts +0 -15
  354. package/dist/fs-storage/FileSystemStorageManager.js +0 -60
  355. package/dist/fs-storage/index.d.ts +0 -1
  356. package/dist/fs-storage/index.js +0 -17
  357. package/src/SmartChainAssets.js +0 -75
  358. package/src/SwapperFactory.js +0 -120
  359. package/src/Utils.js +0 -37
  360. package/src/Utils.ts +0 -31
  361. package/src/fs-storage/FileSystemStorageManager.ts +0 -71
  362. package/src/fs-storage/index.ts +0 -1
  363. package/src/index.js +0 -21
  364. package/src/storage/LocalStorageManager.js +0 -72
@@ -0,0 +1,123 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.utils = exports.DUST_THRESHOLDS = void 0;
4
+ const Logger_1 = require("../../utils/Logger");
5
+ const logger = (0, Logger_1.getLogger)("CoinSelect: ");
6
+ // baseline estimates, used to improve performance
7
+ const TX_EMPTY_SIZE = 4 + 1 + 1 + 4;
8
+ const TX_INPUT_BASE = 32 + 4 + 1 + 4;
9
+ const WITNESS_OVERHEAD = 2 / 4;
10
+ const P2WPKH_WITNESS = (1 + 1 + 72 + 1 + 33) / 4;
11
+ const P2TR_WITNESS = (1 + 1 + 65) / 4;
12
+ const TX_INPUT_PUBKEYHASH = 107;
13
+ const TX_INPUT_P2SH_P2WPKH = 23 + P2WPKH_WITNESS + 1;
14
+ const TX_INPUT_P2WPKH = 0 + P2WPKH_WITNESS;
15
+ const TX_INPUT_P2WSH = 0 + (1 + 1 + 64) / 4;
16
+ const TX_INPUT_P2TR = 0 + P2TR_WITNESS;
17
+ const TX_OUTPUT_BASE = 8 + 1;
18
+ const TX_OUTPUT_PUBKEYHASH = 25;
19
+ const TX_OUTPUT_P2SH_P2WPKH = 23;
20
+ const TX_OUTPUT_P2WPKH = 22;
21
+ const TX_OUTPUT_P2WSH = 34;
22
+ const TX_OUTPUT_P2TR = 34;
23
+ const INPUT_BYTES = {
24
+ "p2sh-p2wpkh": TX_INPUT_P2SH_P2WPKH,
25
+ "p2wpkh": TX_INPUT_P2WPKH,
26
+ "p2tr": TX_INPUT_P2TR,
27
+ "p2pkh": TX_INPUT_PUBKEYHASH,
28
+ "p2wsh": TX_INPUT_P2WSH
29
+ };
30
+ function inputBytes(input) {
31
+ if (input.script == null && input.type == null)
32
+ throw new Error("Needs either script or type defined!");
33
+ return TX_INPUT_BASE + (input.script ? input.script.length : INPUT_BYTES[input.type]);
34
+ }
35
+ const OUTPUT_BYTES = {
36
+ "p2sh-p2wpkh": TX_OUTPUT_P2SH_P2WPKH,
37
+ "p2wpkh": TX_OUTPUT_P2WPKH,
38
+ "p2tr": TX_OUTPUT_P2TR,
39
+ "p2pkh": TX_OUTPUT_PUBKEYHASH,
40
+ "p2wsh": TX_OUTPUT_P2WSH
41
+ };
42
+ function outputBytes(output) {
43
+ if (output.script == null && output.type == null)
44
+ throw new Error("Needs either script or type defined!");
45
+ return TX_OUTPUT_BASE + (output.script ? output.script.length : OUTPUT_BYTES[output.type]);
46
+ }
47
+ exports.DUST_THRESHOLDS = {
48
+ "p2sh-p2wpkh": 540,
49
+ "p2wpkh": 294,
50
+ "p2tr": 330,
51
+ "p2pkh": 546,
52
+ "p2wsh": 330
53
+ };
54
+ function dustThreshold(output) {
55
+ return exports.DUST_THRESHOLDS[output.type];
56
+ }
57
+ function transactionBytes(inputs, outputs, changeType) {
58
+ let size = TX_EMPTY_SIZE;
59
+ let isSegwit = false;
60
+ if (changeType != null && changeType !== "p2pkh") {
61
+ size += WITNESS_OVERHEAD;
62
+ isSegwit = true;
63
+ }
64
+ for (let input of inputs) {
65
+ if (!isSegwit && (input.type !== "p2pkh")) {
66
+ isSegwit = true;
67
+ size += WITNESS_OVERHEAD;
68
+ }
69
+ size += inputBytes(input);
70
+ }
71
+ for (let output of outputs) {
72
+ size += outputBytes(output);
73
+ }
74
+ return Math.ceil(size);
75
+ }
76
+ function uintOrNaN(v) {
77
+ if (typeof v !== 'number')
78
+ return NaN;
79
+ if (!isFinite(v))
80
+ return NaN;
81
+ if (Math.floor(v) !== v)
82
+ return NaN;
83
+ if (v < 0)
84
+ return NaN;
85
+ return v;
86
+ }
87
+ function sumForgiving(range) {
88
+ return range.reduce((a, x) => a + (isFinite(x.value) ? x.value : 0), 0);
89
+ }
90
+ function sumOrNaN(range) {
91
+ return range.reduce((a, x) => a + uintOrNaN(x.value), 0);
92
+ }
93
+ function finalize(inputs, outputs, feeRate, changeType, cpfpAddFee = 0) {
94
+ const bytesAccum = transactionBytes(inputs, outputs, changeType);
95
+ logger.debug("finalize(): Transaction bytes: ", bytesAccum);
96
+ const feeAfterExtraOutput = (feeRate * (bytesAccum + outputBytes({ type: changeType }))) + cpfpAddFee;
97
+ logger.debug("finalize(): TX fee after adding change output: ", feeAfterExtraOutput);
98
+ const remainderAfterExtraOutput = Math.floor(sumOrNaN(inputs) - (sumOrNaN(outputs) + feeAfterExtraOutput));
99
+ logger.debug("finalize(): Leaves change (changeType=" + changeType + ") value: ", remainderAfterExtraOutput);
100
+ // is it worth a change output?
101
+ if (remainderAfterExtraOutput >= dustThreshold({ type: changeType })) {
102
+ outputs = outputs.concat({ value: remainderAfterExtraOutput, type: changeType });
103
+ }
104
+ const fee = sumOrNaN(inputs) - sumOrNaN(outputs);
105
+ logger.debug("finalize(): Re-calculated total fee: ", fee);
106
+ if (!isFinite(fee))
107
+ return { fee: (feeRate * bytesAccum) + cpfpAddFee };
108
+ return {
109
+ inputs: inputs,
110
+ outputs: outputs,
111
+ fee: fee
112
+ };
113
+ }
114
+ exports.utils = {
115
+ dustThreshold: dustThreshold,
116
+ finalize: finalize,
117
+ inputBytes: inputBytes,
118
+ outputBytes: outputBytes,
119
+ sumOrNaN: sumOrNaN,
120
+ sumForgiving: sumForgiving,
121
+ transactionBytes: transactionBytes,
122
+ uintOrNaN: uintOrNaN
123
+ };
@@ -0,0 +1,350 @@
1
+ /// <reference types="node" />
2
+ /// <reference types="node" />
3
+ import { Buffer } from "buffer";
4
+ /**
5
+ * Bitcoin transaction confirmation status
6
+ * @category Bitcoin
7
+ */
8
+ export type BitcoinTransactionStatus = {
9
+ confirmed: boolean;
10
+ block_height: number;
11
+ block_hash: string;
12
+ block_time: number;
13
+ };
14
+ /**
15
+ * Bitcoin transaction output
16
+ * @category Bitcoin
17
+ */
18
+ export type TxVout = {
19
+ scriptpubkey: string;
20
+ scriptpubkey_asm: string;
21
+ scriptpubkey_type: string;
22
+ scriptpubkey_address: string;
23
+ value: number;
24
+ };
25
+ /**
26
+ * Bitcoin transaction input
27
+ * @category Bitcoin
28
+ */
29
+ export type TxVin = {
30
+ txid: string;
31
+ vout: number;
32
+ prevout: TxVout;
33
+ scriptsig: string;
34
+ scriptsig_asm: string;
35
+ witness: string[];
36
+ is_coinbase: boolean;
37
+ sequence: number;
38
+ inner_witnessscript_asm: string;
39
+ };
40
+ /**
41
+ * Full Bitcoin transaction data
42
+ * @category Bitcoin
43
+ */
44
+ export type BitcoinTransaction = {
45
+ txid: string;
46
+ version: number;
47
+ locktime: number;
48
+ vin: TxVin[];
49
+ vout: TxVout[];
50
+ size: number;
51
+ weight: number;
52
+ fee: number;
53
+ status: BitcoinTransactionStatus;
54
+ };
55
+ /**
56
+ * Bitcoin block data
57
+ * @category Bitcoin
58
+ */
59
+ export type BlockData = {
60
+ bits: number;
61
+ difficulty: number;
62
+ extras: any;
63
+ height: number;
64
+ id: string;
65
+ mediantime: number;
66
+ merkle_root: string;
67
+ nonce: number;
68
+ previousblockhash: string;
69
+ size: number;
70
+ timestamp: number;
71
+ tx_count: number;
72
+ version: number;
73
+ weight: number;
74
+ };
75
+ /**
76
+ * Bitcoin block header data
77
+ * @category Bitcoin
78
+ */
79
+ export type BitcoinBlockHeader = {
80
+ id: string;
81
+ height: number;
82
+ version: number;
83
+ timestamp: number;
84
+ tx_count: number;
85
+ size: number;
86
+ weight: number;
87
+ merkle_root: string;
88
+ previousblockhash: string;
89
+ mediantime: number;
90
+ nonce: number;
91
+ bits: number;
92
+ difficulty: number;
93
+ };
94
+ export type LNNodeInfo = {
95
+ public_key: string;
96
+ alias: string;
97
+ first_seen: number;
98
+ updated_at: number;
99
+ color: string;
100
+ sockets: string;
101
+ as_number: number;
102
+ city_id: number;
103
+ country_id: number;
104
+ subdivision_id: number;
105
+ longtitude: number;
106
+ latitude: number;
107
+ iso_code: string;
108
+ as_organization: string;
109
+ city: {
110
+ [lang: string]: string;
111
+ };
112
+ country: {
113
+ [lang: string]: string;
114
+ };
115
+ subdivision: {
116
+ [lang: string]: string;
117
+ };
118
+ active_channel_count: number;
119
+ capacity: string;
120
+ opened_channel_count: number;
121
+ closed_channel_count: number;
122
+ };
123
+ export type AddressInfo = {
124
+ address: string;
125
+ chain_stats: {
126
+ funded_txo_count: number;
127
+ funded_txo_sum: number;
128
+ spent_txo_count: number;
129
+ spent_txo_sum: number;
130
+ tx_count: number;
131
+ };
132
+ mempool_stats: {
133
+ funded_txo_count: number;
134
+ funded_txo_sum: number;
135
+ spent_txo_count: number;
136
+ spent_txo_sum: number;
137
+ tx_count: number;
138
+ };
139
+ };
140
+ export type TransactionCPFPData = {
141
+ ancestors: {
142
+ txid: string;
143
+ fee: number;
144
+ weight: number;
145
+ }[];
146
+ descendants: {
147
+ txid: string;
148
+ fee: number;
149
+ weight: number;
150
+ }[];
151
+ effectiveFeePerVsize: number;
152
+ sigops: number;
153
+ adjustedVsize: number;
154
+ };
155
+ export type BitcoinFees = {
156
+ fastestFee: number;
157
+ halfHourFee: number;
158
+ hourFee: number;
159
+ economyFee: number;
160
+ minimumFee: number;
161
+ };
162
+ export type BitcoinPendingBlock = {
163
+ blockSize: number;
164
+ blockVSize: number;
165
+ nTx: number;
166
+ totalFees: number;
167
+ medianFee: number;
168
+ feeRange: number[];
169
+ };
170
+ export type BlockStatus = {
171
+ in_best_chain: boolean;
172
+ height: number;
173
+ next_best: string;
174
+ };
175
+ export type TransactionProof = {
176
+ block_height: number;
177
+ merkle: string[];
178
+ pos: number;
179
+ };
180
+ export type TransactionOutspend = {
181
+ spent: boolean;
182
+ txid: string;
183
+ vin: number;
184
+ status: BitcoinTransactionStatus;
185
+ };
186
+ /**
187
+ * Mempool.space REST API client for Bitcoin blockchain data
188
+ * @category Bitcoin
189
+ */
190
+ export declare class MempoolApi {
191
+ backends: {
192
+ url: string;
193
+ operational: boolean | null;
194
+ }[];
195
+ timeout: number;
196
+ /**
197
+ * Returns api url that should be operational
198
+ *
199
+ * @private
200
+ */
201
+ private getOperationalApi;
202
+ /**
203
+ * Returns api urls that are maybe operational, in case none is considered operational returns all of the price
204
+ * apis such that they can be tested again whether they are operational
205
+ *
206
+ * @private
207
+ */
208
+ private getMaybeOperationalApis;
209
+ /**
210
+ * Sends a GET or POST request to the mempool api, handling the non-200 responses as errors & throwing
211
+ *
212
+ * @param url
213
+ * @param path
214
+ * @param responseType
215
+ * @param type
216
+ * @param body
217
+ */
218
+ private _request;
219
+ /**
220
+ * Sends request in parallel to multiple maybe operational api urls
221
+ *
222
+ * @param path
223
+ * @param responseType
224
+ * @param type
225
+ * @param body
226
+ * @private
227
+ */
228
+ private requestFromMaybeOperationalUrls;
229
+ /**
230
+ * Sends a request to mempool API, first tries to use the operational API (if any) and if that fails it falls back
231
+ * to using maybe operational price APIs
232
+ *
233
+ * @param path
234
+ * @param responseType
235
+ * @param type
236
+ * @param body
237
+ * @private
238
+ */
239
+ private request;
240
+ constructor(url?: string | string[], timeout?: number);
241
+ /**
242
+ * Returns information about a specific lightning network node as identified by the public key (in hex encoding)
243
+ *
244
+ * @param pubkey
245
+ */
246
+ getLNNodeInfo(pubkey: string): Promise<LNNodeInfo | null>;
247
+ /**
248
+ * Returns on-chain transaction as identified by its txId
249
+ *
250
+ * @param txId
251
+ */
252
+ getTransaction(txId: string): Promise<BitcoinTransaction | null>;
253
+ /**
254
+ * Returns raw binary encoded bitcoin transaction, also strips the witness data from the transaction
255
+ *
256
+ * @param txId
257
+ */
258
+ getRawTransaction(txId: string): Promise<Buffer | null>;
259
+ /**
260
+ * Returns confirmed & unconfirmed balance of the specific bitcoin address
261
+ *
262
+ * @param address
263
+ */
264
+ getAddressBalances(address: string): Promise<{
265
+ confirmedBalance: bigint;
266
+ unconfirmedBalance: bigint;
267
+ }>;
268
+ /**
269
+ * Returns CPFP (children pays for parent) data for a given transaction
270
+ *
271
+ * @param txId
272
+ */
273
+ getCPFPData(txId: string): Promise<TransactionCPFPData>;
274
+ /**
275
+ * Returns UTXOs (unspent transaction outputs) for a given address
276
+ *
277
+ * @param address
278
+ */
279
+ getAddressUTXOs(address: string): Promise<{
280
+ txid: string;
281
+ vout: number;
282
+ status: {
283
+ confirmed: boolean;
284
+ block_height: number;
285
+ block_hash: string;
286
+ block_time: number;
287
+ };
288
+ value: bigint;
289
+ }[]>;
290
+ /**
291
+ * Returns current on-chain bitcoin fees
292
+ */
293
+ getFees(): Promise<BitcoinFees>;
294
+ /**
295
+ * Returns all transactions for a given address
296
+ *
297
+ * @param address
298
+ */
299
+ getAddressTransactions(address: string): Promise<BitcoinTransaction[]>;
300
+ /**
301
+ * Returns expected pending (mempool) blocks
302
+ */
303
+ getPendingBlocks(): Promise<BitcoinPendingBlock[]>;
304
+ /**
305
+ * Returns the blockheight of the current bitcoin blockchain's tip
306
+ */
307
+ getTipBlockHeight(): Promise<number>;
308
+ /**
309
+ * Returns the bitcoin blockheader as identified by its blockhash
310
+ *
311
+ * @param blockhash
312
+ */
313
+ getBlockHeader(blockhash: string): Promise<BitcoinBlockHeader>;
314
+ /**
315
+ * Returns the block status
316
+ *
317
+ * @param blockhash
318
+ */
319
+ getBlockStatus(blockhash: string): Promise<BlockStatus>;
320
+ /**
321
+ * Returns the transaction's proof (merkle proof)
322
+ *
323
+ * @param txId
324
+ */
325
+ getTransactionProof(txId: string): Promise<TransactionProof>;
326
+ /**
327
+ * Returns the transaction's proof (merkle proof)
328
+ *
329
+ * @param txId
330
+ */
331
+ getOutspends(txId: string): Promise<TransactionOutspend[]>;
332
+ /**
333
+ * Returns blockhash of a block at a specific blockheight
334
+ *
335
+ * @param height
336
+ */
337
+ getBlockHash(height: number): Promise<string>;
338
+ /**
339
+ * Returns past 15 blockheaders before (and including) the specified height
340
+ *
341
+ * @param endHeight
342
+ */
343
+ getPast15BlockHeaders(endHeight: number): Promise<BlockData[]>;
344
+ /**
345
+ * Sends raw hex encoded bitcoin transaction
346
+ *
347
+ * @param transactionHex
348
+ */
349
+ sendTransaction(transactionHex: string): Promise<string>;
350
+ }