@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
@@ -3,7 +3,7 @@ import {
3
3
  BitcoinNetwork,
4
4
  ChainType,
5
5
  StorageObject,
6
- IStorageManager, Messenger, ChainInitializer
6
+ IStorageManager, Messenger, ChainInitializer, BtcRelay
7
7
  } from "@atomiqlabs/base";
8
8
  import {SmartChainAssets, SmartChainAssetTickers} from "../SmartChainAssets";
9
9
  import {NostrMessenger} from "@atomiqlabs/messenger-nostr";
@@ -16,9 +16,22 @@ import {RedundantSwapPrice, RedundantSwapPriceAssets} from "../prices/RedundantS
16
16
  import {LocalStorageManager} from "../storage-browser/LocalStorageManager";
17
17
  import {SingleSwapPrice} from "../prices/SingleSwapPrice";
18
18
  import {CustomPriceFunction} from "../types/CustomPriceFunction";
19
- import {MempoolApi, MempoolBitcoinRpc} from "@atomiqlabs/btc-mempool";
19
+ import {MempoolApi, MempoolBitcoinRpc, MempoolBtcRelaySynchronizer} from "@atomiqlabs/btc-mempool";
20
20
 
21
21
  //Helper types
22
+ /**
23
+ * Token definitions for a specific chain
24
+ */
25
+ type TypedChainTokens<T extends ChainInitializer<any, any, any>> = {
26
+ [val in keyof T["tokens"]]: SCToken<T["chainId"]>
27
+ };
28
+ /**
29
+ * Token resolver for a specific chain
30
+ */
31
+ type TypedChainTokenResolver<T extends ChainInitializer<any, any, any>> = {
32
+ getToken: (address: string) => SCToken<T["chainId"]>
33
+ };
34
+
22
35
  type ChainTypeDict<T extends ChainInitializer<any, any, any>> = {[K in T["chainId"]]: T["chainType"]};
23
36
  type ToMultichain<T extends readonly ChainInitializer<any, any, any>[]> =
24
37
  (T extends readonly [infer First extends ChainInitializer<any, any, any>, ...infer Rest extends ChainInitializer<any, any, any>[]]
@@ -45,28 +58,46 @@ type GetAllOptions<T extends readonly ChainInitializer<any, any, any>[]> =
45
58
 
46
59
  //Exported types
47
60
  /**
48
- * Configuration options for creating a typed Swapper instance
61
+ * Configuration options for creating a Swapper instance
62
+ *
49
63
  * @category Core
50
64
  */
51
65
  export type TypedSwapperOptions<T extends readonly ChainInitializer<any, any, any>[]> = {
66
+ /**
67
+ * A dictionary with chain-specific settings, like RPC URLs and others
68
+ */
52
69
  chains: GetAllOptions<T>,
53
- chainStorageCtor?: <T extends StorageObject>(name: string) => IStorageManager<T>,
70
+ /**
71
+ * A function callback to retrieve a specific named storage container for key-value persistency. If not present, the
72
+ * default browser Local Storage adapter is used. When you use the SDK in non-browser based environments you need
73
+ * to provide this callback such that the SDK is able to use a custom storage adapter.
74
+ *
75
+ * @param storageName Name of the container to retrieve
76
+ */
77
+ chainStorageCtor?: <T extends StorageObject>(storageName: string) => IStorageManager<T>,
78
+ /**
79
+ * Maximum allowed pricing difference between intermediary (LP) returned rate and current market rate. In
80
+ * parts-per-million, e.g. 2% is written as `20000`.
81
+ */
54
82
  pricingFeeDifferencePPM?: bigint,
83
+ /**
84
+ * Optional pricing function to use instead of default pricing APIs. See {@link CustomPriceFunction} for details.
85
+ */
55
86
  getPriceFn?: CustomPriceFunction,
87
+ /**
88
+ * Mempool API instance or URLs to use, if not provided the defaults will be used for the specified bitcoin network
89
+ */
56
90
  mempoolApi?: MempoolApi | MempoolBitcoinRpc | string | string[],
91
+ /**
92
+ * Data propagation messenger instance to use for broadcasting data to watchtowers. By default, a Nostr-based
93
+ * messenger is used.
94
+ */
57
95
  messenger?: Messenger,
58
96
  } & SwapperOptions;
59
97
 
60
98
  /**
61
- * Token resolver for a specific chain
62
- * @category Core
63
- */
64
- export type TypedChainTokenResolver<T extends ChainInitializer<any, any, any>> = {
65
- getToken: (address: string) => SCToken<T["chainId"]>
66
- };
67
-
68
- /**
69
- * Token resolvers for all chains
99
+ * Token resolvers for all chains, resolve tokens based on their address
100
+ *
70
101
  * @category Core
71
102
  */
72
103
  export type TypedTokenResolvers<T extends readonly ChainInitializer<any, any, any>[]> =
@@ -74,16 +105,9 @@ export type TypedTokenResolvers<T extends readonly ChainInitializer<any, any, an
74
105
  ? TokenResolverDict<First> & TypedTokenResolvers<Rest>
75
106
  : unknown);
