@atomiqlabs/sdk 8.1.8 → 8.3.5

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 (261) hide show
  1. package/dist/bitcoin/coinselect2/utils.d.ts +6 -0
  2. package/dist/bitcoin/wallet/BitcoinWallet.d.ts +41 -5
  3. package/dist/bitcoin/wallet/BitcoinWallet.js +36 -1
  4. package/dist/bitcoin/wallet/IBitcoinWallet.d.ts +52 -2
  5. package/dist/bitcoin/wallet/IBitcoinWallet.js +2 -1
  6. package/dist/bitcoin/wallet/SingleAddressBitcoinWallet.d.ts +42 -7
  7. package/dist/bitcoin/wallet/SingleAddressBitcoinWallet.js +36 -1
  8. package/dist/enums/FeeType.d.ts +8 -1
  9. package/dist/enums/FeeType.js +8 -1
  10. package/dist/enums/SwapAmountType.d.ts +7 -0
  11. package/dist/enums/SwapAmountType.js +7 -0
  12. package/dist/enums/SwapDirection.d.ts +7 -0
  13. package/dist/enums/SwapDirection.js +7 -0
  14. package/dist/enums/SwapType.d.ts +62 -1
  15. package/dist/enums/SwapType.js +62 -1
  16. package/dist/errors/IntermediaryError.d.ts +4 -0
  17. package/dist/errors/IntermediaryError.js +1 -0
  18. package/dist/errors/RequestError.d.ts +15 -1
  19. package/dist/errors/RequestError.js +8 -0
  20. package/dist/errors/UserError.d.ts +1 -0
  21. package/dist/errors/UserError.js +1 -0
  22. package/dist/index.d.ts +5 -5
  23. package/dist/index.js +7 -6
  24. package/dist/intermediaries/Intermediary.d.ts +61 -14
  25. package/dist/intermediaries/Intermediary.js +38 -11
  26. package/dist/intermediaries/IntermediaryDiscovery.d.ts +62 -29
  27. package/dist/intermediaries/IntermediaryDiscovery.js +39 -24
  28. package/dist/prices/RedundantSwapPrice.d.ts +26 -5
  29. package/dist/prices/RedundantSwapPrice.js +22 -2
  30. package/dist/prices/SingleSwapPrice.d.ts +10 -7
  31. package/dist/prices/SingleSwapPrice.js +11 -8
  32. package/dist/prices/SwapPriceWithChain.d.ts +56 -19
  33. package/dist/prices/SwapPriceWithChain.js +62 -25
  34. package/dist/prices/abstract/IPriceProvider.d.ts +4 -4
  35. package/dist/prices/abstract/IPriceProvider.js +1 -1
  36. package/dist/prices/abstract/ISwapPrice.d.ts +95 -46
  37. package/dist/prices/abstract/ISwapPrice.js +104 -56
  38. package/dist/prices/providers/BinancePriceProvider.d.ts +8 -1
  39. package/dist/prices/providers/BinancePriceProvider.js +8 -1
  40. package/dist/prices/providers/CoinGeckoPriceProvider.d.ts +7 -1
  41. package/dist/prices/providers/CoinGeckoPriceProvider.js +7 -1
  42. package/dist/prices/providers/CoinPaprikaPriceProvider.d.ts +7 -1
  43. package/dist/prices/providers/CoinPaprikaPriceProvider.js +7 -1
  44. package/dist/prices/providers/CustomPriceProvider.d.ts +12 -1
  45. package/dist/prices/providers/CustomPriceProvider.js +12 -1
  46. package/dist/prices/providers/KrakenPriceProvider.d.ts +10 -1
  47. package/dist/prices/providers/KrakenPriceProvider.js +10 -1
  48. package/dist/prices/providers/OKXPriceProvider.d.ts +7 -1
  49. package/dist/prices/providers/OKXPriceProvider.js +7 -1
  50. package/dist/prices/providers/abstract/ExchangePriceProvider.d.ts +3 -0
  51. package/dist/prices/providers/abstract/ExchangePriceProvider.js +3 -0
  52. package/dist/storage/IUnifiedStorage.d.ts +19 -7
  53. package/dist/storage/UnifiedSwapStorage.d.ts +33 -3
  54. package/dist/storage/UnifiedSwapStorage.js +29 -1
  55. package/dist/storage-browser/IndexedDBUnifiedStorage.d.ts +31 -7
  56. package/dist/storage-browser/IndexedDBUnifiedStorage.js +29 -6
  57. package/dist/storage-browser/LocalStorageManager.d.ts +25 -1
  58. package/dist/storage-browser/LocalStorageManager.js +25 -1
  59. package/dist/swapper/Swapper.d.ts +380 -226
  60. package/dist/swapper/Swapper.js +383 -349
  61. package/dist/swapper/SwapperFactory.d.ts +66 -18
  62. package/dist/swapper/SwapperFactory.js +24 -3
  63. package/dist/swapper/SwapperUtils.d.ts +75 -28
  64. package/dist/swapper/SwapperUtils.js +107 -60
  65. package/dist/swapper/SwapperWithChain.d.ts +286 -91
  66. package/dist/swapper/SwapperWithChain.js +218 -64
  67. package/dist/swapper/SwapperWithSigner.d.ts +229 -80
  68. package/dist/swapper/SwapperWithSigner.js +190 -44
  69. package/dist/swaps/IAddressSwap.d.ts +12 -3
  70. package/dist/swaps/IAddressSwap.js +3 -2
  71. package/dist/swaps/IBTCWalletSwap.d.ts +26 -8
  72. package/dist/swaps/IBTCWalletSwap.js +3 -2
  73. package/dist/swaps/IClaimableSwap.d.ts +38 -6
  74. package/dist/swaps/IClaimableSwap.js +3 -2
  75. package/dist/swaps/IClaimableSwapWrapper.d.ts +11 -1
  76. package/dist/swaps/IRefundableSwap.d.ts +31 -5
  77. package/dist/swaps/IRefundableSwap.js +3 -2
  78. package/dist/swaps/ISwap.d.ts +162 -24
  79. package/dist/swaps/ISwap.js +92 -35
  80. package/dist/swaps/ISwapWithGasDrop.d.ts +8 -2
  81. package/dist/swaps/ISwapWithGasDrop.js +2 -1
  82. package/dist/swaps/ISwapWrapper.d.ts +161 -52
  83. package/dist/swaps/ISwapWrapper.js +131 -73
  84. package/dist/swaps/escrow_swaps/IEscrowSelfInitSwap.d.ts +51 -6
  85. package/dist/swaps/escrow_swaps/IEscrowSelfInitSwap.js +22 -12
  86. package/dist/swaps/escrow_swaps/IEscrowSwap.d.ts +65 -12
  87. package/dist/swaps/escrow_swaps/IEscrowSwap.js +38 -19
  88. package/dist/swaps/escrow_swaps/IEscrowSwapWrapper.d.ts +39 -9
  89. package/dist/swaps/escrow_swaps/IEscrowSwapWrapper.js +30 -21
  90. package/dist/swaps/escrow_swaps/frombtc/IFromBTCLNWrapper.d.ts +31 -15
  91. package/dist/swaps/escrow_swaps/frombtc/IFromBTCLNWrapper.js +33 -18
  92. package/dist/swaps/escrow_swaps/frombtc/IFromBTCSelfInitSwap.d.ts +97 -28
  93. package/dist/swaps/escrow_swaps/frombtc/IFromBTCSelfInitSwap.js +91 -27
  94. package/dist/swaps/escrow_swaps/frombtc/IFromBTCWrapper.d.ts +22 -9
  95. package/dist/swaps/escrow_swaps/frombtc/IFromBTCWrapper.js +24 -11
  96. package/dist/swaps/escrow_swaps/frombtc/ln/FromBTCLNSwap.d.ts +278 -60
  97. package/dist/swaps/escrow_swaps/frombtc/ln/FromBTCLNSwap.js +519 -241
  98. package/dist/swaps/escrow_swaps/frombtc/ln/FromBTCLNWrapper.d.ts +77 -26
  99. package/dist/swaps/escrow_swaps/frombtc/ln/FromBTCLNWrapper.js +132 -50
  100. package/dist/swaps/escrow_swaps/frombtc/ln_auto/FromBTCLNAutoSwap.d.ts +313 -52
  101. package/dist/swaps/escrow_swaps/frombtc/ln_auto/FromBTCLNAutoSwap.js +544 -194
  102. package/dist/swaps/escrow_swaps/frombtc/ln_auto/FromBTCLNAutoWrapper.d.ts +87 -26
  103. package/dist/swaps/escrow_swaps/frombtc/ln_auto/FromBTCLNAutoWrapper.js +147 -58
  104. package/dist/swaps/escrow_swaps/frombtc/onchain/FromBTCSwap.d.ts +222 -55
  105. package/dist/swaps/escrow_swaps/frombtc/onchain/FromBTCSwap.js +462 -244
  106. package/dist/swaps/escrow_swaps/frombtc/onchain/FromBTCWrapper.d.ts +77 -23
  107. package/dist/swaps/escrow_swaps/frombtc/onchain/FromBTCWrapper.js +116 -46
  108. package/dist/swaps/escrow_swaps/tobtc/IToBTCSwap.d.ts +195 -58
  109. package/dist/swaps/escrow_swaps/tobtc/IToBTCSwap.js +324 -191
  110. package/dist/swaps/escrow_swaps/tobtc/IToBTCWrapper.d.ts +30 -5
  111. package/dist/swaps/escrow_swaps/tobtc/IToBTCWrapper.js +44 -19
  112. package/dist/swaps/escrow_swaps/tobtc/ln/ToBTCLNSwap.d.ts +61 -20
  113. package/dist/swaps/escrow_swaps/tobtc/ln/ToBTCLNSwap.js +75 -32
  114. package/dist/swaps/escrow_swaps/tobtc/ln/ToBTCLNWrapper.d.ts +76 -50
  115. package/dist/swaps/escrow_swaps/tobtc/ln/ToBTCLNWrapper.js +106 -101
  116. package/dist/swaps/escrow_swaps/tobtc/onchain/ToBTCSwap.d.ts +37 -14
  117. package/dist/swaps/escrow_swaps/tobtc/onchain/ToBTCSwap.js +66 -20
  118. package/dist/swaps/escrow_swaps/tobtc/onchain/ToBTCWrapper.d.ts +46 -17
  119. package/dist/swaps/escrow_swaps/tobtc/onchain/ToBTCWrapper.js +82 -27
  120. package/dist/swaps/spv_swaps/SpvFromBTCSwap.d.ts +350 -88
  121. package/dist/swaps/spv_swaps/SpvFromBTCSwap.js +482 -215
  122. package/dist/swaps/spv_swaps/SpvFromBTCWrapper.d.ts +76 -24
  123. package/dist/swaps/spv_swaps/SpvFromBTCWrapper.js +247 -124
  124. package/dist/swaps/trusted/ln/LnForGasSwap.d.ts +148 -20
  125. package/dist/swaps/trusted/ln/LnForGasSwap.js +175 -45
  126. package/dist/swaps/trusted/ln/LnForGasWrapper.d.ts +29 -10
  127. package/dist/swaps/trusted/ln/LnForGasWrapper.js +30 -11
  128. package/dist/swaps/trusted/onchain/OnchainForGasSwap.d.ts +202 -49
  129. package/dist/swaps/trusted/onchain/OnchainForGasSwap.js +232 -80
  130. package/dist/swaps/trusted/onchain/OnchainForGasWrapper.d.ts +34 -12
  131. package/dist/swaps/trusted/onchain/OnchainForGasWrapper.js +33 -14
  132. package/dist/types/AmountData.d.ts +2 -1
  133. package/dist/types/CustomPriceFunction.d.ts +8 -2
  134. package/dist/types/PriceInfoType.d.ts +4 -4
  135. package/dist/types/PriceInfoType.js +3 -3
  136. package/dist/types/SwapExecutionAction.d.ts +85 -4
  137. package/dist/types/SwapWithSigner.d.ts +5 -2
  138. package/dist/types/SwapWithSigner.js +5 -2
  139. package/dist/types/Token.d.ts +11 -5
  140. package/dist/types/Token.js +6 -3
  141. package/dist/types/TokenAmount.d.ts +3 -0
  142. package/dist/types/TokenAmount.js +2 -0
  143. package/dist/types/fees/Fee.d.ts +3 -2
  144. package/dist/types/fees/FeeBreakdown.d.ts +3 -2
  145. package/dist/types/fees/PercentagePPM.d.ts +4 -2
  146. package/dist/types/fees/PercentagePPM.js +2 -1
  147. package/dist/types/lnurl/LNURLPay.d.ts +20 -12
  148. package/dist/types/lnurl/LNURLPay.js +8 -4
  149. package/dist/types/lnurl/LNURLWithdraw.d.ts +17 -10
  150. package/dist/types/lnurl/LNURLWithdraw.js +8 -4
  151. package/dist/types/wallets/LightningInvoiceCreateService.d.ts +24 -0
  152. package/dist/types/wallets/LightningInvoiceCreateService.js +15 -0
  153. package/dist/types/wallets/MinimalBitcoinWalletInterface.d.ts +3 -1
  154. package/dist/types/wallets/MinimalLightningNetworkWalletInterface.d.ts +4 -2
  155. package/dist/utils/BitcoinUtils.d.ts +1 -0
  156. package/dist/utils/BitcoinUtils.js +5 -1
  157. package/dist/utils/SwapUtils.d.ts +58 -1
  158. package/dist/utils/SwapUtils.js +55 -1
  159. package/dist/utils/TokenUtils.d.ts +10 -2
  160. package/dist/utils/TokenUtils.js +12 -4
  161. package/package.json +3 -3
  162. package/src/bitcoin/coinselect2/utils.ts +6 -0
  163. package/src/bitcoin/wallet/BitcoinWallet.ts +41 -5
  164. package/src/bitcoin/wallet/IBitcoinWallet.ts +57 -2
  165. package/src/bitcoin/wallet/SingleAddressBitcoinWallet.ts +42 -6
  166. package/src/enums/FeeType.ts +8 -1
  167. package/src/enums/SwapAmountType.ts +7 -0
  168. package/src/enums/SwapDirection.ts +7 -0
  169. package/src/enums/SwapType.ts +62 -2
  170. package/src/errors/IntermediaryError.ts +4 -0
  171. package/src/errors/RequestError.ts +15 -1
  172. package/src/errors/UserError.ts +1 -0
  173. package/src/index.ts +12 -5
  174. package/src/intermediaries/Intermediary.ts +61 -14
  175. package/src/intermediaries/IntermediaryDiscovery.ts +69 -34
  176. package/src/prices/RedundantSwapPrice.ts +26 -6
  177. package/src/prices/SingleSwapPrice.ts +11 -8
  178. package/src/prices/SwapPriceWithChain.ts +63 -26
  179. package/src/prices/abstract/IPriceProvider.ts +4 -4
  180. package/src/prices/abstract/ISwapPrice.ts +115 -66
  181. package/src/prices/providers/BinancePriceProvider.ts +8 -1
  182. package/src/prices/providers/CoinGeckoPriceProvider.ts +7 -1
  183. package/src/prices/providers/CoinPaprikaPriceProvider.ts +7 -1
  184. package/src/prices/providers/CustomPriceProvider.ts +12 -1
  185. package/src/prices/providers/KrakenPriceProvider.ts +10 -1
  186. package/src/prices/providers/OKXPriceProvider.ts +7 -1
  187. package/src/prices/providers/abstract/ExchangePriceProvider.ts +3 -0
  188. package/src/storage/IUnifiedStorage.ts +19 -7
  189. package/src/storage/UnifiedSwapStorage.ts +33 -3
  190. package/src/storage-browser/IndexedDBUnifiedStorage.ts +31 -8
  191. package/src/storage-browser/LocalStorageManager.ts +25 -1
  192. package/src/swapper/Swapper.ts +599 -390
  193. package/src/swapper/SwapperFactory.ts +73 -24
  194. package/src/swapper/SwapperUtils.ts +107 -60
  195. package/src/swapper/SwapperWithChain.ts +320 -81
  196. package/src/swapper/SwapperWithSigner.ts +263 -56
  197. package/src/swaps/IAddressSwap.ts +13 -3
  198. package/src/swaps/IBTCWalletSwap.ts +26 -10
  199. package/src/swaps/IClaimableSwap.ts +41 -6
  200. package/src/swaps/IClaimableSwapWrapper.ts +11 -2
  201. package/src/swaps/IRefundableSwap.ts +34 -5
  202. package/src/swaps/ISwap.ts +224 -85
  203. package/src/swaps/ISwapWithGasDrop.ts +8 -2
  204. package/src/swaps/ISwapWrapper.ts +216 -98
  205. package/src/swaps/escrow_swaps/IEscrowSelfInitSwap.ts +64 -18
  206. package/src/swaps/escrow_swaps/IEscrowSwap.ts +83 -37
  207. package/src/swaps/escrow_swaps/IEscrowSwapWrapper.ts +61 -30
  208. package/src/swaps/escrow_swaps/frombtc/IFromBTCLNWrapper.ts +37 -19
  209. package/src/swaps/escrow_swaps/frombtc/IFromBTCSelfInitSwap.ts +123 -50
  210. package/src/swaps/escrow_swaps/frombtc/IFromBTCWrapper.ts +24 -11
  211. package/src/swaps/escrow_swaps/frombtc/ln/FromBTCLNSwap.ts +562 -258
  212. package/src/swaps/escrow_swaps/frombtc/ln/FromBTCLNWrapper.ts +156 -62
  213. package/src/swaps/escrow_swaps/frombtc/ln_auto/FromBTCLNAutoSwap.ts +592 -227
  214. package/src/swaps/escrow_swaps/frombtc/ln_auto/FromBTCLNAutoWrapper.ts +177 -74
  215. package/src/swaps/escrow_swaps/frombtc/onchain/FromBTCSwap.ts +483 -245
  216. package/src/swaps/escrow_swaps/frombtc/onchain/FromBTCWrapper.ts +141 -59
  217. package/src/swaps/escrow_swaps/tobtc/IToBTCSwap.ts +350 -195
  218. package/src/swaps/escrow_swaps/tobtc/IToBTCWrapper.ts +48 -23
  219. package/src/swaps/escrow_swaps/tobtc/ln/ToBTCLNSwap.ts +87 -40
  220. package/src/swaps/escrow_swaps/tobtc/ln/ToBTCLNWrapper.ts +110 -110
  221. package/src/swaps/escrow_swaps/tobtc/onchain/ToBTCSwap.ts +89 -34
  222. package/src/swaps/escrow_swaps/tobtc/onchain/ToBTCWrapper.ts +101 -31
  223. package/src/swaps/spv_swaps/SpvFromBTCSwap.ts +556 -259
  224. package/src/swaps/spv_swaps/SpvFromBTCWrapper.ts +292 -148
  225. package/src/swaps/trusted/ln/LnForGasSwap.ts +186 -47
  226. package/src/swaps/trusted/ln/LnForGasWrapper.ts +34 -15
  227. package/src/swaps/trusted/onchain/OnchainForGasSwap.ts +262 -88
  228. package/src/swaps/trusted/onchain/OnchainForGasWrapper.ts +41 -19
  229. package/src/types/AmountData.ts +2 -1
  230. package/src/types/CustomPriceFunction.ts +8 -2
  231. package/src/types/PriceInfoType.ts +4 -4
  232. package/src/types/SwapExecutionAction.ts +97 -5
  233. package/src/types/SwapWithSigner.ts +8 -4
  234. package/src/types/Token.ts +12 -5
  235. package/src/types/TokenAmount.ts +3 -0
  236. package/src/types/fees/Fee.ts +3 -2
  237. package/src/types/fees/FeeBreakdown.ts +3 -2
  238. package/src/types/fees/PercentagePPM.ts +4 -2
  239. package/src/types/lnurl/LNURLPay.ts +20 -12
  240. package/src/types/lnurl/LNURLWithdraw.ts +17 -10
  241. package/src/types/wallets/LightningInvoiceCreateService.ts +30 -0
  242. package/src/types/wallets/MinimalBitcoinWalletInterface.ts +3 -1
  243. package/src/types/wallets/MinimalLightningNetworkWalletInterface.ts +4 -2
  244. package/src/utils/BitcoinUtils.ts +5 -0
  245. package/src/utils/SwapUtils.ts +63 -1
  246. package/src/utils/TokenUtils.ts +12 -4
  247. package/dist/bitcoin/BitcoinRpcWithAddressIndex.d.ts +0 -68
  248. package/dist/bitcoin/BitcoinRpcWithAddressIndex.js +0 -2
  249. package/dist/bitcoin/LightningNetworkApi.d.ts +0 -12
  250. package/dist/bitcoin/LightningNetworkApi.js +0 -2
  251. package/dist/bitcoin/mempool/MempoolApi.d.ts +0 -350
  252. package/dist/bitcoin/mempool/MempoolApi.js +0 -311
  253. package/dist/bitcoin/mempool/MempoolBitcoinBlock.d.ts +0 -44
  254. package/dist/bitcoin/mempool/MempoolBitcoinBlock.js +0 -48
  255. package/dist/bitcoin/mempool/MempoolBitcoinRpc.d.ts +0 -119
  256. package/dist/bitcoin/mempool/MempoolBitcoinRpc.js +0 -361
  257. package/dist/bitcoin/mempool/synchronizer/MempoolBtcRelaySynchronizer.d.ts +0 -22
  258. package/dist/bitcoin/mempool/synchronizer/MempoolBtcRelaySynchronizer.js +0 -105
  259. package/dist/errors/PaymentAuthError.d.ts +0 -11
  260. package/dist/errors/PaymentAuthError.js +0 -23
  261. package/src/errors/PaymentAuthError.ts +0 -26
