@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,402 @@
1
+ import {decode as bolt11Decode} from "@atomiqlabs/bolt11";
2
+ import {SwapType} from "../../../enums/SwapType";
3
+ import {ChainType} from "@atomiqlabs/base";
4
+ import {LnForGasSwapTypeDefinition, LnForGasWrapper} from "./LnForGasWrapper";
5
+ import {PaymentAuthError} from "../../../errors/PaymentAuthError";
6
+ import {toBigInt} from "../../../utils/Utils";
7
+ import {isISwapInit, ISwap, ISwapInit} from "../../ISwap";
8
+ import {InvoiceStatusResponseCodes, TrustedIntermediaryAPI} from "../../../intermediaries/apis/TrustedIntermediaryAPI";
9
+ import {Fee} from "../../../types/fees/Fee";
10
+ import {IAddressSwap} from "../../IAddressSwap";
11
+ import {FeeType} from "../../../enums/FeeType";
12
+ import {ppmToPercentage} from "../../../types/fees/PercentagePPM";
13
+ import {TokenAmount, toTokenAmount} from "../../../types/TokenAmount";
14
+ import {BitcoinTokens, BtcToken, SCToken} from "../../../types/Token";
15
+ import {getLogger, LoggerType} from "../../../utils/Logger";
16
+ import {timeoutPromise} from "../../../utils/TimeoutUtils";
17
+
18
+ /**
19
+ * State enum for trusted Lightning gas swaps
20
+ * @category Swaps
21
+ */
22
+ export enum LnForGasSwapState {
23
+ EXPIRED = -2,
24
+ FAILED = -1,
25
+ PR_CREATED = 0,
26
+ PR_PAID = 1,
27
+ FINISHED = 2
28
+ }
29
+
30
+ export type LnForGasSwapInit = ISwapInit & {
31
+ pr: string;
32
+ outputAmount: bigint;
33
+ recipient: string;
34
+ token: string;
35
+ };
36
+
37
+ export function isLnForGasSwapInit(obj: any): obj is LnForGasSwapInit {
38
+ return typeof(obj.pr)==="string" &&
39
+ typeof(obj.outputAmount) === "bigint" &&
40
+ typeof(obj.recipient)==="string" &&
41
+ typeof(obj.token)==="string" &&
42
+ isISwapInit(obj);
43
+ }
44
+
45
+ /**
46
+ * Trusted Lightning Network to gas token swap
47
+ * @category Swaps
48
+ */
49
+ export class LnForGasSwap<T extends ChainType = ChainType> extends ISwap<T, LnForGasSwapTypeDefinition<T>, LnForGasSwapState> implements IAddressSwap {
50
+ protected readonly currentVersion: number = 2;
51
+ protected readonly TYPE: SwapType = SwapType.TRUSTED_FROM_BTCLN;
52
+ protected readonly logger: LoggerType;
53
+
54
+ //State: PR_CREATED
55
+ private readonly pr: string;
56
+ private readonly outputAmount: bigint;
57
+ private readonly recipient: string;
58
+ private readonly token: string;
59
+
60
+ //State: FINISHED
61
+ scTxId?: string;
62
+
63
+ constructor(wrapper: LnForGasWrapper<T>, init: LnForGasSwapInit);
64
+ constructor(wrapper: LnForGasWrapper<T>, obj: any);
65
+ constructor(
66
+ wrapper: LnForGasWrapper<T>,
67
+ initOrObj: LnForGasSwapInit | any
68
+ ) {
69
+ if(isLnForGasSwapInit(initOrObj) && initOrObj.url!=null) initOrObj.url += "/lnforgas";
70
+ super(wrapper, initOrObj);
71
+ if(isLnForGasSwapInit(initOrObj)) {
72
+ this.pr = initOrObj.pr;
73
+ this.outputAmount = initOrObj.outputAmount;
74
+ this.recipient = initOrObj.recipient;
75
+ this.token = initOrObj.token;
76
+ this.state = LnForGasSwapState.PR_CREATED;
77
+ } else {
78
+ this.pr = initOrObj.pr;
79
+ this.outputAmount = toBigInt(initOrObj.outputAmount);
80
+ this.recipient = initOrObj.recipient;
81
+ this.token = initOrObj.token;
82
+ this.scTxId = initOrObj.scTxId;
83
+ }
84
+ this.tryRecomputeSwapPrice();
85
+ if(this.pr!=null) {
86
+ const decoded = bolt11Decode(this.pr);
87
+ if(decoded.timeExpireDate!=null) this.expiry = decoded.timeExpireDate*1000;
88
+ }
89
+ this.logger = getLogger("LnForGas("+this.getId()+"): ");
90
+ }
91
+
92
+ protected upgradeVersion() {
93
+ if(this.version == 1) {
94
+ if(this.state===1) this.state = LnForGasSwapState.FINISHED;
95
+ this.version = 2;
96
+ }
97
+ if(this.version == null) {
98
+ //Noop
99
+ this.version = 1;
100
+ }
101
+ }
102
+
103
+ /**
104
+ * In case swapFee in BTC is not supplied it recalculates it based on swap price
105
+ * @protected
106
+ */
107
+ protected tryRecomputeSwapPrice() {
108
+ if(this.swapFeeBtc==null && this.swapFee!=null) {
109
+ this.swapFeeBtc = this.swapFee * this.getInput().rawAmount / this.getOutAmountWithoutFee();
110
+ }
111
+ super.tryRecomputeSwapPrice();
112
+ }
113
+
114
+
115
+ //////////////////////////////
116
+ //// Getters & utils
117
+
118
+ _getEscrowHash(): string {
119
+ return this.getId();
120
+ }
121
+
122
+ getOutputAddress(): string | null {
123
+ return this.recipient;
124
+ }
125
+
126
+ getInputAddress(): string | null {
127
+ return this.pr;
128
+ }
129
+
130
+ getInputTxId(): string | null {
131
+ return this.getId();
132
+ }
133
+
134
+ getOutputTxId(): string | null {
135
+ return this.scTxId ?? null;
136
+ }
137
+
138
+ getId(): string {
139
+ if(this.pr==null) throw new Error("No payment request assigned to this swap!");
140
+ const decodedPR = bolt11Decode(this.pr);
141
+ if(decodedPR.tagsObject.payment_hash==null) throw new Error("Lightning invoice has no payment hash!");
142
+ return decodedPR.tagsObject.payment_hash;
143
+ }
144
+
145
+ /**
146
+ * Returns the lightning network BOLT11 invoice that needs to be paid as an input to the swap
147
+ */
148
+ getAddress(): string {
149
+ return this.pr;
150
+ }
151
+
152
+ /**
153
+ * Returns a string that can be displayed as QR code representation of the lightning invoice (with lightning: prefix)
154
+ */
155
+ getHyperlink(): string {
156
+ return "lightning:"+this.pr.toUpperCase();
157
+ }
158
+
159
+ requiresAction(): boolean {
160
+ return false;
161
+ }
162
+
163
+ isFinished(): boolean {
164
+ return this.state===LnForGasSwapState.FINISHED || this.state===LnForGasSwapState.FAILED || this.state===LnForGasSwapState.EXPIRED;
165
+ }
166
+
167
+ isQuoteExpired(): boolean {
168
+ return this.state===LnForGasSwapState.EXPIRED;
169
+ }
170
+
171
+ isQuoteSoftExpired(): boolean {
172
+ return this.expiry<Date.now();
173
+ }
174
+
175
+ isFailed(): boolean {
176
+ return this.state===LnForGasSwapState.FAILED;
177
+ }
178
+
179
+ isSuccessful(): boolean {
180
+ return this.state===LnForGasSwapState.FINISHED;
181
+ }
182
+
183
+ verifyQuoteValid(): Promise<boolean> {
184
+ return Promise.resolve(this.expiry>Date.now());
185
+ }
186
+
187
+ //////////////////////////////
188
+ //// Amounts & fees
189
+
190
+ protected getOutAmountWithoutFee(): bigint {
191
+ return this.outputAmount + (this.swapFee ?? 0n);
192
+ }
193
+
194
+ getOutputToken(): SCToken<T["ChainId"]> {
195
+ return this.wrapper.tokens[this.wrapper.chain.getNativeCurrencyAddress()];
196
+ }
197
+
198
+ getOutput(): TokenAmount<T["ChainId"], SCToken<T["ChainId"]>> {
199
+ return toTokenAmount(
200
+ this.outputAmount, this.wrapper.tokens[this.wrapper.chain.getNativeCurrencyAddress()],
201
+ this.wrapper.prices, this.pricingInfo
202
+ );
203
+ }
204
+
205
+ getInputToken(): BtcToken<true> {
206
+ return BitcoinTokens.BTCLN;
207
+ }
208
+
209
+ getInput(): TokenAmount<T["ChainId"], BtcToken<true>> {
210
+ const parsed = bolt11Decode(this.pr);
211
+ const msats = parsed.millisatoshis;
212
+ if(msats==null) throw new Error("Swap lightning invoice has no msat amount field!");
213
+ const amount = (BigInt(msats) + 999n) / 1000n;
214
+ return toTokenAmount(amount, BitcoinTokens.BTCLN, this.wrapper.prices, this.pricingInfo);
215
+ }
216
+
217
+ getInputWithoutFee(): TokenAmount<T["ChainId"], BtcToken<true>> {
218
+ const parsed = bolt11Decode(this.pr);
219
+ const msats = parsed.millisatoshis;
220
+ if(msats==null) throw new Error("Swap lightning invoice has no msat amount field!");
221
+ const amount = (BigInt(msats) + 999n) / 1000n;
222
+ return toTokenAmount(
223
+ amount - (this.swapFeeBtc ?? 0n), BitcoinTokens.BTCLN,
224
+ this.wrapper.prices, this.pricingInfo
225
+ );
226
+ }
227
+
228
+ protected getSwapFee(): Fee<T["ChainId"], BtcToken<true>, SCToken<T["ChainId"]>> {
229
+ if(this.pricingInfo==null) throw new Error("No pricing info known, cannot estimate swap fee!");
230
+ const feeWithoutBaseFee = this.swapFeeBtc==null ? 0n : this.swapFeeBtc - this.pricingInfo.satsBaseFee;
231
+ const swapFeePPM = feeWithoutBaseFee * 1000000n / this.getInputWithoutFee().rawAmount;
232
+
233
+ const amountInSrcToken = toTokenAmount(this.swapFeeBtc ?? 0n, BitcoinTokens.BTCLN, this.wrapper.prices, this.pricingInfo);
234
+ return {
235
+ amountInSrcToken,
236
+ amountInDstToken: toTokenAmount(this.swapFee ?? 0n, this.wrapper.tokens[this.wrapper.chain.getNativeCurrencyAddress()], this.wrapper.prices, this.pricingInfo),
237
+ currentUsdValue: amountInSrcToken.currentUsdValue,
238
+ usdValue: amountInSrcToken.usdValue,
239
+ pastUsdValue: amountInSrcToken.pastUsdValue,
240
+ composition: {
241
+ base: toTokenAmount(this.pricingInfo.satsBaseFee, BitcoinTokens.BTCLN, this.wrapper.prices, this.pricingInfo),
242
+ percentage: ppmToPercentage(swapFeePPM)
243
+ }
244
+ };
245
+ }
246
+
247
+ getFee(): Fee<T["ChainId"], BtcToken<true>, SCToken<T["ChainId"]>> {
248
+ return this.getSwapFee();
249
+ }
250
+
251
+ getFeeBreakdown(): [{type: FeeType.SWAP, fee: Fee<T["ChainId"], BtcToken<true>, SCToken<T["ChainId"]>>}] {
252
+ return [{
253
+ type: FeeType.SWAP,
254
+ fee: this.getSwapFee()
255
+ }];
256
+ }
257
+
258
+
259
+ //////////////////////////////
260
+ //// Payment
261
+
262
+ async txsExecute() {
263
+ if(this.state===LnForGasSwapState.PR_CREATED) {
264
+ if (!await this.verifyQuoteValid()) throw new Error("Quote already expired or close to expiry!");
265
+ return [
266
+ {
267
+ name: "Payment" as const,
268
+ description: "Initiates the swap by paying up the lightning network invoice",
269
+ chain: "LIGHTNING",
270
+ txs: [
271
+ {
272
+ address: this.pr,
273
+ hyperlink: this.getHyperlink()
274
+ }
275
+ ]
276
+ }
277
+ ];
278
+ }
279
+
280
+ throw new Error("Invalid swap state to obtain execution txns, required PR_CREATED");
281
+ }
282
+
283
+ protected async checkInvoicePaid(save: boolean = true): Promise<boolean | null> {
284
+ if(this.state===LnForGasSwapState.FAILED || this.state===LnForGasSwapState.EXPIRED) return false;
285
+ if(this.state===LnForGasSwapState.FINISHED) return true;
286
+ if(this.url==null) return false;
287
+
288
+ const decodedPR = bolt11Decode(this.pr);
289
+ const paymentHash = decodedPR.tagsObject.payment_hash;
290
+ if(paymentHash==null) throw new Error("Invalid swap invoice, payment hash not found!");
291
+
292
+ const response = await TrustedIntermediaryAPI.getInvoiceStatus(
293
+ this.url, paymentHash, this.wrapper.options.getRequestTimeout
294
+ );
295
+ this.logger.debug("checkInvoicePaid(): LP response: ", response);
296
+ switch(response.code) {
297
+ case InvoiceStatusResponseCodes.PAID:
298
+ this.scTxId = response.data.txId;
299
+ const txStatus = await this.wrapper.chain.getTxIdStatus(this.scTxId);
300
+ if(txStatus==="success") {
301
+ this.state = LnForGasSwapState.FINISHED;
302
+ if(save) await this._saveAndEmit();
303
+ return true;
304
+ }
305
+ return null;
306
+ case InvoiceStatusResponseCodes.EXPIRED:
307
+ if(this.state===LnForGasSwapState.PR_CREATED) {
308
+ this.state = LnForGasSwapState.EXPIRED;
309
+ } else {
310
+ this.state = LnForGasSwapState.FAILED;
311
+ }
312
+ if(save) await this._saveAndEmit();
313
+ return false;
314
+ case InvoiceStatusResponseCodes.TX_SENT:
315
+ this.scTxId = response.data.txId;
316
+ if(this.state===LnForGasSwapState.PR_CREATED) {
317
+ this.state = LnForGasSwapState.PR_PAID;
318
+ if(save) await this._saveAndEmit();
319
+ }
320
+ return null;
321
+ case InvoiceStatusResponseCodes.PENDING:
322
+ if(this.state===LnForGasSwapState.PR_CREATED) {
323
+ this.state = LnForGasSwapState.PR_PAID;
324
+ if(save) await this._saveAndEmit();
325
+ }
326
+ return null;
327
+ case InvoiceStatusResponseCodes.AWAIT_PAYMENT:
328
+ return null;
329
+ default:
330
+ this.state = LnForGasSwapState.FAILED;
331
+ if(save) await this._saveAndEmit();
332
+ return false;
333
+ }
334
+ }
335
+
336
+ /**
337
+ * A blocking promise resolving when payment was received by the intermediary and client can continue
338
+ * rejecting in case of failure
339
+ *
340
+ * @param checkIntervalSeconds How often to poll the intermediary for answer (default 5 seconds)
341
+ * @param abortSignal Abort signal
342
+ * @throws {PaymentAuthError} If swap expired or failed
343
+ * @throws {Error} When in invalid state (not PR_CREATED)
344
+ */
345
+ async waitForPayment(checkIntervalSeconds?: number, abortSignal?: AbortSignal): Promise<boolean> {
346
+ if(this.state!==LnForGasSwapState.PR_CREATED) throw new Error("Must be in PR_CREATED state!");
347
+
348
+ if(!this.initiated) {
349
+ this.initiated = true;
350
+ await this._saveAndEmit();
351
+ }
352
+
353
+ while(!abortSignal?.aborted && (this.state===LnForGasSwapState.PR_CREATED || this.state===LnForGasSwapState.PR_PAID)) {
354
+ await this.checkInvoicePaid(true);
355
+ if(this.state===LnForGasSwapState.PR_CREATED || this.state===LnForGasSwapState.PR_PAID) await timeoutPromise((checkIntervalSeconds ?? 5)*1000, abortSignal);
356
+ }
357
+
358
+ if(this.isFailed()) throw new PaymentAuthError("Swap failed");
359
+ return !this.isQuoteExpired();
360
+
361
+ }
362
+
363
+
364
+ //////////////////////////////
365
+ //// Storage
366
+
367
+ serialize(): any{
368
+ return {
369
+ ...super.serialize(),
370
+ pr: this.pr,
371
+ outputAmount: this.outputAmount==null ? null : this.outputAmount.toString(10),
372
+ recipient: this.recipient,
373
+ token: this.token,
374
+ scTxId: this.scTxId
375
+ };
376
+ }
377
+
378
+ _getInitiator(): string {
379
+ return this.recipient;
380
+ }
381
+
382
+
383
+ //////////////////////////////
384
+ //// Swap ticks & sync
385
+
386
+ async _sync(save?: boolean): Promise<boolean> {
387
+ if(this.state===LnForGasSwapState.PR_CREATED) {
388
+ //Check if it's maybe already paid
389
+ const res = await this.checkInvoicePaid(false);
390
+ if(res!==null) {
391
+ if(save) await this._saveAndEmit();
392
+ return true;
393
+ }
394
+ }
395
+ return false;
396
+ }
397
+
398
+ _tick(save?: boolean): Promise<boolean> {
399
+ return Promise.resolve(false);
400
+ }
401
+
402
+ }
@@ -0,0 +1,70 @@
1
+ import {LnForGasSwap, LnForGasSwapInit, LnForGasSwapState} from "./LnForGasSwap";
2
+ import {ISwapWrapper, SwapTypeDefinition} from "../../ISwapWrapper";
3
+ import {TrustedIntermediaryAPI} from "../../../intermediaries/apis/TrustedIntermediaryAPI";
4
+ import {decode as bolt11Decode} from "@atomiqlabs/bolt11";
5
+ import {IntermediaryError} from "../../../errors/IntermediaryError";
6
+ import {ChainType} from "@atomiqlabs/base";
7
+ import {Intermediary} from "../../../intermediaries/Intermediary";
8
+ import {SwapType} from "../../../enums/SwapType";
9
+
10
+ export type LnForGasSwapTypeDefinition<T extends ChainType> = SwapTypeDefinition<T, LnForGasWrapper<T>, LnForGasSwap<T>>;
11
+
12
+ export class LnForGasWrapper<T extends ChainType> extends ISwapWrapper<T, LnForGasSwapTypeDefinition<T>> {
13
+ public TYPE = SwapType.TRUSTED_FROM_BTCLN;
14
+ public readonly swapDeserializer = LnForGasSwap;
15
+
16
+ /**
17
+ * Returns a newly created swap, receiving 'amount' on lightning network
18
+ *
19
+ * @param signer
20
+ * @param amount Amount you wish to receive in base units (satoshis)
21
+ * @param lpOrUrl Intermediary/Counterparty swap service Intermediary object or raw url
22
+ */
23
+ async create(signer: string, amount: bigint, lpOrUrl: Intermediary | string): Promise<LnForGasSwap<T>> {
24
+ if(!this.isInitialized) throw new Error("Not initialized, call init() first!");
25
+
26
+ const lpUrl = typeof(lpOrUrl)==="string" ? lpOrUrl : lpOrUrl.url;
27
+
28
+ const token = this.chain.getNativeCurrencyAddress();
29
+
30
+ const resp = await TrustedIntermediaryAPI.initTrustedFromBTCLN(this.chainIdentifier, lpUrl, {
31
+ address: signer,
32
+ amount,
33
+ token
34
+ }, this.options.getRequestTimeout);
35
+
36
+ const decodedPr = bolt11Decode(resp.pr);
37
+ if(decodedPr.millisatoshis==null) throw new Error("Invalid payment request returned, no msat amount value!");
38
+ if(decodedPr.timeExpireDate==null) throw new Error("Invalid payment request returned, no time expire date!");
39
+ const amountIn = (BigInt(decodedPr.millisatoshis) + 999n) / 1000n;
40
+
41
+ if(resp.total!==amount) throw new IntermediaryError("Invalid total returned");
42
+
43
+ const pricingInfo = await this.verifyReturnedPrice(
44
+ typeof(lpOrUrl)==="string" || lpOrUrl.services[SwapType.TRUSTED_FROM_BTCLN]==null ?
45
+ {swapFeePPM: 10000, swapBaseFee: 10} :
46
+ lpOrUrl.services[SwapType.TRUSTED_FROM_BTCLN],
47
+ false, amountIn,
48
+ amount, token, {}
49
+ );
50
+
51
+ const quote = new LnForGasSwap(this, {
52
+ pr: resp.pr,
53
+ outputAmount: resp.total,
54
+ recipient: signer,
55
+ pricingInfo,
56
+ url: lpUrl,
57
+ expiry: decodedPr.timeExpireDate*1000,
58
+ swapFee: resp.swapFee,
59
+ token,
60
+ exactIn: false
61
+ } as LnForGasSwapInit);
62
+ await quote._save();
63
+ return quote;
64
+ }
65
+
66
+ public readonly pendingSwapStates = [LnForGasSwapState.PR_CREATED];
67
+ public readonly tickSwapState = undefined;
68
+ protected processEvent = undefined;
69
+
70
+ }