@across-protocol/sdk 4.3.111-alpha.4 → 4.3.111

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 (566) hide show
  1. package/dist/cjs/addressAggregator/adapters/abstract.js +64 -50
  2. package/dist/cjs/addressAggregator/adapters/abstract.js.map +1 -1
  3. package/dist/cjs/addressAggregator/adapters/bybit.js +29 -16
  4. package/dist/cjs/addressAggregator/adapters/bybit.js.map +1 -1
  5. package/dist/cjs/addressAggregator/adapters/env.js +15 -11
  6. package/dist/cjs/addressAggregator/adapters/env.js.map +1 -1
  7. package/dist/cjs/addressAggregator/adapters/file.js +45 -32
  8. package/dist/cjs/addressAggregator/adapters/file.js.map +1 -1
  9. package/dist/cjs/addressAggregator/adapters/index.js +1 -1
  10. package/dist/cjs/addressAggregator/adapters/risklabs.js +36 -22
  11. package/dist/cjs/addressAggregator/adapters/risklabs.js.map +1 -1
  12. package/dist/cjs/addressAggregator/index.js +87 -57
  13. package/dist/cjs/addressAggregator/index.js.map +1 -1
  14. package/dist/cjs/apiClient/abstractClient.js +8 -9
  15. package/dist/cjs/apiClient/abstractClient.js.map +1 -1
  16. package/dist/cjs/apiClient/index.js +1 -1
  17. package/dist/cjs/apiClient/mockedClient.js +29 -23
  18. package/dist/cjs/apiClient/mockedClient.js.map +1 -1
  19. package/dist/cjs/apiClient/productionClient.js +103 -65
  20. package/dist/cjs/apiClient/productionClient.js.map +1 -1
  21. package/dist/cjs/arch/evm/BlockUtils.js +208 -122
  22. package/dist/cjs/arch/evm/BlockUtils.js.map +1 -1
  23. package/dist/cjs/arch/evm/MessageUtils.js +1 -1
  24. package/dist/cjs/arch/evm/MessageUtils.js.map +1 -1
  25. package/dist/cjs/arch/evm/SpokeUtils.js +288 -134
  26. package/dist/cjs/arch/evm/SpokeUtils.js.map +1 -1
  27. package/dist/cjs/arch/evm/index.js +1 -1
  28. package/dist/cjs/arch/evm/utils/index.js +1 -1
  29. package/dist/cjs/arch/evm/utils/wait.js +49 -38
  30. package/dist/cjs/arch/evm/utils/wait.js.map +1 -1
  31. package/dist/cjs/arch/index.js +1 -1
  32. package/dist/cjs/arch/svm/BlockUtils.js +158 -102
  33. package/dist/cjs/arch/svm/BlockUtils.js.map +1 -1
  34. package/dist/cjs/arch/svm/MessageUtils.js +2 -2
  35. package/dist/cjs/arch/svm/MessageUtils.js.map +1 -1
  36. package/dist/cjs/arch/svm/SpokeUtils.js +1147 -708
  37. package/dist/cjs/arch/svm/SpokeUtils.js.map +1 -1
  38. package/dist/cjs/arch/svm/encoders.js +1 -1
  39. package/dist/cjs/arch/svm/encoders.js.map +1 -1
  40. package/dist/cjs/arch/svm/eventsClient.js +236 -174
  41. package/dist/cjs/arch/svm/eventsClient.js.map +1 -1
  42. package/dist/cjs/arch/svm/index.js +1 -1
  43. package/dist/cjs/arch/svm/provider.js +3 -3
  44. package/dist/cjs/arch/svm/provider.js.map +1 -1
  45. package/dist/cjs/arch/svm/utils.js +355 -166
  46. package/dist/cjs/arch/svm/utils.js.map +1 -1
  47. package/dist/cjs/caching/Arweave/ArweaveClient.js +246 -168
  48. package/dist/cjs/caching/Arweave/ArweaveClient.js.map +1 -1
  49. package/dist/cjs/caching/Arweave/index.js +1 -1
  50. package/dist/cjs/caching/IPFS/PinataIPFSClient.js +49 -40
  51. package/dist/cjs/caching/IPFS/PinataIPFSClient.js.map +1 -1
  52. package/dist/cjs/caching/IPFS/index.js +1 -1
  53. package/dist/cjs/caching/Memory/MemoryCacheClient.js +18 -13
  54. package/dist/cjs/caching/Memory/MemoryCacheClient.js.map +1 -1
  55. package/dist/cjs/caching/Memory/index.js +1 -1
  56. package/dist/cjs/caching/index.js +1 -1
  57. package/dist/cjs/clients/AcrossConfigStoreClient/AcrossConfigStoreClient.js +381 -302
  58. package/dist/cjs/clients/AcrossConfigStoreClient/AcrossConfigStoreClient.js.map +1 -1
  59. package/dist/cjs/clients/AcrossConfigStoreClient/index.js +1 -1
  60. package/dist/cjs/clients/BaseAbstractClient.js +83 -58
  61. package/dist/cjs/clients/BaseAbstractClient.js.map +1 -1
  62. package/dist/cjs/clients/BundleDataClient/BundleDataClient.js +900 -709
  63. package/dist/cjs/clients/BundleDataClient/BundleDataClient.js.map +1 -1
  64. package/dist/cjs/clients/BundleDataClient/index.js +1 -1
  65. package/dist/cjs/clients/BundleDataClient/utils/DataworkerUtils.js +128 -95
  66. package/dist/cjs/clients/BundleDataClient/utils/DataworkerUtils.js.map +1 -1
  67. package/dist/cjs/clients/BundleDataClient/utils/FillUtils.js +53 -48
  68. package/dist/cjs/clients/BundleDataClient/utils/FillUtils.js.map +1 -1
  69. package/dist/cjs/clients/BundleDataClient/utils/MerkleTreeUtils.js +8 -10
  70. package/dist/cjs/clients/BundleDataClient/utils/MerkleTreeUtils.js.map +1 -1
  71. package/dist/cjs/clients/BundleDataClient/utils/PoolRebalanceUtils.js +90 -67
  72. package/dist/cjs/clients/BundleDataClient/utils/PoolRebalanceUtils.js.map +1 -1
  73. package/dist/cjs/clients/BundleDataClient/utils/SuperstructUtils.js +24 -46
  74. package/dist/cjs/clients/BundleDataClient/utils/SuperstructUtils.js.map +1 -1
  75. package/dist/cjs/clients/BundleDataClient/utils/index.js +1 -1
  76. package/dist/cjs/clients/HubPoolClient.js +708 -526
  77. package/dist/cjs/clients/HubPoolClient.js.map +1 -1
  78. package/dist/cjs/clients/SpokePoolClient/EVMSpokePoolClient.js +179 -133
  79. package/dist/cjs/clients/SpokePoolClient/EVMSpokePoolClient.js.map +1 -1
  80. package/dist/cjs/clients/SpokePoolClient/SVMSpokePoolClient.js +183 -124
  81. package/dist/cjs/clients/SpokePoolClient/SVMSpokePoolClient.js.map +1 -1
  82. package/dist/cjs/clients/SpokePoolClient/SpokePoolClient.js +389 -357
  83. package/dist/cjs/clients/SpokePoolClient/SpokePoolClient.js.map +1 -1
  84. package/dist/cjs/clients/SpokePoolClient/SpokePoolClientManager.js +8 -9
  85. package/dist/cjs/clients/SpokePoolClient/SpokePoolClientManager.js.map +1 -1
  86. package/dist/cjs/clients/SpokePoolClient/index.js +3 -3
  87. package/dist/cjs/clients/SpokePoolClient/index.js.map +1 -1
  88. package/dist/cjs/clients/index.js +1 -1
  89. package/dist/cjs/clients/mocks/MockConfigStoreClient.js +67 -58
  90. package/dist/cjs/clients/mocks/MockConfigStoreClient.js.map +1 -1
  91. package/dist/cjs/clients/mocks/MockEvents.js +52 -47
  92. package/dist/cjs/clients/mocks/MockEvents.js.map +1 -1
  93. package/dist/cjs/clients/mocks/MockHubPoolClient.js +185 -142
  94. package/dist/cjs/clients/mocks/MockHubPoolClient.js.map +1 -1
  95. package/dist/cjs/clients/mocks/MockSpokePoolClient.js +192 -208
  96. package/dist/cjs/clients/mocks/MockSpokePoolClient.js.map +1 -1
  97. package/dist/cjs/clients/mocks/MockSvmCpiEventsClient.js +143 -140
  98. package/dist/cjs/clients/mocks/MockSvmCpiEventsClient.js.map +1 -1
  99. package/dist/cjs/clients/mocks/MockSvmSpokePoolClient.js +73 -57
  100. package/dist/cjs/clients/mocks/MockSvmSpokePoolClient.js.map +1 -1
  101. package/dist/cjs/clients/mocks/index.js +1 -1
  102. package/dist/cjs/coingecko/Coingecko.js +437 -285
  103. package/dist/cjs/coingecko/Coingecko.js.map +1 -1
  104. package/dist/cjs/coingecko/index.js +1 -1
  105. package/dist/cjs/constants.js +30 -23
  106. package/dist/cjs/constants.js.map +1 -1
  107. package/dist/cjs/contracts/acrossConfigStore.js +48 -27
  108. package/dist/cjs/contracts/acrossConfigStore.js.map +1 -1
  109. package/dist/cjs/contracts/hubPool.js +20 -36
  110. package/dist/cjs/contracts/hubPool.js.map +1 -1
  111. package/dist/cjs/contracts/index.js +1 -1
  112. package/dist/cjs/contracts/utils.js +8 -6
  113. package/dist/cjs/contracts/utils.js.map +1 -1
  114. package/dist/cjs/gasPriceOracle/adapters/arbitrum.js +16 -7
  115. package/dist/cjs/gasPriceOracle/adapters/arbitrum.js.map +1 -1
  116. package/dist/cjs/gasPriceOracle/adapters/ethereum.js +45 -26
  117. package/dist/cjs/gasPriceOracle/adapters/ethereum.js.map +1 -1
  118. package/dist/cjs/gasPriceOracle/adapters/linea-viem.js +28 -16
  119. package/dist/cjs/gasPriceOracle/adapters/linea-viem.js.map +1 -1
  120. package/dist/cjs/gasPriceOracle/adapters/polygon.js +112 -73
  121. package/dist/cjs/gasPriceOracle/adapters/polygon.js.map +1 -1
  122. package/dist/cjs/gasPriceOracle/adapters/solana.js +33 -20
  123. package/dist/cjs/gasPriceOracle/adapters/solana.js.map +1 -1
  124. package/dist/cjs/gasPriceOracle/oracle.js +104 -77
  125. package/dist/cjs/gasPriceOracle/oracle.js.map +1 -1
  126. package/dist/cjs/gasPriceOracle/types.js +3 -3
  127. package/dist/cjs/gasPriceOracle/types.js.map +1 -1
  128. package/dist/cjs/gasPriceOracle/util.js +8 -8
  129. package/dist/cjs/gasPriceOracle/util.js.map +1 -1
  130. package/dist/cjs/index.js +1 -1
  131. package/dist/cjs/interfaces/index.js +1 -1
  132. package/dist/cjs/lpFeeCalculator/index.js +1 -1
  133. package/dist/cjs/lpFeeCalculator/lpFeeCalculator.js +35 -33
  134. package/dist/cjs/lpFeeCalculator/lpFeeCalculator.js.map +1 -1
  135. package/dist/cjs/lpFeeCalculator/rateModel.js +9 -7
  136. package/dist/cjs/lpFeeCalculator/rateModel.js.map +1 -1
  137. package/dist/cjs/merkleDistributor/MerkleDistributor.js +18 -20
  138. package/dist/cjs/merkleDistributor/MerkleDistributor.js.map +1 -1
  139. package/dist/cjs/merkleDistributor/index.js +1 -1
  140. package/dist/cjs/merkleDistributor/model/index.js +1 -1
  141. package/dist/cjs/pool/TransactionManager.js +100 -45
  142. package/dist/cjs/pool/TransactionManager.js.map +1 -1
  143. package/dist/cjs/pool/index.js +1 -1
  144. package/dist/cjs/pool/poolClient.js +731 -464
  145. package/dist/cjs/pool/poolClient.js.map +1 -1
  146. package/dist/cjs/pool/uma/across/index.js +1 -1
  147. package/dist/cjs/pool/uma/across/transactionManager.js +100 -45
  148. package/dist/cjs/pool/uma/across/transactionManager.js.map +1 -1
  149. package/dist/cjs/pool/uma/clients/erc20/client.js +16 -18
  150. package/dist/cjs/pool/uma/clients/erc20/client.js.map +1 -1
  151. package/dist/cjs/pool/uma/clients/erc20/index.js +1 -1
  152. package/dist/cjs/pool/uma/clients/index.js +1 -1
  153. package/dist/cjs/pool/uma/index.js +1 -1
  154. package/dist/cjs/pool/uma/oracle/index.js +1 -1
  155. package/dist/cjs/pool/uma/oracle/utils.js +5 -4
  156. package/dist/cjs/pool/uma/oracle/utils.js.map +1 -1
  157. package/dist/cjs/pool/uma/utils.js +30 -11
  158. package/dist/cjs/pool/uma/utils.js.map +1 -1
  159. package/dist/cjs/priceClient/adapters/acrossApi.js +39 -22
  160. package/dist/cjs/priceClient/adapters/acrossApi.js.map +1 -1
  161. package/dist/cjs/priceClient/adapters/baseAdapter.js +73 -49
  162. package/dist/cjs/priceClient/adapters/baseAdapter.js.map +1 -1
  163. package/dist/cjs/priceClient/adapters/coingecko.js +61 -34
  164. package/dist/cjs/priceClient/adapters/coingecko.js.map +1 -1
  165. package/dist/cjs/priceClient/adapters/default.js +31 -16
  166. package/dist/cjs/priceClient/adapters/default.js.map +1 -1
  167. package/dist/cjs/priceClient/adapters/defiLlama.js +74 -40
  168. package/dist/cjs/priceClient/adapters/defiLlama.js.map +1 -1
  169. package/dist/cjs/priceClient/adapters/index.js +1 -1
  170. package/dist/cjs/priceClient/index.js +1 -1
  171. package/dist/cjs/priceClient/priceClient.js +159 -110
  172. package/dist/cjs/priceClient/priceClient.js.map +1 -1
  173. package/dist/cjs/providers/alchemy.js +19 -17
  174. package/dist/cjs/providers/alchemy.js.map +1 -1
  175. package/dist/cjs/providers/cachedProvider.js +129 -88
  176. package/dist/cjs/providers/cachedProvider.js.map +1 -1
  177. package/dist/cjs/providers/drpc.js +11 -9
  178. package/dist/cjs/providers/drpc.js.map +1 -1
  179. package/dist/cjs/providers/index.js +1 -1
  180. package/dist/cjs/providers/infura.js +12 -10
  181. package/dist/cjs/providers/infura.js.map +1 -1
  182. package/dist/cjs/providers/mocks/MockCachedSolanaRpcFactory.js +15 -7
  183. package/dist/cjs/providers/mocks/MockCachedSolanaRpcFactory.js.map +1 -1
  184. package/dist/cjs/providers/mocks/MockRateLimitedSolanaRpcFactory.js +14 -6
  185. package/dist/cjs/providers/mocks/MockRateLimitedSolanaRpcFactory.js.map +1 -1
  186. package/dist/cjs/providers/mocks/MockRetrySolanaRpcFactory.js +15 -7
  187. package/dist/cjs/providers/mocks/MockRetrySolanaRpcFactory.js.map +1 -1
  188. package/dist/cjs/providers/mocks/MockSolanaRpcFactory.js +66 -42
  189. package/dist/cjs/providers/mocks/MockSolanaRpcFactory.js.map +1 -1
  190. package/dist/cjs/providers/mocks/index.js +1 -1
  191. package/dist/cjs/providers/mocks/mockEthersProvider.js +31 -29
  192. package/dist/cjs/providers/mocks/mockEthersProvider.js.map +1 -1
  193. package/dist/cjs/providers/quicknode.js +21 -19
  194. package/dist/cjs/providers/quicknode.js.map +1 -1
  195. package/dist/cjs/providers/rateLimitedProvider.js +79 -64
  196. package/dist/cjs/providers/rateLimitedProvider.js.map +1 -1
  197. package/dist/cjs/providers/retryProvider.js +246 -163
  198. package/dist/cjs/providers/retryProvider.js.map +1 -1
  199. package/dist/cjs/providers/solana/baseRpcFactories.js +18 -14
  200. package/dist/cjs/providers/solana/baseRpcFactories.js.map +1 -1
  201. package/dist/cjs/providers/solana/cachedRpcFactory.js +112 -70
  202. package/dist/cjs/providers/solana/cachedRpcFactory.js.map +1 -1
  203. package/dist/cjs/providers/solana/defaultRpcFactory.js +15 -8
  204. package/dist/cjs/providers/solana/defaultRpcFactory.js.map +1 -1
  205. package/dist/cjs/providers/solana/index.js +1 -1
  206. package/dist/cjs/providers/solana/quorumFallbackRpcFactory.js +191 -135
  207. package/dist/cjs/providers/solana/quorumFallbackRpcFactory.js.map +1 -1
  208. package/dist/cjs/providers/solana/rateLimitedRpcFactory.js +90 -67
  209. package/dist/cjs/providers/solana/rateLimitedRpcFactory.js.map +1 -1
  210. package/dist/cjs/providers/solana/retryRpcFactory.js +79 -52
  211. package/dist/cjs/providers/solana/retryRpcFactory.js.map +1 -1
  212. package/dist/cjs/providers/solana/utils.js +2 -2
  213. package/dist/cjs/providers/solana/utils.js.map +1 -1
  214. package/dist/cjs/providers/speedProvider.js +53 -31
  215. package/dist/cjs/providers/speedProvider.js.map +1 -1
  216. package/dist/cjs/providers/types.js +1 -1
  217. package/dist/cjs/providers/types.js.map +1 -1
  218. package/dist/cjs/providers/utils.js +28 -26
  219. package/dist/cjs/providers/utils.js.map +1 -1
  220. package/dist/cjs/relayFeeCalculator/chain-queries/baseQuery.js +162 -108
  221. package/dist/cjs/relayFeeCalculator/chain-queries/baseQuery.js.map +1 -1
  222. package/dist/cjs/relayFeeCalculator/chain-queries/customGasToken.js +26 -14
  223. package/dist/cjs/relayFeeCalculator/chain-queries/customGasToken.js.map +1 -1
  224. package/dist/cjs/relayFeeCalculator/chain-queries/factory.js +29 -20
  225. package/dist/cjs/relayFeeCalculator/chain-queries/factory.js.map +1 -1
  226. package/dist/cjs/relayFeeCalculator/chain-queries/index.js +1 -1
  227. package/dist/cjs/relayFeeCalculator/chain-queries/svmQuery.js +137 -88
  228. package/dist/cjs/relayFeeCalculator/chain-queries/svmQuery.js.map +1 -1
  229. package/dist/cjs/relayFeeCalculator/index.js +1 -1
  230. package/dist/cjs/relayFeeCalculator/relayFeeCalculator.js +297 -199
  231. package/dist/cjs/relayFeeCalculator/relayFeeCalculator.js.map +1 -1
  232. package/dist/cjs/typeguards/error.js +7 -5
  233. package/dist/cjs/typeguards/error.js.map +1 -1
  234. package/dist/cjs/typeguards/index.js +1 -1
  235. package/dist/cjs/utils/AddressUtils.js +144 -117
  236. package/dist/cjs/utils/AddressUtils.js.map +1 -1
  237. package/dist/cjs/utils/ArrayUtils.js +78 -21
  238. package/dist/cjs/utils/ArrayUtils.js.map +1 -1
  239. package/dist/cjs/utils/BigNumberUtils.js +10 -9
  240. package/dist/cjs/utils/BigNumberUtils.js.map +1 -1
  241. package/dist/cjs/utils/BlockExplorerUtils.js +30 -26
  242. package/dist/cjs/utils/BlockExplorerUtils.js.map +1 -1
  243. package/dist/cjs/utils/BlockFinder.js +5 -2
  244. package/dist/cjs/utils/BlockFinder.js.map +1 -1
  245. package/dist/cjs/utils/BlockUtils.js +41 -24
  246. package/dist/cjs/utils/BlockUtils.js.map +1 -1
  247. package/dist/cjs/utils/BundleUtils.js +24 -21
  248. package/dist/cjs/utils/BundleUtils.js.map +1 -1
  249. package/dist/cjs/utils/CCTPUtils.js +126 -62
  250. package/dist/cjs/utils/CCTPUtils.js.map +1 -1
  251. package/dist/cjs/utils/CachingUtils.js +42 -20
  252. package/dist/cjs/utils/CachingUtils.js.map +1 -1
  253. package/dist/cjs/utils/ContractUtils.js +5 -5
  254. package/dist/cjs/utils/ContractUtils.js.map +1 -1
  255. package/dist/cjs/utils/DepositUtils.js +99 -122
  256. package/dist/cjs/utils/DepositUtils.js.map +1 -1
  257. package/dist/cjs/utils/EventUtils.js +70 -49
  258. package/dist/cjs/utils/EventUtils.js.map +1 -1
  259. package/dist/cjs/utils/FormattingUtils.js +32 -26
  260. package/dist/cjs/utils/FormattingUtils.js.map +1 -1
  261. package/dist/cjs/utils/HyperLiquidUtils.js +23 -10
  262. package/dist/cjs/utils/HyperLiquidUtils.js.map +1 -1
  263. package/dist/cjs/utils/IPFSUtils.js +34 -16
  264. package/dist/cjs/utils/IPFSUtils.js.map +1 -1
  265. package/dist/cjs/utils/JSONUtils.js +6 -6
  266. package/dist/cjs/utils/JSONUtils.js.map +1 -1
  267. package/dist/cjs/utils/LogUtils.js +12 -10
  268. package/dist/cjs/utils/LogUtils.js.map +1 -1
  269. package/dist/cjs/utils/Multicall.js +115 -56
  270. package/dist/cjs/utils/Multicall.js.map +1 -1
  271. package/dist/cjs/utils/NetworkUtils.js +28 -12
  272. package/dist/cjs/utils/NetworkUtils.js.map +1 -1
  273. package/dist/cjs/utils/NumberUtils.js +3 -1
  274. package/dist/cjs/utils/NumberUtils.js.map +1 -1
  275. package/dist/cjs/utils/ObjectUtils.js +41 -27
  276. package/dist/cjs/utils/ObjectUtils.js.map +1 -1
  277. package/dist/cjs/utils/Profiler.js +83 -80
  278. package/dist/cjs/utils/Profiler.js.map +1 -1
  279. package/dist/cjs/utils/ReviverUtils.js +9 -5
  280. package/dist/cjs/utils/ReviverUtils.js.map +1 -1
  281. package/dist/cjs/utils/SpokeUtils.js +84 -84
  282. package/dist/cjs/utils/SpokeUtils.js.map +1 -1
  283. package/dist/cjs/utils/TokenUtils.js +64 -41
  284. package/dist/cjs/utils/TokenUtils.js.map +1 -1
  285. package/dist/cjs/utils/TypeGuards.js +1 -1
  286. package/dist/cjs/utils/TypeGuards.js.map +1 -1
  287. package/dist/cjs/utils/ValidatorUtils.js +7 -7
  288. package/dist/cjs/utils/ValidatorUtils.js.map +1 -1
  289. package/dist/cjs/utils/abi/contracts/index.js +1 -1
  290. package/dist/cjs/utils/abi/index.js +22 -12
  291. package/dist/cjs/utils/abi/index.js.map +1 -1
  292. package/dist/cjs/utils/abi/typechain/factories/Multicall3__factory.js +12 -9
  293. package/dist/cjs/utils/abi/typechain/factories/Multicall3__factory.js.map +1 -1
  294. package/dist/cjs/utils/abi/typechain/index.js +1 -1
  295. package/dist/cjs/utils/common.js +53 -40
  296. package/dist/cjs/utils/common.js.map +1 -1
  297. package/dist/cjs/utils/index.js +1 -1
  298. package/dist/esm/addressAggregator/adapters/abstract.js +64 -48
  299. package/dist/esm/addressAggregator/adapters/abstract.js.map +1 -1
  300. package/dist/esm/addressAggregator/adapters/bybit.js +29 -15
  301. package/dist/esm/addressAggregator/adapters/bybit.js.map +1 -1
  302. package/dist/esm/addressAggregator/adapters/env.js +14 -9
  303. package/dist/esm/addressAggregator/adapters/env.js.map +1 -1
  304. package/dist/esm/addressAggregator/adapters/file.js +43 -29
  305. package/dist/esm/addressAggregator/adapters/file.js.map +1 -1
  306. package/dist/esm/addressAggregator/adapters/risklabs.js +35 -20
  307. package/dist/esm/addressAggregator/adapters/risklabs.js.map +1 -1
  308. package/dist/esm/addressAggregator/index.js +83 -52
  309. package/dist/esm/addressAggregator/index.js.map +1 -1
  310. package/dist/esm/addressAggregator/types.js +1 -1
  311. package/dist/esm/addressAggregator/types.js.map +1 -1
  312. package/dist/esm/apiClient/abstractClient.js +9 -15
  313. package/dist/esm/apiClient/abstractClient.js.map +1 -1
  314. package/dist/esm/apiClient/mockedClient.js +26 -21
  315. package/dist/esm/apiClient/mockedClient.js.map +1 -1
  316. package/dist/esm/apiClient/productionClient.js +101 -61
  317. package/dist/esm/apiClient/productionClient.js.map +1 -1
  318. package/dist/esm/arch/evm/BlockUtils.js +217 -139
  319. package/dist/esm/arch/evm/BlockUtils.js.map +1 -1
  320. package/dist/esm/arch/evm/SpokeUtils.js +289 -146
  321. package/dist/esm/arch/evm/SpokeUtils.js.map +1 -1
  322. package/dist/esm/arch/evm/utils/wait.js +46 -34
  323. package/dist/esm/arch/evm/utils/wait.js.map +1 -1
  324. package/dist/esm/arch/svm/BlockUtils.js +166 -118
  325. package/dist/esm/arch/svm/BlockUtils.js.map +1 -1
  326. package/dist/esm/arch/svm/SpokeUtils.js +1150 -738
  327. package/dist/esm/arch/svm/SpokeUtils.js.map +1 -1
  328. package/dist/esm/arch/svm/constants.js +1 -1
  329. package/dist/esm/arch/svm/constants.js.map +1 -1
  330. package/dist/esm/arch/svm/eventsClient.js +232 -172
  331. package/dist/esm/arch/svm/eventsClient.js.map +1 -1
  332. package/dist/esm/arch/svm/provider.js +1 -1
  333. package/dist/esm/arch/svm/provider.js.map +1 -1
  334. package/dist/esm/arch/svm/utils.js +345 -155
  335. package/dist/esm/arch/svm/utils.js.map +1 -1
  336. package/dist/esm/caching/Arweave/ArweaveClient.js +256 -182
  337. package/dist/esm/caching/Arweave/ArweaveClient.js.map +1 -1
  338. package/dist/esm/caching/IPFS/PinataIPFSClient.js +48 -47
  339. package/dist/esm/caching/IPFS/PinataIPFSClient.js.map +1 -1
  340. package/dist/esm/caching/Memory/MemoryCacheClient.js +19 -13
  341. package/dist/esm/caching/Memory/MemoryCacheClient.js.map +1 -1
  342. package/dist/esm/clients/AcrossConfigStoreClient/AcrossConfigStoreClient.js +408 -333
  343. package/dist/esm/clients/AcrossConfigStoreClient/AcrossConfigStoreClient.js.map +1 -1
  344. package/dist/esm/clients/BaseAbstractClient.js +92 -66
  345. package/dist/esm/clients/BaseAbstractClient.js.map +1 -1
  346. package/dist/esm/clients/BundleDataClient/BundleDataClient.js +1054 -927
  347. package/dist/esm/clients/BundleDataClient/BundleDataClient.js.map +1 -1
  348. package/dist/esm/clients/BundleDataClient/utils/DataworkerUtils.js +131 -102
  349. package/dist/esm/clients/BundleDataClient/utils/DataworkerUtils.js.map +1 -1
  350. package/dist/esm/clients/BundleDataClient/utils/FillUtils.js +59 -57
  351. package/dist/esm/clients/BundleDataClient/utils/FillUtils.js.map +1 -1
  352. package/dist/esm/clients/BundleDataClient/utils/MerkleTreeUtils.js +5 -7
  353. package/dist/esm/clients/BundleDataClient/utils/MerkleTreeUtils.js.map +1 -1
  354. package/dist/esm/clients/BundleDataClient/utils/PoolRebalanceUtils.js +94 -75
  355. package/dist/esm/clients/BundleDataClient/utils/PoolRebalanceUtils.js.map +1 -1
  356. package/dist/esm/clients/BundleDataClient/utils/SuperstructUtils.js +23 -45
  357. package/dist/esm/clients/BundleDataClient/utils/SuperstructUtils.js.map +1 -1
  358. package/dist/esm/clients/HubPoolClient.js +740 -581
  359. package/dist/esm/clients/HubPoolClient.js.map +1 -1
  360. package/dist/esm/clients/SpokePoolClient/EVMSpokePoolClient.js +178 -133
  361. package/dist/esm/clients/SpokePoolClient/EVMSpokePoolClient.js.map +1 -1
  362. package/dist/esm/clients/SpokePoolClient/SVMSpokePoolClient.js +183 -126
  363. package/dist/esm/clients/SpokePoolClient/SVMSpokePoolClient.js.map +1 -1
  364. package/dist/esm/clients/SpokePoolClient/SpokePoolClient.js +399 -372
  365. package/dist/esm/clients/SpokePoolClient/SpokePoolClient.js.map +1 -1
  366. package/dist/esm/clients/SpokePoolClient/SpokePoolClientManager.js +9 -9
  367. package/dist/esm/clients/SpokePoolClient/SpokePoolClientManager.js.map +1 -1
  368. package/dist/esm/clients/SpokePoolClient/index.js +2 -2
  369. package/dist/esm/clients/SpokePoolClient/index.js.map +1 -1
  370. package/dist/esm/clients/SpokePoolClient/types.js +2 -2
  371. package/dist/esm/clients/SpokePoolClient/types.js.map +1 -1
  372. package/dist/esm/clients/mocks/MockConfigStoreClient.js +64 -53
  373. package/dist/esm/clients/mocks/MockConfigStoreClient.js.map +1 -1
  374. package/dist/esm/clients/mocks/MockEvents.js +49 -42
  375. package/dist/esm/clients/mocks/MockEvents.js.map +1 -1
  376. package/dist/esm/clients/mocks/MockHubPoolClient.js +182 -138
  377. package/dist/esm/clients/mocks/MockHubPoolClient.js.map +1 -1
  378. package/dist/esm/clients/mocks/MockSpokePoolClient.js +188 -202
  379. package/dist/esm/clients/mocks/MockSpokePoolClient.js.map +1 -1
  380. package/dist/esm/clients/mocks/MockSvmCpiEventsClient.js +132 -127
  381. package/dist/esm/clients/mocks/MockSvmCpiEventsClient.js.map +1 -1
  382. package/dist/esm/clients/mocks/MockSvmSpokePoolClient.js +69 -53
  383. package/dist/esm/clients/mocks/MockSvmSpokePoolClient.js.map +1 -1
  384. package/dist/esm/coingecko/Coingecko.js +443 -298
  385. package/dist/esm/coingecko/Coingecko.js.map +1 -1
  386. package/dist/esm/constants.js +47 -40
  387. package/dist/esm/constants.js.map +1 -1
  388. package/dist/esm/contracts/acrossConfigStore.js +46 -24
  389. package/dist/esm/contracts/acrossConfigStore.js.map +1 -1
  390. package/dist/esm/contracts/hubPool.js +18 -34
  391. package/dist/esm/contracts/hubPool.js.map +1 -1
  392. package/dist/esm/contracts/utils.js +5 -3
  393. package/dist/esm/contracts/utils.js.map +1 -1
  394. package/dist/esm/gasPriceOracle/adapters/arbitrum.js +14 -6
  395. package/dist/esm/gasPriceOracle/adapters/arbitrum.js.map +1 -1
  396. package/dist/esm/gasPriceOracle/adapters/ethereum.js +42 -22
  397. package/dist/esm/gasPriceOracle/adapters/ethereum.js.map +1 -1
  398. package/dist/esm/gasPriceOracle/adapters/linea-viem.js +25 -13
  399. package/dist/esm/gasPriceOracle/adapters/linea-viem.js.map +1 -1
  400. package/dist/esm/gasPriceOracle/adapters/polygon.js +108 -72
  401. package/dist/esm/gasPriceOracle/adapters/polygon.js.map +1 -1
  402. package/dist/esm/gasPriceOracle/adapters/solana.js +31 -22
  403. package/dist/esm/gasPriceOracle/adapters/solana.js.map +1 -1
  404. package/dist/esm/gasPriceOracle/oracle.js +96 -70
  405. package/dist/esm/gasPriceOracle/oracle.js.map +1 -1
  406. package/dist/esm/gasPriceOracle/types.js +2 -2
  407. package/dist/esm/gasPriceOracle/types.js.map +1 -1
  408. package/dist/esm/gasPriceOracle/util.js +4 -4
  409. package/dist/esm/gasPriceOracle/util.js.map +1 -1
  410. package/dist/esm/lpFeeCalculator/lpFeeCalculator.js +33 -30
  411. package/dist/esm/lpFeeCalculator/lpFeeCalculator.js.map +1 -1
  412. package/dist/esm/lpFeeCalculator/rateModel.js +9 -7
  413. package/dist/esm/lpFeeCalculator/rateModel.js.map +1 -1
  414. package/dist/esm/merkleDistributor/MerkleDistributor.js +17 -18
  415. package/dist/esm/merkleDistributor/MerkleDistributor.js.map +1 -1
  416. package/dist/esm/pool/TransactionManager.js +100 -45
  417. package/dist/esm/pool/TransactionManager.js.map +1 -1
  418. package/dist/esm/pool/poolClient.js +740 -479
  419. package/dist/esm/pool/poolClient.js.map +1 -1
  420. package/dist/esm/pool/uma/across/constants.js +2 -2
  421. package/dist/esm/pool/uma/across/constants.js.map +1 -1
  422. package/dist/esm/pool/uma/across/transactionManager.js +100 -45
  423. package/dist/esm/pool/uma/across/transactionManager.js.map +1 -1
  424. package/dist/esm/pool/uma/clients/erc20/client.js +13 -15
  425. package/dist/esm/pool/uma/clients/erc20/client.js.map +1 -1
  426. package/dist/esm/pool/uma/oracle/utils.js +3 -2
  427. package/dist/esm/pool/uma/oracle/utils.js.map +1 -1
  428. package/dist/esm/pool/uma/utils.js +28 -9
  429. package/dist/esm/pool/uma/utils.js.map +1 -1
  430. package/dist/esm/priceClient/adapters/acrossApi.js +40 -21
  431. package/dist/esm/priceClient/adapters/acrossApi.js.map +1 -1
  432. package/dist/esm/priceClient/adapters/baseAdapter.js +72 -46
  433. package/dist/esm/priceClient/adapters/baseAdapter.js.map +1 -1
  434. package/dist/esm/priceClient/adapters/coingecko.js +61 -33
  435. package/dist/esm/priceClient/adapters/coingecko.js.map +1 -1
  436. package/dist/esm/priceClient/adapters/default.js +31 -15
  437. package/dist/esm/priceClient/adapters/default.js.map +1 -1
  438. package/dist/esm/priceClient/adapters/defiLlama.js +73 -38
  439. package/dist/esm/priceClient/adapters/defiLlama.js.map +1 -1
  440. package/dist/esm/priceClient/priceClient.js +158 -109
  441. package/dist/esm/priceClient/priceClient.js.map +1 -1
  442. package/dist/esm/providers/alchemy.js +18 -16
  443. package/dist/esm/providers/alchemy.js.map +1 -1
  444. package/dist/esm/providers/cachedProvider.js +134 -99
  445. package/dist/esm/providers/cachedProvider.js.map +1 -1
  446. package/dist/esm/providers/constants.js +3 -3
  447. package/dist/esm/providers/constants.js.map +1 -1
  448. package/dist/esm/providers/drpc.js +10 -8
  449. package/dist/esm/providers/drpc.js.map +1 -1
  450. package/dist/esm/providers/infura.js +11 -9
  451. package/dist/esm/providers/infura.js.map +1 -1
  452. package/dist/esm/providers/mocks/MockCachedSolanaRpcFactory.js +15 -6
  453. package/dist/esm/providers/mocks/MockCachedSolanaRpcFactory.js.map +1 -1
  454. package/dist/esm/providers/mocks/MockRateLimitedSolanaRpcFactory.js +14 -5
  455. package/dist/esm/providers/mocks/MockRateLimitedSolanaRpcFactory.js.map +1 -1
  456. package/dist/esm/providers/mocks/MockRetrySolanaRpcFactory.js +15 -6
  457. package/dist/esm/providers/mocks/MockRetrySolanaRpcFactory.js.map +1 -1
  458. package/dist/esm/providers/mocks/MockSolanaRpcFactory.js +66 -41
  459. package/dist/esm/providers/mocks/MockSolanaRpcFactory.js.map +1 -1
  460. package/dist/esm/providers/mocks/mockEthersProvider.js +30 -27
  461. package/dist/esm/providers/mocks/mockEthersProvider.js.map +1 -1
  462. package/dist/esm/providers/quicknode.js +20 -18
  463. package/dist/esm/providers/quicknode.js.map +1 -1
  464. package/dist/esm/providers/rateLimitedProvider.js +80 -68
  465. package/dist/esm/providers/rateLimitedProvider.js.map +1 -1
  466. package/dist/esm/providers/retryProvider.js +259 -186
  467. package/dist/esm/providers/retryProvider.js.map +1 -1
  468. package/dist/esm/providers/solana/baseRpcFactories.js +19 -13
  469. package/dist/esm/providers/solana/baseRpcFactories.js.map +1 -1
  470. package/dist/esm/providers/solana/cachedRpcFactory.js +112 -75
  471. package/dist/esm/providers/solana/cachedRpcFactory.js.map +1 -1
  472. package/dist/esm/providers/solana/defaultRpcFactory.js +14 -6
  473. package/dist/esm/providers/solana/defaultRpcFactory.js.map +1 -1
  474. package/dist/esm/providers/solana/quorumFallbackRpcFactory.js +202 -149
  475. package/dist/esm/providers/solana/quorumFallbackRpcFactory.js.map +1 -1
  476. package/dist/esm/providers/solana/rateLimitedRpcFactory.js +90 -70
  477. package/dist/esm/providers/solana/rateLimitedRpcFactory.js.map +1 -1
  478. package/dist/esm/providers/solana/retryRpcFactory.js +74 -50
  479. package/dist/esm/providers/solana/retryRpcFactory.js.map +1 -1
  480. package/dist/esm/providers/solana/utils.js +1 -1
  481. package/dist/esm/providers/solana/utils.js.map +1 -1
  482. package/dist/esm/providers/speedProvider.js +51 -28
  483. package/dist/esm/providers/speedProvider.js.map +1 -1
  484. package/dist/esm/providers/types.js +2 -2
  485. package/dist/esm/providers/types.js.map +1 -1
  486. package/dist/esm/providers/utils.js +20 -17
  487. package/dist/esm/providers/utils.js.map +1 -1
  488. package/dist/esm/relayFeeCalculator/chain-queries/baseQuery.js +152 -98
  489. package/dist/esm/relayFeeCalculator/chain-queries/baseQuery.js.map +1 -1
  490. package/dist/esm/relayFeeCalculator/chain-queries/customGasToken.js +26 -13
  491. package/dist/esm/relayFeeCalculator/chain-queries/customGasToken.js.map +1 -1
  492. package/dist/esm/relayFeeCalculator/chain-queries/factory.js +19 -9
  493. package/dist/esm/relayFeeCalculator/chain-queries/factory.js.map +1 -1
  494. package/dist/esm/relayFeeCalculator/chain-queries/svmQuery.js +128 -83
  495. package/dist/esm/relayFeeCalculator/chain-queries/svmQuery.js.map +1 -1
  496. package/dist/esm/relayFeeCalculator/relayFeeCalculator.js +299 -211
  497. package/dist/esm/relayFeeCalculator/relayFeeCalculator.js.map +1 -1
  498. package/dist/esm/typeguards/error.js +5 -3
  499. package/dist/esm/typeguards/error.js.map +1 -1
  500. package/dist/esm/utils/AddressUtils.js +147 -115
  501. package/dist/esm/utils/AddressUtils.js.map +1 -1
  502. package/dist/esm/utils/ArrayUtils.js +78 -21
  503. package/dist/esm/utils/ArrayUtils.js.map +1 -1
  504. package/dist/esm/utils/BigNumberUtils.js +12 -11
  505. package/dist/esm/utils/BigNumberUtils.js.map +1 -1
  506. package/dist/esm/utils/BlockExplorerUtils.js +23 -19
  507. package/dist/esm/utils/BlockExplorerUtils.js.map +1 -1
  508. package/dist/esm/utils/BlockFinder.js +6 -2
  509. package/dist/esm/utils/BlockFinder.js.map +1 -1
  510. package/dist/esm/utils/BlockUtils.js +40 -31
  511. package/dist/esm/utils/BlockUtils.js.map +1 -1
  512. package/dist/esm/utils/BundleUtils.js +24 -21
  513. package/dist/esm/utils/BundleUtils.js.map +1 -1
  514. package/dist/esm/utils/CCTPUtils.js +123 -62
  515. package/dist/esm/utils/CCTPUtils.js.map +1 -1
  516. package/dist/esm/utils/CachingUtils.js +38 -17
  517. package/dist/esm/utils/CachingUtils.js.map +1 -1
  518. package/dist/esm/utils/ContractUtils.js +3 -3
  519. package/dist/esm/utils/ContractUtils.js.map +1 -1
  520. package/dist/esm/utils/DepositUtils.js +98 -121
  521. package/dist/esm/utils/DepositUtils.js.map +1 -1
  522. package/dist/esm/utils/EventUtils.js +69 -52
  523. package/dist/esm/utils/EventUtils.js.map +1 -1
  524. package/dist/esm/utils/FormattingUtils.js +26 -20
  525. package/dist/esm/utils/FormattingUtils.js.map +1 -1
  526. package/dist/esm/utils/HyperLiquidUtils.js +22 -8
  527. package/dist/esm/utils/HyperLiquidUtils.js.map +1 -1
  528. package/dist/esm/utils/IPFSUtils.js +35 -16
  529. package/dist/esm/utils/IPFSUtils.js.map +1 -1
  530. package/dist/esm/utils/JSONUtils.js +4 -4
  531. package/dist/esm/utils/JSONUtils.js.map +1 -1
  532. package/dist/esm/utils/LogUtils.js +12 -8
  533. package/dist/esm/utils/LogUtils.js.map +1 -1
  534. package/dist/esm/utils/Multicall.js +110 -50
  535. package/dist/esm/utils/Multicall.js.map +1 -1
  536. package/dist/esm/utils/NetworkUtils.js +28 -12
  537. package/dist/esm/utils/NetworkUtils.js.map +1 -1
  538. package/dist/esm/utils/NumberUtils.js +3 -1
  539. package/dist/esm/utils/NumberUtils.js.map +1 -1
  540. package/dist/esm/utils/ObjectUtils.js +41 -27
  541. package/dist/esm/utils/ObjectUtils.js.map +1 -1
  542. package/dist/esm/utils/Profiler.js +82 -77
  543. package/dist/esm/utils/Profiler.js.map +1 -1
  544. package/dist/esm/utils/ReviverUtils.js +7 -3
  545. package/dist/esm/utils/ReviverUtils.js.map +1 -1
  546. package/dist/esm/utils/SpokeUtils.js +78 -83
  547. package/dist/esm/utils/SpokeUtils.js.map +1 -1
  548. package/dist/esm/utils/TokenUtils.js +57 -33
  549. package/dist/esm/utils/TokenUtils.js.map +1 -1
  550. package/dist/esm/utils/ValidatorUtils.js +4 -4
  551. package/dist/esm/utils/ValidatorUtils.js.map +1 -1
  552. package/dist/esm/utils/abi/index.js +20 -10
  553. package/dist/esm/utils/abi/index.js.map +1 -1
  554. package/dist/esm/utils/abi/typechain/factories/Multicall3__factory.js +12 -8
  555. package/dist/esm/utils/abi/typechain/factories/Multicall3__factory.js.map +1 -1
  556. package/dist/esm/utils/common.js +52 -38
  557. package/dist/esm/utils/common.js.map +1 -1
  558. package/dist/types/constants.d.ts.map +1 -1
  559. package/dist/types/gasPriceOracle/oracle.d.ts.map +1 -1
  560. package/dist/types/utils/Multicall.d.ts.map +1 -1
  561. package/dist/types/utils/NetworkUtils.d.ts.map +1 -1
  562. package/package.json +3 -3
  563. package/src/constants.ts +1 -0
  564. package/src/gasPriceOracle/oracle.ts +1 -0
  565. package/src/utils/Multicall.ts +1 -0
  566. package/src/utils/NetworkUtils.ts +8 -1