@@ -11,7 +11,7 @@ import {ToBTCSwap} from "../swaps/escrow_swaps/tobtc/onchain/ToBTCSwap";
11
11
  import {SwapPriceWithChain} from "../prices/SwapPriceWithChain";
12
12
  import {BTC_NETWORK} from "@scure/btc-signer/utils";
13
13
  import {ToBTCOptions} from "../swaps/escrow_swaps/tobtc/onchain/ToBTCWrapper";
14
- import {InvoiceCreateService, ToBTCLNOptions} from "../swaps/escrow_swaps/tobtc/ln/ToBTCLNWrapper";
14
+ import {ToBTCLNOptions} from "../swaps/escrow_swaps/tobtc/ln/ToBTCLNWrapper";
15
15
  import {FromBTCOptions} from "../swaps/escrow_swaps/frombtc/onchain/FromBTCWrapper";
16
16
  import {FromBTCLNOptions} from "../swaps/escrow_swaps/frombtc/ln/FromBTCLNWrapper";
17
17
  import {SwapperUtils} from "./SwapperUtils";
@@ -29,33 +29,57 @@ import {BitcoinTokens, BtcToken, isSCToken, SCToken, Token} from "../types/Token
29
29
  import {LNURLWithdraw} from "../types/lnurl/LNURLWithdraw";
