@atomiqlabs/sdk 8.6.4 → 8.6.6

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 (239) hide show
  1. package/dist/SmartChainAssets.d.ts +181 -181
  2. package/dist/SmartChainAssets.js +181 -181
  3. package/dist/bitcoin/coinselect2/accumulative.d.ts +6 -6
  4. package/dist/bitcoin/coinselect2/accumulative.js +51 -52
  5. package/dist/bitcoin/coinselect2/blackjack.d.ts +6 -6
  6. package/dist/bitcoin/coinselect2/blackjack.js +37 -38
  7. package/dist/bitcoin/coinselect2/index.d.ts +17 -19
  8. package/dist/bitcoin/coinselect2/index.js +69 -69
  9. package/dist/bitcoin/coinselect2/utils.d.ts +75 -77
  10. package/dist/bitcoin/coinselect2/utils.js +123 -123
  11. package/dist/bitcoin/wallet/BitcoinWallet.d.ts +128 -130
  12. package/dist/bitcoin/wallet/BitcoinWallet.js +322 -322
  13. package/dist/bitcoin/wallet/IBitcoinWallet.d.ts +78 -78
  14. package/dist/bitcoin/wallet/IBitcoinWallet.js +20 -21
  15. package/dist/bitcoin/wallet/SingleAddressBitcoinWallet.d.ts +99 -101
  16. package/dist/bitcoin/wallet/SingleAddressBitcoinWallet.js +176 -176
  17. package/dist/enums/FeeType.d.ts +15 -15
  18. package/dist/enums/FeeType.js +19 -19
  19. package/dist/enums/SwapAmountType.d.ts +15 -15
  20. package/dist/enums/SwapAmountType.js +19 -19
  21. package/dist/enums/SwapDirection.d.ts +15 -15
  22. package/dist/enums/SwapDirection.js +19 -19
  23. package/dist/enums/SwapSide.d.ts +15 -15
  24. package/dist/enums/SwapSide.js +19 -19
  25. package/dist/enums/SwapType.d.ts +75 -75
  26. package/dist/enums/SwapType.js +79 -79
  27. package/dist/errors/IntermediaryError.d.ts +13 -13
  28. package/dist/errors/IntermediaryError.js +27 -27
  29. package/dist/errors/RequestError.d.ts +32 -32
  30. package/dist/errors/RequestError.js +54 -54
  31. package/dist/errors/UserError.d.ts +8 -8
  32. package/dist/errors/UserError.js +16 -16
  33. package/dist/events/UnifiedSwapEventListener.d.ts +23 -23
  34. package/dist/events/UnifiedSwapEventListener.js +130 -130
  35. package/dist/http/HttpUtils.d.ts +27 -27
  36. package/dist/http/HttpUtils.js +90 -91
  37. package/dist/http/paramcoders/IParamReader.d.ts +8 -8
  38. package/dist/http/paramcoders/IParamReader.js +2 -2
  39. package/dist/http/paramcoders/ParamDecoder.d.ts +42 -44
  40. package/dist/http/paramcoders/ParamDecoder.js +137 -137
  41. package/dist/http/paramcoders/ParamEncoder.d.ts +18 -20
  42. package/dist/http/paramcoders/ParamEncoder.js +36 -36
  43. package/dist/http/paramcoders/SchemaVerifier.d.ts +26 -26
  44. package/dist/http/paramcoders/SchemaVerifier.js +145 -145
  45. package/dist/http/paramcoders/client/ResponseParamDecoder.d.ts +11 -11
  46. package/dist/http/paramcoders/client/ResponseParamDecoder.js +57 -57
  47. package/dist/http/paramcoders/client/StreamParamEncoder.d.ts +11 -13
  48. package/dist/http/paramcoders/client/StreamParamEncoder.js +26 -26
  49. package/dist/http/paramcoders/client/StreamingFetchPromise.d.ts +16 -16
  50. package/dist/http/paramcoders/client/StreamingFetchPromise.js +173 -174
  51. package/dist/index.d.ts +85 -85
  52. package/dist/index.js +158 -158
  53. package/dist/intermediaries/Intermediary.d.ts +157 -157
  54. package/dist/intermediaries/Intermediary.js +142 -142
  55. package/dist/intermediaries/IntermediaryDiscovery.d.ts +198 -199
  56. package/dist/intermediaries/IntermediaryDiscovery.js +406 -406
  57. package/dist/intermediaries/apis/IntermediaryAPI.d.ts +437 -438
  58. package/dist/intermediaries/apis/IntermediaryAPI.js +603 -602
  59. package/dist/intermediaries/apis/TrustedIntermediaryAPI.d.ts +155 -155
  60. package/dist/intermediaries/apis/TrustedIntermediaryAPI.js +137 -137
  61. package/dist/lnurl/LNURL.d.ts +102 -102
  62. package/dist/lnurl/LNURL.js +321 -321
  63. package/dist/prices/RedundantSwapPrice.d.ts +110 -110
  64. package/dist/prices/RedundantSwapPrice.js +222 -222
  65. package/dist/prices/SingleSwapPrice.d.ts +34 -34
  66. package/dist/prices/SingleSwapPrice.js +44 -44
  67. package/dist/prices/SwapPriceWithChain.d.ts +107 -107
  68. package/dist/prices/SwapPriceWithChain.js +128 -128
  69. package/dist/prices/abstract/ICachedSwapPrice.d.ts +28 -28
  70. package/dist/prices/abstract/ICachedSwapPrice.js +62 -62
  71. package/dist/prices/abstract/IPriceProvider.d.ts +81 -81
  72. package/dist/prices/abstract/IPriceProvider.js +74 -74
  73. package/dist/prices/abstract/ISwapPrice.d.ts +168 -166
  74. package/dist/prices/abstract/ISwapPrice.js +279 -267
  75. package/dist/prices/providers/BinancePriceProvider.d.ts +23 -23
  76. package/dist/prices/providers/BinancePriceProvider.js +30 -30
  77. package/dist/prices/providers/CoinGeckoPriceProvider.d.ts +23 -23
  78. package/dist/prices/providers/CoinGeckoPriceProvider.js +29 -29
  79. package/dist/prices/providers/CoinPaprikaPriceProvider.d.ts +25 -25
  80. package/dist/prices/providers/CoinPaprikaPriceProvider.js +29 -29
  81. package/dist/prices/providers/CustomPriceProvider.d.ts +24 -24
  82. package/dist/prices/providers/CustomPriceProvider.js +35 -35
  83. package/dist/prices/providers/KrakenPriceProvider.d.ts +38 -38
  84. package/dist/prices/providers/KrakenPriceProvider.js +45 -45
  85. package/dist/prices/providers/OKXPriceProvider.d.ts +34 -34
  86. package/dist/prices/providers/OKXPriceProvider.js +29 -29
  87. package/dist/prices/providers/abstract/ExchangePriceProvider.d.ts +17 -17
  88. package/dist/prices/providers/abstract/ExchangePriceProvider.js +21 -21
  89. package/dist/prices/providers/abstract/HttpPriceProvider.d.ts +7 -7
  90. package/dist/prices/providers/abstract/HttpPriceProvider.js +12 -12
  91. package/dist/storage/IUnifiedStorage.d.ts +85 -85
  92. package/dist/storage/IUnifiedStorage.js +2 -2
  93. package/dist/storage/UnifiedSwapStorage.d.ts +114 -114
  94. package/dist/storage/UnifiedSwapStorage.js +116 -116
  95. package/dist/storage-browser/IndexedDBUnifiedStorage.d.ts +63 -63
  96. package/dist/storage-browser/IndexedDBUnifiedStorage.js +298 -298
  97. package/dist/storage-browser/LocalStorageManager.d.ts +49 -49
  98. package/dist/storage-browser/LocalStorageManager.js +93 -93
  99. package/dist/swapper/Swapper.d.ts +686 -687
  100. package/dist/swapper/Swapper.js +1603 -1603
  101. package/dist/swapper/SwapperFactory.d.ts +135 -135
  102. package/dist/swapper/SwapperFactory.js +162 -162
  103. package/dist/swapper/SwapperUtils.d.ts +200 -200
  104. package/dist/swapper/SwapperUtils.js +467 -467
  105. package/dist/swapper/SwapperWithChain.d.ts +404 -404
  106. package/dist/swapper/SwapperWithChain.js +469 -469
  107. package/dist/swapper/SwapperWithSigner.d.ts +322 -322
  108. package/dist/swapper/SwapperWithSigner.js +318 -318
  109. package/dist/swaps/IAddressSwap.d.ts +22 -22
  110. package/dist/swaps/IAddressSwap.js +13 -14
  111. package/dist/swaps/IBTCWalletSwap.d.ts +73 -73
  112. package/dist/swaps/IBTCWalletSwap.js +17 -18
  113. package/dist/swaps/IClaimableSwap.d.ts +49 -49
  114. package/dist/swaps/IClaimableSwap.js +14 -15
  115. package/dist/swaps/IClaimableSwapWrapper.d.ts +15 -15
  116. package/dist/swaps/IClaimableSwapWrapper.js +2 -2
  117. package/dist/swaps/IRefundableSwap.d.ts +43 -43
  118. package/dist/swaps/IRefundableSwap.js +13 -14
  119. package/dist/swaps/ISwap.d.ts +386 -387
  120. package/dist/swaps/ISwap.js +346 -341
  121. package/dist/swaps/ISwapWithGasDrop.d.ts +21 -21
  122. package/dist/swaps/ISwapWithGasDrop.js +11 -12
  123. package/dist/swaps/ISwapWrapper.d.ts +283 -284
  124. package/dist/swaps/ISwapWrapper.js +353 -353
  125. package/dist/swaps/escrow_swaps/IEscrowSelfInitSwap.d.ts +98 -98
  126. package/dist/swaps/escrow_swaps/IEscrowSelfInitSwap.js +126 -126
  127. package/dist/swaps/escrow_swaps/IEscrowSwap.d.ts +133 -135
  128. package/dist/swaps/escrow_swaps/IEscrowSwap.js +169 -169
  129. package/dist/swaps/escrow_swaps/IEscrowSwapWrapper.d.ts +114 -115
  130. package/dist/swaps/escrow_swaps/IEscrowSwapWrapper.js +134 -134
  131. package/dist/swaps/escrow_swaps/frombtc/IFromBTCLNWrapper.d.ts +98 -101
  132. package/dist/swaps/escrow_swaps/frombtc/IFromBTCLNWrapper.js +130 -130
  133. package/dist/swaps/escrow_swaps/frombtc/IFromBTCSelfInitSwap.d.ts +162 -162
  134. package/dist/swaps/escrow_swaps/frombtc/IFromBTCSelfInitSwap.js +190 -190
  135. package/dist/swaps/escrow_swaps/frombtc/IFromBTCWrapper.d.ts +58 -58
  136. package/dist/swaps/escrow_swaps/frombtc/IFromBTCWrapper.js +78 -78
  137. package/dist/swaps/escrow_swaps/frombtc/ln/FromBTCLNSwap.d.ts +529 -531
  138. package/dist/swaps/escrow_swaps/frombtc/ln/FromBTCLNSwap.js +1285 -1285
  139. package/dist/swaps/escrow_swaps/frombtc/ln/FromBTCLNWrapper.d.ts +181 -184
  140. package/dist/swaps/escrow_swaps/frombtc/ln/FromBTCLNWrapper.js +418 -417
  141. package/dist/swaps/escrow_swaps/frombtc/ln_auto/FromBTCLNAutoSwap.d.ts +581 -583
  142. package/dist/swaps/escrow_swaps/frombtc/ln_auto/FromBTCLNAutoSwap.js +1371 -1371
  143. package/dist/swaps/escrow_swaps/frombtc/ln_auto/FromBTCLNAutoWrapper.d.ts +225 -228
  144. package/dist/swaps/escrow_swaps/frombtc/ln_auto/FromBTCLNAutoWrapper.js +506 -506
  145. package/dist/swaps/escrow_swaps/frombtc/onchain/FromBTCSwap.d.ts +458 -458
  146. package/dist/swaps/escrow_swaps/frombtc/onchain/FromBTCSwap.js +1126 -1126
  147. package/dist/swaps/escrow_swaps/frombtc/onchain/FromBTCWrapper.d.ts +190 -191
  148. package/dist/swaps/escrow_swaps/frombtc/onchain/FromBTCWrapper.js +378 -377
  149. package/dist/swaps/escrow_swaps/tobtc/IToBTCSwap.d.ts +403 -403
  150. package/dist/swaps/escrow_swaps/tobtc/IToBTCSwap.js +924 -924
  151. package/dist/swaps/escrow_swaps/tobtc/IToBTCWrapper.d.ts +62 -62
  152. package/dist/swaps/escrow_swaps/tobtc/IToBTCWrapper.js +112 -112
  153. package/dist/swaps/escrow_swaps/tobtc/ln/ToBTCLNSwap.d.ts +125 -127
  154. package/dist/swaps/escrow_swaps/tobtc/ln/ToBTCLNSwap.js +256 -256
  155. package/dist/swaps/escrow_swaps/tobtc/ln/ToBTCLNWrapper.d.ts +241 -242
  156. package/dist/swaps/escrow_swaps/tobtc/ln/ToBTCLNWrapper.js +520 -520
  157. package/dist/swaps/escrow_swaps/tobtc/onchain/ToBTCSwap.d.ts +73 -73
  158. package/dist/swaps/escrow_swaps/tobtc/onchain/ToBTCSwap.js +155 -155
  159. package/dist/swaps/escrow_swaps/tobtc/onchain/ToBTCWrapper.d.ts +127 -128
  160. package/dist/swaps/escrow_swaps/tobtc/onchain/ToBTCWrapper.js +278 -278
  161. package/dist/swaps/spv_swaps/SpvFromBTCSwap.d.ts +630 -630
  162. package/dist/swaps/spv_swaps/SpvFromBTCSwap.js +1443 -1443
  163. package/dist/swaps/spv_swaps/SpvFromBTCWrapper.d.ts +213 -207
  164. package/dist/swaps/spv_swaps/SpvFromBTCWrapper.js +756 -755
  165. package/dist/swaps/trusted/ln/LnForGasSwap.d.ts +261 -261
  166. package/dist/swaps/trusted/ln/LnForGasSwap.js +511 -511
  167. package/dist/swaps/trusted/ln/LnForGasWrapper.d.ts +40 -40
  168. package/dist/swaps/trusted/ln/LnForGasWrapper.js +82 -82
  169. package/dist/swaps/trusted/onchain/OnchainForGasSwap.d.ts +342 -342
  170. package/dist/swaps/trusted/onchain/OnchainForGasSwap.js +715 -715
  171. package/dist/swaps/trusted/onchain/OnchainForGasWrapper.d.ts +68 -69
  172. package/dist/swaps/trusted/onchain/OnchainForGasWrapper.js +92 -92
  173. package/dist/types/AmountData.d.ts +10 -10
  174. package/dist/types/AmountData.js +2 -2
  175. package/dist/types/CustomPriceFunction.d.ts +11 -11
  176. package/dist/types/CustomPriceFunction.js +2 -2
  177. package/dist/types/PriceInfoType.d.ts +28 -28
  178. package/dist/types/PriceInfoType.js +56 -57
  179. package/dist/types/SwapExecutionAction.d.ts +88 -88
  180. package/dist/types/SwapExecutionAction.js +2 -2
  181. package/dist/types/SwapStateInfo.d.ts +5 -5
  182. package/dist/types/SwapStateInfo.js +2 -2
  183. package/dist/types/SwapWithSigner.d.ts +17 -17
  184. package/dist/types/SwapWithSigner.js +42 -43
  185. package/dist/types/Token.d.ts +99 -99
  186. package/dist/types/Token.js +76 -76
  187. package/dist/types/TokenAmount.d.ts +69 -69
  188. package/dist/types/TokenAmount.js +59 -60
  189. package/dist/types/fees/Fee.d.ts +50 -50
  190. package/dist/types/fees/Fee.js +2 -2
  191. package/dist/types/fees/FeeBreakdown.d.ts +11 -11
  192. package/dist/types/fees/FeeBreakdown.js +2 -2
  193. package/dist/types/fees/PercentagePPM.d.ts +17 -17
  194. package/dist/types/fees/PercentagePPM.js +17 -18
  195. package/dist/types/lnurl/LNURLPay.d.ts +61 -61
  196. package/dist/types/lnurl/LNURLPay.js +30 -31
  197. package/dist/types/lnurl/LNURLWithdraw.d.ts +48 -48
  198. package/dist/types/lnurl/LNURLWithdraw.js +26 -27
  199. package/dist/types/wallets/LightningInvoiceCreateService.d.ts +24 -24
  200. package/dist/types/wallets/LightningInvoiceCreateService.js +14 -15
  201. package/dist/types/wallets/MinimalBitcoinWalletInterface.d.ts +23 -23
  202. package/dist/types/wallets/MinimalBitcoinWalletInterface.js +2 -2
  203. package/dist/types/wallets/MinimalLightningNetworkWalletInterface.d.ts +9 -9
  204. package/dist/types/wallets/MinimalLightningNetworkWalletInterface.js +2 -2
  205. package/dist/utils/AutomaticClockDriftCorrection.d.ts +1 -1
  206. package/dist/utils/AutomaticClockDriftCorrection.js +69 -70
  207. package/dist/utils/BitcoinUtils.d.ts +12 -14
  208. package/dist/utils/BitcoinUtils.js +101 -102
  209. package/dist/utils/BitcoinWalletUtils.d.ts +7 -7
  210. package/dist/utils/BitcoinWalletUtils.js +13 -14
  211. package/dist/utils/Logger.d.ts +7 -7
  212. package/dist/utils/Logger.js +11 -12
  213. package/dist/utils/RetryUtils.d.ts +22 -22
  214. package/dist/utils/RetryUtils.js +66 -67
  215. package/dist/utils/SwapUtils.d.ts +88 -88
  216. package/dist/utils/SwapUtils.js +72 -72
  217. package/dist/utils/TimeoutUtils.d.ts +17 -17
  218. package/dist/utils/TimeoutUtils.js +54 -55
  219. package/dist/utils/TokenUtils.d.ts +19 -19
  220. package/dist/utils/TokenUtils.js +36 -37
  221. package/dist/utils/TypeUtils.d.ts +7 -7
  222. package/dist/utils/TypeUtils.js +2 -2
  223. package/dist/utils/Utils.d.ts +56 -58
  224. package/dist/utils/Utils.js +193 -194
  225. package/package.json +1 -1
  226. package/src/intermediaries/apis/IntermediaryAPI.ts +4 -2
  227. package/src/prices/abstract/ISwapPrice.ts +19 -6
  228. package/src/swaps/ISwap.ts +17 -6
  229. package/src/swaps/ISwapWrapper.ts +4 -3
  230. package/src/swaps/escrow_swaps/frombtc/ln/FromBTCLNWrapper.ts +4 -2
  231. package/src/swaps/escrow_swaps/frombtc/ln_auto/FromBTCLNAutoSwap.ts +4 -1
  232. package/src/swaps/escrow_swaps/frombtc/ln_auto/FromBTCLNAutoWrapper.ts +2 -2
  233. package/src/swaps/escrow_swaps/frombtc/onchain/FromBTCWrapper.ts +4 -2
  234. package/src/swaps/escrow_swaps/tobtc/ln/ToBTCLNWrapper.ts +6 -6
  235. package/src/swaps/escrow_swaps/tobtc/onchain/ToBTCWrapper.ts +5 -5
  236. package/src/swaps/spv_swaps/SpvFromBTCSwap.ts +4 -1
  237. package/src/swaps/spv_swaps/SpvFromBTCWrapper.ts +10 -2
  238. package/src/swaps/trusted/ln/LnForGasWrapper.ts +1 -1
  239. package/src/swaps/trusted/onchain/OnchainForGasWrapper.ts +1 -1
