@atomiqlabs/sdk 7.0.12 → 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} +37 -19
  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} +113 -72
  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,70 @@
1
+ import { ISwapPrice } from "./abstract/ISwapPrice";
2
+ import { ChainIds, MultiChain } from "../swapper/Swapper";
3
+ import { Token } from "../types/Token";
4
+ import { PriceInfoType } from "../types/PriceInfoType";
5
+ /**
6
+ * Chain-specific wrapper for swap pricing
7
+ * @category Pricing and LPs
8
+ */
9
+ export declare class SwapPriceWithChain<T extends MultiChain, ChainIdentifier extends ChainIds<T>> {
10
+ swapPrice: ISwapPrice<T>;
11
+ chainIdentifier: ChainIdentifier;
12
+ maxAllowedFeeDifferencePPM: bigint;
13
+ constructor(swapPrice: ISwapPrice<T>, chainIdentifier: ChainIdentifier);
14
+ /**
15
+ * Checks whether the swap amounts are valid given the current market rate for a given pair
16
+ *
17
+ * @param amountSats Amount of sats (BTC) to be received from the swap
18
+ * @param satsBaseFee Base fee in sats (BTC) as reported by the intermediary
19
+ * @param feePPM PPM fee rate as reported by the intermediary
20
+ * @param paidToken Amount of token to be paid to the swap
21
+ * @param token
22
+ * @param abortSignal
23
+ * @param preFetchedPrice Already pre-fetched price
24
+ */
25
+ isValidAmountSend(amountSats: bigint, satsBaseFee: bigint, feePPM: bigint, paidToken: bigint, token: string, abortSignal?: AbortSignal, preFetchedPrice?: bigint): Promise<PriceInfoType>;
26
+ /**
27
+ * Checks whether the swap amounts are valid given the current market rate for a given pair
28
+ *
29
+ * @param amountSats Amount of sats (BTC) to be paid to the swap
30
+ * @param satsBaseFee Base fee in sats (BTC) as reported by the intermediary
31
+ * @param feePPM PPM fee rate as reported by the intermediary
32
+ * @param receiveToken Amount of token to be received from the swap
33
+ * @param token
34
+ * @param abortSignal
35
+ * @param preFetchedPrice Already pre-fetched price
36
+ */
37
+ isValidAmountReceive(amountSats: bigint, satsBaseFee: bigint, feePPM: bigint, receiveToken: bigint, token: string, abortSignal?: AbortSignal, preFetchedPrice?: bigint): Promise<PriceInfoType>;
38
+ preFetchPrice(token: string, abortSignal?: AbortSignal): Promise<bigint>;
39
+ preFetchUsdPrice(abortSignal?: AbortSignal): Promise<number>;
40
+ /**
41
+ * Returns amount of {toToken} that are equivalent to {fromAmount} satoshis
42
+ *
43
+ * @param fromAmount Amount of satoshis
44
+ * @param toToken Token
45
+ * @param abortSignal
46
+ * @param preFetchedPrice
47
+ * @throws {Error} when token is not found
48
+ */
49
+ getFromBtcSwapAmount(fromAmount: bigint, toToken: string, abortSignal?: AbortSignal, preFetchedPrice?: bigint): Promise<bigint>;
50
+ /**
51
+ * Returns amount of satoshis that are equivalent to {fromAmount} of {fromToken}
52
+ *
53
+ * @param fromAmount Amount of the token
54
+ * @param fromToken Token
55
+ * @param abortSignal
56
+ * @param preFetchedPrice Pre-fetched swap price if available
57
+ * @throws {Error} when token is not found
58
+ */
59
+ getToBtcSwapAmount(fromAmount: bigint, fromToken: string, abortSignal?: AbortSignal, preFetchedPrice?: bigint): Promise<bigint>;
60
+ /**
61
+ * Returns whether the token should be ignored and pricing for it not calculated
62
+ *
63
+ * @param tokenAddress
64
+ * @throws {Error} if token is not found
65
+ */
66
+ shouldIgnore(tokenAddress: string): boolean;
67
+ getBtcUsdValue(btcSats: bigint, abortSignal?: AbortSignal, preFetchedPrice?: number): Promise<number>;
68
+ getTokenUsdValue(tokenAmount: bigint, token: string, abortSignal?: AbortSignal, preFetchedPrice?: number): Promise<number>;
69
+ getUsdValue(amount: bigint, token: Token<ChainIdentifier>, abortSignal?: AbortSignal, preFetchedUsdPrice?: number): Promise<number>;
70
+ }
@@ -0,0 +1,91 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SwapPriceWithChain = void 0;
4
+ /**
5
+ * Chain-specific wrapper for swap pricing
6
+ * @category Pricing and LPs
7
+ */
8
+ class SwapPriceWithChain {
9
+ constructor(swapPrice, chainIdentifier) {
10
+ this.swapPrice = swapPrice;
11
+ this.chainIdentifier = chainIdentifier;
12
+ this.maxAllowedFeeDifferencePPM = swapPrice.maxAllowedFeeDifferencePPM;
13
+ }
14
+ /**
15
+ * Checks whether the swap amounts are valid given the current market rate for a given pair
16
+ *
17
+ * @param amountSats Amount of sats (BTC) to be received from the swap
18
+ * @param satsBaseFee Base fee in sats (BTC) as reported by the intermediary
19
+ * @param feePPM PPM fee rate as reported by the intermediary
20
+ * @param paidToken Amount of token to be paid to the swap
21
+ * @param token
22
+ * @param abortSignal
23
+ * @param preFetchedPrice Already pre-fetched price
24
+ */
25
+ async isValidAmountSend(amountSats, satsBaseFee, feePPM, paidToken, token, abortSignal, preFetchedPrice) {
26
+ return this.swapPrice.isValidAmountSend(this.chainIdentifier, amountSats, satsBaseFee, feePPM, paidToken, token, abortSignal, preFetchedPrice);
27
+ }
28
+ /**
29
+ * Checks whether the swap amounts are valid given the current market rate for a given pair
30
+ *
31
+ * @param amountSats Amount of sats (BTC) to be paid to the swap
32
+ * @param satsBaseFee Base fee in sats (BTC) as reported by the intermediary
33
+ * @param feePPM PPM fee rate as reported by the intermediary
34
+ * @param receiveToken Amount of token to be received from the swap
35
+ * @param token
36
+ * @param abortSignal
37
+ * @param preFetchedPrice Already pre-fetched price
38
+ */
39
+ async isValidAmountReceive(amountSats, satsBaseFee, feePPM, receiveToken, token, abortSignal, preFetchedPrice) {
40
+ return this.swapPrice.isValidAmountReceive(this.chainIdentifier, amountSats, satsBaseFee, feePPM, receiveToken, token, abortSignal, preFetchedPrice);
41
+ }
42
+ preFetchPrice(token, abortSignal) {
43
+ return this.swapPrice.preFetchPrice(this.chainIdentifier, token, abortSignal);
44
+ }
45
+ preFetchUsdPrice(abortSignal) {
46
+ return this.swapPrice.preFetchUsdPrice(abortSignal);
47
+ }
48
+ /**
49
+ * Returns amount of {toToken} that are equivalent to {fromAmount} satoshis
50
+ *
51
+ * @param fromAmount Amount of satoshis
52
+ * @param toToken Token
53
+ * @param abortSignal
54
+ * @param preFetchedPrice
55
+ * @throws {Error} when token is not found
56
+ */
57
+ async getFromBtcSwapAmount(fromAmount, toToken, abortSignal, preFetchedPrice) {
58
+ return this.swapPrice.getFromBtcSwapAmount(this.chainIdentifier, fromAmount, toToken, abortSignal, preFetchedPrice);
59
+ }
60
+ /**
61
+ * Returns amount of satoshis that are equivalent to {fromAmount} of {fromToken}
62
+ *
63
+ * @param fromAmount Amount of the token
64
+ * @param fromToken Token
65
+ * @param abortSignal
66
+ * @param preFetchedPrice Pre-fetched swap price if available
67
+ * @throws {Error} when token is not found
68
+ */
69
+ async getToBtcSwapAmount(fromAmount, fromToken, abortSignal, preFetchedPrice) {
70
+ return this.swapPrice.getToBtcSwapAmount(this.chainIdentifier, fromAmount, fromToken, abortSignal, preFetchedPrice);
71
+ }
72
+ /**
73
+ * Returns whether the token should be ignored and pricing for it not calculated
74
+ *
75
+ * @param tokenAddress
76
+ * @throws {Error} if token is not found
77
+ */
78
+ shouldIgnore(tokenAddress) {
79
+ return this.swapPrice.shouldIgnore(this.chainIdentifier, tokenAddress);
80
+ }
81
+ async getBtcUsdValue(btcSats, abortSignal, preFetchedPrice) {
82
+ return this.swapPrice.getBtcUsdValue(btcSats, abortSignal, preFetchedPrice);
83
+ }
84
+ async getTokenUsdValue(tokenAmount, token, abortSignal, preFetchedPrice) {
85
+ return this.swapPrice.getTokenUsdValue(this.chainIdentifier, tokenAmount, token, abortSignal, preFetchedPrice);
86
+ }
87
+ getUsdValue(amount, token, abortSignal, preFetchedUsdPrice) {
88
+ return this.swapPrice.getUsdValue(amount, token, abortSignal, preFetchedUsdPrice);
89
+ }
90
+ }
91
+ exports.SwapPriceWithChain = SwapPriceWithChain;
@@ -0,0 +1,28 @@
1
+ import { ISwapPrice } from "./ISwapPrice";
2
+ import { ChainIds, MultiChain } from "../../swapper/Swapper";
3
+ export declare abstract class ICachedSwapPrice<T extends MultiChain> extends ISwapPrice<T> {
4
+ cache: {
5
+ [chainIdentifier in keyof T]?: {
6
+ [tokenAddress: string]: {
7
+ price: Promise<bigint>;
8
+ expiry: number;
9
+ };
10
+ };
11
+ };
12
+ usdCache?: {
13
+ price: Promise<number>;
14
+ expiry: number;
15
+ };
16
+ cacheTimeout: number;
17
+ protected constructor(maxAllowedFeeDiffPPM: bigint, cacheTimeout?: number);
18
+ protected abstract fetchPrice<C extends ChainIds<T>>(chainIdentifier: C, token: string, abortSignal?: AbortSignal): Promise<bigint>;
19
+ protected abstract fetchUsdPrice(abortSignal?: AbortSignal): Promise<number>;
20
+ protected getPrice<C extends ChainIds<T>>(chainIdentifier: C, tokenAddress: string, abortSignal?: AbortSignal): Promise<bigint>;
21
+ /**
22
+ * Returns BTC price in USD (sats/USD)
23
+ *
24
+ * @param abortSignal
25
+ * @throws {Error} if token is not found
26
+ */
27
+ protected getUsdPrice(abortSignal?: AbortSignal): Promise<number>;
28
+ }
@@ -0,0 +1,62 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ICachedSwapPrice = void 0;
4
+ const ISwapPrice_1 = require("./ISwapPrice");
5
+ const DEFAULT_CACHE_DURATION = 10000;
6
+ class ICachedSwapPrice extends ISwapPrice_1.ISwapPrice {
7
+ constructor(maxAllowedFeeDiffPPM, cacheTimeout) {
8
+ super(maxAllowedFeeDiffPPM);
9
+ this.cache = {};
10
+ this.cacheTimeout = cacheTimeout || DEFAULT_CACHE_DURATION;
11
+ }
12
+ getPrice(chainIdentifier, tokenAddress, abortSignal) {
13
+ const token = tokenAddress.toString();
14
+ const chainCache = this.cache[chainIdentifier];
15
+ if (chainCache != null) {
16
+ const cachedValue = chainCache[token];
17
+ if (cachedValue != null && cachedValue.expiry > Date.now()) {
18
+ //Cache still fresh
19
+ return cachedValue.price.catch(e => this.fetchPrice(chainIdentifier, token, abortSignal));
20
+ }
21
+ }
22
+ //Refresh cache
23
+ const thisFetch = this.fetchPrice(chainIdentifier, token);
24
+ this.cache[chainIdentifier] ??= {};
25
+ this.cache[chainIdentifier][token] = {
26
+ price: thisFetch,
27
+ expiry: Date.now() + this.cacheTimeout
28
+ };
29
+ thisFetch.catch(e => {
30
+ if (this.cache?.[chainIdentifier]?.[token].price === thisFetch)
31
+ delete this.cache[token];
32
+ throw e;
33
+ });
34
+ return thisFetch;
35
+ }
36
+ /**
37
+ * Returns BTC price in USD (sats/USD)
38
+ *
39
+ * @param abortSignal
40
+ * @throws {Error} if token is not found
41
+ */
42
+ getUsdPrice(abortSignal) {
43
+ if (this.usdCache != null && this.usdCache.expiry > Date.now()) {
44
+ //Cache still fresh
45
+ return this.usdCache.price.catch(e => this.fetchUsdPrice(abortSignal));
46
+ }
47
+ //Refresh cache
48
+ const thisFetch = this.fetchUsdPrice();
49
+ this.usdCache = {
50
+ price: thisFetch,
51
+ expiry: Date.now() + this.cacheTimeout
52
+ };
53
+ thisFetch.catch(e => {
54
+ if (this.usdCache != null &&
55
+ this.usdCache.price === thisFetch)
56
+ delete this.usdCache;
57
+ throw e;
58
+ });
59
+ return thisFetch;
60
+ }
61
+ }
62
+ exports.ICachedSwapPrice = ICachedSwapPrice;
@@ -0,0 +1,81 @@
1
+ import { ChainIds, MultiChain } from "../../swapper/Swapper";
2
+ /**
3
+ * Coin type definition for price providers
4
+ * @category Pricing and LPs
5
+ */
6
+ export type CoinType = {
7
+ coinId: string;
8
+ decimals: number;
9
+ };
10
+ /**
11
+ * Constructor coin types for price providers
12
+ * @category Pricing and LPs
13
+ */
14
+ export type CtorCoinTypes<T extends MultiChain> = {
15
+ coinId?: string;
16
+ chains: {
17
+ [chainId in keyof T]?: {
18
+ address: string;
19
+ decimals: number;
20
+ };
21
+ };
22
+ }[];
23
+ /**
24
+ * Coin types mapping by chain
25
+ * @category Pricing and LPs
26
+ */
27
+ export type CoinTypes<T extends MultiChain> = {
28
+ [chainId in keyof T]?: {
29
+ [address: string]: CoinType;
30
+ };
31
+ };
32
+ /**
33
+ * Abstract base class for price provider implementations
34
+ * @category Pricing and LPs
35
+ */
36
+ export declare abstract class IPriceProvider<T extends MultiChain> {
37
+ coinsMap: CoinTypes<T>;
38
+ protected constructor(coins: CtorCoinTypes<T>);
39
+ /**
40
+ * Fetches the price for a given token against BTC
41
+ *
42
+ * @param token
43
+ * @param abortSignal
44
+ * @protected
45
+ * @returns Price per token in uSats (micro sats)
46
+ */
47
+ protected abstract fetchPrice(token: CoinType, abortSignal?: AbortSignal): Promise<bigint>;
48
+ /**
49
+ * Fetches the USD price of BTC
50
+ *
51
+ * @param abortSignal
52
+ * @protected
53
+ */
54
+ protected abstract fetchUsdPrice(abortSignal?: AbortSignal): Promise<number>;
55
+ /**
56
+ * Returns coin price in uSat (microSat)
57
+ *
58
+ * @param chainIdentifier
59
+ * @param token
60
+ * @param abortSignal
61
+ * @throws {Error} if token is not found
62
+ */
63
+ getPrice<C extends ChainIds<T>>(chainIdentifier: C, token: string, abortSignal?: AbortSignal): Promise<bigint>;
64
+ /**
65
+ * Returns coin price in uSat (microSat)
66
+ *
67
+ * @param abortSignal
68
+ * @throws {Error} if token is not found
69
+ */
70
+ getUsdPrice(abortSignal?: AbortSignal): Promise<number>;
71
+ /**
72
+ * Returns the decimal places of the specified token, or -1 if token should be ignored, returns null if
73
+ * token is not found
74
+ *
75
+ * @param chainIdentifier
76
+ * @param token
77
+ * @protected
78
+ * @throws {Error} If token is not found
79
+ */
80
+ getDecimals<C extends ChainIds<T>>(chainIdentifier: C, token: string): number;
81
+ }
@@ -0,0 +1,74 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.IPriceProvider = void 0;
4
+ /**
5
+ * Abstract base class for price provider implementations
6
+ * @category Pricing and LPs
7
+ */
8
+ class IPriceProvider {
9
+ constructor(coins) {
10
+ this.coinsMap = {};
11
+ for (let coinData of coins) {
12
+ if (coinData.coinId == null)
13
+ continue;
14
+ for (let chainId in coinData.chains) {
15
+ const { address, decimals } = coinData.chains[chainId];
16
+ this.coinsMap[chainId] ??= {};
17
+ this.coinsMap[chainId][address.toString()] = {
18
+ coinId: coinData.coinId,
19
+ decimals
20
+ };
21
+ }
22
+ }
23
+ }
24
+ /**
25
+ * Returns coin price in uSat (microSat)
26
+ *
27
+ * @param chainIdentifier
28
+ * @param token
29
+ * @param abortSignal
30
+ * @throws {Error} if token is not found
31
+ */
32
+ getPrice(chainIdentifier, token, abortSignal) {
33
+ let tokenAddress = token.toString();
34
+ const chainTokens = this.coinsMap[chainIdentifier];
35
+ if (chainTokens == null)
36
+ throw new Error("Chain not found");
37
+ const coin = chainTokens[tokenAddress];
38
+ if (coin == null)
39
+ throw new Error("Token not found");
40
+ if (coin.coinId.startsWith("$fixed-")) {
41
+ const amt = parseFloat(coin.coinId.substring(7));
42
+ return Promise.resolve(BigInt(Math.floor(amt * 1000000).toString(10)));
43
+ }
44
+ return this.fetchPrice(coin, abortSignal);
45
+ }
46
+ /**
47
+ * Returns coin price in uSat (microSat)
48
+ *
49
+ * @param abortSignal
50
+ * @throws {Error} if token is not found
51
+ */
52
+ getUsdPrice(abortSignal) {
53
+ return this.fetchUsdPrice(abortSignal);
54
+ }
55
+ /**
56
+ * Returns the decimal places of the specified token, or -1 if token should be ignored, returns null if
57
+ * token is not found
58
+ *
59
+ * @param chainIdentifier
60
+ * @param token
61
+ * @protected
62
+ * @throws {Error} If token is not found
63
+ */
64
+ getDecimals(chainIdentifier, token) {
65
+ const chainTokens = this.coinsMap[chainIdentifier];
66
+ if (chainTokens == null)
67
+ throw new Error("Chain not found");
68
+ const coin = chainTokens[token.toString()];
69
+ if (coin == null)
70
+ throw new Error("Token not found");
71
+ return coin.coinId === "$ignore" ? -1 : coin.decimals;
72
+ }
73
+ }
74
+ exports.IPriceProvider = IPriceProvider;
@@ -0,0 +1,117 @@
1
+ import { ChainIds, MultiChain } from "../../swapper/Swapper";
2
+ import { Token } from "../../types/Token";
3
+ import { PriceInfoType } from "../../types/PriceInfoType";
4
+ /**
5
+ * Abstract base class for swap pricing implementations
6
+ * @category Pricing and LPs
7
+ */
8
+ export declare abstract class ISwapPrice<T extends MultiChain = MultiChain> {
9
+ maxAllowedFeeDifferencePPM: bigint;
10
+ protected constructor(maxAllowedFeeDifferencePPM: bigint);
11
+ /**
12
+ * Gets the decimal places for a given token, returns -1 if token should be ignored & null if token is not found
13
+ * @param chainIdentifier
14
+ * @param token
15
+ * @protected
16
+ */
17
+ protected abstract getDecimals<C extends ChainIds<T>>(chainIdentifier: C, token: string): number | null;
18
+ /**
19
+ * Returns the price of the token in BTC uSats (microSats)
20
+ *
21
+ * @param chainIdentifier
22
+ * @param token
23
+ * @param abortSignal
24
+ * @protected
25
+ */
26
+ protected abstract getPrice<C extends ChainIds<T>>(chainIdentifier: C, token: string, abortSignal?: AbortSignal): Promise<bigint>;
27
+ /**
28
+ * Returns the price of bitcoin in USD, (sats/USD)
29
+ *
30
+ * @param abortSignal
31
+ * @protected
32
+ */
33
+ protected abstract getUsdPrice(abortSignal?: AbortSignal): Promise<number>;
34
+ protected getDecimalsThrowing<C extends ChainIds<T>>(chainIdentifier: C, token: string): number;
35
+ /**
36
+ * Recomputes pricing info without fetching the current price
37
+ *
38
+ * @param chainIdentifier
39
+ * @param amountSats
40
+ * @param satsBaseFee
41
+ * @param feePPM
42
+ * @param paidToken
43
+ * @param token
44
+ */
45
+ recomputePriceInfoSend<C extends ChainIds<T>>(chainIdentifier: C, amountSats: bigint, satsBaseFee: bigint, feePPM: bigint, paidToken: bigint, token: string): PriceInfoType;
46
+ /**
47
+ * Checks whether the swap amounts are valid given the current market rate for a given pair
48
+ *
49
+ * @param chainIdentifier
50
+ * @param amountSats Amount of sats (BTC) to be received from the swap
51
+ * @param satsBaseFee Base fee in sats (BTC) as reported by the intermediary
52
+ * @param feePPM PPM fee rate as reported by the intermediary
53
+ * @param paidToken Amount of token to be paid to the swap
54
+ * @param token
55
+ * @param abortSignal
56
+ * @param preFetchedPrice Already pre-fetched price
57
+ */
58
+ isValidAmountSend<C extends ChainIds<T>>(chainIdentifier: C, amountSats: bigint, satsBaseFee: bigint, feePPM: bigint, paidToken: bigint, token: string, abortSignal?: AbortSignal, preFetchedPrice?: bigint | null): Promise<PriceInfoType>;
59
+ /**
60
+ * Recomputes pricing info without fetching the current price
61
+ *
62
+ * @param chainIdentifier
63
+ * @param amountSats
64
+ * @param satsBaseFee
65
+ * @param feePPM
66
+ * @param receiveToken
67
+ * @param token
68
+ */
69
+ recomputePriceInfoReceive<C extends ChainIds<T>>(chainIdentifier: C, amountSats: bigint, satsBaseFee: bigint, feePPM: bigint, receiveToken: bigint, token: string): PriceInfoType;
70
+ /**
71
+ * Checks whether the swap amounts are valid given the current market rate for a given pair
72
+ *
73
+ * @param chainIdentifier
74
+ * @param amountSats Amount of sats (BTC) to be paid to the swap
75
+ * @param satsBaseFee Base fee in sats (BTC) as reported by the intermediary
76
+ * @param feePPM PPM fee rate as reported by the intermediary
77
+ * @param receiveToken Amount of token to be received from the swap
78
+ * @param token
79
+ * @param abortSignal
80
+ * @param preFetchedPrice Already pre-fetched price
81
+ */
82
+ isValidAmountReceive<C extends ChainIds<T>>(chainIdentifier: C, amountSats: bigint, satsBaseFee: bigint, feePPM: bigint, receiveToken: bigint, token: string, abortSignal?: AbortSignal, preFetchedPrice?: bigint | null): Promise<PriceInfoType>;
83
+ preFetchPrice<C extends ChainIds<T>>(chainIdentifier: C, token: string, abortSignal?: AbortSignal): Promise<bigint>;
84
+ preFetchUsdPrice(abortSignal?: AbortSignal): Promise<number>;
85
+ /**
86
+ * Returns amount of {toToken} that are equivalent to {fromAmount} satoshis
87
+ *
88
+ * @param chainIdentifier
89
+ * @param fromAmount Amount of satoshis
90
+ * @param toToken Token
91
+ * @param abortSignal
92
+ * @param preFetchedPrice
93
+ * @throws {Error} when token is not found
94
+ */
95
+ getFromBtcSwapAmount<C extends ChainIds<T>>(chainIdentifier: C, fromAmount: bigint, toToken: string, abortSignal?: AbortSignal, preFetchedPrice?: bigint | null): Promise<bigint>;
96
+ /**
97
+ * Returns amount of satoshis that are equivalent to {fromAmount} of {fromToken}
98
+ *
99
+ * @param chainIdentifier
100
+ * @param fromAmount Amount of the token
101
+ * @param fromToken Token
102
+ * @param abortSignal
103
+ * @param preFetchedPrice Pre-fetched swap price if available
104
+ * @throws {Error} when token is not found
105
+ */
106
+ getToBtcSwapAmount<C extends ChainIds<T>>(chainIdentifier: C, fromAmount: bigint, fromToken: string, abortSignal?: AbortSignal, preFetchedPrice?: bigint): Promise<bigint>;
107
+ /**
108
+ * Returns whether the token should be ignored and pricing for it not calculated
109
+ * @param chainIdentifier
110
+ * @param tokenAddress
111
+ * @throws {Error} if token is not found
112
+ */
113
+ shouldIgnore<C extends ChainIds<T>>(chainIdentifier: C, tokenAddress: string): boolean;
114
+ getBtcUsdValue(btcSats: bigint, abortSignal?: AbortSignal, preFetchedPrice?: number): Promise<number>;
115
+ getTokenUsdValue<C extends ChainIds<T>>(chainId: C, tokenAmount: bigint, token: string, abortSignal?: AbortSignal, preFetchedPrice?: number): Promise<number>;
116
+ getUsdValue<C extends ChainIds<T>>(amount: bigint, token: Token<C>, abortSignal?: AbortSignal, preFetchedUsdPrice?: number): Promise<number>;
117
+ }