30
30
  import {LNURLPay} from "../types/lnurl/LNURLPay";
31
31
  import {MempoolApi, MempoolBitcoinRpc} from "@atomiqlabs/btc-mempool";
32
+ import {LightningInvoiceCreateService} from "../types/wallets/LightningInvoiceCreateService";
33
+ import {Messenger} from "@atomiqlabs/base";
34
+ import {Intermediary} from "../intermediaries/Intermediary";
35
+ import {SwapTypeMapping} from "../utils/SwapUtils";
32
36
 
33
37
  /**
34
38
  * Chain-specific wrapper around Swapper for a particular blockchain
39
+ *
35
40
  * @category Core
36
41
  */
37
42
  export class SwapperWithChain<T extends MultiChain, ChainIdentifier extends ChainIds<T>> {
38
43
 
44
+ /**
45
+ * Underlying multichain swapper instance
46
+ */
47
+ private readonly swapper: Swapper<T>;
48
+
49
+ /**
50
+ * Smart chain identifier of this swapper with chain
51
+ */
39
52
  readonly chainIdentifier: ChainIdentifier;
40
- readonly swapper: Swapper<T>;
41
53
 
54
+ /**
55
+ * Pricing API used by the SDK
56
+ */
42
57
  readonly prices: SwapPriceWithChain<T, ChainIdentifier>;
43
58
 
59
+ /**
60
+ * Intermediary discovery instance
61
+ */
44
62
  get intermediaryDiscovery(): IntermediaryDiscovery {
45
63
  return this.swapper.intermediaryDiscovery;
46
64
  }
47
- get mempoolApi(): MempoolApi {
48
- return this.swapper.mempoolApi;
49
- }
50
- get bitcoinRpc(): MempoolBitcoinRpc {
51
- return this.swapper.bitcoinRpc;
52
- }
53
- get bitcoinNetwork(): BTC_NETWORK {
54
- return this.swapper.bitcoinNetwork;
55
- }
65
+ /**
66
+ * Miscellaneous utility functions
67
+ */
56
68
  get Utils(): SwapperUtils<T> {
57
69
  return this.swapper.Utils;
58
70
  }
71
+ /**
72
+ * Helper information about various swap protocol and their features:
73
+ * - `requiresInputWallet`: Whether a swap requires a connected wallet on the input chain able to sign
74
+ * arbitrary transaction
75
+ * - `requiresOutputWallet`: Whether a swap requires a connected wallet on the output chain able to sign
76
+ * arbitrary transactions
77
+ * - `supportsGasDrop`: Whether a swap supports the "gas drop" feature, allowing to user to receive a small
78
+ * amount of native token as part of the swap when swapping to smart chains
79
+ *
80
+ * Uses a `Record` type here, use the {@link SwapProtocolInfo} import for a literal readonly type, with
81
+ * pre-filled exact values in the type.
82
+ */
59
83
  get SwapTypeInfo() {
60
84
  return this.swapper.SwapTypeInfo;
61
85
  }
@@ -66,6 +90,17 @@ export class SwapperWithChain<T extends MultiChain, ChainIdentifier extends Chai
66
90
  this.prices = new SwapPriceWithChain<T, ChainIdentifier>(swapper.prices, chainIdentifier);
67
91
  }