76
107
 
77
- /**
78
- * Token definitions for a specific chain
79
- * @category Core
80
- */
81
- export type TypedChainTokens<T extends ChainInitializer<any, any, any>> = {
82
- [val in keyof T["tokens"]]: SCToken<T["chainId"]>
83
- };
84
-
85
108
  /**
86
109
  * All tokens including Bitcoin tokens
110
+ *
87
111
  * @category Core
88
112
  */
89
113
  export type TypedTokens<T extends readonly ChainInitializer<any, ChainType, any>[]> = GetAllTokens<T> & {
@@ -95,12 +119,14 @@ export type TypedTokens<T extends readonly ChainInitializer<any, ChainType, any>
95
119
 
96
120
  /**
97
121
  * Type alias for a Swapper instance with typed chain support
122
+ *
98
123
  * @category Core
99
124
  */
100
125
  export type TypedSwapper<T extends readonly ChainInitializer<any, ChainType, any>[]> = Swapper<ToMultichain<T>>;
101
126
 
102
127
  /**
103
- * Type alias for a specific swap type on a chain
128
+ * Type alias for a specific swap type
129
+ *
104
130
  * @category Core
105
131
  */
106
132
  export type TypedSwap<
@@ -149,13 +175,20 @@ const nostrUrls: string[] = [
149
175
 
150
176
  /**
151
177
  * Factory class for creating and initializing Swapper instances with typed chain support
178
+ *
152
179
  * @category Core
153
180
  */
154
181
  export class SwapperFactory<T extends readonly ChainInitializer<any, ChainType, any>[]> {
155
182
 
183
+ /**
184
+ * All available tokens for the atomiq SDK
185
+ */
156
186
  Tokens: TypedTokens<T> = {
157
187
  BITCOIN: BitcoinTokens
158
188
  } as any;
189
+ /**
190
+ * Token resolvers for various smart chains supported by the SDK, allow fetching tokens based on their addresses
191
+ */
159
192
  TokenResolver: TypedTokenResolvers<T> = {} as any;
160
193
 
161
194
  constructor(readonly initializers: T) {
@@ -184,6 +217,14 @@ export class SwapperFactory<T extends readonly ChainInitializer<any, ChainType,
184
217
  });
185
218
  }
186
219
 
220
+ /**
221
+ * Returns a new swapper instance with the passed options.
222
+ *
223
+ * The swapper returned here is not yet initialized, be sure to call {@link Swapper.init}, before
224
+ * calling any other functions in the swapper instance.
225
+ *
226
+ * @param options Options for customizing the swapper instance
227
+ */
187
228
  newSwapper(options: TypedSwapperOptions<T>): TypedSwapper<T> {
188
229
  options.bitcoinNetwork ??= BitcoinNetwork.MAINNET;
189
230
  options.storagePrefix ??= "atomiqsdk-"+options.bitcoinNetwork+"-";
@@ -193,11 +234,11 @@ export class SwapperFactory<T extends readonly ChainInitializer<any, ChainType,
193
234
 
194
235
  let bitcoinRpc: MempoolBitcoinRpc;
195
236
  if(options.mempoolApi!=null) {
196
- bitcoinRpc = options.mempoolApi instanceof MempoolBitcoinRpc ? options.mempoolApi : new MempoolBitcoinRpc(options.mempoolApi);
237
+ bitcoinRpc = options.mempoolApi instanceof MempoolBitcoinRpc ? options.mempoolApi : new MempoolBitcoinRpc(options.mempoolApi, options.bitcoinNetwork);
197
238
  } else {
198
239
  const urls = mempoolUrls[options.bitcoinNetwork];
199
240
  if(urls==null) throw new Error(`No pre-configured urls for ${BitcoinNetwork[options.bitcoinNetwork]} network were found, please explicitly pass mempoolApi parameter!`);
200
- bitcoinRpc = new MempoolBitcoinRpc(urls);
241
+ bitcoinRpc = new MempoolBitcoinRpc(urls, options.bitcoinNetwork);
201
242
  }
202
243
 
203
244
  const pricingAssets: (RedundantSwapPriceAssets<ToMultichain<T>>[number] & {ticker: string, name: string})[] = [];
@@ -235,6 +276,8 @@ export class SwapperFactory<T extends readonly ChainInitializer<any, ChainType,
235
276
 
236
277
  return new Swapper<ToMultichain<T>>(
237
278
  bitcoinRpc,
279
+ bitcoinRpc,
280
+ (btcRelay: BtcRelay<any, any, any>) => new MempoolBtcRelaySynchronizer(btcRelay, bitcoinRpc),
238
281
  chains as any,
239
282
  swapPricing,
240
283
  pricingAssets,
@@ -243,6 +286,12 @@ export class SwapperFactory<T extends readonly ChainInitializer<any, ChainType,
243
286
  );
244
287
  }
245
288
 
289
+ /**
290
+ * Returns a new and already initialized swapper instance with the passed options. There is no need
291
+ * to call {@link Swapper.init} anymore.
292
+ *
293
+ * @param options Options for customizing the swapper instance
294
+ */
246
295
  async newSwapperInitialized(options: TypedSwapperOptions<T>): Promise<TypedSwapper<T>> {
247
296
  const swapper = this.newSwapper(options);
248
297
  await swapper.init();
@@ -16,7 +16,9 @@ import {isLNURLPay, LNURLPay} from "../types/lnurl/LNURLPay";
16
16
  import {toBitcoinWallet} from "../utils/BitcoinWalletUtils";
17
17
 
18
18
  /**
19
- * Utility class providing helper methods for swap operations
19
+ * Utility class providing helper methods for address parsing, token balances, serialization
20
+ * and other miscellaneous things.
21
+ *
20
22
  * @category Core
21
23
  */
22
24
  export class SwapperUtils<T extends MultiChain> {
@@ -25,42 +27,48 @@ export class SwapperUtils<T extends MultiChain> {
25
27
  private readonly root: Swapper<T>;
26
28
 
27
29
  constructor(root: Swapper<T>) {
28
- this.bitcoinNetwork = root.bitcoinNetwork;
30
+ this.bitcoinNetwork = root._btcNetwork;
29
31
  this.root = root;
30
32
  }
31
33
 
34
+ /**
35
+ * Checks whether a passed address is a valid address on the smart chain
36
+ *
37
+ * @param address Address
38
+ * @param chainId Smart chain identifier string to check the address for
39
+ */
32
40
  isValidSmartChainAddress(address: string, chainId?: ChainIds<T>): boolean {
33
41
  if(chainId!=null) {
34
- if(this.root.chains[chainId]==null) throw new Error(`Unknown chain id: ${chainId}`);
35
- return this.root.chains[chainId].chainInterface.isValidAddress(address);
42
+ if(this.root._chains[chainId]==null) throw new Error(`Unknown chain id: ${chainId}`);
43
+ return this.root._chains[chainId].chainInterface.isValidAddress(address);
36
44
  }
37
45
  for(let chainId of this.root.getSmartChains()) {
38
- if(this.root.chains[chainId].chainInterface.isValidAddress(address)) return true;
46
+ if(this.root._chains[chainId].chainInterface.isValidAddress(address)) return true;
39
47
  }
40
48
  return false;
41
49
  }
42
50
 
43
51
  /**
44
- * Returns true if string is a valid BOLT11 bitcoin lightning invoice
52
+ * Checks whether an address is a valid BOLT11 bitcoin lightning invoice
45
53
  *
46
- * @param lnpr
54
+ * @param address Address to check
47
55
  */
48
- isLightningInvoice(lnpr: string): boolean {
56
+ isLightningInvoice(address: string): boolean {
49
57
  try {
50
- bolt11Decode(lnpr);
58
+ bolt11Decode(address);
51
59
  return true;
52
60
  } catch (e) {}
53
61
  return false;
54
62
  }
55
63
 
56
64
  /**
57
- * Returns true if string is a valid bitcoin address
65
+ * Checks whether an address is a valid bitcoin address
58
66
  *
59
- * @param addr
67
+ * @param address Address to check
60
68
  */
61
- isValidBitcoinAddress(addr: string): boolean {
69
+ isValidBitcoinAddress(address: string): boolean {
62
70
  try {
63
- Address(this.bitcoinNetwork).decode(addr);
71
+ Address(this.bitcoinNetwork).decode(address);
64
72
  return true;
65
73
  } catch (e) {
66
74
  return false;
@@ -68,32 +76,32 @@ export class SwapperUtils<T extends MultiChain> {
68
76
  }
69
77
 
70
78
  /**
71
- * Returns true if string is a valid BOLT11 bitcoin lightning invoice WITH AMOUNT
79
+ * Checks whether an address is a valid BOLT11 bitcoin lightning invoice WITH AMOUNT
72
80
  *
73
- * @param lnpr
81
+ * @param address Address to check
74
82
  */
75
- isValidLightningInvoice(lnpr: string): boolean {
83
+ isValidLightningInvoice(address: string): boolean {
76
84
  try {
77
- const parsed = bolt11Decode(lnpr);
85
+ const parsed = bolt11Decode(address);
78
86
  if(parsed.millisatoshis!=null) return true;
79
87
  } catch (e) {}
80
88
  return false;
81
89
  }
82
90
 
83
91
  /**
84
- * Returns true if string is a valid LNURL (no checking on type is performed)
92
+ * Checks whether an address is a valid LNURL (no checking on type is performed)
85
93
  *
86
- * @param lnurl
94
+ * @param address Address to check
87
95
  */
88
- isValidLNURL(lnurl: string): boolean {
89
- return LNURL.isLNURL(lnurl);
96
+ isValidLNURL(address: string): boolean {
97
+ return LNURL.isLNURL(address);
90
98
  }
91
99
 
92
100
  /**
93
101
  * Returns type and data about an LNURL
94
102
  *
95
- * @param lnurl
96
- * @param shouldRetry
103
+ * @param lnurl LNURL link to check, can be either `pay` or `withdraw` type
104
+ * @param shouldRetry Optional whether HTTP requests should retried on failure
97
105
  */
98
106
  getLNURLTypeAndData(lnurl: string, shouldRetry?: boolean): Promise<LNURLPay | LNURLWithdraw | null> {
99
107
  return LNURL.getLNURLType(lnurl, shouldRetry);
@@ -227,7 +235,7 @@ export class SwapperUtils<T extends MultiChain> {
227
235
  max?: TokenAmount
228
236
  } | null {
229
237
  for(let chainId of this.root.getSmartChains()) {
230
- if(this.root.chains[chainId].chainInterface.isValidAddress(resultText)) {
238
+ if(this.root._chains[chainId].chainInterface.isValidAddress(resultText)) {
231
239
  return {
232
240
  address: resultText,
233
241
  type: chainId,
@@ -239,12 +247,12 @@ export class SwapperUtils<T extends MultiChain> {
239
247
  }
240
248
 
241
249
  /**
242
- * General parser for bitcoin addresses, LNURLs, lightning invoices, smart chain addresses, also fetches LNURL data
243
- * (hence returns Promise)
250
+ * General parser for bitcoin addresses, LNURLs, lightning invoices, smart chain addresses. Also fetches LNURL data
251
+ * (hence async and returns Promise).
244
252
  *
245
253
  * @param addressString Address to parse
246
254
  * @throws {Error} Error in address parsing
247
- * @returns Address data or null if address doesn't conform to any known format
255
+ * @returns Address data or `null` if address doesn't conform to any known format
248
256
  */
249
257
  async parseAddress(addressString: string): Promise<{
250
258
  address: string,
@@ -286,11 +294,11 @@ export class SwapperUtils<T extends MultiChain> {
286
294
 
287
295
  /**
288
296
  * Synchronous general parser for bitcoin addresses, LNURLs, lightning invoices, smart chain addresses, doesn't fetch
289
- * LNURL data, reports swapType: null instead to prevent returning a Promise
297
+ * LNURL data, returns `swapType: null` instead to prevent returning a Promise
290
298
  *
291
299
  * @param addressString Address to parse
292
300
  * @throws {Error} Error in address parsing
293
- * @returns Address data or null if address doesn't conform to any known format
301
+ * @returns Address data or `null` if address doesn't conform to any known format
294
302
  */
295
303
  parseAddressSync(addressString: string): {
296
304
  address: string,
@@ -330,14 +338,15 @@ export class SwapperUtils<T extends MultiChain> {
330
338
  }
331
339
 
332
340
  /**
333
- * Returns a random PSBT that can be used for fee estimation, the last output (the LP output) is omitted
334
- * to allow for coinselection algorithm to determine maximum sendable amount there
341
+ * Returns a random PSBT that can be used for fee estimation for SPV vault (UTXO-controlled vault) based swaps
342
+ * {@link SwapType.SPV_VAULT_FROM_BTC}, the last output (the LP output) is omitted to allow for coinselection
343
+ * algorithm to determine maximum sendable amount there
335
344
  *
336
- * @param chainIdentifier
337
- * @param includeGasToken Whether to return the PSBT also with the gas token amount (increases the vSize by 8)
345
+ * @param chainIdentifier Smart chain to swap to
346
+ * @param includeGasToken Whether to return the PSBT also with the gas token amount (increases the vSize by 8)
338
347
  */
339
348
  getRandomSpvVaultPsbt<ChainIdentifier extends ChainIds<T>>(chainIdentifier: ChainIdentifier, includeGasToken?: boolean): Transaction {
340
- const wrapper = this.root.chains[chainIdentifier].wrappers[SwapType.SPV_VAULT_FROM_BTC];
349
+ const wrapper = this.root._chains[chainIdentifier].wrappers[SwapType.SPV_VAULT_FROM_BTC];
341
350
  if(wrapper==null) throw new Error("Chain doesn't support spv vault swaps!");
342
351
  return wrapper.getDummySwapPsbt(includeGasToken);
343
352
  }
@@ -345,8 +354,10 @@ export class SwapperUtils<T extends MultiChain> {
345
354
  /**
346
355
  * Returns the spendable balance of a bitcoin wallet
347
356
  *
348
- * @param wallet
349
- * @param targetChain
357
+ * @param wallet Bitcoin wallet to check the spendable balance for, can either be a simple
358
+ * bitcoin address string or a wallet object
359
+ * @param targetChain Destination smart chain for the swap, the ensures proper spendable balance
360
+ * is estimated taking into consideration different swap primitives available on different chains
350
361
  * @param options Additional options
351
362
  */
352
363
  async getBitcoinSpendableBalance(
@@ -363,9 +374,9 @@ export class SwapperUtils<T extends MultiChain> {
363
374
  }> {
364
375
  let bitcoinWallet: IBitcoinWallet;
365
376
  if(typeof(wallet)==="string") {
366
- bitcoinWallet = new SingleAddressBitcoinWallet(this.root.bitcoinRpc, this.bitcoinNetwork, {address: wallet, publicKey: ""});
377
+ bitcoinWallet = new SingleAddressBitcoinWallet(this.root._bitcoinRpc, this.bitcoinNetwork, {address: wallet, publicKey: ""});
367
378
  } else {
368
- bitcoinWallet = toBitcoinWallet(wallet, this.root.bitcoinRpc, this.bitcoinNetwork);
379
+ bitcoinWallet = toBitcoinWallet(wallet, this.root._bitcoinRpc, this.bitcoinNetwork);
369
380
  }
370
381
 
371
382
  let feeRate = options?.feeRate ?? await bitcoinWallet.getFeeRate();
@@ -385,14 +396,15 @@ export class SwapperUtils<T extends MultiChain> {
385
396
  }
386
397
 
387
398
  /**
388
- * Returns the maximum spendable balance of the wallet, deducting the fee needed to initiate a swap for native balances
399
+ * Returns the maximum spendable balance of the smart chain wallet, deducting the fee needed
400
+ * to initiate a swap for native balances
389
401
  */
390
402
  async getSpendableBalance<ChainIdentifier extends ChainIds<T>>(wallet: string | T[ChainIdentifier]["Signer"] | T[ChainIdentifier]["NativeSigner"], token: SCToken<ChainIdentifier>, options?: {
391
403
  feeMultiplier?: number,
392
404
  feeRate?: any
393
405
  }): Promise<TokenAmount> {
394
- if(this.root.chains[token.chainId]==null) throw new Error("Invalid chain identifier! Unknown chain: "+token.chainId);
395
- const {swapContract, chainInterface} = this.root.chains[token.chainId];
406
+ if(this.root._chains[token.chainId]==null) throw new Error("Invalid chain identifier! Unknown chain: "+token.chainId);
407
+ const {swapContract, chainInterface} = this.root._chains[token.chainId];
396
408
 
397
409
  let signer: string;
398
410
  if(typeof(wallet)==="string") {
@@ -433,11 +445,11 @@ export class SwapperUtils<T extends MultiChain> {
433
445
  }
434
446
 
435
447
  /**
436
- * Returns the address of the native currency of the chain
448
+ * Returns the address of the native currency of the smart chain
437
449
  */
438
450
  getNativeToken<ChainIdentifier extends ChainIds<T>>(chainIdentifier: ChainIdentifier): SCToken<ChainIdentifier> {
439
- if(this.root.chains[chainIdentifier]==null) throw new Error("Invalid chain identifier! Unknown chain: "+chainIdentifier);
440
- return this.root.tokens[chainIdentifier][this.root.chains[chainIdentifier].chainInterface.getNativeCurrencyAddress()] as SCToken<ChainIdentifier>;
451
+ if(this.root._chains[chainIdentifier]==null) throw new Error("Invalid chain identifier! Unknown chain: "+chainIdentifier);
452
+ return this.root._tokens[chainIdentifier][this.root._chains[chainIdentifier].chainInterface.getNativeCurrencyAddress()] as SCToken<ChainIdentifier>;
441
453
  }
442
454
 
443
455
  /**
@@ -446,8 +458,8 @@ export class SwapperUtils<T extends MultiChain> {
446
458
  * @param chainIdentifier
447
459
  */
448
460
  randomSigner<ChainIdentifier extends ChainIds<T>>(chainIdentifier: ChainIdentifier): T[ChainIdentifier]["Signer"] {
449
- if(this.root.chains[chainIdentifier]==null) throw new Error("Invalid chain identifier! Unknown chain: "+chainIdentifier);
450
- return this.root.chains[chainIdentifier].chainInterface.randomSigner();
461
+ if(this.root._chains[chainIdentifier]==null) throw new Error("Invalid chain identifier! Unknown chain: "+chainIdentifier);
462
+ return this.root._chains[chainIdentifier].chainInterface.randomSigner();
451
463
  }
452
464
 
453
465
  /**
@@ -456,12 +468,18 @@ export class SwapperUtils<T extends MultiChain> {
456
468
  * @param chainIdentifier
457
469
  */
458
470
  randomAddress<ChainIdentifier extends ChainIds<T>>(chainIdentifier: ChainIdentifier): string {
459
- if(this.root.chains[chainIdentifier]==null) throw new Error("Invalid chain identifier! Unknown chain: "+chainIdentifier);
460
- return this.root.chains[chainIdentifier].chainInterface.randomAddress();
471
+ if(this.root._chains[chainIdentifier]==null) throw new Error("Invalid chain identifier! Unknown chain: "+chainIdentifier);
472
+ return this.root._chains[chainIdentifier].chainInterface.randomAddress();
461
473
  }
462
474
 
463
475
  /**
464
476
  * Signs and broadcasts the supplied smart chain transaction
477
+ *
478
+ * @param chainIdentifier Smart chain identifier string
479
+ * @param signer Signer to use for signing the transactions
480
+ * @param txs An array of transactions to sign
481
+ * @param abortSignal Abort signal
482
+ * @param onBeforePublish Callback invoked before a transaction is sent (invoked for every transaction to be sent)
465
483
  */
466
484
  sendAndConfirm<ChainIdentifier extends ChainIds<T>>(
467
485
  chainIdentifier: ChainIdentifier,
@@ -470,12 +488,17 @@ export class SwapperUtils<T extends MultiChain> {
470
488
  abortSignal?: AbortSignal,
471
489
  onBeforePublish?: (txId: string, rawTx: string) => Promise<void>
472
490
  ): Promise<string[]> {
473
- if(this.root.chains[chainIdentifier]==null) throw new Error("Invalid chain identifier! Unknown chain: "+chainIdentifier);
474
- return this.root.chains[chainIdentifier].chainInterface.sendAndConfirm(signer, txs, true, abortSignal, false, onBeforePublish);
491
+ if(this.root._chains[chainIdentifier]==null) throw new Error("Invalid chain identifier! Unknown chain: "+chainIdentifier);
492
+ return this.root._chains[chainIdentifier].chainInterface.sendAndConfirm(signer, txs, true, abortSignal, false, onBeforePublish);
475
493
  }
476
494
 
477
495
  /**
478
496
  * Broadcasts already signed smart chain transactions
497
+ *
498
+ * @param chainIdentifier Smart chain identifier string
499
+ * @param txs An array of already signed transactions
500
+ * @param abortSignal Abort signal
501
+ * @param onBeforePublish Callback invoked before a transaction is sent (invoked for every transaction to be sent)
479
502
  */
480
503
  sendSignedAndConfirm<ChainIdentifier extends ChainIds<T>>(
481
504
  chainIdentifier: ChainIdentifier,
@@ -483,28 +506,52 @@ export class SwapperUtils<T extends MultiChain> {
483
506
  abortSignal?: AbortSignal,
484
507
  onBeforePublish?: (txId: string, rawTx: string) => Promise<void>
485
508
  ): Promise<string[]> {
486
- if(this.root.chains[chainIdentifier]==null) throw new Error("Invalid chain identifier! Unknown chain: "+chainIdentifier);
487
- return this.root.chains[chainIdentifier].chainInterface.sendSignedAndConfirm(txs, true, abortSignal, false, onBeforePublish);
509
+ if(this.root._chains[chainIdentifier]==null) throw new Error("Invalid chain identifier! Unknown chain: "+chainIdentifier);
510
+ return this.root._chains[chainIdentifier].chainInterface.sendSignedAndConfirm(txs, true, abortSignal, false, onBeforePublish);
488
511
  }
489
512
 
513
+ /**
514
+ * Serializes an unsigned smart chain transaction
515
+ *
516
+ * @param chainIdentifier Smart chain string identifier
517
+ * @param tx An unsigned transaction to serialize
518
+ */
490
519
  serializeUnsignedTransaction<ChainIdentifier extends ChainIds<T>>(chainIdentifier: ChainIdentifier, tx: T[ChainIdentifier]["TX"]): Promise<string> {
491
- if(this.root.chains[chainIdentifier]==null) throw new Error("Invalid chain identifier! Unknown chain: "+chainIdentifier);
492
- return this.root.chains[chainIdentifier].chainInterface.serializeTx(tx);
520
+ if(this.root._chains[chainIdentifier]==null) throw new Error("Invalid chain identifier! Unknown chain: "+chainIdentifier);
521
+ return this.root._chains[chainIdentifier].chainInterface.serializeTx(tx);
493
522
  }
494
523
 
524
+ /**
525
+ * Deserializes an unsigned smart chain transaction
526
+ *
527
+ * @param chainIdentifier Smart chain string identifier
528
+ * @param tx Serialized unsigned transaction
529
+ */
495
530
  deserializeUnsignedTransaction<ChainIdentifier extends ChainIds<T>>(chainIdentifier: ChainIdentifier, tx: string): Promise<T[ChainIdentifier]["TX"]> {
496
- if(this.root.chains[chainIdentifier]==null) throw new Error("Invalid chain identifier! Unknown chain: "+chainIdentifier);
497
- return this.root.chains[chainIdentifier].chainInterface.deserializeTx(tx);
531
+ if(this.root._chains[chainIdentifier]==null) throw new Error("Invalid chain identifier! Unknown chain: "+chainIdentifier);
532
+ return this.root._chains[chainIdentifier].chainInterface.deserializeTx(tx);
498
533
  }
499
534
 
535
+ /**
536
+ * Serializes a signed smart chain transaction
537
+ *
538
+ * @param chainIdentifier Smart chain string identifier
539
+ * @param tx A signed transaction to serialize
540
+ */
500
541
  serializeSignedTransaction<ChainIdentifier extends ChainIds<T>>(chainIdentifier: ChainIdentifier, tx: T[ChainIdentifier]["SignedTXType"]): Promise<string> {
501
- if(this.root.chains[chainIdentifier]==null) throw new Error("Invalid chain identifier! Unknown chain: "+chainIdentifier);
502
- return this.root.chains[chainIdentifier].chainInterface.serializeSignedTx(tx);
542
+ if(this.root._chains[chainIdentifier]==null) throw new Error("Invalid chain identifier! Unknown chain: "+chainIdentifier);
543
+ return this.root._chains[chainIdentifier].chainInterface.serializeSignedTx(tx);
503
544
  }
504
545
 
546
+ /**
547
+ * Deserializes a signed smart chain transaction
548
+ *
549
+ * @param chainIdentifier Smart chain string identifier
550
+ * @param tx Serialized signed transaction
551
+ */
505
552
  deserializeSignedTransaction<ChainIdentifier extends ChainIds<T>>(chainIdentifier: ChainIdentifier, tx: string): Promise<T[ChainIdentifier]["SignedTXType"]> {
506
- if(this.root.chains[chainIdentifier]==null) throw new Error("Invalid chain identifier! Unknown chain: "+chainIdentifier);
507
- return this.root.chains[chainIdentifier].chainInterface.deserializeSignedTx(tx);
553
+ if(this.root._chains[chainIdentifier]==null) throw new Error("Invalid chain identifier! Unknown chain: "+chainIdentifier);
554
+ return this.root._chains[chainIdentifier].chainInterface.deserializeSignedTx(tx);
508
555
  }
509
556
 
510
557
  }