@@ -2,284 +2,411 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.Coingecko = void 0;
4
4
  exports.msToS = msToS;
5
- const tslib_1 = require("tslib");
6
- const axios_1 = tslib_1.__importDefault(require("axios"));
7
- const assert_1 = tslib_1.__importDefault(require("assert"));
8
- const lodash_get_1 = tslib_1.__importDefault(require("lodash.get"));
9
- const utils_1 = require("../utils");
5
+ var tslib_1 = require("tslib");
6
+ var axios_1 = tslib_1.__importDefault(require("axios"));
7
+ var assert_1 = tslib_1.__importDefault(require("assert"));
8
+ var lodash_get_1 = tslib_1.__importDefault(require("lodash.get"));
9
+ var utils_1 = require("../utils");
10
10
  function msToS(ms) {
11
11
  return Math.floor(ms / 1000);
12
12
  }
13
- class Coingecko {
14
- host;
15
- proHost;
16
- logger;
17
- apiKey;
18
- customPlatformIdMap;
19
- static instance;
20
- prices;
21
- pricesBySymbol;
22
- _maxPriceAge = 300;
23
- retryDelay = 1;
24
- numRetries = 0;
25
- basicApiTimeout = 500;
26
- platformIdMap = new Map();
27
- tokenIdMap = {};
28
- static get(logger, apiKey, customPlatformIdMap) {
29
- if (!this.instance)
30
- this.instance = new Coingecko("https://api.coingecko.com/api/v3", "https://pro-api.coingecko.com/api/v3", logger, apiKey, customPlatformIdMap);
31
- return this.instance;
32
- }
33
- get maxPriceAge() {
34
- return this._maxPriceAge;
35
- }
36
- set maxPriceAge(age) {
37
- (0, assert_1.default)(age >= 0);
38
- this.logger.debug({
39
- at: "Coingecko#maxPriceAge",
40
- message: `Setting maxPriceAge (S) ${this._maxPriceAge} => ${age}.`,
41
- });
42
- this._maxPriceAge = age;
43
- }
44
- constructor(host, proHost, logger, apiKey, customPlatformIdMap) {
13
+ var Coingecko = (function () {
14
+ function Coingecko(host, proHost, logger, apiKey, customPlatformIdMap) {
45
15
  this.host = host;
46
16
  this.proHost = proHost;
47
17
  this.logger = logger;
48
18
  this.apiKey = apiKey;
49
19
  this.customPlatformIdMap = customPlatformIdMap;
20
+ this._maxPriceAge = 300;
21
+ this.retryDelay = 1;
22
+ this.numRetries = 0;
23
+ this.basicApiTimeout = 500;
24
+ this.platformIdMap = new Map();
25
+ this.tokenIdMap = {};
50
26
  this.prices = {};
51
27
  this.pricesBySymbol = {};
52
28
  }
53
- async getPlatformId(chainId) {
54
- let id = this.platformIdMap.get(chainId);
55
- if (id) {
56
- return id;
57
- }
58
- const platforms = await this.getPlatforms();
59
- this.platformIdMap = new Map(platforms.filter((chain) => Boolean(chain.chain_identifier)).map((chain) => [chain.chain_identifier, chain.id]));
60
- if (this.customPlatformIdMap) {
61
- Object.entries(this.customPlatformIdMap).forEach(([chainId, platformId]) => {
62
- this.platformIdMap.set(Number(chainId), platformId);
29
+ Coingecko.get = function (logger, apiKey, customPlatformIdMap) {
30
+ if (!this.instance)
31
+ this.instance = new Coingecko("https://api.coingecko.com/api/v3", "https://pro-api.coingecko.com/api/v3", logger, apiKey, customPlatformIdMap);
32
+ return this.instance;
33
+ };
34
+ Object.defineProperty(Coingecko.prototype, "maxPriceAge", {
35
+ get: function () {
36
+ return this._maxPriceAge;
37
+ },
38
+ set: function (age) {
39
+ (0, assert_1.default)(age >= 0);
40
+ this.logger.debug({
41
+ at: "Coingecko#maxPriceAge",
42
+ message: "Setting maxPriceAge (S) ".concat(this._maxPriceAge, " => ").concat(age, "."),
63
43
  });
64
- }
65
- id = this.platformIdMap.get(chainId);
66
- if (!id) {
67
- this.logger.error({
68
- message: `Coingecko does not support chain with id ${chainId}`,
69
- at: "Coingecko#getPlatformId",
44
+ this._maxPriceAge = age;
45
+ },
46
+ enumerable: false,
47
+ configurable: true
48
+ });
49
+ Coingecko.prototype.getPlatformId = function (chainId) {
50
+ return tslib_1.__awaiter(this, void 0, void 0, function () {
51
+ var id, platforms;
52
+ var _this = this;
53
+ return tslib_1.__generator(this, function (_a) {
54
+ switch (_a.label) {
55
+ case 0:
56
+ id = this.platformIdMap.get(chainId);
57
+ if (id) {
58
+ return [2, id];
59
+ }
60
+ return [4, this.getPlatforms()];
61
+ case 1:
62
+ platforms = _a.sent();
63
+ this.platformIdMap = new Map(platforms.filter(function (chain) { return Boolean(chain.chain_identifier); }).map(function (chain) { return [chain.chain_identifier, chain.id]; }));
64
+ if (this.customPlatformIdMap) {
65
+ Object.entries(this.customPlatformIdMap).forEach(function (_a) {
66
+ var chainId = _a[0], platformId = _a[1];
67
+ _this.platformIdMap.set(Number(chainId), platformId);
68
+ });
69
+ }
70
+ id = this.platformIdMap.get(chainId);
71
+ if (!id) {
72
+ this.logger.error({
73
+ message: "Coingecko does not support chain with id ".concat(chainId),
74
+ at: "Coingecko#getPlatformId",
75
+ });
76
+ throw new Error("Coingecko does not support chain with id ".concat(chainId));
77
+ }
78
+ return [2, id];
79
+ }
70
80
  });
71
- throw new Error(`Coingecko does not support chain with id ${chainId}`);
72
- }
73
- return id;
74
- }
75
- async getCoingeckoTokenId(address, chainId) {
76
- let id;
77
- try {
78
- id = (0, utils_1.getCoingeckoTokenIdByAddress)(address, chainId);
79
- return id;
80
- }
81
- catch (error) {
82
- this.logger.warn({
83
- at: "Coingecko#getCoingeckoTokenIdByAddress",
84
- message: `Token with address ${address} not found in constants. Attempting to fetch ID from coingecko API...`,
81
+ });
82
+ };
83
+ Coingecko.prototype.getCoingeckoTokenId = function (address, chainId) {
84
+ return tslib_1.__awaiter(this, void 0, void 0, function () {
85
+ var id, platformId, message;
86
+ return tslib_1.__generator(this, function (_a) {
87
+ switch (_a.label) {
88
+ case 0:
89
+ try {
90
+ id = (0, utils_1.getCoingeckoTokenIdByAddress)(address, chainId);
91
+ return [2, id];
92
+ }
93
+ catch (error) {
94
+ this.logger.warn({
95
+ at: "Coingecko#getCoingeckoTokenIdByAddress",
96
+ message: "Token with address ".concat(address, " not found in constants. Attempting to fetch ID from coingecko API..."),
97
+ });
98
+ }
99
+ return [4, this.getPlatformId(chainId)];
100
+ case 1:
101
+ platformId = _a.sent();
102
+ id = this.getTokenIdFromAddress(address, platformId);
103
+ if (id) {
104
+ return [2, id];
105
+ }
106
+ return [4, this.updateTokenMap()];
107
+ case 2:
108
+ _a.sent();
109
+ id = this.getTokenIdFromAddress(address, platformId);
110
+ if (!id) {
111
+ message = "Coin with address ".concat(address, " does not exist on chain with id ").concat(chainId);
112
+ this.logger.error({
113
+ at: "Coingecko#getCoingeckoTokenIdByAddress",
114
+ message: message,
115
+ });
116
+ throw new Error(message);
117
+ }
118
+ return [2, id];
119
+ }
85
120
  });
86
- }
87
- const platformId = await this.getPlatformId(chainId);
88
- id = this.getTokenIdFromAddress(address, platformId);
89
- if (id) {
90
- return id;
91
- }
92
- await this.updateTokenMap();
93
- id = this.getTokenIdFromAddress(address, platformId);
94
- if (!id) {
95
- const message = `Coin with address ${address} does not exist on chain with id ${chainId}`;
96
- this.logger.error({
97
- at: "Coingecko#getCoingeckoTokenIdByAddress",
98
- message,
121
+ });
122
+ };
123
+ Coingecko.prototype.getTokenIdFromAddress = function (address, platformId) {
124
+ var _a;
125
+ return (_a = Object.entries(this.tokenIdMap).find(function (_a) {
126
+ var _b;
127
+ var _ = _a[0], value = _a[1];
128
+ return Boolean(((_b = value === null || value === void 0 ? void 0 : value[platformId]) === null || _b === void 0 ? void 0 : _b.toLowerCase()) === address.toLowerCase());
129
+ })) === null || _a === void 0 ? void 0 : _a[0];
130
+ };
131
+ Coingecko.prototype.updateTokenMap = function () {
132
+ return tslib_1.__awaiter(this, void 0, void 0, function () {
133
+ var rawTokenList;
134
+ return tslib_1.__generator(this, function (_a) {
135
+ switch (_a.label) {
136
+ case 0: return [4, this.call("coins/list?include_platform=true")];
137
+ case 1:
138
+ rawTokenList = _a.sent();
139
+ this.tokenIdMap = Object.fromEntries(rawTokenList
140
+ .filter(function (token) { var _a; return Boolean(((_a = Object.values(token === null || token === void 0 ? void 0 : token.platforms)) === null || _a === void 0 ? void 0 : _a.length) > 0); })
141
+ .map(function (token) { return [token.id, token.platforms]; }));
142
+ return [2, this.tokenIdMap];
143
+ }
99
144
  });
100
- throw new Error(message);
101
- }
102
- return id;
103
- }
104
- getTokenIdFromAddress(address, platformId) {
105
- return Object.entries(this.tokenIdMap).find(([_, value]) => Boolean(value?.[platformId]?.toLowerCase() === address.toLowerCase()))?.[0];
106
- }
107
- async updateTokenMap() {
108
- const rawTokenList = await this.call("coins/list?include_platform=true");
109
- this.tokenIdMap = Object.fromEntries(rawTokenList
110
- .filter((token) => Boolean(Object.values(token?.platforms)?.length > 0))
111
- .map((token) => [token.id, token.platforms]));
112
- return this.tokenIdMap;
113
- }
114
- async getHistoricContractPrices(contract, from, to, currency = "usd") {
115
- (0, assert_1.default)(contract, "requires contract address");
116
- (0, assert_1.default)(currency, "requires currency symbol");
117
- (0, assert_1.default)(from, "requires from timestamp");
118
- (0, assert_1.default)(to, "requires to timestamp");
119
- const _from = msToS(from);
120
- const _to = msToS(to);
121
- const result = await this.call(`coins/ethereum/contract/${contract.toLowerCase()}/market_chart/range/?vs_currency=${currency}&from=${_from}&to=${_to}`);
122
- if (result.prices)
123
- return result.prices;
124
- throw new Error("Something went wrong fetching coingecko prices!");
125
- }
126
- async getContractHistoricDayPrice(contractAddress, date, currency = "usd", chainId = 1) {
127
- const coingeckoTokenIdentifier = await this.getCoingeckoTokenId(contractAddress, chainId);
128
- (0, assert_1.default)(date, "Requires date string");
129
- const url = `coins/${coingeckoTokenIdentifier}/history`;
130
- const queryParams = {
131
- date,
132
- localization: "false",
133
- };
134
- const result = await this.call(`${url}?${new URLSearchParams(queryParams).toString()}`);
135
- const price = result?.market_data?.current_price?.[currency];
136
- (0, assert_1.default)(price, `No price found for ${contractAddress} on ${date}`);
137
- return price;
138
- }
139
- getContractDetails(contract_address, platform_id = "ethereum") {
140
- return this.call(`coins/${platform_id}/contract/${contract_address.toLowerCase()}`);
141
- }
142
- async getCurrentPriceByContract(contractAddress, currency = "usd", chainId = 1) {
143
- const platform_id = await this.getPlatformId(chainId);
144
- const priceCache = this.getPriceCache(currency, platform_id);
145
- let tokenPrice = this.getCachedAddressPrice(contractAddress, currency, platform_id);
146
- if (tokenPrice === undefined) {
147
- await this.getContractPrices([contractAddress], currency, platform_id);
148
- tokenPrice = priceCache[contractAddress];
149
- }
150
- (0, assert_1.default)(tokenPrice !== undefined);
151
- return [tokenPrice.timestamp.toString(), tokenPrice.price];
152
- }
153
- async getCurrentPriceById(contractAddress, currency = "usd", chainId = 1) {
154
- const platform_id = await this.getPlatformId(chainId);
155
- const priceCache = this.getPriceCache(currency, platform_id);
156
- let tokenPrice = this.getCachedAddressPrice(contractAddress, currency, platform_id);
157
- if (tokenPrice === undefined) {
158
- const coingeckoId = await this.getCoingeckoTokenId(contractAddress, chainId);
159
- const result = await this.call(`simple/price?ids=${coingeckoId}&vs_currencies=${currency}&include_last_updated_at=true`);
160
- const cgPrice = result?.[coingeckoId];
161
- if (cgPrice === undefined || !cgPrice?.[currency]) {
162
- const errMsg = `No price found for ${coingeckoId}`;
163
- this.logger.debug({
164
- at: "Coingecko#getCurrentPriceById",
165
- message: errMsg,
166
- });
167
- throw new Error(errMsg);
168
- }
169
- else {
170
- this.updatePriceCache(cgPrice, contractAddress, currency, platform_id);
171
- }
172
- }
173
- tokenPrice = priceCache[contractAddress];
174
- (0, assert_1.default)(tokenPrice !== undefined);
175
- return [tokenPrice.timestamp.toString(), tokenPrice.price];
176
- }
177
- async getCurrentPriceBySymbol(symbol, currency = "usd") {
178
- let tokenPrice = this.getCachedSymbolPrice(symbol, currency);
179
- if (tokenPrice === undefined) {
180
- const result = await this.call(`simple/price?symbols=${symbol}&vs_currencies=${currency}&include_last_updated_at=true`);
181
- const cgPrice = result?.[symbol.toLowerCase()] || result?.[symbol.toUpperCase()];
182
- if (cgPrice === undefined || !cgPrice?.[currency]) {
183
- const errMsg = `Failed to retrieve ${symbol}/${currency} price via Coingecko API`;
184
- this.logger.debug({
185
- at: "Coingecko#getCurrentPriceBySymbol",
186
- message: errMsg,
187
- });
188
- throw new Error(errMsg);
189
- }
190
- else {
191
- this.updatePriceCacheBySymbol(cgPrice, symbol, currency);
192
- }
193
- }
194
- tokenPrice = this.getCachedSymbolPrice(symbol, currency);
195
- (0, assert_1.default)(tokenPrice !== undefined);
196
- return [tokenPrice.timestamp.toString(), tokenPrice.price];
197
- }
198
- async getContractPrices(addresses, currency = "usd", platform_id = "ethereum") {
199
- const priceCache = this.getPriceCache(currency, platform_id);
200
- addresses.forEach((addr) => {
201
- if (priceCache[addr] === undefined) {
202
- priceCache[addr] = { address: addr, price: 0, timestamp: 0 };
203
- }
204
145
  });
205
- const contract_addresses = Object.keys(priceCache);
206
- (0, assert_1.default)(contract_addresses.length > 0, "Must supply at least 1 contract address");
207
- this.logger.debug({
208
- at: "Coingecko#getContractPrices",
209
- message: `Updating ${platform_id}/${currency} token prices.`,
210
- tokens: contract_addresses,
146
+ };
147
+ Coingecko.prototype.getHistoricContractPrices = function (contract_1, from_1, to_1) {
148
+ return tslib_1.__awaiter(this, arguments, void 0, function (contract, from, to, currency) {
149
+ var _from, _to, result;
150
+ if (currency === void 0) { currency = "usd"; }
151
+ return tslib_1.__generator(this, function (_a) {
152
+ switch (_a.label) {
153
+ case 0:
154
+ (0, assert_1.default)(contract, "requires contract address");
155
+ (0, assert_1.default)(currency, "requires currency symbol");
156
+ (0, assert_1.default)(from, "requires from timestamp");
157
+ (0, assert_1.default)(to, "requires to timestamp");
158
+ _from = msToS(from);
159
+ _to = msToS(to);
160
+ return [4, this.call("coins/ethereum/contract/".concat(contract.toLowerCase(), "/market_chart/range/?vs_currency=").concat(currency, "&from=").concat(_from, "&to=").concat(_to))];
161
+ case 1:
162
+ result = _a.sent();
163
+ if (result.prices)
164
+ return [2, result.prices];
165
+ throw new Error("Something went wrong fetching coingecko prices!");
166
+ }
167
+ });
211
168
  });
212
- let result = {};
213
- try {
214
- result = await this.call(`simple/token_price/${platform_id}?contract_addresses=${contract_addresses.join("%2C")}&vs_currencies=${currency}&include_last_updated_at=true`);
215
- }
216
- catch (err) {
217
- const errMsg = `Failed to retrieve ${platform_id}/${currency} prices (${err})`;
218
- this.logger.debug({
219
- at: "Coingecko#getContractPrices",
220
- message: errMsg,
221
- tokens: contract_addresses,
169
+ };
170
+ Coingecko.prototype.getContractHistoricDayPrice = function (contractAddress_1, date_1) {
171
+ return tslib_1.__awaiter(this, arguments, void 0, function (contractAddress, date, currency, chainId) {
172
+ var coingeckoTokenIdentifier, url, queryParams, result, price;
173
+ var _a, _b;
174
+ if (currency === void 0) { currency = "usd"; }
175
+ if (chainId === void 0) { chainId = 1; }
176
+ return tslib_1.__generator(this, function (_c) {
177
+ switch (_c.label) {
178
+ case 0: return [4, this.getCoingeckoTokenId(contractAddress, chainId)];
179
+ case 1:
180
+ coingeckoTokenIdentifier = _c.sent();
181
+ (0, assert_1.default)(date, "Requires date string");
182
+ url = "coins/".concat(coingeckoTokenIdentifier, "/history");
183
+ queryParams = {
184
+ date: date,
185
+ localization: "false",
186
+ };
187
+ return [4, this.call("".concat(url, "?").concat(new URLSearchParams(queryParams).toString()))];
188
+ case 2:
189
+ result = _c.sent();
190
+ price = (_b = (_a = result === null || result === void 0 ? void 0 : result.market_data) === null || _a === void 0 ? void 0 : _a.current_price) === null || _b === void 0 ? void 0 : _b[currency];
191
+ (0, assert_1.default)(price, "No price found for ".concat(contractAddress, " on ").concat(date));
192
+ return [2, price];
193
+ }
222
194
  });
223
- throw new Error(errMsg);
224
- }
225
- contract_addresses.forEach((addr) => {
226
- const cgPrice = result[addr.toLowerCase()];
227
- if (cgPrice === undefined) {
228
- this.logger.debug({
229
- at: "Coingecko#getContractPrices",
230
- message: `Token ${addr} not included in CoinGecko response.`,
231
- });
232
- }
233
- else {
234
- this.updatePriceCache(cgPrice, addr, currency, platform_id);
235
- }
236
195
  });
237
- return addresses.map((addr) => priceCache[addr]);
238
- }
239
- getPlatforms() {
196
+ };
197
+ Coingecko.prototype.getContractDetails = function (contract_address, platform_id) {
198
+ if (platform_id === void 0) { platform_id = "ethereum"; }
199
+ return this.call("coins/".concat(platform_id, "/contract/").concat(contract_address.toLowerCase()));
200
+ };
201
+ Coingecko.prototype.getCurrentPriceByContract = function (contractAddress_1) {
202
+ return tslib_1.__awaiter(this, arguments, void 0, function (contractAddress, currency, chainId) {
203
+ var platform_id, priceCache, tokenPrice;
204
+ if (currency === void 0) { currency = "usd"; }
205
+ if (chainId === void 0) { chainId = 1; }
206
+ return tslib_1.__generator(this, function (_a) {
207
+ switch (_a.label) {
208
+ case 0: return [4, this.getPlatformId(chainId)];
209
+ case 1:
210
+ platform_id = _a.sent();
211
+ priceCache = this.getPriceCache(currency, platform_id);
212
+ tokenPrice = this.getCachedAddressPrice(contractAddress, currency, platform_id);
213
+ if (!(tokenPrice === undefined)) return [3, 3];
214
+ return [4, this.getContractPrices([contractAddress], currency, platform_id)];
215
+ case 2:
216
+ _a.sent();
217
+ tokenPrice = priceCache[contractAddress];
218
+ _a.label = 3;
219
+ case 3:
220
+ (0, assert_1.default)(tokenPrice !== undefined);
221
+ return [2, [tokenPrice.timestamp.toString(), tokenPrice.price]];
222
+ }
223
+ });
224
+ });
225
+ };
226
+ Coingecko.prototype.getCurrentPriceById = function (contractAddress_1) {
227
+ return tslib_1.__awaiter(this, arguments, void 0, function (contractAddress, currency, chainId) {
228
+ var platform_id, priceCache, tokenPrice, coingeckoId, result, cgPrice, errMsg;
229
+ if (currency === void 0) { currency = "usd"; }
230
+ if (chainId === void 0) { chainId = 1; }
231
+ return tslib_1.__generator(this, function (_a) {
232
+ switch (_a.label) {
233
+ case 0: return [4, this.getPlatformId(chainId)];
234
+ case 1:
235
+ platform_id = _a.sent();
236
+ priceCache = this.getPriceCache(currency, platform_id);
237
+ tokenPrice = this.getCachedAddressPrice(contractAddress, currency, platform_id);
238
+ if (!(tokenPrice === undefined)) return [3, 4];
239
+ return [4, this.getCoingeckoTokenId(contractAddress, chainId)];
240
+ case 2:
241
+ coingeckoId = _a.sent();
242
+ return [4, this.call("simple/price?ids=".concat(coingeckoId, "&vs_currencies=").concat(currency, "&include_last_updated_at=true"))];
243
+ case 3:
244
+ result = _a.sent();
245
+ cgPrice = result === null || result === void 0 ? void 0 : result[coingeckoId];
246
+ if (cgPrice === undefined || !(cgPrice === null || cgPrice === void 0 ? void 0 : cgPrice[currency])) {
247
+ errMsg = "No price found for ".concat(coingeckoId);
248
+ this.logger.debug({
249
+ at: "Coingecko#getCurrentPriceById",
250
+ message: errMsg,
251
+ });
252
+ throw new Error(errMsg);
253
+ }
254
+ else {
255
+ this.updatePriceCache(cgPrice, contractAddress, currency, platform_id);
256
+ }
257
+ _a.label = 4;
258
+ case 4:
259
+ tokenPrice = priceCache[contractAddress];
260
+ (0, assert_1.default)(tokenPrice !== undefined);
261
+ return [2, [tokenPrice.timestamp.toString(), tokenPrice.price]];
262
+ }
263
+ });
264
+ });
265
+ };
266
+ Coingecko.prototype.getCurrentPriceBySymbol = function (symbol_1) {
267
+ return tslib_1.__awaiter(this, arguments, void 0, function (symbol, currency) {
268
+ var tokenPrice, result, cgPrice, errMsg;
269
+ if (currency === void 0) { currency = "usd"; }
270
+ return tslib_1.__generator(this, function (_a) {
271
+ switch (_a.label) {
272
+ case 0:
273
+ tokenPrice = this.getCachedSymbolPrice(symbol, currency);
274
+ if (!(tokenPrice === undefined)) return [3, 2];
275
+ return [4, this.call("simple/price?symbols=".concat(symbol, "&vs_currencies=").concat(currency, "&include_last_updated_at=true"))];
276
+ case 1:
277
+ result = _a.sent();
278
+ cgPrice = (result === null || result === void 0 ? void 0 : result[symbol.toLowerCase()]) || (result === null || result === void 0 ? void 0 : result[symbol.toUpperCase()]);
279
+ if (cgPrice === undefined || !(cgPrice === null || cgPrice === void 0 ? void 0 : cgPrice[currency])) {
280
+ errMsg = "Failed to retrieve ".concat(symbol, "/").concat(currency, " price via Coingecko API");
281
+ this.logger.debug({
282
+ at: "Coingecko#getCurrentPriceBySymbol",
283
+ message: errMsg,
284
+ });
285
+ throw new Error(errMsg);
286
+ }
287
+ else {
288
+ this.updatePriceCacheBySymbol(cgPrice, symbol, currency);
289
+ }
290
+ _a.label = 2;
291
+ case 2:
292
+ tokenPrice = this.getCachedSymbolPrice(symbol, currency);
293
+ (0, assert_1.default)(tokenPrice !== undefined);
294
+ return [2, [tokenPrice.timestamp.toString(), tokenPrice.price]];
295
+ }
296
+ });
297
+ });
298
+ };
299
+ Coingecko.prototype.getContractPrices = function (addresses_1) {
300
+ return tslib_1.__awaiter(this, arguments, void 0, function (addresses, currency, platform_id) {
301
+ var priceCache, contract_addresses, result, err_1, errMsg;
302
+ var _this = this;
303
+ if (currency === void 0) { currency = "usd"; }
304
+ if (platform_id === void 0) { platform_id = "ethereum"; }
305
+ return tslib_1.__generator(this, function (_a) {
306
+ switch (_a.label) {
307
+ case 0:
308
+ priceCache = this.getPriceCache(currency, platform_id);
309
+ addresses.forEach(function (addr) {
310
+ if (priceCache[addr] === undefined) {
311
+ priceCache[addr] = { address: addr, price: 0, timestamp: 0 };
312
+ }
313
+ });
314
+ contract_addresses = Object.keys(priceCache);
315
+ (0, assert_1.default)(contract_addresses.length > 0, "Must supply at least 1 contract address");
316
+ this.logger.debug({
317
+ at: "Coingecko#getContractPrices",
318
+ message: "Updating ".concat(platform_id, "/").concat(currency, " token prices."),
319
+ tokens: contract_addresses,
320
+ });
321
+ result = {};
322
+ _a.label = 1;
323
+ case 1:
324
+ _a.trys.push([1, 3, , 4]);
325
+ return [4, this.call("simple/token_price/".concat(platform_id, "?contract_addresses=").concat(contract_addresses.join("%2C"), "&vs_currencies=").concat(currency, "&include_last_updated_at=true"))];
326
+ case 2:
327
+ result = _a.sent();
328
+ return [3, 4];
329
+ case 3:
330
+ err_1 = _a.sent();
331
+ errMsg = "Failed to retrieve ".concat(platform_id, "/").concat(currency, " prices (").concat(err_1, ")");
332
+ this.logger.debug({
333
+ at: "Coingecko#getContractPrices",
334
+ message: errMsg,
335
+ tokens: contract_addresses,
336
+ });
337
+ throw new Error(errMsg);
338
+ case 4:
339
+ contract_addresses.forEach(function (addr) {
340
+ var cgPrice = result[addr.toLowerCase()];
341
+ if (cgPrice === undefined) {
342
+ _this.logger.debug({
343
+ at: "Coingecko#getContractPrices",
344
+ message: "Token ".concat(addr, " not included in CoinGecko response."),
345
+ });
346
+ }
347
+ else {
348
+ _this.updatePriceCache(cgPrice, addr, currency, platform_id);
349
+ }
350
+ });
351
+ return [2, addresses.map(function (addr) { return priceCache[addr]; })];
352
+ }
353
+ });
354
+ });
355
+ };
356
+ Coingecko.prototype.getPlatforms = function () {
240
357
  return this.call("asset_platforms");
241
- }
242
- call(path) {
243
- const sendRequest = async () => {
244
- const { proHost } = this;
245
- if (this.apiKey === undefined) {
246
- return (await this._callBasic(path));
247
- }
248
- try {
249
- return (await this._callBasic(path, this.basicApiTimeout));
250
- }
251
- catch (err) {
252
- this.logger.debug({
253
- at: "sdk/coingecko",
254
- message: `Basic CG url request failed, falling back to CG PRO host ${proHost}`,
255
- errMessage: err.message,
256
- });
257
- return await this._callPro(path);
258
- }
259
- };
358
+ };
359
+ Coingecko.prototype.call = function (path) {
360
+ var _this = this;
361
+ var sendRequest = function () { return tslib_1.__awaiter(_this, void 0, void 0, function () {
362
+ var proHost, err_2;
363
+ return tslib_1.__generator(this, function (_a) {
364
+ switch (_a.label) {
365
+ case 0:
366
+ proHost = this.proHost;
367
+ if (!(this.apiKey === undefined)) return [3, 2];
368
+ return [4, this._callBasic(path)];
369
+ case 1: return [2, (_a.sent())];
370
+ case 2:
371
+ _a.trys.push([2, 4, , 6]);
372
+ return [4, this._callBasic(path, this.basicApiTimeout)];
373
+ case 3: return [2, (_a.sent())];
374
+ case 4:
375
+ err_2 = _a.sent();
376
+ this.logger.debug({
377
+ at: "sdk/coingecko",
378
+ message: "Basic CG url request failed, falling back to CG PRO host ".concat(proHost),
379
+ errMessage: err_2.message,
380
+ });
381
+ return [4, this._callPro(path)];
382
+ case 5: return [2, _a.sent()];
383
+ case 6: return [2];
384
+ }
385
+ });
386
+ }); };
260
387
  return (0, utils_1.retry)(sendRequest, this.apiKey === undefined ? this.numRetries : 0, this.retryDelay);
261
- }
262
- getPriceCache(currency, platform_id) {
388
+ };
389
+ Coingecko.prototype.getPriceCache = function (currency, platform_id) {
263
390
  if (this.prices[platform_id] === undefined)
264
391
  this.prices[platform_id] = {};
265
392
  if (this.prices[platform_id][currency] === undefined)
266
393
  this.prices[platform_id][currency] = {};
267
394
  return this.prices[platform_id][currency];
268
- }
269
- getPriceCacheBySymbol(symbol) {
395
+ };
396
+ Coingecko.prototype.getPriceCacheBySymbol = function (symbol) {
270
397
  if (this.pricesBySymbol[symbol] === undefined)
271
398
  this.pricesBySymbol[symbol] = {};
272
399
  return this.pricesBySymbol[symbol];
273
- }
274
- getCachedAddressPrice(contractAddress, currency, platform_id) {
275
- const priceCache = this.getPriceCache(currency, platform_id);
276
- const now = msToS(Date.now());
277
- const tokenPrice = priceCache[contractAddress];
400
+ };
401
+ Coingecko.prototype.getCachedAddressPrice = function (contractAddress, currency, platform_id) {
402
+ var priceCache = this.getPriceCache(currency, platform_id);
403
+ var now = msToS(Date.now());
404
+ var tokenPrice = priceCache[contractAddress];
278
405
  if (tokenPrice === undefined || tokenPrice.timestamp + this.maxPriceAge <= now) {
279
406
  if (this.maxPriceAge > 0) {
280
407
  this.logger.debug({
281
408
  at: "Coingecko#getCachedAddressPrice",
282
- message: `Cache miss on ${platform_id}/${currency} for ${contractAddress}`,
409
+ message: "Cache miss on ".concat(platform_id, "/").concat(currency, " for ").concat(contractAddress),
283
410
  maxPriceAge: this.maxPriceAge,
284
411
  tokenPrice: tokenPrice,
285
412
  });
@@ -289,23 +416,23 @@ class Coingecko {
289
416
  else {
290
417
  this.logger.debug({
291
418
  at: "Coingecko#getCachedAddressPrice",
292
- message: `Cache hit on token ${contractAddress} (age ${now - tokenPrice.timestamp} S).`,
419
+ message: "Cache hit on token ".concat(contractAddress, " (age ").concat(now - tokenPrice.timestamp, " S)."),
293
420
  price: tokenPrice,
294
421
  });
295
422
  return tokenPrice;
296
423
  }
297
- }
298
- getCachedSymbolPrice(symbol, currency) {
299
- const priceCache = this.getPriceCacheBySymbol(symbol);
300
- const now = msToS(Date.now());
301
- const tokenPrice = priceCache[currency];
424
+ };
425
+ Coingecko.prototype.getCachedSymbolPrice = function (symbol, currency) {
426
+ var priceCache = this.getPriceCacheBySymbol(symbol);
427
+ var now = msToS(Date.now());
428
+ var tokenPrice = priceCache[currency];
302
429
  if (tokenPrice === undefined || tokenPrice.timestamp + this.maxPriceAge <= now) {
303
430
  return undefined;
304
431
  }
305
432
  return tokenPrice;
306
- }
307
- updatePriceCache(cgPrice, contractAddress, currency, platform_id) {
308
- const priceCache = this.getPriceCache(currency, platform_id);
433
+ };
434
+ Coingecko.prototype.updatePriceCache = function (cgPrice, contractAddress, currency, platform_id) {
435
+ var priceCache = this.getPriceCache(currency, platform_id);
309
436
  if (priceCache[contractAddress] === undefined) {
310
437
  priceCache[contractAddress] = { address: contractAddress, price: 0, timestamp: 0 };
311
438
  }
@@ -317,19 +444,19 @@ class Coingecko {
317
444
  };
318
445
  this.logger.debug({
319
446
  at: "Coingecko#updatePriceCache",
320
- message: `Updated ${platform_id}/${currency}/${contractAddress} token price cache.`,
447
+ message: "Updated ".concat(platform_id, "/").concat(currency, "/").concat(contractAddress, " token price cache."),
321
448
  });
322
449
  }
323
450
  else {
324
451
  this.logger.debug({
325
452
  at: "Coingecko#updatePriceCache",
326
- message: `No new price available for token ${contractAddress}.`,
453
+ message: "No new price available for token ".concat(contractAddress, "."),
327
454
  token: cgPrice,
328
455
  });
329
456
  }
330
- }
331
- updatePriceCacheBySymbol(cgPrice, symbol, currency) {
332
- const priceCache = this.getPriceCacheBySymbol(symbol);
457
+ };
458
+ Coingecko.prototype.updatePriceCacheBySymbol = function (cgPrice, symbol, currency) {
459
+ var priceCache = this.getPriceCacheBySymbol(symbol);
333
460
  if (priceCache[currency] === undefined) {
334
461
  priceCache[currency] = { price: 0, timestamp: 0 };
335
462
  }
@@ -340,39 +467,64 @@ class Coingecko {
340
467
  };
341
468
  this.logger.debug({
342
469
  at: "Coingecko#updatePriceCacheBySymbol",
343
- message: `Updated ${symbol}/${currency} token price cache.`,
470
+ message: "Updated ".concat(symbol, "/").concat(currency, " token price cache."),
344
471
  });
345
472
  }
346
473
  else {
347
474
  this.logger.debug({
348
475
  at: "Coingecko#updatePriceCacheBySymbol",
349
- message: `No new price available for symbol ${symbol}.`,
476
+ message: "No new price available for symbol ".concat(symbol, "."),
350
477
  token: cgPrice,
351
478
  });
352
479
  }
353
- }
354
- async _callBasic(path, timeout) {
355
- const url = `${this.host}/${path}`;
356
- try {
357
- const result = await (0, axios_1.default)(url, { timeout });
358
- return result.data;
359
- }
360
- catch (err) {
361
- const msg = (0, lodash_get_1.default)(err, "response.data.error", (0, lodash_get_1.default)(err, "response.statusText", err.message));
362
- throw new Error(msg);
363
- }
364
- }
365
- async _callPro(path) {
366
- const url = `${this.proHost}/${path}`;
367
- try {
368
- const result = await (0, axios_1.default)(url, { params: { x_cg_pro_api_key: this.apiKey } });
369
- return result.data;
370
- }
371
- catch (err) {
372
- const msg = (0, lodash_get_1.default)(err, "response.data.error", (0, lodash_get_1.default)(err, "response.statusText", err.message));
373
- throw new Error(msg);
374
- }
375
- }
376
- }
480
+ };
481
+ Coingecko.prototype._callBasic = function (path, timeout) {
482
+ return tslib_1.__awaiter(this, void 0, void 0, function () {
483
+ var url, result, err_3, msg;
484
+ return tslib_1.__generator(this, function (_a) {
485
+ switch (_a.label) {
486
+ case 0:
487
+ url = "".concat(this.host, "/").concat(path);
488
+ _a.label = 1;
489
+ case 1:
490
+ _a.trys.push([1, 3, , 4]);
491
+ return [4, (0, axios_1.default)(url, { timeout: timeout })];
492
+ case 2:
493
+ result = _a.sent();
494
+ return [2, result.data];
495
+ case 3:
496
+ err_3 = _a.sent();
497
+ msg = (0, lodash_get_1.default)(err_3, "response.data.error", (0, lodash_get_1.default)(err_3, "response.statusText", err_3.message));
498
+ throw new Error(msg);
499
+ case 4: return [2];
500
+ }
501
+ });
502
+ });
503
+ };
504
+ Coingecko.prototype._callPro = function (path) {
505
+ return tslib_1.__awaiter(this, void 0, void 0, function () {
506
+ var url, result, err_4, msg;
507
+ return tslib_1.__generator(this, function (_a) {
508
+ switch (_a.label) {
509
+ case 0:
510
+ url = "".concat(this.proHost, "/").concat(path);
511
+ _a.label = 1;
512
+ case 1:
513
+ _a.trys.push([1, 3, , 4]);
514
+ return [4, (0, axios_1.default)(url, { params: { x_cg_pro_api_key: this.apiKey } })];
515
+ case 2:
516
+ result = _a.sent();
517
+ return [2, result.data];
518
+ case 3:
519
+ err_4 = _a.sent();
520
+ msg = (0, lodash_get_1.default)(err_4, "response.data.error", (0, lodash_get_1.default)(err_4, "response.statusText", err_4.message));
521
+ throw new Error(msg);
522
+ case 4: return [2];
523
+ }
524
+ });
525
+ });
526
+ };
527
+ return Coingecko;
528
+ }());
377
529
  exports.Coingecko = Coingecko;
378
530
  //# sourceMappingURL=Coingecko.js.map