68
92
 
93
+ /**
94
+ * Creates Smart chain -> Bitcoin ({@link SwapType.TO_BTC}) swap
95
+ *
96
+ * @param signer Signer's address on the source chain
97
+ * @param tokenAddress Token address to pay with
98
+ * @param address Recipient's bitcoin address
99
+ * @param amount Amount to send in token based units (if `exactIn=true`) or receive in satoshis (if `exactIn=false`)
100
+ * @param exactIn Whether to use exact in instead of exact out
101
+ * @param additionalParams Additional parameters sent to the LP when creating the swap
102
+ * @param options Additional options for the swap
103
+ */
69
104
  createToBTCSwap(
70
105
  signer: string,
71
106
  tokenAddress: string,
@@ -78,6 +113,16 @@ export class SwapperWithChain<T extends MultiChain, ChainIdentifier extends Chai
78
113
  return this.swapper.createToBTCSwap(this.chainIdentifier, signer, tokenAddress, address, amount, exactIn, additionalParams, options);
79
114
  }
80
115
 
116
+ /**
117
+ * Creates Smart chain -> Bitcoin Lightning ({@link SwapType.TO_BTCLN}) swap
118
+ *
119
+ * @param signer Signer's address on the source chain
120
+ * @param tokenAddress Token address to pay with
121
+ * @param paymentRequest BOLT11 lightning network invoice to be paid (needs to have a fixed amount), and the swap
122
+ * amount is taken from this fixed amount, hence only exact output swaps are supported
123
+ * @param additionalParams Additional parameters sent to the LP when creating the swap
124
+ * @param options Additional options for the swap
125
+ */
81
126
  createToBTCLNSwap(
82
127
  signer: string,
83
128
  tokenAddress: string,
@@ -88,6 +133,17 @@ export class SwapperWithChain<T extends MultiChain, ChainIdentifier extends Chai
88
133
  return this.swapper.createToBTCLNSwap(this.chainIdentifier, signer, tokenAddress, paymentRequest, additionalParams, options);
89
134
  }
90
135
 
136
+ /**
137
+ * Creates Smart chain -> Bitcoin Lightning ({@link SwapType.TO_BTCLN}) swap via LNURL-pay link
138
+ *
139
+ * @param signer Signer's address on the source chain
140
+ * @param tokenAddress Token address to pay with
141
+ * @param lnurlPay LNURL-pay link to use for the payment
142
+ * @param amount Amount to send in token based units (if `exactIn=true`) or receive in satoshis (if `exactIn=false`)
143
+ * @param exactIn Whether to do an exact in swap instead of exact out
144
+ * @param additionalParams Additional parameters sent to the LP when creating the swap
145
+ * @param options Additional options for the swap
146
+ */
91
147
  createToBTCLNSwapViaLNURL(
92
148
  signer: string,
93
149
  tokenAddress: string,
@@ -100,10 +156,21 @@ export class SwapperWithChain<T extends MultiChain, ChainIdentifier extends Chai
100
156
  return this.swapper.createToBTCLNSwapViaLNURL(this.chainIdentifier, signer, tokenAddress, lnurlPay, amount, exactIn, additionalParams, options);
101
157
  }
102
158
 
159
+ /**
160
+ * Creates Smart chain -> Bitcoin Lightning ({@link SwapType.TO_BTCLN}) swap via {@link LightningInvoiceCreateService}
161
+ *
162
+ * @param signer Signer's address on the source chain
163
+ * @param tokenAddress Token address to pay with
164
+ * @param service Invoice create service object which facilitates the creation of fixed amount LN invoices
165
+ * @param amount Amount to send in token based units (if `exactIn=true`) or receive in satoshis (if `exactIn=false`)
166
+ * @param exactIn Whether to do an exact in swap instead of exact out
167
+ * @param additionalParams Additional parameters sent to the LP when creating the swap
168
+ * @param options Additional options for the swap
169
+ */
103
170
  createToBTCLNSwapViaInvoiceCreateService(
104
171
  signer: string,
105
172
  tokenAddress: string,
106
- service: InvoiceCreateService,
173
+ service: LightningInvoiceCreateService,
107
174
  amount: bigint,
108
175
  exactIn?: boolean,
109
176
  additionalParams?: Record<string, any>,
@@ -112,52 +179,126 @@ export class SwapperWithChain<T extends MultiChain, ChainIdentifier extends Chai
112
179
  return this.swapper.createToBTCLNSwapViaInvoiceCreateService(this.chainIdentifier, signer, tokenAddress, service, amount, exactIn, additionalParams, options);
113
180
  }
114
181
 