@@ -1,110 +1,110 @@
1
- import { IPriceProvider } from "./abstract/IPriceProvider";
2
- import { ICachedSwapPrice } from "./abstract/ICachedSwapPrice";
3
- import { ChainIds, MultiChain } from "../swapper/Swapper";
4
- /**
5
- * Asset configuration for redundant swap pricing
6
- *
7
- * @category Pricing
8
- */
9
- export type RedundantSwapPriceAssets<T extends MultiChain> = {
10
- binancePair?: string;
11
- okxPair?: string;
12
- coinGeckoCoinId?: string;
13
- coinPaprikaCoinId?: string;
14
- krakenPair?: string;
15
- chains: {
16
- [chainIdentifier in keyof T]?: {
17
- address: string;
18
- decimals: number;
19
- };
20
- };
21
- }[];
22
- export type CtorCoinDecimals<T extends MultiChain> = {
23
- chains: {
24
- [chainIdentifier in keyof T]?: {
25
- address: string;
26
- decimals: number;
27
- };
28
- };
29
- }[];
30
- type CoinDecimals<T extends MultiChain> = {
31
- [chainIdentifier in keyof T]?: {
32
- [tokenAddress: string]: number;
33
- };
34
- };
35
- /**
36
- * Swap price API using multiple price sources, handles errors on the APIs and automatically switches between them, such
37
- * that there always is a functional API
38
- *
39
- * @category Pricing
40
- */
41
- export declare class RedundantSwapPrice<T extends MultiChain> extends ICachedSwapPrice<T> {
42
- /**
43
- * Creates a new {@link RedundantSwapPrice} instance from an asset list and other data, using all
44
- * the available price providers: {@link BinancePriceProvider}, {@link OKXPriceProvider},
45
- * {@link CoinGeckoPriceProvider}, {@link CoinPaprikaPriceProvider}, {@link KrakenPriceProvider}
46
- *
47
- * @param maxAllowedFeeDiffPPM Maximum allowed price difference between returned swap prices & market prices
48
- * @param assets Specifications of the assets
49
- * @param cacheTimeout Timeout of the internal cache holding prices
50
- */
51
- static createFromTokenMap<T extends MultiChain>(maxAllowedFeeDiffPPM: bigint, assets: RedundantSwapPriceAssets<T>, cacheTimeout?: number): RedundantSwapPrice<T>;
52
- protected coinsDecimals: CoinDecimals<T>;
53
- protected priceApis: {
54
- priceApi: IPriceProvider<T>;
55
- operational?: boolean;
56
- }[];
57
- constructor(maxAllowedFeeDiffPPM: bigint, coinsDecimals: CtorCoinDecimals<T>, priceApis: IPriceProvider<T>[], cacheTimeout?: number);
58
- /**
59
- * Returns price api that should be operational
60
- *
61
- * @private
62
- */
63
- private getOperationalPriceApi;
64
- /**
65
- * Returns price apis that are maybe operational, in case none is considered operational returns all of the price
66
- * apis such that they can be tested again whether they are operational
67
- *
68
- * @private
69
- */
70
- private getMaybeOperationalPriceApis;
71
- /**
72
- * Fetches price in parallel from multiple maybe operational price APIs
73
- *
74
- * @param chainIdentifier
75
- * @param token
76
- * @param abortSignal
77
- * @private
78
- */
79
- private fetchPriceFromMaybeOperationalPriceApis;
80
- /**
81
- * Fetches the prices, first tries to use the operational price API (if any) and if that fails it falls back
82
- * to using maybe operational price APIs
83
- *
84
- * @param chainIdentifier
85
- * @param token
86
- * @param abortSignal
87
- * @protected
88
- */
89
- protected fetchPrice<C extends ChainIds<T>>(chainIdentifier: C, token: string, abortSignal?: AbortSignal): Promise<bigint>;
90
- /**
91
- * @inheritDoc
92
- */
93
- protected getDecimals<C extends ChainIds<T>>(chainIdentifier: C, token: string): number | null;
94
- /**
95
- * Fetches BTC price in USD in parallel from multiple maybe operational price APIs
96
- *
97
- * @param abortSignal
98
- * @private
99
- */
100
- private fetchUsdPriceFromMaybeOperationalPriceApis;
101
- /**
102
- * Fetches the USD prices, first tries to use the operational price API (if any) and if that fails it falls back
103
- * to using maybe operational price APIs
104
- *
105
- * @param abortSignal
106
- * @protected
107
- */
108
- protected fetchUsdPrice(abortSignal?: AbortSignal): Promise<number>;
109
- }
110
- export {};
1
+ import { IPriceProvider } from "./abstract/IPriceProvider";
2
+ import { ICachedSwapPrice } from "./abstract/ICachedSwapPrice";
3
+ import { ChainIds, MultiChain } from "../swapper/Swapper";
4
+ /**
5
+ * Asset configuration for redundant swap pricing
6
+ *
7
+ * @category Pricing
8
+ */
9
+ export type RedundantSwapPriceAssets<T extends MultiChain> = {
10
+ binancePair?: string;
11
+ okxPair?: string;
12
+ coinGeckoCoinId?: string;
13
+ coinPaprikaCoinId?: string;
14
+ krakenPair?: string;
15
+ chains: {
16
+ [chainIdentifier in keyof T]?: {
17
+ address: string;
18
+ decimals: number;
19
+ };
20
+ };
21
+ }[];
22
+ export type CtorCoinDecimals<T extends MultiChain> = {
23
+ chains: {
24
+ [chainIdentifier in keyof T]?: {
25
+ address: string;
26
+ decimals: number;
27
+ };
28
+ };
29
+ }[];
30
+ type CoinDecimals<T extends MultiChain> = {
31
+ [chainIdentifier in keyof T]?: {
32
+ [tokenAddress: string]: number;
33
+ };
34
+ };
35
+ /**
36
+ * Swap price API using multiple price sources, handles errors on the APIs and automatically switches between them, such
37
+ * that there always is a functional API
38
+ *
39
+ * @category Pricing
40
+ */
41
+ export declare class RedundantSwapPrice<T extends MultiChain> extends ICachedSwapPrice<T> {
42
+ /**
43
+ * Creates a new {@link RedundantSwapPrice} instance from an asset list and other data, using all
44
+ * the available price providers: {@link BinancePriceProvider}, {@link OKXPriceProvider},
45
+ * {@link CoinGeckoPriceProvider}, {@link CoinPaprikaPriceProvider}, {@link KrakenPriceProvider}
46
+ *
47
+ * @param maxAllowedFeeDiffPPM Maximum allowed price difference between returned swap prices & market prices
48
+ * @param assets Specifications of the assets
49
+ * @param cacheTimeout Timeout of the internal cache holding prices
50
+ */
51
+ static createFromTokenMap<T extends MultiChain>(maxAllowedFeeDiffPPM: bigint, assets: RedundantSwapPriceAssets<T>, cacheTimeout?: number): RedundantSwapPrice<T>;
52
+ protected coinsDecimals: CoinDecimals<T>;
53
+ protected priceApis: {
54
+ priceApi: IPriceProvider<T>;
55
+ operational?: boolean;
56
+ }[];
57
+ constructor(maxAllowedFeeDiffPPM: bigint, coinsDecimals: CtorCoinDecimals<T>, priceApis: IPriceProvider<T>[], cacheTimeout?: number);
58
+ /**
59
+ * Returns price api that should be operational
60
+ *
61
+ * @private
62
+ */
63
+ private getOperationalPriceApi;
64
+ /**
65
+ * Returns price apis that are maybe operational, in case none is considered operational returns all of the price
66
+ * apis such that they can be tested again whether they are operational
67
+ *
68
+ * @private
69
+ */
70
+ private getMaybeOperationalPriceApis;
71
+ /**
72
+ * Fetches price in parallel from multiple maybe operational price APIs
73
+ *
74
+ * @param chainIdentifier
75
+ * @param token
76
+ * @param abortSignal
77
+ * @private
78
+ */
79
+ private fetchPriceFromMaybeOperationalPriceApis;
80
+ /**
81
+ * Fetches the prices, first tries to use the operational price API (if any) and if that fails it falls back
82
+ * to using maybe operational price APIs
83
+ *
84
+ * @param chainIdentifier
85
+ * @param token
86
+ * @param abortSignal
87
+ * @protected
88
+ */
89
+ protected fetchPrice<C extends ChainIds<T>>(chainIdentifier: C, token: string, abortSignal?: AbortSignal): Promise<bigint>;
90
+ /**
91
+ * @inheritDoc
92
+ */
93
+ protected getDecimals<C extends ChainIds<T>>(chainIdentifier: C, token: string): number | null;
94
+ /**
95
+ * Fetches BTC price in USD in parallel from multiple maybe operational price APIs
96
+ *
97
+ * @param abortSignal
98
+ * @private
99
+ */
100
+ private fetchUsdPriceFromMaybeOperationalPriceApis;
101
+ /**
102
+ * Fetches the USD prices, first tries to use the operational price API (if any) and if that fails it falls back
103
+ * to using maybe operational price APIs
104
+ *
105
+ * @param abortSignal
106
+ * @protected
107
+ */
108
+ protected fetchUsdPrice(abortSignal?: AbortSignal): Promise<number>;
109
+ }
110
+ export {};
@@ -1,222 +1,222 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.RedundantSwapPrice = void 0;
4
- const BinancePriceProvider_1 = require("./providers/BinancePriceProvider");
5
- const OKXPriceProvider_1 = require("./providers/OKXPriceProvider");
6
- const CoinGeckoPriceProvider_1 = require("./providers/CoinGeckoPriceProvider");
7
- const CoinPaprikaPriceProvider_1 = require("./providers/CoinPaprikaPriceProvider");
8
- const Utils_1 = require("../utils/Utils");
9
- const ICachedSwapPrice_1 = require("./abstract/ICachedSwapPrice");
10
- const RequestError_1 = require("../errors/RequestError");
11
- const KrakenPriceProvider_1 = require("./providers/KrakenPriceProvider");
12
- const Logger_1 = require("../utils/Logger");
13
- const RetryUtils_1 = require("../utils/RetryUtils");
14
- const logger = (0, Logger_1.getLogger)("RedundantSwapPrice: ");
15
- /**
16
- * Swap price API using multiple price sources, handles errors on the APIs and automatically switches between them, such
17
- * that there always is a functional API
18
- *
19
- * @category Pricing
20
- */
21
- class RedundantSwapPrice extends ICachedSwapPrice_1.ICachedSwapPrice {
22
- /**
23
- * Creates a new {@link RedundantSwapPrice} instance from an asset list and other data, using all
24
- * the available price providers: {@link BinancePriceProvider}, {@link OKXPriceProvider},
25
- * {@link CoinGeckoPriceProvider}, {@link CoinPaprikaPriceProvider}, {@link KrakenPriceProvider}
26
- *
27
- * @param maxAllowedFeeDiffPPM Maximum allowed price difference between returned swap prices & market prices
28
- * @param assets Specifications of the assets
29
- * @param cacheTimeout Timeout of the internal cache holding prices
30
- */
31
- static createFromTokenMap(maxAllowedFeeDiffPPM, assets, cacheTimeout) {
32
- const priceApis = [
33
- new BinancePriceProvider_1.BinancePriceProvider(assets.map(coinData => {
34
- return {
35
- coinId: coinData.binancePair,
36
- chains: coinData.chains
37
- };
38
- })),
39
- new OKXPriceProvider_1.OKXPriceProvider(assets.map(coinData => {
40
- return {
41
- coinId: coinData.okxPair,
42
- chains: coinData.chains
43
- };
44
- })),
45
- new CoinGeckoPriceProvider_1.CoinGeckoPriceProvider(assets.map(coinData => {
46
- return {
47
- coinId: coinData.coinGeckoCoinId,
48
- chains: coinData.chains
49
- };
50
- })),
51
- new CoinPaprikaPriceProvider_1.CoinPaprikaPriceProvider(assets.map(coinData => {
52
- return {
53
- coinId: coinData.coinPaprikaCoinId,
54
- chains: coinData.chains
55
- };
56
- })),
57
- new KrakenPriceProvider_1.KrakenPriceProvider(assets.map(coinData => {
58
- return {
59
- coinId: coinData.krakenPair,
60
- chains: coinData.chains
61
- };
62
- }))
63
- ];
64
- return new RedundantSwapPrice(maxAllowedFeeDiffPPM, assets, priceApis, cacheTimeout);
65
- }
66
- constructor(maxAllowedFeeDiffPPM, coinsDecimals, priceApis, cacheTimeout) {
67
- super(maxAllowedFeeDiffPPM, cacheTimeout);
68
- this.coinsDecimals = {};
69
- for (let coinData of coinsDecimals) {
70
- for (let chainId in coinData.chains) {
71
- const { address, decimals } = coinData.chains[chainId];
72
- this.coinsDecimals[chainId] ??= {};
73
- this.coinsDecimals[chainId][address.toString()] = decimals;
74
- }
75
- }
76
- this.priceApis = priceApis.map(api => {
77
- return {
78
- priceApi: api
79
- };
80
- });
81
- }
82
- /**
83
- * Returns price api that should be operational
84
- *
85
- * @private
86
- */
87
- getOperationalPriceApi() {
88
- return this.priceApis.find(e => e.operational === true);
89
- }
90
- /**
91
- * Returns price apis that are maybe operational, in case none is considered operational returns all of the price
92
- * apis such that they can be tested again whether they are operational
93
- *
94
- * @private
95
- */
96
- getMaybeOperationalPriceApis() {
97
- let operational = this.priceApis.filter(e => e.operational === true || e.operational === undefined);
98
- if (operational.length === 0) {
99
- this.priceApis.forEach(e => e.operational = undefined);
100
- operational = this.priceApis;
101
- }
102
- return operational;
103
- }
104
- /**
105
- * Fetches price in parallel from multiple maybe operational price APIs
106
- *
107
- * @param chainIdentifier
108
- * @param token
109
- * @param abortSignal
110
- * @private
111
- */
112
- async fetchPriceFromMaybeOperationalPriceApis(chainIdentifier, token, abortSignal) {
113
- try {
114
- return await (0, Utils_1.promiseAny)(this.getMaybeOperationalPriceApis().map(obj => (async () => {
115
- try {
116
- const price = await obj.priceApi.getPrice(chainIdentifier, token, abortSignal);
117
- logger.debug("fetchPrice(): Price from " + obj.priceApi.constructor.name + ": ", price.toString(10));
118
- obj.operational = true;
119
- return price;
120
- }
121
- catch (e) {
122
- if (abortSignal != null)
123
- abortSignal.throwIfAborted();
124
- obj.operational = false;
125
- throw e;
126
- }
127
- })()));
128
- }
129
- catch (_e) {
130
- const e = _e;
131
- if (abortSignal != null)
132
- abortSignal.throwIfAborted();
133
- throw e.find(err => !(err instanceof RequestError_1.RequestError)) || e[0];
134
- }
135
- }
136
- /**
137
- * Fetches the prices, first tries to use the operational price API (if any) and if that fails it falls back
138
- * to using maybe operational price APIs
139
- *
140
- * @param chainIdentifier
141
- * @param token
142
- * @param abortSignal
143
- * @protected
144
- */
145
- fetchPrice(chainIdentifier, token, abortSignal) {
146
- return (0, RetryUtils_1.tryWithRetries)(async () => {
147
- const operationalPriceApi = this.getOperationalPriceApi();
148
- if (operationalPriceApi != null) {
149
- try {
150
- return await operationalPriceApi.priceApi.getPrice(chainIdentifier, token, abortSignal);
151
- }
152
- catch (err) {
153
- if (abortSignal != null)
154
- abortSignal.throwIfAborted();
155
- operationalPriceApi.operational = false;
156
- return await this.fetchPriceFromMaybeOperationalPriceApis(chainIdentifier, token, abortSignal);
157
- }
158
- }
159
- return await this.fetchPriceFromMaybeOperationalPriceApis(chainIdentifier, token, abortSignal);
160
- }, undefined, RequestError_1.RequestError, abortSignal);
161
- }
162
- /**
163
- * @inheritDoc
164
- */
165
- getDecimals(chainIdentifier, token) {
166
- if (this.coinsDecimals[chainIdentifier] == null)
167
- return null;
168
- return this.coinsDecimals[chainIdentifier]?.[token.toString()] ?? null;
169
- }
170
- /**
171
- * Fetches BTC price in USD in parallel from multiple maybe operational price APIs
172
- *
173
- * @param abortSignal
174
- * @private
175
- */
176
- async fetchUsdPriceFromMaybeOperationalPriceApis(abortSignal) {
177
- try {
178
- return await (0, Utils_1.promiseAny)(this.getMaybeOperationalPriceApis().map(obj => (async () => {
179
- try {
180
- const price = await obj.priceApi.getUsdPrice(abortSignal);
181
- logger.debug("fetchPrice(): USD price from " + obj.priceApi.constructor.name + ": ", price.toString(10));
182
- obj.operational = true;
183
- return price;
184
- }
185
- catch (e) {
186
- if (abortSignal != null)
187
- abortSignal.throwIfAborted();
188
- obj.operational = false;
189
- throw e;
190
- }
191
- })()));
192
- }
193
- catch (_e) {
194
- const e = _e;
195
- if (abortSignal != null)
196
- abortSignal.throwIfAborted();
197
- throw e.find(err => !(err instanceof RequestError_1.RequestError)) || e[0];
198
- }
199
- }
200
- /**
201
- * Fetches the USD prices, first tries to use the operational price API (if any) and if that fails it falls back
202
- * to using maybe operational price APIs
203
- *
204
- * @param abortSignal
205
- * @protected
206
- */
207
- fetchUsdPrice(abortSignal) {
208
- return (0, RetryUtils_1.tryWithRetries)(() => {
209
- const operationalPriceApi = this.getOperationalPriceApi();
210
- if (operationalPriceApi != null) {
211
- return operationalPriceApi.priceApi.getUsdPrice(abortSignal).catch(err => {
212
- if (abortSignal != null)
213
- abortSignal.throwIfAborted();
214
- operationalPriceApi.operational = false;
215
- return this.fetchUsdPriceFromMaybeOperationalPriceApis(abortSignal);
216
- });
217
- }
218
- return this.fetchUsdPriceFromMaybeOperationalPriceApis(abortSignal);
219
- }, undefined, RequestError_1.RequestError, abortSignal);
220
- }
221
- }
222
- exports.RedundantSwapPrice = RedundantSwapPrice;
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.RedundantSwapPrice = void 0;
4
+ const BinancePriceProvider_1 = require("./providers/BinancePriceProvider");
5
+ const OKXPriceProvider_1 = require("./providers/OKXPriceProvider");
6
+ const CoinGeckoPriceProvider_1 = require("./providers/CoinGeckoPriceProvider");
7
+ const CoinPaprikaPriceProvider_1 = require("./providers/CoinPaprikaPriceProvider");
8
+ const Utils_1 = require("../utils/Utils");
9
+ const ICachedSwapPrice_1 = require("./abstract/ICachedSwapPrice");
10
+ const RequestError_1 = require("../errors/RequestError");
11
+ const KrakenPriceProvider_1 = require("./providers/KrakenPriceProvider");
12
+ const Logger_1 = require("../utils/Logger");
13
+ const RetryUtils_1 = require("../utils/RetryUtils");
14
+ const logger = (0, Logger_1.getLogger)("RedundantSwapPrice: ");
15
+ /**
16
+ * Swap price API using multiple price sources, handles errors on the APIs and automatically switches between them, such
17
+ * that there always is a functional API
18
+ *
19
+ * @category Pricing
20
+ */
21
+ class RedundantSwapPrice extends ICachedSwapPrice_1.ICachedSwapPrice {
22
+ /**
23
+ * Creates a new {@link RedundantSwapPrice} instance from an asset list and other data, using all
24
+ * the available price providers: {@link BinancePriceProvider}, {@link OKXPriceProvider},
25
+ * {@link CoinGeckoPriceProvider}, {@link CoinPaprikaPriceProvider}, {@link KrakenPriceProvider}
26
+ *
27
+ * @param maxAllowedFeeDiffPPM Maximum allowed price difference between returned swap prices & market prices
28
+ * @param assets Specifications of the assets
29
+ * @param cacheTimeout Timeout of the internal cache holding prices
30
+ */
31
+ static createFromTokenMap(maxAllowedFeeDiffPPM, assets, cacheTimeout) {
32
+ const priceApis = [
33
+ new BinancePriceProvider_1.BinancePriceProvider(assets.map(coinData => {
34
+ return {
35
+ coinId: coinData.binancePair,
36
+ chains: coinData.chains
37
+ };
38
+ })),
39
+ new OKXPriceProvider_1.OKXPriceProvider(assets.map(coinData => {
40
+ return {
41
+ coinId: coinData.okxPair,
42
+ chains: coinData.chains
43
+ };
44
+ })),
45
+ new CoinGeckoPriceProvider_1.CoinGeckoPriceProvider(assets.map(coinData => {
46
+ return {
47
+ coinId: coinData.coinGeckoCoinId,
48
+ chains: coinData.chains
49
+ };
50
+ })),
51
+ new CoinPaprikaPriceProvider_1.CoinPaprikaPriceProvider(assets.map(coinData => {
52
+ return {
53
+ coinId: coinData.coinPaprikaCoinId,
54
+ chains: coinData.chains
55
+ };
56
+ })),
57
+ new KrakenPriceProvider_1.KrakenPriceProvider(assets.map(coinData => {
58
+ return {
59
+ coinId: coinData.krakenPair,
60
+ chains: coinData.chains
61
+ };
62
+ }))
63
+ ];
64
+ return new RedundantSwapPrice(maxAllowedFeeDiffPPM, assets, priceApis, cacheTimeout);
65
+ }
66
+ constructor(maxAllowedFeeDiffPPM, coinsDecimals, priceApis, cacheTimeout) {
67
+ super(maxAllowedFeeDiffPPM, cacheTimeout);
68
+ this.coinsDecimals = {};
69
+ for (let coinData of coinsDecimals) {
70
+ for (let chainId in coinData.chains) {
71
+ const { address, decimals } = coinData.chains[chainId];
72
+ this.coinsDecimals[chainId] ??= {};
73
+ this.coinsDecimals[chainId][address.toString()] = decimals;
74
+ }
75
+ }
76
+ this.priceApis = priceApis.map(api => {
77
+ return {
78
+ priceApi: api
79
+ };
80
+ });
81
+ }
82
+ /**
83
+ * Returns price api that should be operational
84
+ *
85
+ * @private
86
+ */
87
+ getOperationalPriceApi() {
88
+ return this.priceApis.find(e => e.operational === true);
89
+ }
90
+ /**
91
+ * Returns price apis that are maybe operational, in case none is considered operational returns all of the price
92
+ * apis such that they can be tested again whether they are operational
93
+ *
94
+ * @private
95
+ */
96
+ getMaybeOperationalPriceApis() {
97
+ let operational = this.priceApis.filter(e => e.operational === true || e.operational === undefined);
98
+ if (operational.length === 0) {
99
+ this.priceApis.forEach(e => e.operational = undefined);
100
+ operational = this.priceApis;
101
+ }
102
+ return operational;
103
+ }
104
+ /**
105
+ * Fetches price in parallel from multiple maybe operational price APIs
106
+ *
107
+ * @param chainIdentifier
108
+ * @param token
109
+ * @param abortSignal
110
+ * @private
111
+ */
112
+ async fetchPriceFromMaybeOperationalPriceApis(chainIdentifier, token, abortSignal) {
113
+ try {
114
+ return await (0, Utils_1.promiseAny)(this.getMaybeOperationalPriceApis().map(obj => (async () => {
115
+ try {
116
+ const price = await obj.priceApi.getPrice(chainIdentifier, token, abortSignal);
117
+ logger.debug("fetchPrice(): Price from " + obj.priceApi.constructor.name + ": ", price.toString(10));
118
+ obj.operational = true;
119
+ return price;
120
+ }
121
+ catch (e) {
122
+ if (abortSignal != null)
123
+ abortSignal.throwIfAborted();
124
+ obj.operational = false;
125
+ throw e;
126
+ }
127
+ })()));
128
+ }
129
+ catch (_e) {
130
+ const e = _e;
131
+ if (abortSignal != null)
132
+ abortSignal.throwIfAborted();
133
+ throw e.find(err => !(err instanceof RequestError_1.RequestError)) || e[0];
134
+ }
135
+ }
136
+ /**
137
+ * Fetches the prices, first tries to use the operational price API (if any) and if that fails it falls back
138
+ * to using maybe operational price APIs
139
+ *
140
+ * @param chainIdentifier
141
+ * @param token
142
+ * @param abortSignal
143
+ * @protected
144
+ */
145
+ fetchPrice(chainIdentifier, token, abortSignal) {
146
+ return (0, RetryUtils_1.tryWithRetries)(async () => {
147
+ const operationalPriceApi = this.getOperationalPriceApi();
148
+ if (operationalPriceApi != null) {
149
+ try {
150
+ return await operationalPriceApi.priceApi.getPrice(chainIdentifier, token, abortSignal);
151
+ }
152
+ catch (err) {
153
+ if (abortSignal != null)
154
+ abortSignal.throwIfAborted();
155
+ operationalPriceApi.operational = false;
156
+ return await this.fetchPriceFromMaybeOperationalPriceApis(chainIdentifier, token, abortSignal);
157
+ }
158
+ }
159
+ return await this.fetchPriceFromMaybeOperationalPriceApis(chainIdentifier, token, abortSignal);
160
+ }, undefined, RequestError_1.RequestError, abortSignal);
161
+ }
162
+ /**
163
+ * @inheritDoc
164
+ */
165
+ getDecimals(chainIdentifier, token) {
166
+ if (this.coinsDecimals[chainIdentifier] == null)
167
+ return null;
168
+ return this.coinsDecimals[chainIdentifier]?.[token.toString()] ?? null;
169
+ }
170
+ /**
171
+ * Fetches BTC price in USD in parallel from multiple maybe operational price APIs
172
+ *
173
+ * @param abortSignal
174
+ * @private
175
+ */
176
+ async fetchUsdPriceFromMaybeOperationalPriceApis(abortSignal) {
177
+ try {
178
+ return await (0, Utils_1.promiseAny)(this.getMaybeOperationalPriceApis().map(obj => (async () => {
179
+ try {
180
+ const price = await obj.priceApi.getUsdPrice(abortSignal);
181
+ logger.debug("fetchPrice(): USD price from " + obj.priceApi.constructor.name + ": ", price.toString(10));
182
+ obj.operational = true;
183
+ return price;
184
+ }
185
+ catch (e) {
186
+ if (abortSignal != null)
187
+ abortSignal.throwIfAborted();
188
+ obj.operational = false;
189
+ throw e;
190
+ }
191
+ })()));
192
+ }
193
+ catch (_e) {
194
+ const e = _e;
195
+ if (abortSignal != null)
196
+ abortSignal.throwIfAborted();
197
+ throw e.find(err => !(err instanceof RequestError_1.RequestError)) || e[0];
198
+ }
199
+ }
200
+ /**
201
+ * Fetches the USD prices, first tries to use the operational price API (if any) and if that fails it falls back
202
+ * to using maybe operational price APIs
203
+ *
204
+ * @param abortSignal
205
+ * @protected
206
+ */
207
+ fetchUsdPrice(abortSignal) {
208
+ return (0, RetryUtils_1.tryWithRetries)(() => {
209
+ const operationalPriceApi = this.getOperationalPriceApi();
210
+ if (operationalPriceApi != null) {
211
+ return operationalPriceApi.priceApi.getUsdPrice(abortSignal).catch(err => {
212
+ if (abortSignal != null)
213
+ abortSignal.throwIfAborted();
214
+ operationalPriceApi.operational = false;
215
+ return this.fetchUsdPriceFromMaybeOperationalPriceApis(abortSignal);
216
+ });
217
+ }
218
+ return this.fetchUsdPriceFromMaybeOperationalPriceApis(abortSignal);
219
+ }, undefined, RequestError_1.RequestError, abortSignal);
220
+ }
221
+ }
222
+ exports.RedundantSwapPrice = RedundantSwapPrice;