@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,600 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.IntermediaryAPI = exports.InvoiceStatusResponseCodes = exports.PaymentAuthorizationResponseCodes = exports.RefundAuthorizationResponseCodes = void 0;
4
+ const RequestError_1 = require("../../errors/RequestError");
5
+ const SchemaVerifier_1 = require("../../http/paramcoders/SchemaVerifier");
6
+ const StreamingFetchPromise_1 = require("../../http/paramcoders/client/StreamingFetchPromise");
7
+ const Utils_1 = require("../../utils/Utils");
8
+ const HttpUtils_1 = require("../../http/HttpUtils");
9
+ const RetryUtils_1 = require("../../utils/RetryUtils");
10
+ var RefundAuthorizationResponseCodes;
11
+ (function (RefundAuthorizationResponseCodes) {
12
+ RefundAuthorizationResponseCodes[RefundAuthorizationResponseCodes["EXPIRED"] = 20010] = "EXPIRED";
13
+ RefundAuthorizationResponseCodes[RefundAuthorizationResponseCodes["REFUND_DATA"] = 20000] = "REFUND_DATA";
14
+ RefundAuthorizationResponseCodes[RefundAuthorizationResponseCodes["NOT_FOUND"] = 20007] = "NOT_FOUND";
15
+ RefundAuthorizationResponseCodes[RefundAuthorizationResponseCodes["PENDING"] = 20008] = "PENDING";
16
+ RefundAuthorizationResponseCodes[RefundAuthorizationResponseCodes["PAID"] = 20006] = "PAID";
17
+ })(RefundAuthorizationResponseCodes = exports.RefundAuthorizationResponseCodes || (exports.RefundAuthorizationResponseCodes = {}));
18
+ var PaymentAuthorizationResponseCodes;
19
+ (function (PaymentAuthorizationResponseCodes) {
20
+ PaymentAuthorizationResponseCodes[PaymentAuthorizationResponseCodes["AUTH_DATA"] = 10000] = "AUTH_DATA";
21
+ PaymentAuthorizationResponseCodes[PaymentAuthorizationResponseCodes["EXPIRED"] = 10001] = "EXPIRED";
22
+ PaymentAuthorizationResponseCodes[PaymentAuthorizationResponseCodes["PAID"] = 10002] = "PAID";
23
+ PaymentAuthorizationResponseCodes[PaymentAuthorizationResponseCodes["PENDING"] = 10003] = "PENDING";
24
+ PaymentAuthorizationResponseCodes[PaymentAuthorizationResponseCodes["ALREADY_COMMITTED"] = 10004] = "ALREADY_COMMITTED";
25
+ })(PaymentAuthorizationResponseCodes = exports.PaymentAuthorizationResponseCodes || (exports.PaymentAuthorizationResponseCodes = {}));
26
+ var InvoiceStatusResponseCodes;
27
+ (function (InvoiceStatusResponseCodes) {
28
+ InvoiceStatusResponseCodes[InvoiceStatusResponseCodes["PAID"] = 10000] = "PAID";
29
+ InvoiceStatusResponseCodes[InvoiceStatusResponseCodes["EXPIRED"] = 10001] = "EXPIRED";
30
+ InvoiceStatusResponseCodes[InvoiceStatusResponseCodes["SETTLED"] = 10002] = "SETTLED";
31
+ InvoiceStatusResponseCodes[InvoiceStatusResponseCodes["PENDING"] = 10003] = "PENDING";
32
+ })(InvoiceStatusResponseCodes = exports.InvoiceStatusResponseCodes || (exports.InvoiceStatusResponseCodes = {}));
33
+ const SwapResponseSchema = {
34
+ data: SchemaVerifier_1.FieldTypeEnum.Any,
35
+ prefix: SchemaVerifier_1.FieldTypeEnum.String,
36
+ timeout: SchemaVerifier_1.FieldTypeEnum.String,
37
+ signature: SchemaVerifier_1.FieldTypeEnum.String
38
+ };
39
+ /////////////////////////
40
+ ///// To BTC
41
+ const ToBTCResponseSchema = {
42
+ amount: SchemaVerifier_1.FieldTypeEnum.BigInt,
43
+ address: SchemaVerifier_1.FieldTypeEnum.String,
44
+ satsPervByte: SchemaVerifier_1.FieldTypeEnum.BigInt,
45
+ networkFee: SchemaVerifier_1.FieldTypeEnum.BigInt,
46
+ swapFee: SchemaVerifier_1.FieldTypeEnum.BigInt,
47
+ totalFee: SchemaVerifier_1.FieldTypeEnum.BigInt,
48
+ total: SchemaVerifier_1.FieldTypeEnum.BigInt,
49
+ minRequiredExpiry: SchemaVerifier_1.FieldTypeEnum.BigInt,
50
+ ...SwapResponseSchema
51
+ };
52
+ /////////////////////////
53
+ ///// To BTCLN
54
+ const ToBTCLNResponseSchema = {
55
+ maxFee: SchemaVerifier_1.FieldTypeEnum.BigInt,
56
+ swapFee: SchemaVerifier_1.FieldTypeEnum.BigInt,
57
+ total: SchemaVerifier_1.FieldTypeEnum.BigInt,
58
+ confidence: SchemaVerifier_1.FieldTypeEnum.Number,
59
+ address: SchemaVerifier_1.FieldTypeEnum.String,
60
+ routingFeeSats: SchemaVerifier_1.FieldTypeEnum.BigInt,
61
+ ...SwapResponseSchema
62
+ };
63
+ const ToBTCLNPrepareExactInSchema = {
64
+ amount: SchemaVerifier_1.FieldTypeEnum.BigInt,
65
+ reqId: SchemaVerifier_1.FieldTypeEnum.String
66
+ };
67
+ /////////////////////////
68
+ ///// From BTC
69
+ const FromBTCResponseSchema = {
70
+ amount: SchemaVerifier_1.FieldTypeEnum.BigInt,
71
+ btcAddress: SchemaVerifier_1.FieldTypeEnum.String,
72
+ address: SchemaVerifier_1.FieldTypeEnum.String,
73
+ swapFee: SchemaVerifier_1.FieldTypeEnum.BigInt,
74
+ total: SchemaVerifier_1.FieldTypeEnum.BigInt,
75
+ confirmations: SchemaVerifier_1.FieldTypeEnum.Number,
76
+ ...SwapResponseSchema
77
+ };
78
+ /////////////////////////
79
+ ///// From BTCLN
80
+ const FromBTCLNResponseSchema = {
81
+ pr: SchemaVerifier_1.FieldTypeEnum.String,
82
+ swapFee: SchemaVerifier_1.FieldTypeEnum.BigInt,
83
+ total: SchemaVerifier_1.FieldTypeEnum.BigInt,
84
+ intermediaryKey: SchemaVerifier_1.FieldTypeEnum.String,
85
+ securityDeposit: SchemaVerifier_1.FieldTypeEnum.BigInt
86
+ };
87
+ /////////////////////////
88
+ ///// From BTCLN Auto
89
+ const FromBTCLNAutoResponseSchema = {
90
+ intermediaryKey: SchemaVerifier_1.FieldTypeEnum.String,
91
+ pr: SchemaVerifier_1.FieldTypeEnum.String,
92
+ btcAmountSwap: SchemaVerifier_1.FieldTypeEnum.BigInt,
93
+ btcAmountGas: SchemaVerifier_1.FieldTypeEnum.BigInt,
94
+ total: SchemaVerifier_1.FieldTypeEnum.BigInt,
95
+ totalGas: SchemaVerifier_1.FieldTypeEnum.BigInt,
96
+ totalFeeBtc: SchemaVerifier_1.FieldTypeEnum.BigInt,
97
+ swapFeeBtc: SchemaVerifier_1.FieldTypeEnum.BigInt,
98
+ swapFee: SchemaVerifier_1.FieldTypeEnum.BigInt,
99
+ gasSwapFeeBtc: SchemaVerifier_1.FieldTypeEnum.BigInt,
100
+ gasSwapFee: SchemaVerifier_1.FieldTypeEnum.BigInt,
101
+ claimerBounty: SchemaVerifier_1.FieldTypeEnum.BigInt
102
+ };
103
+ /////////////////////////
104
+ ///// Spv vault from BTC
105
+ const SpvFromBTCPrepareResponseSchema = {
106
+ quoteId: SchemaVerifier_1.FieldTypeEnum.String,
107
+ expiry: SchemaVerifier_1.FieldTypeEnum.Number,
108
+ address: SchemaVerifier_1.FieldTypeEnum.String,
109
+ vaultId: SchemaVerifier_1.FieldTypeEnum.BigInt,
110
+ vaultBtcAddress: SchemaVerifier_1.FieldTypeEnum.String,
111
+ btcAddress: SchemaVerifier_1.FieldTypeEnum.String,
112
+ btcUtxo: SchemaVerifier_1.FieldTypeEnum.String,
113
+ btcFeeRate: SchemaVerifier_1.FieldTypeEnum.Number,
114
+ btcAmount: SchemaVerifier_1.FieldTypeEnum.BigInt,
115
+ btcAmountSwap: SchemaVerifier_1.FieldTypeEnum.BigInt,
116
+ btcAmountGas: SchemaVerifier_1.FieldTypeEnum.BigInt,
117
+ total: SchemaVerifier_1.FieldTypeEnum.BigInt,
118
+ totalGas: SchemaVerifier_1.FieldTypeEnum.BigInt,
119
+ totalFeeBtc: SchemaVerifier_1.FieldTypeEnum.BigInt,
120
+ swapFeeBtc: SchemaVerifier_1.FieldTypeEnum.BigInt,
121
+ swapFee: SchemaVerifier_1.FieldTypeEnum.BigInt,
122
+ gasSwapFeeBtc: SchemaVerifier_1.FieldTypeEnum.BigInt,
123
+ gasSwapFee: SchemaVerifier_1.FieldTypeEnum.BigInt,
124
+ callerFeeShare: SchemaVerifier_1.FieldTypeEnum.BigInt,
125
+ frontingFeeShare: SchemaVerifier_1.FieldTypeEnum.BigInt,
126
+ executionFeeShare: SchemaVerifier_1.FieldTypeEnum.BigInt
127
+ };
128
+ const SpvFromBTCInitResponseSchema = {
129
+ txId: SchemaVerifier_1.FieldTypeEnum.String
130
+ };
131
+ class IntermediaryAPI {
132
+ /**
133
+ * Returns the information about a specific intermediary
134
+ *
135
+ * @param baseUrl Base URL of the intermediary
136
+ * @param timeout Timeout in milliseconds for the HTTP request
137
+ * @param abortSignal
138
+ *
139
+ * @throws {RequestError} If non-200 http response code is returned
140
+ * @throws {Error} If the supplied nonce doesn't match the response
141
+ */
142
+ static async getIntermediaryInfo(baseUrl, timeout, abortSignal) {
143
+ const nonce = (0, Utils_1.randomBytes)(32).toString("hex");
144
+ const abortController = (0, Utils_1.extendAbortController)(abortSignal);
145
+ //We don't know whether the node supports only POST or also has GET info support enabled
146
+ // here we try both, and abort when the first one returns (which should be GET)
147
+ const response = await Promise.any([
148
+ (0, HttpUtils_1.httpGet)(baseUrl + "/info?nonce=" + nonce, timeout, abortController.signal),
149
+ (0, HttpUtils_1.httpPost)(baseUrl + "/info", {
150
+ nonce,
151
+ }, timeout, abortController.signal)
152
+ ]);
153
+ abortController.abort();
154
+ const info = JSON.parse(response.envelope);
155
+ if (nonce !== info.nonce)
156
+ throw new Error("Invalid response - nonce");
157
+ return response;
158
+ }
159
+ /**
160
+ * Returns the information about an outcome of the To BTC swap
161
+ *
162
+ * @param url URL of the intermediary
163
+ * @param paymentHash Payment hash of the swap
164
+ * @param sequence Swap's sequence number
165
+ * @param timeout Timeout in milliseconds for the HTTP request
166
+ * @param abortSignal
167
+ *
168
+ * @throws {RequestError} If non-200 http response code is returned
169
+ */
170
+ static async getRefundAuthorization(url, paymentHash, sequence, timeout, abortSignal) {
171
+ return (0, RetryUtils_1.tryWithRetries)(() => (0, HttpUtils_1.httpGet)(url + "/getRefundAuthorization" +
172
+ "?paymentHash=" + encodeURIComponent(paymentHash) +
173
+ "&sequence=" + encodeURIComponent(sequence.toString(10)), timeout, abortSignal), undefined, RequestError_1.RequestError, abortSignal);
174
+ }
175
+ /**
176
+ * Returns the information about the payment of the From BTCLN swaps
177
+ *
178
+ * @param url URL of the intermediary
179
+ * @param paymentHash Payment hash of the swap
180
+ * @param timeout Timeout in milliseconds for the HTTP request
181
+ * @param abortSignal
182
+ *
183
+ * @throws {RequestError} If non-200 http response code is returned
184
+ */
185
+ static async getPaymentAuthorization(url, paymentHash, timeout, abortSignal) {
186
+ return (0, RetryUtils_1.tryWithRetries)(() => (0, HttpUtils_1.httpGet)(url + "/getInvoicePaymentAuth" +
187
+ "?paymentHash=" + encodeURIComponent(paymentHash), timeout, abortSignal), undefined, RequestError_1.RequestError, abortSignal);
188
+ }
189
+ /**
190
+ * Returns the status of the payment of the From BTCLN swaps
191
+ *
192
+ * @param url URL of the intermediary
193
+ * @param paymentHash Payment hash of the swap
194
+ * @param timeout Timeout in milliseconds for the HTTP request
195
+ * @param abortSignal
196
+ *
197
+ * @throws {RequestError} If non-200 http response code is returned
198
+ */
199
+ static async getInvoiceStatus(url, paymentHash, timeout, abortSignal) {
200
+ return (0, RetryUtils_1.tryWithRetries)(() => (0, HttpUtils_1.httpGet)(url + "/getInvoiceStatus" +
201
+ "?paymentHash=" + encodeURIComponent(paymentHash), timeout, abortSignal), undefined, RequestError_1.RequestError, abortSignal);
202
+ }
203
+ /**
204
+ * Initiate To BTC swap with an intermediary
205
+ *
206
+ * @param chainIdentifier
207
+ * @param baseUrl Base URL of the intermediary
208
+ * @param init Swap initialization parameters
209
+ * @param timeout Timeout in milliseconds for the HTTP request
210
+ * @param abortSignal
211
+ * @param streamRequest Whether to force streaming (or not streaming) the request, default is autodetect
212
+ *
213
+ * @throws {RequestError} If non-200 http response code is returned
214
+ */
215
+ static initToBTC(chainIdentifier, baseUrl, init, timeout, abortSignal, streamRequest) {
216
+ const responseBodyPromise = (0, StreamingFetchPromise_1.streamingFetchPromise)(baseUrl + "/tobtc/payInvoice?chain=" + encodeURIComponent(chainIdentifier), {
217
+ ...init.additionalParams,
218
+ address: init.btcAddress,
219
+ amount: init.amount.toString(10),
220
+ exactIn: init.exactIn,
221
+ confirmationTarget: init.confirmationTarget,
222
+ confirmations: init.confirmations,
223
+ nonce: init.nonce.toString(10),
224
+ token: init.token,
225
+ offerer: init.offerer,
226
+ feeRate: init.feeRate
227
+ }, {
228
+ code: SchemaVerifier_1.FieldTypeEnum.Number,
229
+ msg: SchemaVerifier_1.FieldTypeEnum.String,
230
+ data: SchemaVerifier_1.FieldTypeEnum.AnyOptional,
231
+ signDataPrefetch: SchemaVerifier_1.FieldTypeEnum.AnyOptional
232
+ }, timeout, abortSignal, streamRequest);
233
+ return {
234
+ signDataPrefetch: responseBodyPromise.then(responseBody => responseBody.signDataPrefetch),
235
+ response: responseBodyPromise.then((responseBody) => Promise.all([
236
+ responseBody.code,
237
+ responseBody.msg,
238
+ responseBody.data,
239
+ ])).then(([code, msg, data]) => {
240
+ if (code !== 20000) {
241
+ throw RequestError_1.RequestError.parse(JSON.stringify({ code, msg, data }), 400);
242
+ }
243
+ const result = (0, SchemaVerifier_1.verifySchema)(data, ToBTCResponseSchema);
244
+ if (result == null)
245
+ throw new RequestError_1.RequestError("Cannot parse the response with the expected schema", 200);
246
+ return result;
247
+ })
248
+ };
249
+ }
250
+ /**
251
+ * Initiate From BTC swap with an intermediary
252
+ *
253
+ * @param chainIdentifier
254
+ * @param baseUrl Base URL of the intermediary
255
+ * @param depositToken
256
+ * @param init Swap initialization parameters
257
+ * @param timeout Timeout in milliseconds for the HTTP request
258
+ * @param abortSignal
259
+ * @param streamRequest Whether to force streaming (or not streaming) the request, default is autodetect
260
+ *
261
+ * @throws {RequestError} If non-200 http response code is returned
262
+ */
263
+ static initFromBTC(chainIdentifier, baseUrl, depositToken, init, timeout, abortSignal, streamRequest) {
264
+ const responseBodyPromise = (0, StreamingFetchPromise_1.streamingFetchPromise)(baseUrl + "/frombtc/getAddress?chain=" + encodeURIComponent(chainIdentifier) + "&depositToken=" + encodeURIComponent(depositToken), {
265
+ ...init.additionalParams,
266
+ address: init.claimer,
267
+ amount: init.amount.toString(10),
268
+ token: init.token,
269
+ exactOut: init.exactOut,
270
+ sequence: init.sequence.toString(10),
271
+ claimerBounty: init.claimerBounty.then(claimerBounty => {
272
+ return {
273
+ feePerBlock: claimerBounty.feePerBlock.toString(10),
274
+ safetyFactor: claimerBounty.safetyFactor,
275
+ startTimestamp: claimerBounty.startTimestamp.toString(10),
276
+ addBlock: claimerBounty.addBlock,
277
+ addFee: claimerBounty.addFee.toString(10)
278
+ };
279
+ }),
280
+ feeRate: init.feeRate
281
+ }, {
282
+ code: SchemaVerifier_1.FieldTypeEnum.Number,
283
+ msg: SchemaVerifier_1.FieldTypeEnum.String,
284
+ data: SchemaVerifier_1.FieldTypeEnum.AnyOptional,
285
+ signDataPrefetch: SchemaVerifier_1.FieldTypeEnum.AnyOptional
286
+ }, timeout, abortSignal, streamRequest);
287
+ return {
288
+ signDataPrefetch: responseBodyPromise.then(responseBody => responseBody.signDataPrefetch),
289
+ response: responseBodyPromise.then((responseBody) => Promise.all([
290
+ responseBody.code,
291
+ responseBody.msg,
292
+ responseBody.data,
293
+ ])).then(([code, msg, data]) => {
294
+ if (code !== 20000) {
295
+ throw RequestError_1.RequestError.parse(JSON.stringify({ code, msg, data }), 400);
296
+ }
297
+ const result = (0, SchemaVerifier_1.verifySchema)(data, FromBTCResponseSchema);
298
+ if (result == null)
299
+ throw new RequestError_1.RequestError("Cannot parse the response with the expected schema", 200);
300
+ return result;
301
+ })
302
+ };
303
+ }
304
+ /**
305
+ * Initiate From BTCLN swap with an intermediary
306
+ *
307
+ * @param chainIdentifier
308
+ * @param baseUrl Base URL of the intermediary
309
+ * @param depositToken
310
+ * @param init Swap initialization parameters
311
+ * @param timeout Timeout in milliseconds for the HTTP request
312
+ * @param abortSignal
313
+ * @param streamRequest Whether to force streaming (or not streaming) the request, default is autodetect
314
+ *
315
+ * @throws {RequestError} If non-200 http response code is returned
316
+ */
317
+ static initFromBTCLN(chainIdentifier, baseUrl, depositToken, init, timeout, abortSignal, streamRequest) {
318
+ const responseBodyPromise = (0, StreamingFetchPromise_1.streamingFetchPromise)(baseUrl + "/frombtcln/createInvoice?chain=" + encodeURIComponent(chainIdentifier) + "&depositToken=" + encodeURIComponent(depositToken), {
319
+ ...init.additionalParams,
320
+ paymentHash: init.paymentHash.toString("hex"),
321
+ amount: init.amount.toString(),
322
+ address: init.claimer,
323
+ token: init.token,
324
+ descriptionHash: init.descriptionHash == null ? null : init.descriptionHash.toString("hex"),
325
+ exactOut: init.exactOut,
326
+ feeRate: init.feeRate
327
+ }, {
328
+ code: SchemaVerifier_1.FieldTypeEnum.Number,
329
+ msg: SchemaVerifier_1.FieldTypeEnum.String,
330
+ data: SchemaVerifier_1.FieldTypeEnum.AnyOptional,
331
+ lnPublicKey: SchemaVerifier_1.FieldTypeEnum.StringOptional
332
+ }, timeout, abortSignal, streamRequest);
333
+ return {
334
+ lnPublicKey: responseBodyPromise.then(responseBody => responseBody.lnPublicKey),
335
+ response: responseBodyPromise.then((responseBody) => Promise.all([
336
+ responseBody.code,
337
+ responseBody.msg,
338
+ responseBody.data,
339
+ ])).then(([code, msg, data]) => {
340
+ if (code !== 20000) {
341
+ throw RequestError_1.RequestError.parse(JSON.stringify({ code, msg, data }), 400);
342
+ }
343
+ const result = (0, SchemaVerifier_1.verifySchema)(data, FromBTCLNResponseSchema);
344
+ if (result == null)
345
+ throw new RequestError_1.RequestError("Cannot parse the response with the expected schema", 200);
346
+ return result;
347
+ })
348
+ };
349
+ }
350
+ /**
351
+ * Initiate From BTCLN swap with auto-initilization by an intermediary
352
+ *
353
+ * @param chainIdentifier
354
+ * @param baseUrl Base URL of the intermediary
355
+ * @param init Swap initialization parameters
356
+ * @param timeout Timeout in milliseconds for the HTTP request
357
+ * @param abortSignal
358
+ * @param streamRequest Whether to force streaming (or not streaming) the request, default is autodetect
359
+ *
360
+ * @throws {RequestError} If non-200 http response code is returned
361
+ */
362
+ static initFromBTCLNAuto(chainIdentifier, baseUrl, init, timeout, abortSignal, streamRequest) {
363
+ const responseBodyPromise = (0, StreamingFetchPromise_1.streamingFetchPromise)(baseUrl + "/frombtcln_auto/createInvoice?chain=" + encodeURIComponent(chainIdentifier), {
364
+ ...init.additionalParams,
365
+ paymentHash: init.paymentHash.toString("hex"),
366
+ amount: init.amount.toString(),
367
+ address: init.claimer,
368
+ token: init.token,
369
+ descriptionHash: init.descriptionHash == null ? null : init.descriptionHash.toString("hex"),
370
+ exactOut: init.exactOut,
371
+ gasToken: init.gasToken,
372
+ gasAmount: init.gasAmount?.toString(10) ?? "0",
373
+ claimerBounty: init.claimerBounty?.then(val => val.toString(10)) ?? "0"
374
+ }, {
375
+ code: SchemaVerifier_1.FieldTypeEnum.Number,
376
+ msg: SchemaVerifier_1.FieldTypeEnum.String,
377
+ data: SchemaVerifier_1.FieldTypeEnum.AnyOptional,
378
+ lnPublicKey: SchemaVerifier_1.FieldTypeEnum.StringOptional
379
+ }, timeout, abortSignal, streamRequest);
380
+ return {
381
+ lnPublicKey: responseBodyPromise.then(responseBody => responseBody.lnPublicKey),
382
+ response: responseBodyPromise.then((responseBody) => Promise.all([
383
+ responseBody.code,
384
+ responseBody.msg,
385
+ responseBody.data,
386
+ ])).then(([code, msg, data]) => {
387
+ if (code !== 20000) {
388
+ throw RequestError_1.RequestError.parse(JSON.stringify({ code, msg, data }), 400);
389
+ }
390
+ const result = (0, SchemaVerifier_1.verifySchema)(data, FromBTCLNAutoResponseSchema);
391
+ if (result == null)
392
+ throw new RequestError_1.RequestError("Cannot parse the response with the expected schema", 200);
393
+ return result;
394
+ })
395
+ };
396
+ }
397
+ /**
398
+ * Initiate To BTCLN swap with an intermediary
399
+ *
400
+ * @param chainIdentifier
401
+ * @param baseUrl Base URL of the intermediary
402
+ * @param init Swap initialization parameters
403
+ * @param timeout Timeout in milliseconds for the HTTP request
404
+ * @param abortSignal
405
+ * @param streamRequest Whether to force streaming (or not streaming) the request, default is autodetect
406
+ *
407
+ * @throws {RequestError} If non-200 http response code is returned
408
+ */
409
+ static initToBTCLN(chainIdentifier, baseUrl, init, timeout, abortSignal, streamRequest) {
410
+ const responseBodyPromise = (0, StreamingFetchPromise_1.streamingFetchPromise)(baseUrl + "/tobtcln/payInvoice?chain=" + encodeURIComponent(chainIdentifier), {
411
+ exactIn: false,
412
+ ...init.additionalParams,
413
+ pr: init.pr,
414
+ maxFee: init.maxFee.toString(10),
415
+ expiryTimestamp: init.expiryTimestamp.toString(10),
416
+ token: init.token,
417
+ offerer: init.offerer,
418
+ feeRate: init.feeRate,
419
+ amount: null
420
+ }, {
421
+ code: SchemaVerifier_1.FieldTypeEnum.Number,
422
+ msg: SchemaVerifier_1.FieldTypeEnum.String,
423
+ data: SchemaVerifier_1.FieldTypeEnum.AnyOptional,
424
+ signDataPrefetch: SchemaVerifier_1.FieldTypeEnum.AnyOptional
425
+ }, timeout, abortSignal, streamRequest);
426
+ return {
427
+ signDataPrefetch: responseBodyPromise.then(responseBody => responseBody.signDataPrefetch),
428
+ response: responseBodyPromise.then((responseBody) => Promise.all([
429
+ responseBody.code,
430
+ responseBody.msg,
431
+ responseBody.data,
432
+ ])).then(([code, msg, data]) => {
433
+ if (code !== 20000) {
434
+ throw RequestError_1.RequestError.parse(JSON.stringify({ code, msg, data }), 400);
435
+ }
436
+ const result = (0, SchemaVerifier_1.verifySchema)(data, ToBTCLNResponseSchema);
437
+ if (result == null)
438
+ throw new RequestError_1.RequestError("Cannot parse the response with the expected schema", 200);
439
+ return result;
440
+ })
441
+ };
442
+ }
443
+ /**
444
+ * Initiate To BTCLN exact in swap with an intermediary
445
+ *
446
+ * @param baseUrl Base URL of the intermediary
447
+ * @param init Swap initialization parameters
448
+ * @param timeout Timeout in milliseconds for the HTTP request
449
+ * @param abortSignal
450
+ * @param streamRequest Whether to force streaming (or not streaming) the request, default is autodetect
451
+ *
452
+ * @throws {RequestError} If non-200 http response code is returned
453
+ */
454
+ static async initToBTCLNExactIn(baseUrl, init, timeout, abortSignal, streamRequest) {
455
+ const responseBody = await (0, StreamingFetchPromise_1.streamingFetchPromise)(baseUrl + "/tobtcln/payInvoiceExactIn", {
456
+ ...init.additionalParams,
457
+ pr: init.pr,
458
+ reqId: init.reqId,
459
+ feeRate: init.feeRate
460
+ }, {
461
+ code: SchemaVerifier_1.FieldTypeEnum.Number,
462
+ msg: SchemaVerifier_1.FieldTypeEnum.String,
463
+ data: SchemaVerifier_1.FieldTypeEnum.AnyOptional
464
+ }, timeout, abortSignal, streamRequest);
465
+ const [code, msg, data] = await Promise.all([
466
+ responseBody.code,
467
+ responseBody.msg,
468
+ responseBody.data,
469
+ ]);
470
+ if (code !== 20000)
471
+ throw RequestError_1.RequestError.parse(JSON.stringify({ code, msg, data }), 400);
472
+ const result = (0, SchemaVerifier_1.verifySchema)(data, ToBTCLNResponseSchema);
473
+ if (result == null)
474
+ throw new RequestError_1.RequestError("Cannot parse the response with the expected schema", 200);
475
+ return result;
476
+ }
477
+ /**
478
+ * Prepare To BTCLN exact in swap with an intermediary
479
+ *
480
+ * @param chainIdentifier
481
+ * @param baseUrl Base URL of the intermediary
482
+ * @param init Swap initialization parameters
483
+ * @param timeout Timeout in milliseconds for the HTTP request
484
+ * @param abortSignal
485
+ * @param streamRequest Whether to force streaming (or not streaming) the request, default is autodetect
486
+ *
487
+ * @throws {RequestError} If non-200 http response code is returned
488
+ */
489
+ static prepareToBTCLNExactIn(chainIdentifier, baseUrl, init, timeout, abortSignal, streamRequest) {
490
+ const responseBodyPromise = (0, StreamingFetchPromise_1.streamingFetchPromise)(baseUrl + "/tobtcln/payInvoice?chain=" + encodeURIComponent(chainIdentifier), {
491
+ exactIn: true,
492
+ ...init.additionalParams,
493
+ pr: init.pr,
494
+ maxFee: init.maxFee.toString(10),
495
+ expiryTimestamp: init.expiryTimestamp.toString(10),
496
+ token: init.token,
497
+ offerer: init.offerer,
498
+ amount: init.amount.toString(10)
499
+ }, {
500
+ code: SchemaVerifier_1.FieldTypeEnum.Number,
501
+ msg: SchemaVerifier_1.FieldTypeEnum.String,
502
+ data: SchemaVerifier_1.FieldTypeEnum.AnyOptional,
503
+ signDataPrefetch: SchemaVerifier_1.FieldTypeEnum.AnyOptional
504
+ }, timeout, abortSignal, streamRequest);
505
+ return {
506
+ signDataPrefetch: responseBodyPromise.then(responseBody => responseBody.signDataPrefetch),
507
+ response: responseBodyPromise.then((responseBody) => Promise.all([
508
+ responseBody.code,
509
+ responseBody.msg,
510
+ responseBody.data,
511
+ ])).then(([code, msg, data]) => {
512
+ if (code !== 20000) {
513
+ throw RequestError_1.RequestError.parse(JSON.stringify({ code, msg, data }), 400);
514
+ }
515
+ const result = (0, SchemaVerifier_1.verifySchema)(data, ToBTCLNPrepareExactInSchema);
516
+ if (result == null)
517
+ throw new RequestError_1.RequestError("Cannot parse the response with the expected schema", 200);
518
+ return result;
519
+ })
520
+ };
521
+ }
522
+ /**
523
+ * Prepare From BTC swap via new spv vault swaps with an intermediary
524
+ *
525
+ * @param chainIdentifier
526
+ * @param baseUrl Base URL of the intermediary
527
+ * @param init Swap initialization parameters
528
+ * @param timeout Timeout in milliseconds for the HTTP request
529
+ * @param abortSignal
530
+ * @param streamRequest Whether to force streaming (or not streaming) the request, default is autodetect
531
+ *
532
+ * @throws {RequestError} If non-200 http response code is returned
533
+ */
534
+ static prepareSpvFromBTC(chainIdentifier, baseUrl, init, timeout, abortSignal, streamRequest) {
535
+ const responseBodyPromise = (0, StreamingFetchPromise_1.streamingFetchPromise)(baseUrl + "/frombtc_spv/getQuote?chain=" + encodeURIComponent(chainIdentifier), {
536
+ exactOut: init.exactOut,
537
+ ...init.additionalParams,
538
+ address: init.address,
539
+ amount: init.amount.toString(10),
540
+ token: init.token,
541
+ gasAmount: init.gasAmount.toString(10),
542
+ gasToken: init.gasToken,
543
+ frontingFeeRate: init.frontingFeeRate.toString(10),
544
+ callerFeeRate: init.callerFeeRate.then(val => val.toString(10))
545
+ }, {
546
+ code: SchemaVerifier_1.FieldTypeEnum.Number,
547
+ msg: SchemaVerifier_1.FieldTypeEnum.String,
548
+ data: SchemaVerifier_1.FieldTypeEnum.AnyOptional
549
+ }, timeout, abortSignal, streamRequest);
550
+ return responseBodyPromise.then((responseBody) => Promise.all([
551
+ responseBody.code,
552
+ responseBody.msg,
553
+ responseBody.data,
554
+ ])).then(([code, msg, data]) => {
555
+ if (code !== 20000) {
556
+ throw RequestError_1.RequestError.parse(JSON.stringify({ code, msg, data }), 400);
557
+ }
558
+ const result = (0, SchemaVerifier_1.verifySchema)(data, SpvFromBTCPrepareResponseSchema);
559
+ if (result == null)
560
+ throw new RequestError_1.RequestError("Cannot parse the response with the expected schema", 200);
561
+ return result;
562
+ });
563
+ }
564
+ /**
565
+ * Prepare From BTC swap via new spv vault swaps with an intermediary
566
+ *
567
+ * @param chainIdentifier
568
+ * @param url
569
+ * @param init Swap initialization parameters
570
+ * @param timeout Timeout in milliseconds for the HTTP request
571
+ * @param abortSignal
572
+ * @param streamRequest Whether to force streaming (or not streaming) the request, default is autodetect
573
+ *
574
+ * @throws {RequestError} If non-200 http response code is returned
575
+ */
576
+ static initSpvFromBTC(chainIdentifier, url, init, timeout, abortSignal, streamRequest) {
577
+ const responseBodyPromise = (0, StreamingFetchPromise_1.streamingFetchPromise)(url + "/postQuote?chain=" + encodeURIComponent(chainIdentifier), {
578
+ quoteId: init.quoteId,
579
+ psbtHex: init.psbtHex
580
+ }, {
581
+ code: SchemaVerifier_1.FieldTypeEnum.Number,
582
+ msg: SchemaVerifier_1.FieldTypeEnum.String,
583
+ data: SchemaVerifier_1.FieldTypeEnum.AnyOptional
584
+ }, timeout, abortSignal, streamRequest);
585
+ return responseBodyPromise.then((responseBody) => Promise.all([
586
+ responseBody.code,
587
+ responseBody.msg,
588
+ responseBody.data,
589
+ ])).then(([code, msg, data]) => {
590
+ if (code !== 20000) {
591
+ throw RequestError_1.RequestError.parse(JSON.stringify({ code, msg, data }), 400);
592
+ }
593
+ const result = (0, SchemaVerifier_1.verifySchema)(data, SpvFromBTCInitResponseSchema);
594
+ if (result == null)
595
+ throw new RequestError_1.RequestError("Cannot parse the response with the expected schema", 200);
596
+ return result;
597
+ });
598
+ }
599
+ }
600
+ exports.IntermediaryAPI = IntermediaryAPI;