182
+ /**
183
+ * Creates Bitcoin -> Smart chain ({@link SwapType.SPV_VAULT_FROM_BTC}) swap
184
+ *
185
+ * @param recipient Recipient address on the destination chain
186
+ * @param tokenAddress Token address to receive
187
+ * @param amount Amount to send in satoshis (if `exactOut=false`) or receive in token based units (if `exactOut=true`)
188
+ * @param exactOut Whether to use a exact out instead of exact in
189
+ * @param additionalParams Additional parameters sent to the LP when creating the swap
190
+ * @param options Additional options for the swap
191
+ */
192
+ async createFromBTCSwapNew(
193
+ recipient: string,
194
+ tokenAddress: string,
195
+ amount: bigint,
196
+ exactOut: boolean = false,
197
+ additionalParams?: Record<string, any>,
198
+ options?: SpvFromBTCOptions
199
+ ): Promise<SpvFromBTCSwap<T[ChainIdentifier]>> {
200
+ return this.swapper.createFromBTCSwapNew(this.chainIdentifier, recipient, tokenAddress, amount, exactOut, additionalParams, options);
201
+ }
202
+
203
+ /**
204
+ * Creates LEGACY Bitcoin -> Smart chain ({@link SwapType.FROM_BTC}) swap
205
+ *
206
+ * @param recipient Recipient address on the destination chain
207
+ * @param tokenAddress Token address to receive
208
+ * @param amount Amount to send in satoshis (if `exactOut=false`) or receive in token based units (if `exactOut=true`)
209
+ * @param exactOut Whether to use a exact out instead of exact in
210
+ * @param additionalParams Additional parameters sent to the LP when creating the swap
211
+ * @param options Additional options for the swap
212
+ */
115
213
  createFromBTCSwap(
116
- signer: string,
214
+ recipient: string,
117
215
  tokenAddress: string,
118
216
  amount: bigint,
119
217
  exactOut?: boolean,
120
218
  additionalParams?: Record<string, any>,
121
219
  options?: FromBTCOptions
122
220
  ): Promise<FromBTCSwap<T[ChainIdentifier]>> {
123
- return this.swapper.createFromBTCSwap(this.chainIdentifier, signer, tokenAddress, amount, exactOut, additionalParams, options);
221
+ return this.swapper.createFromBTCSwap(this.chainIdentifier, recipient, tokenAddress, amount, exactOut, additionalParams, options);
124
222
  }
125
223
 
224
+ /**
225
+ * Creates LEGACY Bitcoin Lightning -> Smart chain ({@link SwapType.FROM_BTCLN}) swap
226
+ *
227
+ * @param recipient Recipient address on the destination chain
228
+ * @param tokenAddress Token address to receive
229
+ * @param amount Amount to send in satoshis (if `exactOut=false`) or receive in token based units (if `exactOut=true`)
230
+ * @param exactOut Whether to use a exact out instead of exact in
231
+ * @param additionalParams Additional parameters sent to the LP when creating the swap
232
+ * @param options Additional options for the swap
233
+ */
126
234
  createFromBTCLNSwap(
127
- signer: string,
235
+ recipient: string,
128
236
  tokenAddress: string,
129
237
  amount: bigint,
130
238
  exactOut?: boolean,
131
239
  additionalParams?: Record<string, any>,
132
240
  options?: FromBTCLNOptions
133
241
  ): Promise<FromBTCLNSwap<T[ChainIdentifier]>> {
134
- return this.swapper.createFromBTCLNSwap(this.chainIdentifier, signer, tokenAddress, amount, exactOut, additionalParams, options);
242
+ return this.swapper.createFromBTCLNSwap(this.chainIdentifier, recipient, tokenAddress, amount, exactOut, additionalParams, options);
135
243
  }
136
244
 
245
+ /**
246
+ * Creates LEGACY Bitcoin Lightning -> Smart chain ({@link SwapType.FROM_BTCLN}) swap, withdrawing from
247
+ * an LNURL-withdraw link
248
+ *
249
+ * @param recipient Recipient address on the destination chain
250
+ * @param tokenAddress Token address to receive
251
+ * @param lnurl LNURL-withdraw link to pull the funds from
252
+ * @param amount Amount to send in satoshis (if `exactOut=false`) or receive in token based units (if `exactOut=true`)
253
+ * @param exactOut Whether to use a exact out instead of exact in
254
+ * @param additionalParams Additional parameters sent to the LP when creating the swap
255
+ */
137
256
  createFromBTCLNSwapViaLNURL(
138
- signer: string,
257
+ recipient: string,
139
258
  tokenAddress: string,
140
259
  lnurl: string | LNURLWithdraw,
141
260
  amount: bigint,
142
261
  exactOut?: boolean,
143
262
  additionalParams?: Record<string, any>
144
263
  ): Promise<FromBTCLNSwap<T[ChainIdentifier]>> {
145
- return this.swapper.createFromBTCLNSwapViaLNURL(this.chainIdentifier, signer, tokenAddress, lnurl, amount, exactOut, additionalParams);
264
+ return this.swapper.createFromBTCLNSwapViaLNURL(this.chainIdentifier, recipient, tokenAddress, lnurl, amount, exactOut, additionalParams);
146
265
  }
147
266
 
267
+ /**
268
+ * Creates Bitcoin Lightning -> Smart chain ({@link SwapType.FROM_BTCLN_AUTO}) swap
269
+ *
270
+ * @param recipient Recipient address on the destination chain
271
+ * @param tokenAddress Token address to receive
272
+ * @param amount Amount to send in satoshis (if `exactOut=false`) or receive in token based units (if `exactOut=true`)
273
+ * @param exactOut Whether to use a exact out instead of exact in
274
+ * @param additionalParams Additional parameters sent to the LP when creating the swap
275
+ * @param options Additional options for the swap
276
+ */
148
277
  createFromBTCLNSwapNew(
149
- signer: string,
278
+ recipient: string,
150
279
  tokenAddress: string,
151
280
  amount: bigint,
152
281
  exactOut?: boolean,
153
282
  additionalParams?: Record<string, any>,
154
283
  options?: FromBTCLNAutoOptions
155
284
  ): Promise<FromBTCLNAutoSwap<T[ChainIdentifier]>> {
156
- return this.swapper.createFromBTCLNSwapNew(this.chainIdentifier, signer, tokenAddress, amount, exactOut, additionalParams, options);
285
+ return this.swapper.createFromBTCLNSwapNew(this.chainIdentifier, recipient, tokenAddress, amount, exactOut, additionalParams, options);
157
286
  }
158
287
 
288
+ /**
289
+ * Creates Bitcoin Lightning -> Smart chain ({@link SwapType.FROM_BTCLN_AUTO}) swap, withdrawing from
290
+ * an LNURL-withdraw link
291
+ *
292
+ * @param recipient Recipient address on the destination chain
293
+ * @param tokenAddress Token address to receive
294
+ * @param lnurl LNURL-withdraw link to pull the funds from
295
+ * @param amount Amount to send in satoshis (if `exactOut=false`) or receive in token based units (if `exactOut=true`)
296
+ * @param exactOut Whether to use a exact out instead of exact in
297
+ * @param additionalParams Additional parameters sent to the LP when creating the swap
298
+ * @param options Additional options for the swap
299
+ */
159
300
  createFromBTCLNSwapNewViaLNURL(
160
- signer: string,
301
+ recipient: string,
161
302
  tokenAddress: string,
162
303
  lnurl: string | LNURLWithdraw,
163
304
  amount: bigint,
@@ -165,22 +306,65 @@ export class SwapperWithChain<T extends MultiChain, ChainIdentifier extends Chai
165
306
  additionalParams?: Record<string, any>,
166
307
  options?: FromBTCLNAutoOptions
167
308
  ): Promise<FromBTCLNAutoSwap<T[ChainIdentifier]>> {
168
- return this.swapper.createFromBTCLNSwapNewViaLNURL(this.chainIdentifier, signer, tokenAddress, lnurl, amount, exactOut, additionalParams, options);
309
+ return this.swapper.createFromBTCLNSwapNewViaLNURL(this.chainIdentifier, recipient, tokenAddress, lnurl, amount, exactOut, additionalParams, options);
169
310
  }
