@atomiqlabs/sdk 7.0.12 → 8.0.8

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,464 @@
1
+ import {IntermediaryDiscovery, SwapBounds} from "../intermediaries/IntermediaryDiscovery";
2
+ import {SwapType} from "../enums/SwapType";
3
+ import {LnForGasSwap} from "../swaps/trusted/ln/LnForGasSwap";
4
+ import {ISwap} from "../swaps/ISwap";
5
+ import {IToBTCSwap} from "../swaps/escrow_swaps/tobtc/IToBTCSwap";
6
+ import {ChainIds, MultiChain, SupportsSwapType, Swapper} from "./Swapper";
7
+ import {FromBTCLNSwap} from "../swaps/escrow_swaps/frombtc/ln/FromBTCLNSwap";
8
+ import {FromBTCSwap} from "../swaps/escrow_swaps/frombtc/onchain/FromBTCSwap";
9
+ import {ToBTCLNSwap} from "../swaps/escrow_swaps/tobtc/ln/ToBTCLNSwap";
10
+ import {ToBTCSwap} from "../swaps/escrow_swaps/tobtc/onchain/ToBTCSwap";
11
+ import {SwapPriceWithChain} from "../prices/SwapPriceWithChain";
12
+ import {MempoolApi} from "../bitcoin/mempool/MempoolApi";
13
+ import {MempoolBitcoinRpc} from "../bitcoin/mempool/MempoolBitcoinRpc";
14
+ import {BTC_NETWORK} from "@scure/btc-signer/utils";
15
+ import {ToBTCOptions} from "../swaps/escrow_swaps/tobtc/onchain/ToBTCWrapper";
16
+ import {InvoiceCreateService, ToBTCLNOptions} from "../swaps/escrow_swaps/tobtc/ln/ToBTCLNWrapper";
17
+ import {FromBTCOptions} from "../swaps/escrow_swaps/frombtc/onchain/FromBTCWrapper";
18
+ import {FromBTCLNOptions} from "../swaps/escrow_swaps/frombtc/ln/FromBTCLNWrapper";
19
+ import {SwapperUtils} from "./SwapperUtils";
20
+ import {SpvFromBTCOptions} from "../swaps/spv_swaps/SpvFromBTCWrapper";
21
+ import {SpvFromBTCSwap} from "../swaps/spv_swaps/SpvFromBTCSwap";
22
+ import {OnchainForGasSwap} from "../swaps/trusted/onchain/OnchainForGasSwap";
23
+ import {SwapperWithSigner} from "./SwapperWithSigner";
24
+ import {FromBTCLNAutoOptions} from "../swaps/escrow_swaps/frombtc/ln_auto/FromBTCLNAutoWrapper";
25
+ import {FromBTCLNAutoSwap} from "../swaps/escrow_swaps/frombtc/ln_auto/FromBTCLNAutoSwap";
26
+ import {SwapAmountType} from "../enums/SwapAmountType";
27
+ import {UserError} from "../errors/UserError";
28
+ import {IClaimableSwap} from "../swaps/IClaimableSwap";
29
+ import {TokenAmount} from "../types/TokenAmount";
30
+ import {BitcoinTokens, BtcToken, isSCToken, SCToken, Token} from "../types/Token";
31
+ import {LNURLWithdraw} from "../types/lnurl/LNURLWithdraw";
32
+ import {LNURLPay} from "../types/lnurl/LNURLPay";
33
+
34
+ /**
35
+ * Chain-specific wrapper around Swapper for a particular blockchain
36
+ * @category Core
37
+ */
38
+ export class SwapperWithChain<T extends MultiChain, ChainIdentifier extends ChainIds<T>> {
39
+
40
+ readonly chainIdentifier: ChainIdentifier;
41
+ readonly swapper: Swapper<T>;
42
+
43
+ readonly prices: SwapPriceWithChain<T, ChainIdentifier>;
44
+
45
+ get intermediaryDiscovery(): IntermediaryDiscovery {
46
+ return this.swapper.intermediaryDiscovery;
47
+ }
48
+ get mempoolApi(): MempoolApi {
49
+ return this.swapper.mempoolApi;
50
+ }
51
+ get bitcoinRpc(): MempoolBitcoinRpc {
52
+ return this.swapper.bitcoinRpc;
53
+ }
54
+ get bitcoinNetwork(): BTC_NETWORK {
55
+ return this.swapper.bitcoinNetwork;
56
+ }
57
+ get Utils(): SwapperUtils<T> {
58
+ return this.swapper.Utils;
59
+ }
60
+ get SwapTypeInfo() {
61
+ return this.swapper.SwapTypeInfo;
62
+ }
63
+
64
+ constructor(swapper: Swapper<T>, chainIdentifier: ChainIdentifier) {
65
+ this.swapper = swapper;
66
+ this.chainIdentifier = chainIdentifier;
67
+ this.prices = new SwapPriceWithChain<T, ChainIdentifier>(swapper.prices, chainIdentifier);
68
+ }
69
+
70
+ createToBTCSwap(
71
+ signer: string,
72
+ tokenAddress: string,
73
+ address: string,
74
+ amount: bigint,
75
+ exactIn?: boolean,
76
+ additionalParams?: Record<string, any>,
77
+ options?: ToBTCOptions
78
+ ): Promise<ToBTCSwap<T[ChainIdentifier]>> {
79
+ return this.swapper.createToBTCSwap(this.chainIdentifier, signer, tokenAddress, address, amount, exactIn, additionalParams, options);
80
+ }
81
+
82
+ createToBTCLNSwap(
83
+ signer: string,
84
+ tokenAddress: string,
85
+ paymentRequest: string,
86
+ additionalParams?: Record<string, any>,
87
+ options?: ToBTCLNOptions & {comment?: string}
88
+ ): Promise<ToBTCLNSwap<T[ChainIdentifier]>> {
89
+ return this.swapper.createToBTCLNSwap(this.chainIdentifier, signer, tokenAddress, paymentRequest, additionalParams, options);
90
+ }
91
+
92
+ createToBTCLNSwapViaLNURL(
93
+ signer: string,
94
+ tokenAddress: string,
95
+ lnurlPay: string | LNURLPay,
96
+ amount: bigint,
97
+ exactIn?: boolean,
98
+ additionalParams?: Record<string, any>,
99
+ options?: ToBTCLNOptions
100
+ ): Promise<ToBTCLNSwap<T[ChainIdentifier]>> {
101
+ return this.swapper.createToBTCLNSwapViaLNURL(this.chainIdentifier, signer, tokenAddress, lnurlPay, amount, exactIn, additionalParams, options);
102
+ }
103
+
104
+ createToBTCLNSwapViaInvoiceCreateService(
105
+ signer: string,
106
+ tokenAddress: string,
107
+ service: InvoiceCreateService,
108
+ amount: bigint,
109
+ exactIn?: boolean,
110
+ additionalParams?: Record<string, any>,
111
+ options?: ToBTCLNOptions
112
+ ): Promise<ToBTCLNSwap<T[ChainIdentifier]>> {
113
+ return this.swapper.createToBTCLNSwapViaInvoiceCreateService(this.chainIdentifier, signer, tokenAddress, service, amount, exactIn, additionalParams, options);
114
+ }
115
+
116
+ createFromBTCSwap(
117
+ signer: string,
118
+ tokenAddress: string,
119
+ amount: bigint,
120
+ exactOut?: boolean,
121
+ additionalParams?: Record<string, any>,
122
+ options?: FromBTCOptions
123
+ ): Promise<FromBTCSwap<T[ChainIdentifier]>> {
124
+ return this.swapper.createFromBTCSwap(this.chainIdentifier, signer, tokenAddress, amount, exactOut, additionalParams, options);
125
+ }
126
+
127
+ createFromBTCLNSwap(
128
+ signer: string,
129
+ tokenAddress: string,
130
+ amount: bigint,
131
+ exactOut?: boolean,
132
+ additionalParams?: Record<string, any>,
133
+ options?: FromBTCLNOptions
134
+ ): Promise<FromBTCLNSwap<T[ChainIdentifier]>> {
135
+ return this.swapper.createFromBTCLNSwap(this.chainIdentifier, signer, tokenAddress, amount, exactOut, additionalParams, options);
136
+ }
137
+
138
+ createFromBTCLNSwapViaLNURL(
139
+ signer: string,
140
+ tokenAddress: string,
141
+ lnurl: string | LNURLWithdraw,
142
+ amount: bigint,
143
+ exactOut?: boolean,
144
+ additionalParams?: Record<string, any>
145
+ ): Promise<FromBTCLNSwap<T[ChainIdentifier]>> {
146
+ return this.swapper.createFromBTCLNSwapViaLNURL(this.chainIdentifier, signer, tokenAddress, lnurl, amount, exactOut, additionalParams);
147
+ }
148
+
149
+ createFromBTCLNSwapNew(
150
+ signer: string,
151
+ tokenAddress: string,
152
+ amount: bigint,
153
+ exactOut?: boolean,
154
+ additionalParams?: Record<string, any>,
155
+ options?: FromBTCLNAutoOptions
156
+ ): Promise<FromBTCLNAutoSwap<T[ChainIdentifier]>> {
157
+ return this.swapper.createFromBTCLNSwapNew(this.chainIdentifier, signer, tokenAddress, amount, exactOut, additionalParams, options);
158
+ }
159
+
160
+ createFromBTCLNSwapNewViaLNURL(
161
+ signer: string,
162
+ tokenAddress: string,
163
+ lnurl: string | LNURLWithdraw,
164
+ amount: bigint,
165
+ exactOut?: boolean,
166
+ additionalParams?: Record<string, any>,
167
+ options?: FromBTCLNAutoOptions
168
+ ): Promise<FromBTCLNAutoSwap<T[ChainIdentifier]>> {
169
+ return this.swapper.createFromBTCLNSwapNewViaLNURL(this.chainIdentifier, signer, tokenAddress, lnurl, amount, exactOut, additionalParams, options);
170
+ }
171
+
172
+ createTrustedLNForGasSwap(signer: string, amount: bigint, trustedIntermediaryUrl?: string): Promise<LnForGasSwap<T[ChainIdentifier]>> {
173
+ return this.swapper.createTrustedLNForGasSwap(this.chainIdentifier, signer, amount, trustedIntermediaryUrl);
174
+ }
175
+
176
+ createTrustedOnchainForGasSwap(signer: string, amount: bigint, refundAddress?: string, trustedIntermediaryUrl?: string): Promise<OnchainForGasSwap<T[ChainIdentifier]>> {
177
+ return this.swapper.createTrustedOnchainForGasSwap(this.chainIdentifier, signer, amount, refundAddress, trustedIntermediaryUrl);
178
+ }
179
+
180
+ create(signer: string, srcToken: BtcToken<true>, dstToken: SCToken<ChainIdentifier>, amount: bigint, exactIn: boolean, lnurlWithdraw?: string | LNURLWithdraw): Promise<SupportsSwapType<T[ChainIdentifier], SwapType.FROM_BTCLN_AUTO> extends true ? FromBTCLNAutoSwap<T[ChainIdentifier]> : FromBTCLNSwap<T[ChainIdentifier]>>;
181
+ create(signer: string, srcToken: BtcToken<false>, dstToken: SCToken<ChainIdentifier>, amount: bigint, exactIn: boolean): Promise<(SupportsSwapType<T[ChainIdentifier], SwapType.SPV_VAULT_FROM_BTC> extends true ? SpvFromBTCSwap<T[ChainIdentifier]> : FromBTCSwap<T[ChainIdentifier]>)>;
182
+ create(signer: string, srcToken: SCToken<ChainIdentifier>, dstToken: BtcToken<false>, amount: bigint, exactIn: boolean, address: string): Promise<ToBTCSwap<T[ChainIdentifier]>>;
183
+ create(signer: string, srcToken: SCToken<ChainIdentifier>, dstToken: BtcToken<true>, amount: bigint, exactIn: boolean, lnurlPay: string | LNURLPay): Promise<ToBTCLNSwap<T[ChainIdentifier]>>;
184
+ create(signer: string, srcToken: SCToken<ChainIdentifier>, dstToken: BtcToken<true>, amount: bigint, exactIn: false, lightningInvoice: string | LNURLWithdraw | LNURLPay): Promise<ToBTCLNSwap<T[ChainIdentifier]>>;
185
+ /**
186
+ * Creates a swap from srcToken to dstToken, of a specific token amount, either specifying input amount (exactIn=true)
187
+ * or output amount (exactIn=false), NOTE: For regular -> BTC-LN (lightning) swaps the passed amount is ignored and
188
+ * invoice's pre-set amount is used instead.
189
+ * @deprecated Use swap() instead
190
+ *
191
+ * @param signer Smartchain (Solana, Starknet, etc.) address of the user
192
+ * @param srcToken Source token of the swap, user pays this token
193
+ * @param dstToken Destination token of the swap, user receives this token
194
+ * @param amount Amount of the swap
195
+ * @param exactIn Whether the amount specified is an input amount (exactIn=true) or an output amount (exactIn=false)
196
+ * @param addressLnurlLightningInvoice Bitcoin on-chain address, lightning invoice, LNURL-pay to pay or
197
+ * LNURL-withdrawal to withdraw money from
198
+ */
199
+ create(signer: string, srcToken: Token<ChainIdentifier>, dstToken: Token<ChainIdentifier>, amount: bigint, exactIn: boolean, addressLnurlLightningInvoice?: string | LNURLWithdraw | LNURLPay): Promise<ISwap<T[ChainIdentifier]>> {
200
+ return this.swapper.create(signer, srcToken, dstToken, amount, exactIn, addressLnurlLightningInvoice);
201
+ }
202
+
203
+ swap(srcToken: BtcToken<true>, dstToken: SCToken<ChainIdentifier>, amount: bigint | string, exactIn: boolean | SwapAmountType, src: undefined | string | LNURLWithdraw, dstSmartchainWallet: string, options?: (SupportsSwapType<T[ChainIdentifier], SwapType.FROM_BTCLN_AUTO> extends true ? FromBTCLNAutoOptions : FromBTCLNOptions)): Promise<SupportsSwapType<T[ChainIdentifier], SwapType.FROM_BTCLN_AUTO> extends true ? FromBTCLNAutoSwap<T[ChainIdentifier]> : FromBTCLNSwap<T[ChainIdentifier]>>;
204
+ swap(srcToken: BtcToken<false>, dstToken: SCToken<ChainIdentifier>, amount: bigint | string, exactIn: boolean | SwapAmountType, src: undefined | string, dstSmartchainWallet: string, options?: (SupportsSwapType<T[ChainIdentifier], SwapType.SPV_VAULT_FROM_BTC> extends true ? SpvFromBTCOptions : FromBTCOptions)): Promise<(SupportsSwapType<T[ChainIdentifier], SwapType.SPV_VAULT_FROM_BTC> extends true ? SpvFromBTCSwap<T[ChainIdentifier]> : FromBTCSwap<T[ChainIdentifier]>)>;
205
+ swap(srcToken: SCToken<ChainIdentifier>, dstToken: BtcToken<false>, amount: bigint | string, exactIn: boolean | SwapAmountType, src: string, dstAddress: string, options?: ToBTCOptions): Promise<ToBTCSwap<T[ChainIdentifier]>>;
206
+ swap(srcToken: SCToken<ChainIdentifier>, dstToken: BtcToken<true>, amount: bigint | string, exactIn: boolean | SwapAmountType, src: string, dstLnurlPayOrInvoiceCreateService: string | LNURLPay | InvoiceCreateService, options?: ToBTCLNOptions & {comment?: string}): Promise<ToBTCLNSwap<T[ChainIdentifier]>>;
207
+ swap(srcToken: SCToken<ChainIdentifier>, dstToken: BtcToken<true>, amount: bigint | string, exactIn: false | SwapAmountType.EXACT_OUT, src: string, dstLightningInvoice: string, options?: ToBTCLNOptions): Promise<ToBTCLNSwap<T[ChainIdentifier]>>;
208
+ swap(srcToken: Token<ChainIdentifier> | string, dstToken: Token<ChainIdentifier> | string, amount: bigint | string, exactIn: boolean | SwapAmountType, src: undefined | string | LNURLWithdraw, dst: string | LNURLPay | InvoiceCreateService, options?: FromBTCLNOptions | SpvFromBTCOptions | FromBTCOptions | ToBTCOptions | (ToBTCLNOptions & {comment?: string}) | FromBTCLNAutoOptions): Promise<ISwap<T[ChainIdentifier]>>;
209
+ /**
210
+ * Creates a swap from srcToken to dstToken, of a specific token amount, either specifying input amount (exactIn=true)
211
+ * or output amount (exactIn=false), NOTE: For regular SmartChain -> BTC-LN (lightning) swaps the passed amount is ignored and
212
+ * invoice's pre-set amount is used instead, use LNURL-pay for dynamic amounts
213
+ *
214
+ * @param srcToken Source token of the swap, user pays this token
215
+ * @param dstToken Destination token of the swap, user receives this token
216
+ * @param amount Amount of the swap
217
+ * @param exactIn Whether the amount specified is an input amount (exactIn=true) or an output amount (exactIn=false)
218
+ * @param src Source wallet/lnurl-withdraw of the swap
219
+ * @param dst Destination smart chain address, bitcoin on-chain address, lightning invoice, LNURL-pay
220
+ * @param options Options for the swap
221
+ */
222
+ swap(
223
+ srcToken: Token<ChainIdentifier> | string,
224
+ dstToken: Token<ChainIdentifier> | string,
225
+ amount: bigint | string,
226
+ exactIn: boolean | SwapAmountType,
227
+ src: undefined | string | LNURLWithdraw,
228
+ dst: string | LNURLPay | InvoiceCreateService,
229
+ options?: FromBTCLNOptions | SpvFromBTCOptions | FromBTCOptions | ToBTCOptions | ToBTCLNOptions | FromBTCLNAutoOptions
230
+ ): Promise<ISwap<T[ChainIdentifier]>> {
231
+ if(typeof(srcToken)==="string") srcToken = this.getToken(srcToken);
232
+ if(typeof(dstToken)==="string") dstToken = this.getToken(dstToken);
233
+ return this.swapper.swap(srcToken, dstToken, amount, exactIn, src, dst, options);
234
+ }
235
+
236
+ /**
237
+ * Returns swaps that are in-progress and are claimable for the specific chain, optionally also for a specific signer's address
238
+ */
239
+ getAllSwaps(signer?: string): Promise<ISwap<T[ChainIdentifier]>[]> {
240
+ return this.swapper.getAllSwaps(this.chainIdentifier, signer);
241
+ }
242
+
243
+ /**
244
+ * Returns swaps that are in-progress and are claimable for the specific chain, optionally also for a specific signer's address
245
+ */
246
+ getActionableSwaps(signer?: string): Promise<ISwap<T[ChainIdentifier]>[]> {
247
+ return this.swapper.getActionableSwaps(this.chainIdentifier, signer);
248
+ }
249
+
250
+ /**
251
+ * Returns swaps that are refundable for the specific chain, optionally also for a specific signer's address
252
+ */
253
+ getRefundableSwaps(signer?: string): Promise<IToBTCSwap<T[ChainIdentifier]>[]> {
254
+ return this.swapper.getRefundableSwaps(this.chainIdentifier, signer);
255
+ }
256
+
257
+ /**
258
+ * Returns swaps that are due to be claimed/settled manually for the specific chain,
259
+ * optionally also for a specific signer's address
260
+ */
261
+ getClaimableSwaps(signer?: string): Promise<IClaimableSwap<T[ChainIdentifier]>[]> {
262
+ return this.swapper.getClaimableSwaps(this.chainIdentifier, signer);
263
+ }
264
+
265
+ /**
266
+ * Returns swap with a specific id (identifier) on a specific chain and optionally with a signer
267
+ */
268
+ getSwapById(id: string, signer?: string): Promise<ISwap<T[ChainIdentifier]>> {
269
+ return this.swapper.getSwapById(id, this.chainIdentifier, signer);
270
+ }
271
+
272
+ getToken(tickerOrAddress: string): Token<ChainIdentifier> {
273
+ //Btc tokens - BTC, BTCLN, BTC-LN
274
+ if(tickerOrAddress==="BTC") return BitcoinTokens.BTC;
275
+ if(tickerOrAddress==="BTCLN" || tickerOrAddress==="BTC-LN") return BitcoinTokens.BTCLN;
276
+
277
+ //Check if the ticker is in format <chainId>-<ticker>, i.e. SOLANA-USDC, STARKNET-WBTC
278
+ if(tickerOrAddress.includes("-")) {
279
+ const [chainId, ticker] = tickerOrAddress.split("-");
280
+ if(chainId!==this.chainIdentifier) throw new UserError(`Invalid chainId specified in ticker: ${chainId}, swapper chainId: ${this.chainIdentifier}`);
281
+ const token = this.swapper.tokensByTicker[this.chainIdentifier]?.[ticker];
282
+ if(token==null) throw new UserError(`Not found ticker: ${ticker} for chainId: ${chainId}`);
283
+ return token as Token<ChainIdentifier>;
284
+ }
285
+
286
+ const chain = this.swapper.chains[this.chainIdentifier];
287
+ if(chain.chainInterface.isValidToken(tickerOrAddress)) {
288
+ //Try to find in known token addresses
289
+ const token = this.swapper.tokens[this.chainIdentifier]?.[tickerOrAddress];
290
+ if(token!=null) return token as Token<ChainIdentifier>;
291
+ } else {
292
+ //Check in known tickers
293
+ const token = this.swapper.tokensByTicker[this.chainIdentifier]?.[tickerOrAddress];
294
+ if(token!=null) return token as Token<ChainIdentifier>;
295
+ }
296
+
297
+ throw new UserError(`Specified token address or ticker ${tickerOrAddress} not found for chainId: ${this.chainIdentifier}!`)
298
+ }
299
+
300
+ /**
301
+ * Synchronizes swaps from chain, this is usually ran when SDK is initialized, deletes expired quotes
302
+ */
303
+ async _syncSwaps(signer?: string): Promise<void> {
304
+ return this.swapper._syncSwaps<ChainIdentifier>(this.chainIdentifier, signer);
305
+ }
306
+
307
+ supportsSwapType<
308
+ Type extends SwapType
309
+ >(swapType: Type): SupportsSwapType<T[ChainIdentifier], Type> {
310
+ return this.swapper.supportsSwapType(this.chainIdentifier, swapType);
311
+ }
312
+
313
+ /**
314
+ * Returns type of the swap based on input and output tokens specified
315
+ *
316
+ * @param srcToken
317
+ * @param dstToken
318
+ */
319
+ getSwapType(srcToken: BtcToken<true>, dstToken: SCToken<ChainIdentifier>): (SupportsSwapType<T[ChainIdentifier], SwapType.FROM_BTCLN_AUTO> extends true ? SwapType.FROM_BTCLN_AUTO : SwapType.FROM_BTCLN);
320
+ getSwapType(srcToken: BtcToken<false>, dstToken: SCToken<ChainIdentifier>): (SupportsSwapType<T[ChainIdentifier], SwapType.SPV_VAULT_FROM_BTC> extends true ? SwapType.SPV_VAULT_FROM_BTC : SwapType.FROM_BTC);
321
+ getSwapType(srcToken: SCToken<ChainIdentifier>, dstToken: BtcToken<false>): SwapType.TO_BTC;
322
+ getSwapType(srcToken: SCToken<ChainIdentifier>, dstToken: BtcToken<true>): SwapType.TO_BTCLN;
323
+ getSwapType(srcToken: Token<ChainIdentifier>, dstToken: Token<ChainIdentifier>): SwapType.FROM_BTCLN_AUTO | SwapType.FROM_BTCLN | SwapType.SPV_VAULT_FROM_BTC | SwapType.FROM_BTC | SwapType.TO_BTC | SwapType.TO_BTCLN;
324
+ getSwapType(srcToken: Token<ChainIdentifier>, dstToken: Token<ChainIdentifier>): SwapType.FROM_BTCLN_AUTO | SwapType.FROM_BTCLN | SwapType.SPV_VAULT_FROM_BTC | SwapType.FROM_BTC | SwapType.TO_BTC | SwapType.TO_BTCLN {
325
+ return this.swapper.getSwapType(srcToken, dstToken);
326
+ }
327
+
328
+ /**
329
+ * Returns minimum/maximum limits for inputs and outputs for a swap between given tokens
330
+ *
331
+ * @param srcToken
332
+ * @param dstToken
333
+ */
334
+ getSwapLimits<A extends Token<ChainIdentifier>, B extends Token<ChainIdentifier>>(srcToken: A, dstToken: B): {
335
+ input: {min: TokenAmount<string, A>, max?: TokenAmount<string, A>},
336
+ output: {min: TokenAmount<string, B>, max?: TokenAmount<string, B>}
337
+ } {
338
+ return this.swapper.getSwapLimits<ChainIdentifier, A, B>(srcToken, dstToken);
339
+ }
340
+
341
+ /**
342
+ * Returns a set of supported tokens by all the intermediaries offering a specific swap service
343
+ *
344
+ * @param _swapType Swap service type to check supported tokens for
345
+ */
346
+ private getSupportedTokens(_swapType: SwapType): SCToken<ChainIdentifier>[] {
347
+ const tokens: SCToken<ChainIdentifier>[] = [];
348
+ this.intermediaryDiscovery.intermediaries.forEach(lp => {
349
+ let swapType = _swapType;
350
+ if(swapType===SwapType.FROM_BTCLN && this.supportsSwapType(SwapType.FROM_BTCLN_AUTO)) swapType = SwapType.FROM_BTCLN_AUTO;
351
+ if(swapType===SwapType.FROM_BTC && this.supportsSwapType(SwapType.SPV_VAULT_FROM_BTC)) swapType = SwapType.SPV_VAULT_FROM_BTC;
352
+ const chainTokens = lp.services[swapType]?.chainTokens?.[this.chainIdentifier];
353
+ if(chainTokens==null) return;
354
+ for(let tokenAddress of chainTokens) {
355
+ const token = this.swapper.tokens?.[this.chainIdentifier]?.[tokenAddress];
356
+ if(token!=null) tokens.push(token as SCToken<ChainIdentifier>);
357
+ }
358
+ });
359
+ return tokens;
360
+ }
361
+
362
+ /**
363
+ * Returns the set of supported tokens by all the intermediaries we know of offering a specific swapType service
364
+ *
365
+ * @param swapType Specific swap type for which to obtain supported tokens
366
+ */
367
+ private getSupportedTokenAddresses(swapType: SwapType): Set<string> {
368
+ const set = new Set<string>();
369
+ this.intermediaryDiscovery.intermediaries.forEach(lp => {
370
+ const chainTokens = lp.services[swapType]?.chainTokens?.[this.chainIdentifier];
371
+ if(chainTokens==null) return;
372
+ chainTokens.forEach(token => set.add(token));
373
+ });
374
+ return set;
375
+ }
376
+
377
+ /**
378
+ * Returns tokens that you can swap to (if input=true) from a given token,
379
+ * or tokens that you can swap from (if input=false) to a given token
380
+ */
381
+ getSwapCounterTokens(token: Token, input: boolean): Token<ChainIdentifier>[] {
382
+ if(isSCToken(token)) {
383
+ const result: Token<ChainIdentifier>[] = [];
384
+ if(input) {
385
+ //TO_BTC or TO_BTCLN
386
+ if(this.getSupportedTokenAddresses(SwapType.TO_BTCLN).has(token.address)) {
387
+ result.push(BitcoinTokens.BTCLN);
388
+ }
389
+ if(this.getSupportedTokenAddresses(SwapType.TO_BTC).has(token.address)) {
390
+ result.push(BitcoinTokens.BTC);
391
+ }
392
+ } else {
393
+ //FROM_BTC or FROM_BTCLN
394
+ const fromLightningSwapType = this.supportsSwapType(SwapType.FROM_BTCLN_AUTO) ? SwapType.FROM_BTCLN_AUTO : SwapType.FROM_BTCLN;
395
+ if(this.getSupportedTokenAddresses(fromLightningSwapType).has(token.address)) {
396
+ result.push(BitcoinTokens.BTCLN);
397
+ }
398
+ const fromOnchainSwapType = this.supportsSwapType(SwapType.SPV_VAULT_FROM_BTC) ? SwapType.SPV_VAULT_FROM_BTC : SwapType.FROM_BTC;
399
+ if(this.getSupportedTokenAddresses(fromOnchainSwapType).has(token.address)) {
400
+ result.push(BitcoinTokens.BTC);
401
+ }
402
+ }
403
+ return result;
404
+ } else {
405
+ if(input) {
406
+ if(token.lightning) {
407
+ return this.getSupportedTokens(SwapType.FROM_BTCLN);
408
+ } else {
409
+ return this.getSupportedTokens(SwapType.FROM_BTC);
410
+ }
411
+ } else {
412
+ if(token.lightning) {
413
+ return this.getSupportedTokens(SwapType.TO_BTCLN);
414
+ } else {
415
+ return this.getSupportedTokens(SwapType.TO_BTC);
416
+ }
417
+ }
418
+ }
419
+ }
420
+
421
+ /**
422
+ * Creates a child swapper instance with a signer
423
+ *
424
+ * @param signer Signer to use for the new swapper instance
425
+ */
426
+ withChain(signer: T[ChainIdentifier]["Signer"]): SwapperWithSigner<T, ChainIdentifier> {
427
+ return new SwapperWithSigner<T, ChainIdentifier>(this, signer);
428
+ }
429
+
430
+
431
+ ///////////////////////////////////
432
+ /// Deprecated
433
+
434
+ /**
435
+ * Returns swap bounds (minimums & maximums) for different swap types & tokens
436
+ * @deprecated Use getSwapLimits() instead!
437
+ */
438
+ getSwapBounds(): SwapBounds {
439
+ return this.swapper.getSwapBounds(this.chainIdentifier);
440
+ }
441
+
442
+ /**
443
+ * Returns maximum possible swap amount
444
+ * @deprecated Use getSwapLimits() instead!
445
+ *
446
+ * @param type Type of the swap
447
+ * @param token Token of the swap
448
+ */
449
+ getMaximum(type: SwapType, token: string): bigint {
450
+ return this.swapper.getMaximum(this.chainIdentifier, type, token);
451
+ }
452
+
453
+ /**
454
+ * Returns minimum possible swap amount
455
+ * @deprecated Use getSwapLimits() instead!
456
+ *
457
+ * @param type Type of swap
458
+ * @param token Token of the swap
459
+ */
460
+ getMinimum(type: SwapType, token: string): bigint {
461
+ return this.swapper.getMinimum(this.chainIdentifier, type, token);
462
+ }
463
+
464
+ }