@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,311 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MempoolApi = void 0;
4
+ const buffer_1 = require("buffer");
5
+ const Utils_1 = require("../../utils/Utils");
6
+ const RequestError_1 = require("../../errors/RequestError");
7
+ const HttpUtils_1 = require("../../http/HttpUtils");
8
+ const RetryUtils_1 = require("../../utils/RetryUtils");
9
+ /**
10
+ * Mempool.space REST API client for Bitcoin blockchain data
11
+ * @category Bitcoin
12
+ */
13
+ class MempoolApi {
14
+ /**
15
+ * Returns api url that should be operational
16
+ *
17
+ * @private
18
+ */
19
+ getOperationalApi() {
20
+ return this.backends.find(e => e.operational === true);
21
+ }
22
+ /**
23
+ * Returns api urls that are maybe operational, in case none is considered operational returns all of the price
24
+ * apis such that they can be tested again whether they are operational
25
+ *
26
+ * @private
27
+ */
28
+ getMaybeOperationalApis() {
29
+ let operational = this.backends.filter(e => e.operational === true || e.operational === null);
30
+ if (operational.length === 0) {
31
+ this.backends.forEach(e => e.operational = null);
32
+ operational = this.backends;
33
+ }
34
+ return operational;
35
+ }
36
+ /**
37
+ * Sends a GET or POST request to the mempool api, handling the non-200 responses as errors & throwing
38
+ *
39
+ * @param url
40
+ * @param path
41
+ * @param responseType
42
+ * @param type
43
+ * @param body
44
+ */
45
+ async _request(url, path, responseType, type = "GET", body) {
46
+ const response = await (0, HttpUtils_1.fetchWithTimeout)(url + path, {
47
+ method: type,
48
+ timeout: this.timeout,
49
+ body: typeof (body) === "string" ? body : JSON.stringify(body)
50
+ });
51
+ if (response.status !== 200) {
52
+ let resp;
53
+ try {
54
+ resp = await response.text();
55
+ }
56
+ catch (e) {
57
+ throw new RequestError_1.RequestError(response.statusText, response.status);
58
+ }
59
+ throw RequestError_1.RequestError.parse(resp, response.status);
60
+ }
61
+ if (responseType === "str")
62
+ return await response.text();
63
+ return await response.json();
64
+ }
65
+ /**
66
+ * Sends request in parallel to multiple maybe operational api urls
67
+ *
68
+ * @param path
69
+ * @param responseType
70
+ * @param type
71
+ * @param body
72
+ * @private
73
+ */
74
+ async requestFromMaybeOperationalUrls(path, responseType, type = "GET", body) {
75
+ try {
76
+ return await (0, Utils_1.promiseAny)(this.getMaybeOperationalApis().map(obj => (async () => {
77
+ try {
78
+ const result = await this._request(obj.url, path, responseType, type, body);
79
+ obj.operational = true;
80
+ return result;
81
+ }
82
+ catch (e) {
83
+ //Only mark as non operational on 5xx server errors!
84
+ if (e instanceof RequestError_1.RequestError && Math.floor(e.httpCode / 100) !== 5) {
85
+ obj.operational = true;
86
+ throw e;
87
+ }
88
+ else {
89
+ obj.operational = false;
90
+ throw e;
91
+ }
92
+ }
93
+ })()));
94
+ }
95
+ catch (_e) {
96
+ const e = _e;
97
+ throw e.find(err => err instanceof RequestError_1.RequestError && Math.floor(err.httpCode / 100) !== 5) || e[0];
98
+ }
99
+ }
100
+ /**
101
+ * Sends a request to mempool API, first tries to use the operational API (if any) and if that fails it falls back
102
+ * to using maybe operational price APIs
103
+ *
104
+ * @param path
105
+ * @param responseType
106
+ * @param type
107
+ * @param body
108
+ * @private
109
+ */
110
+ async request(path, responseType, type = "GET", body) {
111
+ return (0, RetryUtils_1.tryWithRetries)(() => {
112
+ const operationalPriceApi = this.getOperationalApi();
113
+ if (operationalPriceApi != null) {
114
+ return this._request(operationalPriceApi.url, path, responseType, type, body).catch(err => {
115
+ //Only retry on 5xx server errors!
116
+ if (err instanceof RequestError_1.RequestError && Math.floor(err.httpCode / 100) !== 5)
117
+ throw err;
118
+ operationalPriceApi.operational = false;
119
+ return this.requestFromMaybeOperationalUrls(path, responseType, type, body);
120
+ });
121
+ }
122
+ return this.requestFromMaybeOperationalUrls(path, responseType, type, body);
123
+ }, undefined, (err) => err instanceof RequestError_1.RequestError && Math.floor(err.httpCode / 100) !== 5);
124
+ }
125
+ constructor(url, timeout) {
126
+ url = url ?? "https://mempool.space/testnet/api/";
127
+ if (Array.isArray(url)) {
128
+ this.backends = url.map(val => {
129
+ return { url: val, operational: null };
130
+ });
131
+ }
132
+ else {
133
+ this.backends = [
134
+ { url: url, operational: null }
135
+ ];
136
+ }
137
+ this.timeout = timeout ?? 15 * 1000;
138
+ }
139
+ /**
140
+ * Returns information about a specific lightning network node as identified by the public key (in hex encoding)
141
+ *
142
+ * @param pubkey
143
+ */
144
+ getLNNodeInfo(pubkey) {
145
+ //500, 200
146
+ return this.request("v1/lightning/nodes/" + pubkey, "obj").catch((e) => {
147
+ if (e.message === "This node does not exist, or our node is not seeing it yet")
148
+ return null;
149
+ throw e;
150
+ });
151
+ }
152
+ /**
153
+ * Returns on-chain transaction as identified by its txId
154
+ *
155
+ * @param txId
156
+ */
157
+ getTransaction(txId) {
158
+ //404 ("Transaction not found"), 200
159
+ return this.request("tx/" + txId, "obj").catch((e) => {
160
+ if (e.message === "Transaction not found")
161
+ return null;
162
+ throw e;
163
+ });
164
+ }
165
+ /**
166
+ * Returns raw binary encoded bitcoin transaction, also strips the witness data from the transaction
167
+ *
168
+ * @param txId
169
+ */
170
+ async getRawTransaction(txId) {
171
+ //404 ("Transaction not found"), 200
172
+ const rawTransaction = await this.request("tx/" + txId + "/hex", "str").catch((e) => {
173
+ if (e.message === "Transaction not found")
174
+ return null;
175
+ throw e;
176
+ });
177
+ return rawTransaction == null ? null : buffer_1.Buffer.from(rawTransaction, "hex");
178
+ }
179
+ /**
180
+ * Returns confirmed & unconfirmed balance of the specific bitcoin address
181
+ *
182
+ * @param address
183
+ */
184
+ async getAddressBalances(address) {
185
+ //400 ("Invalid Bitcoin address"), 200
186
+ const jsonBody = await this.request("address/" + address, "obj");
187
+ const confirmedInput = BigInt(jsonBody.chain_stats.funded_txo_sum);
188
+ const confirmedOutput = BigInt(jsonBody.chain_stats.spent_txo_sum);
189
+ const unconfirmedInput = BigInt(jsonBody.mempool_stats.funded_txo_sum);
190
+ const unconfirmedOutput = BigInt(jsonBody.mempool_stats.spent_txo_sum);
191
+ return {
192
+ confirmedBalance: confirmedInput - confirmedOutput,
193
+ unconfirmedBalance: unconfirmedInput - unconfirmedOutput
194
+ };
195
+ }
196
+ /**
197
+ * Returns CPFP (children pays for parent) data for a given transaction
198
+ *
199
+ * @param txId
200
+ */
201
+ getCPFPData(txId) {
202
+ //200
203
+ return this.request("v1/cpfp/" + txId, "obj");
204
+ }
205
+ /**
206
+ * Returns UTXOs (unspent transaction outputs) for a given address
207
+ *
208
+ * @param address
209
+ */
210
+ async getAddressUTXOs(address) {
211
+ //400 ("Invalid Bitcoin address"), 200
212
+ let jsonBody = await this.request("address/" + address + "/utxo", "obj");
213
+ jsonBody.forEach(e => e.value = BigInt(e.value));
214
+ return jsonBody;
215
+ }
216
+ /**
217
+ * Returns current on-chain bitcoin fees
218
+ */
219
+ getFees() {
220
+ //200
221
+ return this.request("v1/fees/recommended", "obj");
222
+ }
223
+ /**
224
+ * Returns all transactions for a given address
225
+ *
226
+ * @param address
227
+ */
228
+ getAddressTransactions(address) {
229
+ //400 ("Invalid Bitcoin address"), 200
230
+ return this.request("address/" + address + "/txs", "obj");
231
+ }
232
+ /**
233
+ * Returns expected pending (mempool) blocks
234
+ */
235
+ getPendingBlocks() {
236
+ //200
237
+ return this.request("v1/fees/mempool-blocks", "obj");
238
+ }
239
+ /**
240
+ * Returns the blockheight of the current bitcoin blockchain's tip
241
+ */
242
+ async getTipBlockHeight() {
243
+ //200
244
+ const response = await this.request("blocks/tip/height", "str");
245
+ return parseInt(response);
246
+ }
247
+ /**
248
+ * Returns the bitcoin blockheader as identified by its blockhash
249
+ *
250
+ * @param blockhash
251
+ */
252
+ getBlockHeader(blockhash) {
253
+ //404 ("Block not found"), 200
254
+ return this.request("block/" + blockhash, "obj");
255
+ }
256
+ /**
257
+ * Returns the block status
258
+ *
259
+ * @param blockhash
260
+ */
261
+ getBlockStatus(blockhash) {
262
+ //200
263
+ return this.request("block/" + blockhash + "/status", "obj");
264
+ }
265
+ /**
266
+ * Returns the transaction's proof (merkle proof)
267
+ *
268
+ * @param txId
269
+ */
270
+ getTransactionProof(txId) {
271
+ //404 ("Transaction not found or is unconfirmed"), 200
272
+ return this.request("tx/" + txId + "/merkle-proof", "obj");
273
+ }
274
+ /**
275
+ * Returns the transaction's proof (merkle proof)
276
+ *
277
+ * @param txId
278
+ */
279
+ getOutspends(txId) {
280
+ //404 ("Transaction not found"), 200
281
+ return this.request("tx/" + txId + "/outspends", "obj");
282
+ }
283
+ /**
284
+ * Returns blockhash of a block at a specific blockheight
285
+ *
286
+ * @param height
287
+ */
288
+ getBlockHash(height) {
289
+ //404 ("Block not found"), 200
290
+ return this.request("block-height/" + height, "str");
291
+ }
292
+ /**
293
+ * Returns past 15 blockheaders before (and including) the specified height
294
+ *
295
+ * @param endHeight
296
+ */
297
+ getPast15BlockHeaders(endHeight) {
298
+ //200
299
+ return this.request("v1/blocks/" + endHeight, "obj");
300
+ }
301
+ /**
302
+ * Sends raw hex encoded bitcoin transaction
303
+ *
304
+ * @param transactionHex
305
+ */
306
+ sendTransaction(transactionHex) {
307
+ //400??, 200
308
+ return this.request("tx", "str", "POST", transactionHex);
309
+ }
310
+ }
311
+ exports.MempoolApi = MempoolApi;
@@ -0,0 +1,44 @@
1
+ /// <reference types="node" />
2
+ /// <reference types="node" />
3
+ import { BtcBlock } from "@atomiqlabs/base";
4
+ import { Buffer } from "buffer";
5
+ export type MempoolBitcoinBlockType = {
6
+ id: string;
7
+ height: number;
8
+ version: number;
9
+ timestamp: number;
10
+ tx_count: number;
11
+ size: number;
12
+ weight: number;
13
+ merkle_root: string;
14
+ previousblockhash: string;
15
+ mediantime: number;
16
+ nonce: number;
17
+ bits: number;
18
+ difficulty: number;
19
+ };
20
+ export declare class MempoolBitcoinBlock implements BtcBlock {
21
+ id: string;
22
+ height: number;
23
+ version: number;
24
+ timestamp: number;
25
+ tx_count: number;
26
+ size: number;
27
+ weight: number;
28
+ merkle_root: string;
29
+ previousblockhash: string;
30
+ mediantime: number;
31
+ nonce: number;
32
+ bits: number;
33
+ difficulty: number;
34
+ constructor(obj: MempoolBitcoinBlockType);
35
+ getHeight(): number;
36
+ getHash(): string;
37
+ getMerkleRoot(): string;
38
+ getNbits(): number;
39
+ getNonce(): number;
40
+ getPrevBlockhash(): string;
41
+ getTimestamp(): number;
42
+ getVersion(): number;
43
+ getChainWork(): Buffer;
44
+ }
@@ -0,0 +1,48 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MempoolBitcoinBlock = void 0;
4
+ class MempoolBitcoinBlock {
5
+ constructor(obj) {
6
+ this.id = obj.id;
7
+ this.height = obj.height;
8
+ this.version = obj.version;
9
+ this.timestamp = obj.timestamp;
10
+ this.tx_count = obj.tx_count;
11
+ this.size = obj.size;
12
+ this.weight = obj.weight;
13
+ this.merkle_root = obj.merkle_root;
14
+ this.previousblockhash = obj.previousblockhash;
15
+ this.mediantime = obj.mediantime;
16
+ this.nonce = obj.nonce;
17
+ this.bits = obj.bits;
18
+ this.difficulty = obj.difficulty;
19
+ }
20
+ getHeight() {
21
+ return this.height;
22
+ }
23
+ getHash() {
24
+ return this.id;
25
+ }
26
+ getMerkleRoot() {
27
+ return this.merkle_root;
28
+ }
29
+ getNbits() {
30
+ return this.bits;
31
+ }
32
+ getNonce() {
33
+ return this.nonce;
34
+ }
35
+ getPrevBlockhash() {
36
+ return this.previousblockhash;
37
+ }
38
+ getTimestamp() {
39
+ return this.timestamp;
40
+ }
41
+ getVersion() {
42
+ return this.version;
43
+ }
44
+ getChainWork() {
45
+ throw new Error("Unsupported");
46
+ }
47
+ }
48
+ exports.MempoolBitcoinBlock = MempoolBitcoinBlock;
@@ -0,0 +1,119 @@
1
+ /// <reference types="node" />
2
+ /// <reference types="node" />
3
+ import { BtcBlockWithTxs, BtcSyncInfo, BtcTx } from "@atomiqlabs/base";
4
+ import { MempoolBitcoinBlock } from "./MempoolBitcoinBlock";
5
+ import { MempoolApi } from "./MempoolApi";
6
+ import { Buffer } from "buffer";
7
+ import { BitcoinRpcWithAddressIndex, BtcTxWithBlockheight } from "../BitcoinRpcWithAddressIndex";
8
+ import { LightningNetworkApi, LNNodeLiquidity } from "../LightningNetworkApi";
9
+ /**
10
+ * Bitcoin RPC implementation via Mempool.space API
11
+ * @category Bitcoin
12
+ */
13
+ export declare class MempoolBitcoinRpc implements BitcoinRpcWithAddressIndex<MempoolBitcoinBlock>, LightningNetworkApi {
14
+ api: MempoolApi;
15
+ constructor(urlOrMempoolApi: MempoolApi | string | string[]);
16
+ /**
17
+ * Returns a txo hash for a specific transaction vout
18
+ *
19
+ * @param vout
20
+ * @private
21
+ */
22
+ private static getTxoHash;
23
+ /**
24
+ * Returns delay in milliseconds till an unconfirmed transaction is expected to confirm, returns -1
25
+ * if the transaction won't confirm any time soon
26
+ *
27
+ * @param feeRate
28
+ * @private
29
+ */
30
+ private getTimeTillConfirmation;
31
+ /**
32
+ * Returns an estimate after which time the tx will confirm with the required amount of confirmations,
33
+ * confirmationDelay of -1 means the transaction won't confirm in the near future
34
+ *
35
+ * @param tx
36
+ * @param requiredConfirmations
37
+ * @private
38
+ *
39
+ * @returns estimated confirmation delay, -1 if the transaction won't confirm in the near future, null if the
40
+ * transaction was replaced or was confirmed in the meantime
41
+ */
42
+ getConfirmationDelay(tx: {
43
+ txid: string;
44
+ confirmations?: number;
45
+ }, requiredConfirmations: number): Promise<number | null>;
46
+ /**
47
+ * Converts mempool API's transaction to BtcTx object while fetching the raw tx separately
48
+ * @param tx Transaction to convert
49
+ * @private
50
+ */
51
+ private toBtcTx;
52
+ /**
53
+ * Converts mempool API's transaction to BtcTx object, doesn't populate raw and hex fields
54
+ * @param tx Transaction to convert
55
+ * @private
56
+ */
57
+ private toBtcTxWithoutRawData;
58
+ getTipHeight(): Promise<number>;
59
+ getBlockHeader(blockhash: string): Promise<MempoolBitcoinBlock>;
60
+ getMerkleProof(txId: string, blockhash: string): Promise<{
61
+ reversedTxId: Buffer;
62
+ pos: number;
63
+ merkle: Buffer[];
64
+ blockheight: number;
65
+ }>;
66
+ getTransaction(txId: string): Promise<BtcTxWithBlockheight | null>;
67
+ isInMainChain(blockhash: string): Promise<boolean>;
68
+ getBlockhash(height: number): Promise<string>;
69
+ getBlockWithTransactions(blockhash: string): Promise<BtcBlockWithTxs>;
70
+ getSyncInfo(): Promise<BtcSyncInfo>;
71
+ getPast15Blocks(height: number): Promise<MempoolBitcoinBlock[]>;
72
+ checkAddressTxos(address: string, txoHash: Buffer): Promise<{
73
+ tx: Omit<BtcTxWithBlockheight, "hex" | "raw">;
74
+ vout: number;
75
+ } | null>;
76
+ /**
77
+ * Waits till the address receives a transaction containing a specific txoHash
78
+ *
79
+ * @param address
80
+ * @param txoHash
81
+ * @param requiredConfirmations
82
+ * @param stateUpdateCbk
83
+ * @param abortSignal
84
+ * @param intervalSeconds
85
+ */
86
+ waitForAddressTxo(address: string, txoHash: Buffer, requiredConfirmations: number, stateUpdateCbk: (btcTx?: Omit<BtcTxWithBlockheight, "hex" | "raw">, vout?: number, txEtaMS?: number) => void, abortSignal?: AbortSignal, intervalSeconds?: number): Promise<{
87
+ tx: Omit<BtcTxWithBlockheight, "hex" | "raw">;
88
+ vout: number;
89
+ }>;
90
+ waitForTransaction(txId: string, requiredConfirmations: number, stateUpdateCbk: (btcTx?: BtcTxWithBlockheight, txEtaMS?: number) => void, abortSignal?: AbortSignal, intervalSeconds?: number): Promise<BtcTxWithBlockheight>;
91
+ getLNNodeLiquidity(pubkey: string): Promise<LNNodeLiquidity | null>;
92
+ sendRawTransaction(rawTx: string): Promise<string>;
93
+ sendRawPackage(rawTx: string[]): Promise<string[]>;
94
+ isSpent(utxo: string, confirmed?: boolean): Promise<boolean>;
95
+ parseTransaction(rawTx: string): Promise<BtcTx>;
96
+ getEffectiveFeeRate(btcTx: BtcTx): Promise<{
97
+ vsize: number;
98
+ fee: number;
99
+ feeRate: number;
100
+ }>;
101
+ getFeeRate(): Promise<number>;
102
+ getAddressBalances(address: string): Promise<{
103
+ confirmedBalance: bigint;
104
+ unconfirmedBalance: bigint;
105
+ }>;
106
+ getAddressUTXOs(address: string): Promise<{
107
+ txid: string;
108
+ vout: number;
109
+ confirmed: boolean;
110
+ block_height: number;
111
+ block_hash: string;
112
+ block_time: number;
113
+ value: bigint;
114
+ }[]>;
115
+ getCPFPData(txId: string): Promise<{
116
+ effectiveFeePerVsize: number;
117
+ adjustedVsize: number;
118
+ }>;
119
+ }