170
311
 
171
- createTrustedLNForGasSwap(signer: string, amount: bigint, trustedIntermediaryUrl?: string): Promise<LnForGasSwap<T[ChainIdentifier]>> {
172
- return this.swapper.createTrustedLNForGasSwap(this.chainIdentifier, signer, amount, trustedIntermediaryUrl);
312
+ /**
313
+ * Creates a trusted Bitcoin Lightning -> Smart chain ({@link SwapType.TRUSTED_FROM_BTCLN}) gas swap
314
+ *
315
+ * @param recipient Recipient address on the destination chain
316
+ * @param amount Amount of native token to receive, in base units
317
+ * @param trustedIntermediaryOrUrl URL or Intermediary object of the trusted intermediary to use, otherwise uses default
318
+ * @throws {Error} If no trusted intermediary specified
319
+ */
320
+ createTrustedLNForGasSwap(recipient: string, amount: bigint, trustedIntermediaryOrUrl?: Intermediary | string): Promise<LnForGasSwap<T[ChainIdentifier]>> {
321
+ return this.swapper.createTrustedLNForGasSwap(this.chainIdentifier, recipient, amount, trustedIntermediaryOrUrl);
173
322
  }
174
323
 
175
- createTrustedOnchainForGasSwap(signer: string, amount: bigint, refundAddress?: string, trustedIntermediaryUrl?: string): Promise<OnchainForGasSwap<T[ChainIdentifier]>> {
176
- return this.swapper.createTrustedOnchainForGasSwap(this.chainIdentifier, signer, amount, refundAddress, trustedIntermediaryUrl);
324
+ /**
325
+ * Creates a trusted Bitcoin -> Smart chain ({@link SwapType.TRUSTED_FROM_BTC}) gas swap
326
+ *
327
+ * @param recipient Recipient address on the destination chain
328
+ * @param amount Amount of native token to receive, in base units
329
+ * @param refundAddress Bitcoin refund address, in case the swap fails the funds are refunded here
330
+ * @param trustedIntermediaryOrUrl URL or Intermediary object of the trusted intermediary to use, otherwise uses default
331
+ * @throws {Error} If no trusted intermediary specified
332
+ */
333
+ createTrustedOnchainForGasSwap(recipient: string, amount: bigint, refundAddress?: string, trustedIntermediaryOrUrl?: Intermediary | string): Promise<OnchainForGasSwap<T[ChainIdentifier]>> {
334
+ return this.swapper.createTrustedOnchainForGasSwap(this.chainIdentifier, recipient, amount, refundAddress, trustedIntermediaryOrUrl);
177
335
  }
178
336
 
337
+ /**
338
+ * @internal
339
+ */
179
340
  create(signer: string, srcToken: BtcToken<true>, dstToken: SCToken<ChainIdentifier>, amount: bigint, exactIn: boolean, lnurlWithdraw?: string | LNURLWithdraw): Promise<SupportsSwapType<T[ChainIdentifier], SwapType.FROM_BTCLN_AUTO> extends true ? FromBTCLNAutoSwap<T[ChainIdentifier]> : FromBTCLNSwap<T[ChainIdentifier]>>;
341
+ /**
342
+ * @internal
343
+ */
180
344
  create(signer: string, srcToken: BtcToken<false>, dstToken: SCToken<ChainIdentifier>, amount: bigint, exactIn: boolean): Promise<(SupportsSwapType<T[ChainIdentifier], SwapType.SPV_VAULT_FROM_BTC> extends true ? SpvFromBTCSwap<T[ChainIdentifier]> : FromBTCSwap<T[ChainIdentifier]>)>;
345
+ /**
346
+ * @internal
347
+ */
181
348
  create(signer: string, srcToken: SCToken<ChainIdentifier>, dstToken: BtcToken<false>, amount: bigint, exactIn: boolean, address: string): Promise<ToBTCSwap<T[ChainIdentifier]>>;
349
+ /**
350
+ * @internal
351
+ */
182
352
  create(signer: string, srcToken: SCToken<ChainIdentifier>, dstToken: BtcToken<true>, amount: bigint, exactIn: boolean, lnurlPay: string | LNURLPay): Promise<ToBTCLNSwap<T[ChainIdentifier]>>;
183
- create(signer: string, srcToken: SCToken<ChainIdentifier>, dstToken: BtcToken<true>, amount: undefined, exactIn: false, lightningInvoice: string): Promise<ToBTCLNSwap<T[ChainIdentifier]>>;
353
+ /**
354
+ * Creates a swap from srcToken to dstToken, of a specific token amount, either specifying input amount (exactIn=true)
355
+ * or output amount (exactIn=false), NOTE: For regular -> BTC-LN (lightning) swaps the passed amount is ignored and
356
+ * invoice's pre-set amount is used instead.
357
+ * @deprecated Use swap() instead
358
+ *
359
+ * @param signer Smartchain (Solana, Starknet, etc.) address of the user
360
+ * @param srcToken Source token of the swap, user pays this token
361
+ * @param dstToken Destination token of the swap, user receives this token
362
+ * @param amount Amount of the swap
363
+ * @param exactIn Whether the amount specified is an input amount (exactIn=true) or an output amount (exactIn=false)
364
+ * @param addressLnurlLightningInvoice Bitcoin on-chain address, lightning invoice, LNURL-pay to pay or
365
+ * LNURL-withdrawal to withdraw money from
366
+ */
367
+ create(signer: string, srcToken: SCToken<ChainIdentifier>, dstToken: BtcToken<true>, amount: undefined, exactIn: false, addressLnurlLightningInvoice: string): Promise<ToBTCLNSwap<T[ChainIdentifier]>>;
184
368
  /**
185
369
  * Creates a swap from srcToken to dstToken, of a specific token amount, either specifying input amount (exactIn=true)
186
370
  * or output amount (exactIn=false), NOTE: For regular -> BTC-LN (lightning) swaps the passed amount is ignored and
@@ -199,12 +383,40 @@ export class SwapperWithChain<T extends MultiChain, ChainIdentifier extends Chai
199
383
  return this.swapper.create(signer, srcToken, dstToken, amount, exactIn, addressLnurlLightningInvoice);
200
384
  }
201
385
 
386
+ /**
387
+ * @internal
388
+ */
202
389
  swap(srcToken: BtcToken<true>, dstToken: SCToken<ChainIdentifier>, amount: bigint | string, exactIn: boolean | SwapAmountType, src: undefined | string | LNURLWithdraw, dstSmartchainWallet: string, options?: (SupportsSwapType<T[ChainIdentifier], SwapType.FROM_BTCLN_AUTO> extends true ? FromBTCLNAutoOptions : FromBTCLNOptions)): Promise<SupportsSwapType<T[ChainIdentifier], SwapType.FROM_BTCLN_AUTO> extends true ? FromBTCLNAutoSwap<T[ChainIdentifier]> : FromBTCLNSwap<T[ChainIdentifier]>>;
390
+ /**
391
+ * @internal
392
+ */
203
393
  swap(srcToken: BtcToken<false>, dstToken: SCToken<ChainIdentifier>, amount: bigint | string, exactIn: boolean | SwapAmountType, src: undefined | string, dstSmartchainWallet: string, options?: (SupportsSwapType<T[ChainIdentifier], SwapType.SPV_VAULT_FROM_BTC> extends true ? SpvFromBTCOptions : FromBTCOptions)): Promise<(SupportsSwapType<T[ChainIdentifier], SwapType.SPV_VAULT_FROM_BTC> extends true ? SpvFromBTCSwap<T[ChainIdentifier]> : FromBTCSwap<T[ChainIdentifier]>)>;
394
+ /**
395
+ * @internal
396
+ */
204
397
  swap(srcToken: SCToken<ChainIdentifier>, dstToken: BtcToken<false>, amount: bigint | string, exactIn: boolean | SwapAmountType, src: string, dstAddress: string, options?: ToBTCOptions): Promise<ToBTCSwap<T[ChainIdentifier]>>;
205
- swap(srcToken: SCToken<ChainIdentifier>, dstToken: BtcToken<true>, amount: bigint | string, exactIn: boolean | SwapAmountType, src: string, dstLnurlPayOrInvoiceCreateService: string | LNURLPay | InvoiceCreateService, options?: ToBTCLNOptions & {comment?: string}): Promise<ToBTCLNSwap<T[ChainIdentifier]>>;
398
+ /**
399
+ * @internal
400
+ */
401
+ swap(srcToken: SCToken<ChainIdentifier>, dstToken: BtcToken<true>, amount: bigint | string, exactIn: boolean | SwapAmountType, src: string, dstLnurlPayOrInvoiceCreateService: string | LNURLPay | LightningInvoiceCreateService, options?: ToBTCLNOptions & {comment?: string}): Promise<ToBTCLNSwap<T[ChainIdentifier]>>;
402
+ /**
403
+ * @internal
404
+ */
206
405
  swap(srcToken: SCToken<ChainIdentifier>, dstToken: BtcToken<true>, amount: undefined, exactIn: false | SwapAmountType.EXACT_OUT, src: string, dstLightningInvoice: string, options?: ToBTCLNOptions): Promise<ToBTCLNSwap<T[ChainIdentifier]>>;
207
- swap(srcToken: Token<ChainIdentifier> | string, dstToken: Token<ChainIdentifier> | string, amount: bigint | string | undefined, exactIn: boolean | SwapAmountType, src: undefined | string | LNURLWithdraw, dst: string | LNURLPay | InvoiceCreateService, options?: FromBTCLNOptions | SpvFromBTCOptions | FromBTCOptions | ToBTCOptions | (ToBTCLNOptions & {comment?: string}) | FromBTCLNAutoOptions): Promise<ISwap<T[ChainIdentifier]>>;
406
+ /**
407
+ * Creates a swap from srcToken to dstToken, of a specific token amount, either specifying input amount (exactIn=true)
408
+ * or output amount (exactIn=false), NOTE: For regular SmartChain -> BTC-LN (lightning) swaps the passed amount is ignored and
409
+ * invoice's pre-set amount is used instead, use LNURL-pay for dynamic amounts
410
+ *
411
+ * @param srcToken Source token of the swap, user pays this token
412
+ * @param dstToken Destination token of the swap, user receives this token
413
+ * @param amount Amount of the swap
414
+ * @param exactIn Whether the amount specified is an input amount (exactIn=true) or an output amount (exactIn=false)
415
+ * @param src Source wallet/lnurl-withdraw of the swap
416
+ * @param dst Destination smart chain address, bitcoin on-chain address, lightning invoice, LNURL-pay
417
+ * @param options Options for the swap
418
+ */
419
+ swap(srcToken: Token<ChainIdentifier> | string, dstToken: Token<ChainIdentifier> | string, amount: bigint | string | undefined, exactIn: boolean | SwapAmountType, src: undefined | string | LNURLWithdraw, dst: string | LNURLPay | LightningInvoiceCreateService, options?: FromBTCLNOptions | SpvFromBTCOptions | FromBTCOptions | ToBTCOptions | (ToBTCLNOptions & {comment?: string}) | FromBTCLNAutoOptions): Promise<ISwap<T[ChainIdentifier]>>;
208
420
  /**
209
421
  * Creates a swap from srcToken to dstToken, of a specific token amount, either specifying input amount (exactIn=true)
210
422
  * or output amount (exactIn=false), NOTE: For regular SmartChain -> BTC-LN (lightning) swaps the passed amount is ignored and
@@ -224,7 +436,7 @@ export class SwapperWithChain<T extends MultiChain, ChainIdentifier extends Chai
224
436
  amount: bigint | string | undefined,
225
437
  exactIn: boolean | SwapAmountType,
226
438
  src: undefined | string | LNURLWithdraw,
227
- dst: string | LNURLPay | InvoiceCreateService,
439
+ dst: string | LNURLPay | LightningInvoiceCreateService,
228
440
  options?: FromBTCLNOptions | SpvFromBTCOptions | FromBTCOptions | ToBTCOptions | ToBTCLNOptions | FromBTCLNAutoOptions
229
441
  ): Promise<ISwap<T[ChainIdentifier]>> {
230
442
  if(typeof(srcToken)==="string") srcToken = this.getToken(srcToken);
@@ -268,6 +480,51 @@ export class SwapperWithChain<T extends MultiChain, ChainIdentifier extends Chai
268
480
  return this.swapper.getSwapById(id, this.chainIdentifier, signer);
269
481
  }
270
482
 
483
+ /**
484
+ * Returns the swap with a proper return type, or `undefined` if not found or has wrong type
485
+ *
486
+ * @param id An ID of the swap ({@link ISwap.getId})
487
+ * @param swapType Type of the swap
488
+ * @param signer An optional required smart chain signer address to fetch the swap for
489
+ */
490
+ async getTypedSwapById<S extends SwapType>(id: string, swapType: S, signer?: string): Promise<SwapTypeMapping<T[ChainIdentifier]>[S] | undefined> {
491
+ return this.swapper.getTypedSwapById(id, this.chainIdentifier, swapType, signer);
492
+ }
493
+
494
+ /**
495
+ * Synchronizes swaps from on-chain, this is ran automatically when SDK is initialized, hence
496
+ * should only be ran manually when `dontCheckPastSwaps=true` is passed in the swapper options,
497
+ * also deletes expired quotes
498
+ *
499
+ * @param signer Optional signer to only run swap sync for swaps initiated by this signer
500
+ */
501
+ async _syncSwaps(signer?: string): Promise<void> {
502
+ return this.swapper._syncSwaps<ChainIdentifier>(this.chainIdentifier, signer);
503
+ }
504
+
505
+ /**
506
+ * Recovers swaps from on-chain historical data.
507
+ *
508
+ * Please note that the recovered swaps might not be complete (i.e. missing amounts or addresses), as some
509
+ * of the swap data is purely off-chain and can never be recovered purely from on-chain data. This
510
+ * functions tries to recover as much swap data as possible.
511
+ *
512
+ * @param signer Signer address to recover the swaps for
513
+ * @param startBlockheight Optional starting blockheight for swap data recovery, will only check swaps
514
+ * initiated after this blockheight
515
+ */
516
+ async recoverSwaps(signer: string, startBlockheight?: number): Promise<ISwap<T[ChainIdentifier]>[]> {
517
+ return this.swapper.recoverSwaps(this.chainIdentifier, signer, startBlockheight);
518
+ }
519
+
520
+ /**
521
+ * Returns the {@link Token} object for a given token
522
+ *
523
+ * @param tickerOrAddress Token to return the object for, can use multiple formats:
524
+ * - a) token ticker, such as `"BTC"`, `"SOL"`, etc.
525
+ * - b) token ticker prefixed with smart chain identifier, such as `"SOLANA-SOL"`, `"SOLANA-USDC"`, etc.
526
+ * - c) token address
527
+ */
271
528
  getToken(tickerOrAddress: string): Token<ChainIdentifier> {
272
529
  //Btc tokens - BTC, BTCLN, BTC-LN
273
530
  if(tickerOrAddress==="BTC") return BitcoinTokens.BTC;
@@ -277,19 +534,19 @@ export class SwapperWithChain<T extends MultiChain, ChainIdentifier extends Chai
277
534
  if(tickerOrAddress.includes("-")) {
278
535
  const [chainId, ticker] = tickerOrAddress.split("-");
279
536
  if(chainId!==this.chainIdentifier) throw new UserError(`Invalid chainId specified in ticker: ${chainId}, swapper chainId: ${this.chainIdentifier}`);
280
- const token = this.swapper.tokensByTicker[this.chainIdentifier]?.[ticker];
537
+ const token = this.swapper._tokensByTicker[this.chainIdentifier]?.[ticker];
281
538
  if(token==null) throw new UserError(`Not found ticker: ${ticker} for chainId: ${chainId}`);
282
539
  return token as Token<ChainIdentifier>;
283
540
  }
284
541
 
285
- const chain = this.swapper.chains[this.chainIdentifier];
542
+ const chain = this.swapper._chains[this.chainIdentifier];
286
543
  if(chain.chainInterface.isValidToken(tickerOrAddress)) {
287
544
  //Try to find in known token addresses
288
- const token = this.swapper.tokens[this.chainIdentifier]?.[tickerOrAddress];
545
+ const token = this.swapper._tokens[this.chainIdentifier]?.[tickerOrAddress];
289
546
  if(token!=null) return token as Token<ChainIdentifier>;
290
547
  } else {
291
548
  //Check in known tickers
292
- const token = this.swapper.tokensByTicker[this.chainIdentifier]?.[tickerOrAddress];
549
+ const token = this.swapper._tokensByTicker[this.chainIdentifier]?.[tickerOrAddress];
293
550
  if(token!=null) return token as Token<ChainIdentifier>;
294
551
  }
295
552
 
@@ -297,12 +554,10 @@ export class SwapperWithChain<T extends MultiChain, ChainIdentifier extends Chai
297
554
  }
298
555
 
299
556
  /**
300
- * Synchronizes swaps from chain, this is usually ran when SDK is initialized, deletes expired quotes
557
+ * Returns whether the SDK supports a given swap type on this chain based on currently known LPs
558
+ *
559
+ * @param swapType Swap protocol type
301
560
  */
302
- async _syncSwaps(signer?: string): Promise<void> {
303
- return this.swapper._syncSwaps<ChainIdentifier>(this.chainIdentifier, signer);
304
- }
305
-
306
561
  supportsSwapType<
307
562
  Type extends SwapType
308
563
  >(swapType: Type): SupportsSwapType<T[ChainIdentifier], Type> {
@@ -310,16 +565,34 @@ export class SwapperWithChain<T extends MultiChain, ChainIdentifier extends Chai
310
565
  }
311
566
 
312
567
  /**
313
- * Returns type of the swap based on input and output tokens specified
314
- *
315
- * @param srcToken
316
- * @param dstToken
568
+ * @internal
317
569
  */
318
570
  getSwapType(srcToken: BtcToken<true>, dstToken: SCToken<ChainIdentifier>): (SupportsSwapType<T[ChainIdentifier], SwapType.FROM_BTCLN_AUTO> extends true ? SwapType.FROM_BTCLN_AUTO : SwapType.FROM_BTCLN);
571
+ /**
572
+ * @internal
573
+ */
319
574
  getSwapType(srcToken: BtcToken<false>, dstToken: SCToken<ChainIdentifier>): (SupportsSwapType<T[ChainIdentifier], SwapType.SPV_VAULT_FROM_BTC> extends true ? SwapType.SPV_VAULT_FROM_BTC : SwapType.FROM_BTC);
575
+ /**
576
+ * @internal
577
+ */
320
578
  getSwapType(srcToken: SCToken<ChainIdentifier>, dstToken: BtcToken<false>): SwapType.TO_BTC;
579
+ /**
580
+ * @internal
581
+ */
321
582
  getSwapType(srcToken: SCToken<ChainIdentifier>, dstToken: BtcToken<true>): SwapType.TO_BTCLN;
583
+ /**
584
+ * Returns type of the swap based on input and output tokens specified
585
+ *
586
+ * @param srcToken Source token
587
+ * @param dstToken Destination token
588
+ */
322
589
  getSwapType(srcToken: Token<ChainIdentifier>, dstToken: Token<ChainIdentifier>): SwapType.FROM_BTCLN_AUTO | SwapType.FROM_BTCLN | SwapType.SPV_VAULT_FROM_BTC | SwapType.FROM_BTC | SwapType.TO_BTC | SwapType.TO_BTCLN;
590
+ /**
591
+ * Returns type of the swap based on input and output tokens specified
592
+ *
593
+ * @param srcToken Source token
594
+ * @param dstToken Destination token
595
+ */
323
596
  getSwapType(srcToken: Token<ChainIdentifier>, dstToken: Token<ChainIdentifier>): SwapType.FROM_BTCLN_AUTO | SwapType.FROM_BTCLN | SwapType.SPV_VAULT_FROM_BTC | SwapType.FROM_BTC | SwapType.TO_BTC | SwapType.TO_BTCLN {
324
597
  return this.swapper.getSwapType(srcToken, dstToken);
325
598
  }
@@ -327,8 +600,8 @@ export class SwapperWithChain<T extends MultiChain, ChainIdentifier extends Chai
327
600
  /**
328
601
  * Returns minimum/maximum limits for inputs and outputs for a swap between given tokens
329
602
  *
330
- * @param srcToken
331
- * @param dstToken
603
+ * @param srcToken Source token
604
+ * @param dstToken Destination token
332
605
  */
333
606
  getSwapLimits<A extends Token<ChainIdentifier>, B extends Token<ChainIdentifier>>(srcToken: A, dstToken: B): {
334
607
  input: {min: TokenAmount<string, A>, max?: TokenAmount<string, A>},
@@ -351,7 +624,7 @@ export class SwapperWithChain<T extends MultiChain, ChainIdentifier extends Chai
351
624
  const chainTokens = lp.services[swapType]?.chainTokens?.[this.chainIdentifier];
352
625
  if(chainTokens==null) return;
353
626
  for(let tokenAddress of chainTokens) {
354
- const token = this.swapper.tokens?.[this.chainIdentifier]?.[tokenAddress];
627
+ const token = this.swapper._tokens?.[this.chainIdentifier]?.[tokenAddress];
355
628
  if(token!=null) tokens.push(token as SCToken<ChainIdentifier>);
356
629
  }
357
630
  });
@@ -422,42 +695,8 @@ export class SwapperWithChain<T extends MultiChain, ChainIdentifier extends Chai
422
695
  *
423
696
  * @param signer Signer to use for the new swapper instance
424
697
  */
425
- withChain(signer: T[ChainIdentifier]["Signer"]): SwapperWithSigner<T, ChainIdentifier> {
698
+ withSigner(signer: T[ChainIdentifier]["Signer"]): SwapperWithSigner<T, ChainIdentifier> {
426
699
  return new SwapperWithSigner<T, ChainIdentifier>(this, signer);
427
700
  }
428
701
 
429
-
430
- ///////////////////////////////////
431
- /// Deprecated
432
-
433
- /**
434
- * Returns swap bounds (minimums & maximums) for different swap types & tokens
435
- * @deprecated Use getSwapLimits() instead!
436
- */
437
- getSwapBounds(): SwapBounds {
438
- return this.swapper.getSwapBounds(this.chainIdentifier);
439
- }
440
-
441
- /**
442
- * Returns maximum possible swap amount
443
- * @deprecated Use getSwapLimits() instead!
444
- *
445
- * @param type Type of the swap
446
- * @param token Token of the swap
447
- */
448
- getMaximum(type: SwapType, token: string): bigint {
449
- return this.swapper.getMaximum(this.chainIdentifier, type, token);
450
- }
451
-
452
- /**
453
- * Returns minimum possible swap amount
454
- * @deprecated Use getSwapLimits() instead!
455
- *
456
- * @param type Type of swap
457
- * @param token Token of the swap
458
- */
459
- getMinimum(type: SwapType, token: string): bigint {
460
- return this.swapper.getMinimum(this.chainIdentifier, type, token);
461
- }
462
-
463
702
  }