@atomiqlabs/sdk 7.0.12 → 8.0.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (364) hide show
  1. package/README.md +45 -29
  2. package/dist/SmartChainAssets.d.ts +11 -3
  3. package/dist/SmartChainAssets.js +7 -3
  4. package/dist/bitcoin/BitcoinRpcWithAddressIndex.d.ts +68 -0
  5. package/dist/bitcoin/BitcoinRpcWithAddressIndex.js +2 -0
  6. package/dist/bitcoin/LightningNetworkApi.d.ts +12 -0
  7. package/dist/bitcoin/LightningNetworkApi.js +2 -0
  8. package/dist/bitcoin/coinselect2/accumulative.d.ts +6 -0
  9. package/dist/bitcoin/coinselect2/accumulative.js +52 -0
  10. package/dist/bitcoin/coinselect2/blackjack.d.ts +6 -0
  11. package/dist/bitcoin/coinselect2/blackjack.js +38 -0
  12. package/dist/bitcoin/coinselect2/index.d.ts +19 -0
  13. package/dist/bitcoin/coinselect2/index.js +69 -0
  14. package/dist/bitcoin/coinselect2/utils.d.ts +71 -0
  15. package/dist/bitcoin/coinselect2/utils.js +123 -0
  16. package/dist/bitcoin/mempool/MempoolApi.d.ts +350 -0
  17. package/dist/bitcoin/mempool/MempoolApi.js +311 -0
  18. package/dist/bitcoin/mempool/MempoolBitcoinBlock.d.ts +44 -0
  19. package/dist/bitcoin/mempool/MempoolBitcoinBlock.js +48 -0
  20. package/dist/bitcoin/mempool/MempoolBitcoinRpc.d.ts +119 -0
  21. package/dist/bitcoin/mempool/MempoolBitcoinRpc.js +361 -0
  22. package/dist/bitcoin/mempool/synchronizer/MempoolBtcRelaySynchronizer.d.ts +22 -0
  23. package/dist/bitcoin/mempool/synchronizer/MempoolBtcRelaySynchronizer.js +105 -0
  24. package/dist/bitcoin/wallet/BitcoinWallet.d.ts +93 -0
  25. package/dist/bitcoin/wallet/BitcoinWallet.js +273 -0
  26. package/dist/bitcoin/wallet/IBitcoinWallet.d.ts +28 -0
  27. package/dist/bitcoin/wallet/IBitcoinWallet.js +20 -0
  28. package/dist/bitcoin/wallet/MinimalBitcoinWalletInterface.d.ts +21 -0
  29. package/dist/bitcoin/wallet/MinimalBitcoinWalletInterface.js +2 -0
  30. package/dist/bitcoin/wallet/MinimalLightningNetworkWalletInterface.d.ts +7 -0
  31. package/dist/bitcoin/wallet/MinimalLightningNetworkWalletInterface.js +2 -0
  32. package/dist/bitcoin/wallet/SingleAddressBitcoinWallet.d.ts +40 -0
  33. package/dist/bitcoin/wallet/SingleAddressBitcoinWallet.js +86 -0
  34. package/dist/enums/FeeType.d.ts +8 -0
  35. package/dist/enums/FeeType.js +12 -0
  36. package/dist/enums/SwapAmountType.d.ts +8 -0
  37. package/dist/enums/SwapAmountType.js +12 -0
  38. package/dist/enums/SwapDirection.d.ts +8 -0
  39. package/dist/enums/SwapDirection.js +12 -0
  40. package/dist/enums/SwapType.d.ts +14 -0
  41. package/dist/enums/SwapType.js +18 -0
  42. package/dist/errors/IntermediaryError.d.ts +9 -0
  43. package/dist/errors/IntermediaryError.js +26 -0
  44. package/dist/errors/PaymentAuthError.d.ts +11 -0
  45. package/dist/errors/PaymentAuthError.js +23 -0
  46. package/dist/errors/RequestError.d.ts +18 -0
  47. package/dist/errors/RequestError.js +46 -0
  48. package/dist/errors/UserError.d.ts +7 -0
  49. package/dist/errors/UserError.js +15 -0
  50. package/dist/events/UnifiedSwapEventListener.d.ts +23 -0
  51. package/dist/events/UnifiedSwapEventListener.js +130 -0
  52. package/dist/http/HttpUtils.d.ts +27 -0
  53. package/dist/http/HttpUtils.js +91 -0
  54. package/dist/http/paramcoders/IParamReader.d.ts +8 -0
  55. package/dist/http/paramcoders/IParamReader.js +2 -0
  56. package/dist/http/paramcoders/ParamDecoder.d.ts +44 -0
  57. package/dist/http/paramcoders/ParamDecoder.js +132 -0
  58. package/dist/http/paramcoders/ParamEncoder.d.ts +20 -0
  59. package/dist/http/paramcoders/ParamEncoder.js +31 -0
  60. package/dist/http/paramcoders/SchemaVerifier.d.ts +26 -0
  61. package/dist/http/paramcoders/SchemaVerifier.js +145 -0
  62. package/dist/http/paramcoders/client/ResponseParamDecoder.d.ts +11 -0
  63. package/dist/http/paramcoders/client/ResponseParamDecoder.js +57 -0
  64. package/dist/http/paramcoders/client/StreamParamEncoder.d.ts +13 -0
  65. package/dist/http/paramcoders/client/StreamParamEncoder.js +26 -0
  66. package/dist/http/paramcoders/client/StreamingFetchPromise.d.ts +16 -0
  67. package/dist/http/paramcoders/client/StreamingFetchPromise.js +174 -0
  68. package/dist/index.d.ts +82 -4
  69. package/dist/index.js +128 -4
  70. package/dist/intermediaries/Intermediary.d.ts +111 -0
  71. package/dist/intermediaries/Intermediary.js +115 -0
  72. package/dist/intermediaries/IntermediaryDiscovery.d.ts +166 -0
  73. package/dist/intermediaries/IntermediaryDiscovery.js +390 -0
  74. package/dist/intermediaries/apis/IntermediaryAPI.d.ts +436 -0
  75. package/dist/intermediaries/apis/IntermediaryAPI.js +600 -0
  76. package/dist/intermediaries/apis/TrustedIntermediaryAPI.d.ts +154 -0
  77. package/dist/intermediaries/apis/TrustedIntermediaryAPI.js +136 -0
  78. package/dist/lnurl/LNURL.d.ts +102 -0
  79. package/dist/lnurl/LNURL.js +321 -0
  80. package/dist/prices/RedundantSwapPrice.d.ts +89 -0
  81. package/dist/prices/RedundantSwapPrice.js +202 -0
  82. package/dist/prices/SingleSwapPrice.d.ts +31 -0
  83. package/dist/prices/SingleSwapPrice.js +41 -0
  84. package/dist/prices/SwapPriceWithChain.d.ts +70 -0
  85. package/dist/prices/SwapPriceWithChain.js +91 -0
  86. package/dist/prices/abstract/ICachedSwapPrice.d.ts +28 -0
  87. package/dist/prices/abstract/ICachedSwapPrice.js +62 -0
  88. package/dist/prices/abstract/IPriceProvider.d.ts +81 -0
  89. package/dist/prices/abstract/IPriceProvider.js +74 -0
  90. package/dist/prices/abstract/ISwapPrice.d.ts +117 -0
  91. package/dist/prices/abstract/ISwapPrice.js +219 -0
  92. package/dist/prices/providers/BinancePriceProvider.d.ts +16 -0
  93. package/dist/prices/providers/BinancePriceProvider.js +23 -0
  94. package/dist/prices/providers/CoinGeckoPriceProvider.d.ts +17 -0
  95. package/dist/prices/providers/CoinGeckoPriceProvider.js +23 -0
  96. package/dist/prices/providers/CoinPaprikaPriceProvider.d.ts +19 -0
  97. package/dist/prices/providers/CoinPaprikaPriceProvider.js +23 -0
  98. package/dist/prices/providers/CustomPriceProvider.d.ts +13 -0
  99. package/dist/prices/providers/CustomPriceProvider.js +24 -0
  100. package/dist/prices/providers/KrakenPriceProvider.d.ts +29 -0
  101. package/dist/prices/providers/KrakenPriceProvider.js +36 -0
  102. package/dist/prices/providers/OKXPriceProvider.d.ts +28 -0
  103. package/dist/prices/providers/OKXPriceProvider.js +23 -0
  104. package/dist/prices/providers/abstract/ExchangePriceProvider.d.ts +14 -0
  105. package/dist/prices/providers/abstract/ExchangePriceProvider.js +18 -0
  106. package/dist/prices/providers/abstract/HttpPriceProvider.d.ts +7 -0
  107. package/dist/prices/providers/abstract/HttpPriceProvider.js +12 -0
  108. package/dist/storage/IUnifiedStorage.d.ts +73 -0
  109. package/dist/storage/IUnifiedStorage.js +2 -0
  110. package/dist/storage/UnifiedSwapStorage.d.ts +82 -0
  111. package/dist/storage/UnifiedSwapStorage.js +83 -0
  112. package/dist/storage-browser/IndexedDBUnifiedStorage.d.ts +39 -0
  113. package/dist/storage-browser/IndexedDBUnifiedStorage.js +275 -0
  114. package/dist/{storage → storage-browser}/LocalStorageManager.d.ts +1 -0
  115. package/dist/{storage → storage-browser}/LocalStorageManager.js +2 -1
  116. package/dist/swapper/Swapper.d.ts +533 -0
  117. package/dist/swapper/Swapper.js +1566 -0
  118. package/dist/swapper/SwapperFactory.d.ts +87 -0
  119. package/dist/{SwapperFactory.js → swapper/SwapperFactory.js} +37 -19
  120. package/dist/swapper/SwapperUtils.d.ts +153 -0
  121. package/dist/swapper/SwapperUtils.js +420 -0
  122. package/dist/swapper/SwapperWithChain.d.ts +214 -0
  123. package/dist/swapper/SwapperWithChain.js +315 -0
  124. package/dist/swapper/SwapperWithSigner.d.ts +178 -0
  125. package/dist/swapper/SwapperWithSigner.js +172 -0
  126. package/dist/swaps/IAddressSwap.d.ts +13 -0
  127. package/dist/swaps/IAddressSwap.js +13 -0
  128. package/dist/swaps/IBTCWalletSwap.d.ts +55 -0
  129. package/dist/swaps/IBTCWalletSwap.js +17 -0
  130. package/dist/swaps/IClaimableSwap.d.ts +17 -0
  131. package/dist/swaps/IClaimableSwap.js +14 -0
  132. package/dist/swaps/IClaimableSwapWrapper.d.ts +5 -0
  133. package/dist/swaps/IClaimableSwapWrapper.js +2 -0
  134. package/dist/swaps/IRefundableSwap.d.ts +17 -0
  135. package/dist/swaps/IRefundableSwap.js +13 -0
  136. package/dist/swaps/ISwap.d.ts +207 -0
  137. package/dist/swaps/ISwap.js +264 -0
  138. package/dist/swaps/ISwapWithGasDrop.d.ts +15 -0
  139. package/dist/swaps/ISwapWithGasDrop.js +11 -0
  140. package/dist/swaps/ISwapWrapper.d.ts +153 -0
  141. package/dist/swaps/ISwapWrapper.js +227 -0
  142. package/dist/swaps/escrow_swaps/IEscrowSelfInitSwap.d.ts +53 -0
  143. package/dist/swaps/escrow_swaps/IEscrowSelfInitSwap.js +116 -0
  144. package/dist/swaps/escrow_swaps/IEscrowSwap.d.ts +70 -0
  145. package/dist/swaps/escrow_swaps/IEscrowSwap.js +132 -0
  146. package/dist/swaps/escrow_swaps/IEscrowSwapWrapper.d.ts +85 -0
  147. package/dist/swaps/escrow_swaps/IEscrowSwapWrapper.js +122 -0
  148. package/dist/swaps/escrow_swaps/frombtc/IFromBTCLNWrapper.d.ts +86 -0
  149. package/dist/swaps/escrow_swaps/frombtc/IFromBTCLNWrapper.js +115 -0
  150. package/dist/swaps/escrow_swaps/frombtc/IFromBTCSelfInitSwap.d.ts +93 -0
  151. package/dist/swaps/escrow_swaps/frombtc/IFromBTCSelfInitSwap.js +121 -0
  152. package/dist/swaps/escrow_swaps/frombtc/IFromBTCWrapper.d.ts +45 -0
  153. package/dist/swaps/escrow_swaps/frombtc/IFromBTCWrapper.js +65 -0
  154. package/dist/swaps/escrow_swaps/frombtc/ln/FromBTCLNSwap.d.ts +263 -0
  155. package/dist/swaps/escrow_swaps/frombtc/ln/FromBTCLNSwap.js +933 -0
  156. package/dist/swaps/escrow_swaps/frombtc/ln/FromBTCLNWrapper.d.ts +110 -0
  157. package/dist/swaps/escrow_swaps/frombtc/ln/FromBTCLNWrapper.js +307 -0
  158. package/dist/swaps/escrow_swaps/frombtc/ln_auto/FromBTCLNAutoSwap.d.ts +236 -0
  159. package/dist/swaps/escrow_swaps/frombtc/ln_auto/FromBTCLNAutoSwap.js +898 -0
  160. package/dist/swaps/escrow_swaps/frombtc/ln_auto/FromBTCLNAutoWrapper.d.ts +125 -0
  161. package/dist/swaps/escrow_swaps/frombtc/ln_auto/FromBTCLNAutoWrapper.js +393 -0
  162. package/dist/swaps/escrow_swaps/frombtc/onchain/FromBTCSwap.d.ts +245 -0
  163. package/dist/swaps/escrow_swaps/frombtc/onchain/FromBTCSwap.js +841 -0
  164. package/dist/swaps/escrow_swaps/frombtc/onchain/FromBTCWrapper.d.ts +120 -0
  165. package/dist/swaps/escrow_swaps/frombtc/onchain/FromBTCWrapper.js +294 -0
  166. package/dist/swaps/escrow_swaps/tobtc/IToBTCSwap.d.ts +228 -0
  167. package/dist/swaps/escrow_swaps/tobtc/IToBTCSwap.js +721 -0
  168. package/dist/swaps/escrow_swaps/tobtc/IToBTCWrapper.d.ts +37 -0
  169. package/dist/swaps/escrow_swaps/tobtc/IToBTCWrapper.js +93 -0
  170. package/dist/swaps/escrow_swaps/tobtc/ln/ToBTCLNSwap.d.ts +86 -0
  171. package/dist/swaps/escrow_swaps/tobtc/ln/ToBTCLNSwap.js +213 -0
  172. package/dist/swaps/escrow_swaps/tobtc/ln/ToBTCLNWrapper.d.ts +170 -0
  173. package/dist/swaps/escrow_swaps/tobtc/ln/ToBTCLNWrapper.js +520 -0
  174. package/dist/swaps/escrow_swaps/tobtc/onchain/ToBTCSwap.d.ts +50 -0
  175. package/dist/swaps/escrow_swaps/tobtc/onchain/ToBTCSwap.js +109 -0
  176. package/dist/swaps/escrow_swaps/tobtc/onchain/ToBTCWrapper.d.ts +93 -0
  177. package/dist/swaps/escrow_swaps/tobtc/onchain/ToBTCWrapper.js +217 -0
  178. package/dist/swaps/spv_swaps/SpvFromBTCSwap.d.ts +315 -0
  179. package/dist/swaps/spv_swaps/SpvFromBTCSwap.js +1098 -0
  180. package/dist/swaps/spv_swaps/SpvFromBTCWrapper.d.ts +125 -0
  181. package/dist/swaps/spv_swaps/SpvFromBTCWrapper.js +631 -0
  182. package/dist/swaps/trusted/ln/LnForGasSwap.d.ts +107 -0
  183. package/dist/swaps/trusted/ln/LnForGasSwap.js +343 -0
  184. package/dist/swaps/trusted/ln/LnForGasWrapper.d.ts +21 -0
  185. package/dist/swaps/trusted/ln/LnForGasWrapper.js +62 -0
  186. package/dist/swaps/trusted/onchain/OnchainForGasSwap.d.ts +164 -0
  187. package/dist/swaps/trusted/onchain/OnchainForGasSwap.js +520 -0
  188. package/dist/swaps/trusted/onchain/OnchainForGasWrapper.d.ts +48 -0
  189. package/dist/swaps/trusted/onchain/OnchainForGasWrapper.js +74 -0
  190. package/dist/types/AmountData.d.ts +9 -0
  191. package/dist/types/AmountData.js +2 -0
  192. package/dist/types/CustomPriceFunction.d.ts +5 -0
  193. package/dist/types/CustomPriceFunction.js +2 -0
  194. package/dist/types/PriceInfoType.d.ts +28 -0
  195. package/dist/types/PriceInfoType.js +57 -0
  196. package/dist/types/SwapExecutionAction.d.ts +7 -0
  197. package/dist/types/SwapExecutionAction.js +2 -0
  198. package/dist/types/SwapWithSigner.d.ts +14 -0
  199. package/dist/types/SwapWithSigner.js +40 -0
  200. package/dist/types/Token.d.ts +53 -0
  201. package/dist/types/Token.js +58 -0
  202. package/dist/types/TokenAmount.d.ts +57 -0
  203. package/dist/types/TokenAmount.js +47 -0
  204. package/dist/types/fees/Fee.d.ts +49 -0
  205. package/dist/types/fees/Fee.js +2 -0
  206. package/dist/types/fees/FeeBreakdown.d.ts +10 -0
  207. package/dist/types/fees/FeeBreakdown.js +2 -0
  208. package/dist/types/fees/PercentagePPM.d.ts +15 -0
  209. package/dist/types/fees/PercentagePPM.js +17 -0
  210. package/dist/types/lnurl/LNURLPay.d.ts +54 -0
  211. package/dist/types/lnurl/LNURLPay.js +28 -0
  212. package/dist/types/lnurl/LNURLWithdraw.d.ts +42 -0
  213. package/dist/types/lnurl/LNURLWithdraw.js +24 -0
  214. package/dist/utils/AutomaticClockDriftCorrection.d.ts +1 -0
  215. package/dist/utils/AutomaticClockDriftCorrection.js +70 -0
  216. package/dist/utils/BitcoinUtils.d.ts +13 -0
  217. package/dist/utils/BitcoinUtils.js +98 -0
  218. package/dist/utils/BitcoinWalletUtils.d.ts +7 -0
  219. package/dist/utils/BitcoinWalletUtils.js +14 -0
  220. package/dist/utils/Logger.d.ts +7 -0
  221. package/dist/utils/Logger.js +12 -0
  222. package/dist/utils/RetryUtils.d.ts +21 -0
  223. package/dist/utils/RetryUtils.js +66 -0
  224. package/dist/utils/SwapUtils.d.ts +31 -0
  225. package/dist/utils/SwapUtils.js +18 -0
  226. package/dist/{Utils.d.ts → utils/TimeoutUtils.d.ts} +9 -3
  227. package/dist/utils/TimeoutUtils.js +55 -0
  228. package/dist/utils/TokenUtils.d.ts +11 -0
  229. package/dist/utils/TokenUtils.js +29 -0
  230. package/dist/utils/TypeUtils.d.ts +7 -0
  231. package/dist/utils/TypeUtils.js +2 -0
  232. package/dist/utils/Utils.d.ts +57 -0
  233. package/dist/utils/Utils.js +178 -0
  234. package/package.json +14 -6
  235. package/src/SmartChainAssets.ts +11 -3
  236. package/src/bitcoin/BitcoinRpcWithAddressIndex.ts +87 -0
  237. package/src/bitcoin/LightningNetworkApi.ts +16 -0
  238. package/src/bitcoin/coinselect2/accumulative.ts +68 -0
  239. package/src/bitcoin/coinselect2/blackjack.ts +49 -0
  240. package/src/bitcoin/coinselect2/index.ts +92 -0
  241. package/src/bitcoin/coinselect2/utils.ts +189 -0
  242. package/src/bitcoin/mempool/MempoolApi.ts +554 -0
  243. package/src/bitcoin/mempool/MempoolBitcoinBlock.ts +88 -0
  244. package/src/bitcoin/mempool/MempoolBitcoinRpc.ts +437 -0
  245. package/src/bitcoin/mempool/synchronizer/MempoolBtcRelaySynchronizer.ts +134 -0
  246. package/src/bitcoin/wallet/BitcoinWallet.ts +375 -0
  247. package/src/bitcoin/wallet/IBitcoinWallet.ts +44 -0
  248. package/src/bitcoin/wallet/MinimalBitcoinWalletInterface.ts +19 -0
  249. package/src/bitcoin/wallet/MinimalLightningNetworkWalletInterface.ts +7 -0
  250. package/src/bitcoin/wallet/SingleAddressBitcoinWallet.ts +108 -0
  251. package/src/enums/FeeType.ts +9 -0
  252. package/src/enums/SwapAmountType.ts +9 -0
  253. package/src/enums/SwapDirection.ts +9 -0
  254. package/src/enums/SwapType.ts +15 -0
  255. package/src/errors/IntermediaryError.ts +24 -0
  256. package/src/errors/PaymentAuthError.ts +26 -0
  257. package/src/errors/RequestError.ts +51 -0
  258. package/src/errors/UserError.ts +14 -0
  259. package/src/events/UnifiedSwapEventListener.ts +171 -0
  260. package/src/http/HttpUtils.ts +92 -0
  261. package/src/http/paramcoders/IParamReader.ts +10 -0
  262. package/src/http/paramcoders/ParamDecoder.ts +142 -0
  263. package/src/http/paramcoders/ParamEncoder.ts +37 -0
  264. package/src/http/paramcoders/SchemaVerifier.ts +153 -0
  265. package/src/http/paramcoders/client/ResponseParamDecoder.ts +58 -0
  266. package/src/http/paramcoders/client/StreamParamEncoder.ts +29 -0
  267. package/src/http/paramcoders/client/StreamingFetchPromise.ts +193 -0
  268. package/src/index.ts +102 -4
  269. package/src/intermediaries/Intermediary.ts +204 -0
  270. package/src/intermediaries/IntermediaryDiscovery.ts +485 -0
  271. package/src/intermediaries/apis/IntermediaryAPI.ts +940 -0
  272. package/src/intermediaries/apis/TrustedIntermediaryAPI.ts +257 -0
  273. package/src/lnurl/LNURL.ts +403 -0
  274. package/src/prices/RedundantSwapPrice.ts +245 -0
  275. package/src/prices/SingleSwapPrice.ts +47 -0
  276. package/src/prices/SwapPriceWithChain.ts +157 -0
  277. package/src/prices/abstract/ICachedSwapPrice.ts +86 -0
  278. package/src/prices/abstract/IPriceProvider.ts +128 -0
  279. package/src/prices/abstract/ISwapPrice.ts +328 -0
  280. package/src/prices/providers/BinancePriceProvider.ts +41 -0
  281. package/src/prices/providers/CoinGeckoPriceProvider.ts +40 -0
  282. package/src/prices/providers/CoinPaprikaPriceProvider.ts +44 -0
  283. package/src/prices/providers/CustomPriceProvider.ts +29 -0
  284. package/src/prices/providers/KrakenPriceProvider.ts +74 -0
  285. package/src/prices/providers/OKXPriceProvider.ts +53 -0
  286. package/src/prices/providers/abstract/ExchangePriceProvider.ts +29 -0
  287. package/src/prices/providers/abstract/HttpPriceProvider.ts +15 -0
  288. package/src/storage/IUnifiedStorage.ts +83 -0
  289. package/src/storage/UnifiedSwapStorage.ts +104 -0
  290. package/src/storage-browser/IndexedDBUnifiedStorage.ts +328 -0
  291. package/src/{storage → storage-browser}/LocalStorageManager.ts +2 -1
  292. package/src/swapper/Swapper.ts +2107 -0
  293. package/src/{SwapperFactory.ts → swapper/SwapperFactory.ts} +113 -72
  294. package/src/swapper/SwapperUtils.ts +510 -0
  295. package/src/swapper/SwapperWithChain.ts +464 -0
  296. package/src/swapper/SwapperWithSigner.ts +300 -0
  297. package/src/swaps/IAddressSwap.ts +20 -0
  298. package/src/swaps/IBTCWalletSwap.ts +77 -0
  299. package/src/swaps/IClaimableSwap.ts +30 -0
  300. package/src/swaps/IClaimableSwapWrapper.ts +9 -0
  301. package/src/swaps/IRefundableSwap.ts +29 -0
  302. package/src/swaps/ISwap.ts +490 -0
  303. package/src/swaps/ISwapWithGasDrop.ts +19 -0
  304. package/src/swaps/ISwapWrapper.ts +344 -0
  305. package/src/swaps/escrow_swaps/IEscrowSelfInitSwap.ts +168 -0
  306. package/src/swaps/escrow_swaps/IEscrowSwap.ts +197 -0
  307. package/src/swaps/escrow_swaps/IEscrowSwapWrapper.ts +210 -0
  308. package/src/swaps/escrow_swaps/frombtc/IFromBTCLNWrapper.ts +150 -0
  309. package/src/swaps/escrow_swaps/frombtc/IFromBTCSelfInitSwap.ts +219 -0
  310. package/src/swaps/escrow_swaps/frombtc/IFromBTCWrapper.ts +84 -0
  311. package/src/swaps/escrow_swaps/frombtc/ln/FromBTCLNSwap.ts +1082 -0
  312. package/src/swaps/escrow_swaps/frombtc/ln/FromBTCLNWrapper.ts +429 -0
  313. package/src/swaps/escrow_swaps/frombtc/ln_auto/FromBTCLNAutoSwap.ts +1078 -0
  314. package/src/swaps/escrow_swaps/frombtc/ln_auto/FromBTCLNAutoWrapper.ts +549 -0
  315. package/src/swaps/escrow_swaps/frombtc/onchain/FromBTCSwap.ts +974 -0
  316. package/src/swaps/escrow_swaps/frombtc/onchain/FromBTCWrapper.ts +443 -0
  317. package/src/swaps/escrow_swaps/tobtc/IToBTCSwap.ts +860 -0
  318. package/src/swaps/escrow_swaps/tobtc/IToBTCWrapper.ts +104 -0
  319. package/src/swaps/escrow_swaps/tobtc/ln/ToBTCLNSwap.ts +256 -0
  320. package/src/swaps/escrow_swaps/tobtc/ln/ToBTCLNWrapper.ts +716 -0
  321. package/src/swaps/escrow_swaps/tobtc/onchain/ToBTCSwap.ts +151 -0
  322. package/src/swaps/escrow_swaps/tobtc/onchain/ToBTCWrapper.ts +299 -0
  323. package/src/swaps/spv_swaps/SpvFromBTCSwap.ts +1394 -0
  324. package/src/swaps/spv_swaps/SpvFromBTCWrapper.ts +796 -0
  325. package/src/swaps/trusted/ln/LnForGasSwap.ts +402 -0
  326. package/src/swaps/trusted/ln/LnForGasWrapper.ts +70 -0
  327. package/src/swaps/trusted/onchain/OnchainForGasSwap.ts +633 -0
  328. package/src/swaps/trusted/onchain/OnchainForGasWrapper.ts +110 -0
  329. package/src/types/AmountData.ts +9 -0
  330. package/src/types/CustomPriceFunction.ts +5 -0
  331. package/src/types/PriceInfoType.ts +67 -0
  332. package/src/types/SwapExecutionAction.ts +8 -0
  333. package/src/types/SwapWithSigner.ts +57 -0
  334. package/src/types/Token.ts +90 -0
  335. package/src/types/TokenAmount.ts +110 -0
  336. package/src/types/fees/Fee.ts +55 -0
  337. package/src/types/fees/FeeBreakdown.ts +11 -0
  338. package/src/types/fees/PercentagePPM.ts +24 -0
  339. package/src/types/lnurl/LNURLPay.ts +72 -0
  340. package/src/types/lnurl/LNURLWithdraw.ts +55 -0
  341. package/src/utils/AutomaticClockDriftCorrection.ts +71 -0
  342. package/src/utils/BitcoinUtils.ts +86 -0
  343. package/src/utils/BitcoinWalletUtils.ts +16 -0
  344. package/src/utils/Logger.ts +15 -0
  345. package/src/utils/RetryUtils.ts +71 -0
  346. package/src/utils/SwapUtils.ts +38 -0
  347. package/src/utils/TimeoutUtils.ts +50 -0
  348. package/src/utils/TokenUtils.ts +25 -0
  349. package/src/utils/TypeUtils.ts +9 -0
  350. package/src/utils/Utils.ts +182 -0
  351. package/dist/SwapperFactory.d.ts +0 -52
  352. package/dist/Utils.js +0 -37
  353. package/dist/fs-storage/FileSystemStorageManager.d.ts +0 -15
  354. package/dist/fs-storage/FileSystemStorageManager.js +0 -60
  355. package/dist/fs-storage/index.d.ts +0 -1
  356. package/dist/fs-storage/index.js +0 -17
  357. package/src/SmartChainAssets.js +0 -75
  358. package/src/SwapperFactory.js +0 -120
  359. package/src/Utils.js +0 -37
  360. package/src/Utils.ts +0 -31
  361. package/src/fs-storage/FileSystemStorageManager.ts +0 -71
  362. package/src/fs-storage/index.ts +0 -1
  363. package/src/index.js +0 -21
  364. package/src/storage/LocalStorageManager.js +0 -72
@@ -0,0 +1,48 @@
1
+ /// <reference types="node" />
2
+ import { ISwapWrapper, ISwapWrapperOptions, SwapTypeDefinition, WrapperCtorTokens } from "../../ISwapWrapper";
3
+ import { ChainType } from "@atomiqlabs/base";
4
+ import { OnchainForGasSwap, OnchainForGasSwapState } from "./OnchainForGasSwap";
5
+ import { BitcoinRpcWithAddressIndex } from "../../../bitcoin/BitcoinRpcWithAddressIndex";
6
+ import { ISwapPrice } from "../../../prices/abstract/ISwapPrice";
7
+ import { EventEmitter } from "events";
8
+ import { Intermediary } from "../../../intermediaries/Intermediary";
9
+ import { SwapType } from "../../../enums/SwapType";
10
+ import { UnifiedSwapEventListener } from "../../../events/UnifiedSwapEventListener";
11
+ import { UnifiedSwapStorage } from "../../../storage/UnifiedSwapStorage";
12
+ import { ISwap } from "../../ISwap";
13
+ import { BTC_NETWORK } from "@scure/btc-signer/utils";
14
+ export type OnchainForGasWrapperOptions = ISwapWrapperOptions & {
15
+ bitcoinNetwork: BTC_NETWORK;
16
+ };
17
+ export type OnchainForGasSwapTypeDefinition<T extends ChainType> = SwapTypeDefinition<T, OnchainForGasWrapper<T>, OnchainForGasSwap<T>>;
18
+ export declare class OnchainForGasWrapper<T extends ChainType> extends ISwapWrapper<T, OnchainForGasSwapTypeDefinition<T>, OnchainForGasWrapperOptions> {
19
+ readonly TYPE = SwapType.TRUSTED_FROM_BTC;
20
+ readonly swapDeserializer: typeof OnchainForGasSwap;
21
+ readonly btcRpc: BitcoinRpcWithAddressIndex<any>;
22
+ /**
23
+ * @param chainIdentifier
24
+ * @param unifiedStorage Storage interface for the current environment
25
+ * @param unifiedChainEvents On-chain event listener
26
+ * @param chain
27
+ * @param prices Pricing to use
28
+ * @param tokens
29
+ * @param btcRpc Bitcoin RPC which also supports getting transactions by txoHash
30
+ * @param options
31
+ * @param events Instance to use for emitting events
32
+ */
33
+ constructor(chainIdentifier: string, unifiedStorage: UnifiedSwapStorage<T>, unifiedChainEvents: UnifiedSwapEventListener<T>, chain: T["ChainInterface"], prices: ISwapPrice, tokens: WrapperCtorTokens, btcRpc: BitcoinRpcWithAddressIndex<any>, options: OnchainForGasWrapperOptions, events?: EventEmitter<{
34
+ swapState: [ISwap];
35
+ }>);
36
+ /**
37
+ * Returns a newly created swap, receiving 'amount' base units of gas token
38
+ *
39
+ * @param signer
40
+ * @param amount Amount you wish to receive in base units
41
+ * @param lpOrUrl Intermediary/Counterparty swap service Intermediary object or raw url
42
+ * @param refundAddress Bitcoin address to receive refund on in case the counterparty cannot execute the swap
43
+ */
44
+ create(signer: string, amount: bigint, lpOrUrl: Intermediary | string, refundAddress?: string): Promise<OnchainForGasSwap<T>>;
45
+ readonly pendingSwapStates: OnchainForGasSwapState[];
46
+ readonly tickSwapState: undefined;
47
+ protected processEvent: undefined;
48
+ }
@@ -0,0 +1,74 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.OnchainForGasWrapper = void 0;
4
+ const ISwapWrapper_1 = require("../../ISwapWrapper");
5
+ const TrustedIntermediaryAPI_1 = require("../../../intermediaries/apis/TrustedIntermediaryAPI");
6
+ const IntermediaryError_1 = require("../../../errors/IntermediaryError");
7
+ const OnchainForGasSwap_1 = require("./OnchainForGasSwap");
8
+ const SwapType_1 = require("../../../enums/SwapType");
9
+ class OnchainForGasWrapper extends ISwapWrapper_1.ISwapWrapper {
10
+ /**
11
+ * @param chainIdentifier
12
+ * @param unifiedStorage Storage interface for the current environment
13
+ * @param unifiedChainEvents On-chain event listener
14
+ * @param chain
15
+ * @param prices Pricing to use
16
+ * @param tokens
17
+ * @param btcRpc Bitcoin RPC which also supports getting transactions by txoHash
18
+ * @param options
19
+ * @param events Instance to use for emitting events
20
+ */
21
+ constructor(chainIdentifier, unifiedStorage, unifiedChainEvents, chain, prices, tokens, btcRpc, options, events) {
22
+ super(chainIdentifier, unifiedStorage, unifiedChainEvents, chain, prices, tokens, options, events);
23
+ this.TYPE = SwapType_1.SwapType.TRUSTED_FROM_BTC;
24
+ this.swapDeserializer = OnchainForGasSwap_1.OnchainForGasSwap;
25
+ this.pendingSwapStates = [OnchainForGasSwap_1.OnchainForGasSwapState.PR_CREATED];
26
+ this.tickSwapState = undefined;
27
+ this.processEvent = undefined;
28
+ this.btcRpc = btcRpc;
29
+ }
30
+ /**
31
+ * Returns a newly created swap, receiving 'amount' base units of gas token
32
+ *
33
+ * @param signer
34
+ * @param amount Amount you wish to receive in base units
35
+ * @param lpOrUrl Intermediary/Counterparty swap service Intermediary object or raw url
36
+ * @param refundAddress Bitcoin address to receive refund on in case the counterparty cannot execute the swap
37
+ */
38
+ async create(signer, amount, lpOrUrl, refundAddress) {
39
+ if (!this.isInitialized)
40
+ throw new Error("Not initialized, call init() first!");
41
+ const lpUrl = typeof (lpOrUrl) === "string" ? lpOrUrl : lpOrUrl.url;
42
+ const token = this.chain.getNativeCurrencyAddress();
43
+ const resp = await TrustedIntermediaryAPI_1.TrustedIntermediaryAPI.initTrustedFromBTC(this.chainIdentifier, lpUrl, {
44
+ address: signer,
45
+ amount,
46
+ refundAddress,
47
+ token
48
+ }, this.options.getRequestTimeout);
49
+ if (resp.total !== amount)
50
+ throw new IntermediaryError_1.IntermediaryError("Invalid total returned");
51
+ const pricingInfo = await this.verifyReturnedPrice(typeof (lpOrUrl) === "string" || lpOrUrl.services[SwapType_1.SwapType.TRUSTED_FROM_BTC] == null ?
52
+ { swapFeePPM: 10000, swapBaseFee: 10 } :
53
+ lpOrUrl.services[SwapType_1.SwapType.TRUSTED_FROM_BTC], false, resp.amountSats, amount, this.chain.getNativeCurrencyAddress(), {});
54
+ const quote = new OnchainForGasSwap_1.OnchainForGasSwap(this, {
55
+ paymentHash: resp.paymentHash,
56
+ sequence: resp.sequence,
57
+ address: resp.btcAddress,
58
+ inputAmount: resp.amountSats,
59
+ outputAmount: resp.total,
60
+ recipient: signer,
61
+ refundAddress,
62
+ pricingInfo,
63
+ url: lpUrl,
64
+ expiry: resp.expiresAt,
65
+ swapFee: resp.swapFee,
66
+ swapFeeBtc: resp.swapFeeSats,
67
+ exactIn: false,
68
+ token
69
+ });
70
+ await quote._save();
71
+ return quote;
72
+ }
73
+ }
74
+ exports.OnchainForGasWrapper = OnchainForGasWrapper;
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Simple amount definition for swap operations
3
+ * @category Tokens
4
+ */
5
+ export type AmountData = {
6
+ amount: bigint;
7
+ token: string;
8
+ exactIn: boolean;
9
+ };
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Custom pricing callback function type
3
+ * @category Pricing and LPs
4
+ */
5
+ export type CustomPriceFunction = (tickers: string[], abortSignal?: AbortSignal) => Promise<number[]>;
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,28 @@
1
+ /**
2
+ * Pricing information for swap validation
3
+ * @category Pricing and LPs
4
+ */
5
+ export type PriceInfoType = {
6
+ isValid: boolean;
7
+ differencePPM: bigint;
8
+ satsBaseFee: bigint;
9
+ feePPM: bigint;
10
+ realPriceUSatPerToken?: bigint;
11
+ realPriceUsdPerBitcoin?: number;
12
+ swapPriceUSatPerToken: bigint;
13
+ };
14
+ /**
15
+ * Type guard for PriceInfoType
16
+ * @category Pricing and LPs
17
+ */
18
+ export declare function isPriceInfoType(obj: any): obj is PriceInfoType;
19
+ /**
20
+ * Serializes PriceInfoType for storage
21
+ * @category Pricing and LPs
22
+ */
23
+ export declare function serializePriceInfoType(obj: PriceInfoType | undefined): any;
24
+ /**
25
+ * Deserializes PriceInfoType from storage
26
+ * @category Pricing and LPs
27
+ */
28
+ export declare function deserializePriceInfoType(obj: any): PriceInfoType | undefined;
@@ -0,0 +1,57 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.deserializePriceInfoType = exports.serializePriceInfoType = exports.isPriceInfoType = void 0;
4
+ const Utils_1 = require("../utils/Utils");
5
+ /**
6
+ * Type guard for PriceInfoType
7
+ * @category Pricing and LPs
8
+ */
9
+ function isPriceInfoType(obj) {
10
+ return obj != null &&
11
+ typeof (obj.isValid) === "boolean" &&
12
+ typeof (obj.differencePPM) === "bigint" &&
13
+ typeof (obj.satsBaseFee) === "bigint" &&
14
+ typeof (obj.feePPM) === "bigint" &&
15
+ (obj.realPriceUSatPerToken == null || typeof (obj.realPriceUSatPerToken) === "bigint") &&
16
+ (obj.realPriceUsdPerBitcoin == null || typeof (obj.realPriceUsdPerBitcoin) === "number") &&
17
+ typeof (obj.swapPriceUSatPerToken) === "bigint";
18
+ }
19
+ exports.isPriceInfoType = isPriceInfoType;
20
+ /**
21
+ * Serializes PriceInfoType for storage
22
+ * @category Pricing and LPs
23
+ */
24
+ function serializePriceInfoType(obj) {
25
+ if (obj == null)
26
+ return null;
27
+ return {
28
+ isValid: obj.isValid,
29
+ differencePPM: obj.differencePPM == null ? null : obj.differencePPM.toString(10),
30
+ satsBaseFee: obj.satsBaseFee == null ? null : obj.satsBaseFee.toString(10),
31
+ feePPM: obj.feePPM == null ? null : obj.feePPM.toString(10),
32
+ realPriceUSatPerToken: obj.realPriceUSatPerToken == null ? null : obj.realPriceUSatPerToken.toString(10),
33
+ realPriceUsdPerBitcoin: obj.realPriceUsdPerBitcoin,
34
+ swapPriceUSatPerToken: obj.swapPriceUSatPerToken == null ? null : obj.swapPriceUSatPerToken.toString(10),
35
+ };
36
+ }
37
+ exports.serializePriceInfoType = serializePriceInfoType;
38
+ /**
39
+ * Deserializes PriceInfoType from storage
40
+ * @category Pricing and LPs
41
+ */
42
+ function deserializePriceInfoType(obj) {
43
+ if (obj == null)
44
+ return;
45
+ if (obj.isValid != null && obj.differencePPM != null && obj.satsBaseFee != null &&
46
+ obj.feePPM != null && obj.swapPriceUSatPerToken != null)
47
+ return {
48
+ isValid: obj.isValid,
49
+ differencePPM: (0, Utils_1.toBigInt)(obj.differencePPM),
50
+ satsBaseFee: (0, Utils_1.toBigInt)(obj.satsBaseFee),
51
+ feePPM: (0, Utils_1.toBigInt)(obj.feePPM),
52
+ realPriceUSatPerToken: (0, Utils_1.toBigInt)(obj.realPriceUSatPerToken),
53
+ realPriceUsdPerBitcoin: obj.realPriceUsdPerBitcoin,
54
+ swapPriceUSatPerToken: (0, Utils_1.toBigInt)(obj.swapPriceUSatPerToken),
55
+ };
56
+ }
57
+ exports.deserializePriceInfoType = deserializePriceInfoType;
@@ -0,0 +1,7 @@
1
+ import { ChainType } from "@atomiqlabs/base";
2
+ export type SwapExecutionAction<T extends ChainType> = {
3
+ name: "Payment" | "Commit" | "Claim";
4
+ description: string;
5
+ chain: "LIGHTNING" | "BITCOIN" | T["ChainId"];
6
+ txs: any[];
7
+ };
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,14 @@
1
+ import { ISwap } from "../swaps/ISwap";
2
+ import { ChainType } from "@atomiqlabs/base";
3
+ /**
4
+ * Proxy type that auto-injects signer into swap methods
5
+ * @category Swaps
6
+ */
7
+ export type SwapWithSigner<T extends ISwap> = {
8
+ [K in keyof T]: K extends "commit" ? (abortSignal?: AbortSignal, skipChecks?: boolean) => Promise<string> : K extends "refund" ? (abortSignal?: AbortSignal) => Promise<string> : K extends "claim" ? (abortSignal?: AbortSignal) => Promise<string> : K extends "commitAndClaim" ? (abortSignal?: AbortSignal, skipChecks?: boolean) => Promise<string> : T[K];
9
+ };
10
+ /**
11
+ * Wraps a swap with automatic signer injection for methods like commit, refund, and claim
12
+ * @category Swaps
13
+ */
14
+ export declare function wrapSwapWithSigner<C extends ChainType, T extends ISwap<C>>(swap: T, signer: C["Signer"]): SwapWithSigner<T>;
@@ -0,0 +1,40 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.wrapSwapWithSigner = void 0;
4
+ const IToBTCSwap_1 = require("../swaps/escrow_swaps/tobtc/IToBTCSwap");
5
+ const IFromBTCSelfInitSwap_1 = require("../swaps/escrow_swaps/frombtc/IFromBTCSelfInitSwap");
6
+ const FromBTCLNSwap_1 = require("../swaps/escrow_swaps/frombtc/ln/FromBTCLNSwap");
7
+ /**
8
+ * Wraps a swap with automatic signer injection for methods like commit, refund, and claim
9
+ * @category Swaps
10
+ */
11
+ function wrapSwapWithSigner(swap, signer) {
12
+ return new Proxy(swap, {
13
+ get: (target, prop, receiver) => {
14
+ // Override the "sayGoodbye" method
15
+ if (prop === "commit") {
16
+ if (swap instanceof IToBTCSwap_1.IToBTCSwap || swap instanceof IFromBTCSelfInitSwap_1.IFromBTCSelfInitSwap) {
17
+ return (abortSignal, skipChecks) => swap.commit(signer, abortSignal, skipChecks);
18
+ }
19
+ }
20
+ if (prop === "refund") {
21
+ if (swap instanceof IToBTCSwap_1.IToBTCSwap) {
22
+ return (abortSignal) => swap.refund(signer, abortSignal);
23
+ }
24
+ }
25
+ if (prop === "claim") {
26
+ if (swap instanceof IFromBTCSelfInitSwap_1.IFromBTCSelfInitSwap) {
27
+ return (abortSignal) => swap.claim(signer, abortSignal);
28
+ }
29
+ }
30
+ if (prop === "commitAndClaim") {
31
+ if (swap instanceof FromBTCLNSwap_1.FromBTCLNSwap) {
32
+ return (abortSignal, skipChecks) => swap.commitAndClaim(signer, abortSignal, skipChecks);
33
+ }
34
+ }
35
+ // Delegate other properties and methods to the original instance
36
+ return Reflect.get(target, prop, receiver);
37
+ }
38
+ });
39
+ }
40
+ exports.wrapSwapWithSigner = wrapSwapWithSigner;
@@ -0,0 +1,53 @@
1
+ /**
2
+ * Bitcoin token type (on-chain or lightning)
3
+ * @category Tokens
4
+ */
5
+ export type BtcToken<L = boolean> = {
6
+ chain: "BTC";
7
+ lightning: L;
8
+ ticker: "BTC";
9
+ decimals: 8;
10
+ name: L extends true ? "Bitcoin (lightning L2)" : "Bitcoin (on-chain L1)";
11
+ displayDecimals?: number;
12
+ };
13
+ /**
14
+ * Type guard for BtcToken
15
+ * @category Tokens
16
+ */
17
+ export declare function isBtcToken(obj: any): obj is BtcToken;
18
+ /**
19
+ * Predefined Bitcoin token constants
20
+ * @category Tokens
21
+ */
22
+ export declare const BitcoinTokens: {
23
+ BTC: BtcToken<false>;
24
+ BTCLN: BtcToken<true>;
25
+ };
26
+ /**
27
+ * Smart Chain token type
28
+ * @category Tokens
29
+ */
30
+ export type SCToken<ChainIdentifier extends string = string> = {
31
+ chain: "SC";
32
+ chainId: ChainIdentifier;
33
+ address: string;
34
+ ticker: string;
35
+ decimals: number;
36
+ displayDecimals?: number;
37
+ name: string;
38
+ };
39
+ /**
40
+ * Type guard for SCToken
41
+ * @category Tokens
42
+ */
43
+ export declare function isSCToken(obj: any): obj is SCToken;
44
+ /**
45
+ * Union type for all token types (BTC or smart chain)
46
+ * @category Tokens
47
+ */
48
+ export type Token<ChainIdentifier extends string = string> = BtcToken | SCToken<ChainIdentifier>;
49
+ /**
50
+ * Type guard for Token
51
+ * @category Tokens
52
+ */
53
+ export declare function isToken(obj: any): obj is Token;
@@ -0,0 +1,58 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isToken = exports.isSCToken = exports.BitcoinTokens = exports.isBtcToken = void 0;
4
+ /**
5
+ * Type guard for BtcToken
6
+ * @category Tokens
7
+ */
8
+ function isBtcToken(obj) {
9
+ return typeof (obj) === "object" &&
10
+ obj.chain === "BTC" &&
11
+ typeof (obj.lightning) === "boolean" &&
12
+ typeof (obj.ticker) === "string" &&
13
+ typeof (obj.decimals) === "number" &&
14
+ typeof (obj.name) === "string";
15
+ }
16
+ exports.isBtcToken = isBtcToken;
17
+ /**
18
+ * Predefined Bitcoin token constants
19
+ * @category Tokens
20
+ */
21
+ exports.BitcoinTokens = {
22
+ BTC: {
23
+ chain: "BTC",
24
+ lightning: false,
25
+ ticker: "BTC",
26
+ decimals: 8,
27
+ name: "Bitcoin (on-chain L1)"
28
+ },
29
+ BTCLN: {
30
+ chain: "BTC",
31
+ lightning: true,
32
+ ticker: "BTC",
33
+ decimals: 8,
34
+ name: "Bitcoin (lightning L2)"
35
+ }
36
+ };
37
+ /**
38
+ * Type guard for SCToken
39
+ * @category Tokens
40
+ */
41
+ function isSCToken(obj) {
42
+ return typeof (obj) === "object" &&
43
+ obj.chain === "SC" &&
44
+ typeof (obj.chainId) === "string" &&
45
+ typeof (obj.address) === "string" &&
46
+ typeof (obj.ticker) === "string" &&
47
+ typeof (obj.decimals) === "number" &&
48
+ typeof (obj.name) === "string";
49
+ }
50
+ exports.isSCToken = isSCToken;
51
+ /**
52
+ * Type guard for Token
53
+ * @category Tokens
54
+ */
55
+ function isToken(obj) {
56
+ return isBtcToken(obj) || isSCToken(obj);
57
+ }
58
+ exports.isToken = isToken;
@@ -0,0 +1,57 @@
1
+ import { ISwapPrice } from "../prices/abstract/ISwapPrice";
2
+ import { Token } from "./Token";
3
+ import { PriceInfoType } from "./PriceInfoType";
4
+ /**
5
+ * Represents a token amount along with its formatted values and USD valuation helpers
6
+ * @category Tokens
7
+ */
8
+ export type TokenAmount<ChainIdentifier extends string = string, T extends Token<ChainIdentifier> = Token<ChainIdentifier>> = {
9
+ /**
10
+ * Raw amount in base units represented as bigint
11
+ */
12
+ rawAmount: bigint;
13
+ /**
14
+ * Human readable amount with decimal places
15
+ */
16
+ amount: string;
17
+ /**
18
+ * Number representation of the decimal token amount (can lose precision!)
19
+ */
20
+ _amount: number;
21
+ /**
22
+ * Token associated with this amount
23
+ */
24
+ token: T;
25
+ /**
26
+ * Fetches the current USD value of the amount
27
+ *
28
+ * @param abortSignal
29
+ * @param preFetchedUsdPrice You can supply a pre-fetched usd price to the pricing function
30
+ * @returns A promise resolving to the current USD value of the token amount
31
+ */
32
+ currentUsdValue: (abortSignal?: AbortSignal, preFetchedUsdPrice?: number) => Promise<number>;
33
+ /**
34
+ * Gets USD value of the amount, if this amount was returned from a swap it uses the USD value
35
+ * when the swap was created, otherwise fetches the usd value on-demand
36
+ *
37
+ * @param abortSignal
38
+ * @param preFetchedUsdPrice You can supply a pre-fetched usd price to the pricing function
39
+ * @returns A promise resolving to the current USD value of the token amount
40
+ */
41
+ usdValue: (abortSignal?: AbortSignal, preFetchedUsdPrice?: number) => Promise<number>;
42
+ /**
43
+ * USD value of the amount when swap was created - only present for token amounts obtained
44
+ * from swaps, left for convenience only, use usdValue() instead, which automatically
45
+ * recognizes which pricing to use (either past value if available or fetches it on-demand)
46
+ */
47
+ pastUsdValue?: number;
48
+ /**
49
+ * Returns the string representation of the amount along with the token ticker in format: {amount} {ticker}
50
+ */
51
+ toString: () => string;
52
+ };
53
+ /**
54
+ * Factory function to create a TokenAmount
55
+ * @category Tokens
56
+ */
57
+ export declare function toTokenAmount<ChainIdentifier extends string = string, T extends Token<ChainIdentifier> = Token<ChainIdentifier>>(amount: bigint, token: T, prices: ISwapPrice, pricingInfo?: PriceInfoType): TokenAmount<ChainIdentifier, T>;
@@ -0,0 +1,47 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.toTokenAmount = void 0;
4
+ const Utils_1 = require("../utils/Utils");
5
+ /**
6
+ * Factory function to create a TokenAmount
7
+ * @category Tokens
8
+ */
9
+ function toTokenAmount(amount, token, prices, pricingInfo) {
10
+ if (amount == null)
11
+ return null; //Shouldn't happen
12
+ const amountStr = (0, Utils_1.toDecimal)(amount, token.decimals, undefined, token.displayDecimals);
13
+ const _amount = parseFloat(amountStr);
14
+ let usdValue = undefined;
15
+ if (pricingInfo != null) {
16
+ if (token.chain === "BTC" && token.ticker === "BTC") {
17
+ if (pricingInfo.realPriceUsdPerBitcoin != null) {
18
+ usdValue = Number(amount) * pricingInfo.realPriceUsdPerBitcoin;
19
+ }
20
+ }
21
+ else {
22
+ if (pricingInfo.realPriceUsdPerBitcoin != null && pricingInfo.realPriceUSatPerToken != null) {
23
+ usdValue = _amount
24
+ * pricingInfo.realPriceUsdPerBitcoin
25
+ * Number(pricingInfo.realPriceUSatPerToken)
26
+ / 1000000;
27
+ }
28
+ }
29
+ }
30
+ const currentUsdValue = (abortSignal, preFetchedUsdPrice) => prices.getUsdValue(amount, token, abortSignal, preFetchedUsdPrice);
31
+ return {
32
+ rawAmount: amount,
33
+ amount: amountStr,
34
+ _amount,
35
+ token,
36
+ currentUsdValue,
37
+ pastUsdValue: usdValue,
38
+ usdValue: async (abortSignal, preFetchedUsdPrice) => {
39
+ if (usdValue == null) {
40
+ usdValue = await currentUsdValue(abortSignal, preFetchedUsdPrice);
41
+ }
42
+ return usdValue;
43
+ },
44
+ toString: () => amountStr + " " + token.ticker
45
+ };
46
+ }
47
+ exports.toTokenAmount = toTokenAmount;
@@ -0,0 +1,49 @@
1
+ import { PercentagePPM } from "./PercentagePPM";
2
+ import { TokenAmount } from "../TokenAmount";
3
+ import { Token } from "../Token";
4
+ /**
5
+ * Represents a fee in both source and destination tokens, as well as providing USD valuation helpers and
6
+ * fee composition
7
+ * @category Pricing and LPs
8
+ */
9
+ export type Fee<ChainIdentifier extends string = string, TSrc extends Token<ChainIdentifier> = Token<ChainIdentifier>, TDst extends Token<ChainIdentifier> = Token<ChainIdentifier>> = {
10
+ /**
11
+ * Fee value equivalent in source token
12
+ */
13
+ amountInSrcToken: TokenAmount<ChainIdentifier, TSrc>;
14
+ /**
15
+ * Fee value equivalent in destination token
16
+ */
17
+ amountInDstToken: TokenAmount<ChainIdentifier, TDst>;
18
+ /**
19
+ * Fetches the current USD value of the fee
20
+ *
21
+ * @param abortSignal
22
+ * @param preFetchedUsdPrice You can supply a pre-fetched usd price to the pricing function
23
+ * @returns A promise resolving to the current USD value of the token amount
24
+ */
25
+ currentUsdValue: (abortSignal?: AbortSignal, preFetchedUsdPrice?: number) => Promise<number>;
26
+ /**
27
+ * Gets USD value of the fee, if the USD value when the swap was created is known (newer swaps) it returns this value,
28
+ * otherwise fetches the usd value on-demand
29
+ *
30
+ * @param abortSignal
31
+ * @param preFetchedUsdPrice You can supply a pre-fetched usd price to the pricing function
32
+ * @returns A promise resolving to the current USD value of the fee
33
+ */
34
+ usdValue: (abortSignal?: AbortSignal, preFetchedUsdPrice?: number) => Promise<number>;
35
+ /**
36
+ * USD value of the fee when swap was created - only present for newer swaps where the USD value at create
37
+ * time is known. Left for convenience only, use usdValue() instead, which automatically
38
+ * recognizes which pricing to use (either past value if available or fetches it on-demand)
39
+ */
40
+ pastUsdValue?: number;
41
+ /**
42
+ * Returns the composition of the fee (base fee + percentage fee) if known, the total fee is calculated as:
43
+ * base_fee + amount * percentage_fee
44
+ */
45
+ composition?: {
46
+ base: TokenAmount<ChainIdentifier>;
47
+ percentage: PercentagePPM;
48
+ };
49
+ };
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,10 @@
1
+ import { FeeType } from "../../enums/FeeType";
2
+ import { Fee } from "./Fee";
3
+ /**
4
+ * Breakdown of fees by type (swap fee vs network fee)
5
+ * @category Pricing and LPs
6
+ */
7
+ export type FeeBreakdown<ChainIdentifier extends string = string> = {
8
+ type: FeeType;
9
+ fee: Fee<ChainIdentifier>;
10
+ }[];
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Parts-per-million fee representation with conversion helpers
3
+ * @category Pricing and LPs
4
+ */
5
+ export type PercentagePPM = {
6
+ ppm: bigint;
7
+ decimal: number;
8
+ percentage: number;
9
+ toString: (decimal?: number) => string;
10
+ };
11
+ /**
12
+ * Converts parts-per-million to percentage representation
13
+ * @category Pricing and LPs
14
+ */
15
+ export declare function ppmToPercentage(ppm: bigint): PercentagePPM;
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ppmToPercentage = void 0;
4
+ /**
5
+ * Converts parts-per-million to percentage representation
6
+ * @category Pricing and LPs
7
+ */
8
+ function ppmToPercentage(ppm) {
9
+ const percentage = Number(ppm) / 10000;
10
+ return {
11
+ ppm,
12
+ decimal: Number(ppm) / 1000000,
13
+ percentage: percentage,
14
+ toString: (decimals) => (decimals != null ? percentage.toFixed(decimals) : percentage) + "%"
15
+ };
16
+ }
17
+ exports.ppmToPercentage = ppmToPercentage;