@hkdex-tmp/smart-order-router 4.31.0

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 (534) hide show
  1. package/CHANGELOG.md +255 -0
  2. package/LICENSE +674 -0
  3. package/README.md +320 -0
  4. package/build/main/index.d.ts +3 -0
  5. package/build/main/index.js +20 -0
  6. package/build/main/providers/cache-node.d.ts +10 -0
  7. package/build/main/providers/cache-node.js +33 -0
  8. package/build/main/providers/cache.d.ts +14 -0
  9. package/build/main/providers/cache.js +3 -0
  10. package/build/main/providers/caching/route/index.d.ts +2 -0
  11. package/build/main/providers/caching/route/index.js +19 -0
  12. package/build/main/providers/caching/route/model/cache-mode.d.ts +16 -0
  13. package/build/main/providers/caching/route/model/cache-mode.js +21 -0
  14. package/build/main/providers/caching/route/model/cached-route.d.ts +29 -0
  15. package/build/main/providers/caching/route/model/cached-route.js +77 -0
  16. package/build/main/providers/caching/route/model/cached-routes.d.ts +67 -0
  17. package/build/main/providers/caching/route/model/cached-routes.js +81 -0
  18. package/build/main/providers/caching/route/model/index.d.ts +3 -0
  19. package/build/main/providers/caching/route/model/index.js +20 -0
  20. package/build/main/providers/caching/route/route-caching-provider.d.ts +111 -0
  21. package/build/main/providers/caching/route/route-caching-provider.js +86 -0
  22. package/build/main/providers/caching-gas-provider.d.ts +23 -0
  23. package/build/main/providers/caching-gas-provider.js +41 -0
  24. package/build/main/providers/caching-subgraph-provider.d.ts +33 -0
  25. package/build/main/providers/caching-subgraph-provider.js +174 -0
  26. package/build/main/providers/caching-token-list-provider.d.ts +52 -0
  27. package/build/main/providers/caching-token-list-provider.js +147 -0
  28. package/build/main/providers/caching-token-provider.d.ts +24 -0
  29. package/build/main/providers/caching-token-provider.js +242 -0
  30. package/build/main/providers/eip-1559-gas-price-provider.d.ts +31 -0
  31. package/build/main/providers/eip-1559-gas-price-provider.js +71 -0
  32. package/build/main/providers/eth-estimate-gas-provider.d.ts +21 -0
  33. package/build/main/providers/eth-estimate-gas-provider.js +91 -0
  34. package/build/main/providers/eth-gas-station-info-gas-price-provider.d.ts +19 -0
  35. package/build/main/providers/eth-gas-station-info-gas-price-provider.js +36 -0
  36. package/build/main/providers/gas-price-provider.d.ts +10 -0
  37. package/build/main/providers/gas-price-provider.js +10 -0
  38. package/build/main/providers/index.d.ts +47 -0
  39. package/build/main/providers/index.js +64 -0
  40. package/build/main/providers/legacy-gas-price-provider.d.ts +7 -0
  41. package/build/main/providers/legacy-gas-price-provider.js +18 -0
  42. package/build/main/providers/multicall-provider.d.ts +83 -0
  43. package/build/main/providers/multicall-provider.js +15 -0
  44. package/build/main/providers/multicall-uniswap-provider.d.ts +37 -0
  45. package/build/main/providers/multicall-uniswap-provider.js +164 -0
  46. package/build/main/providers/on-chain-gas-price-provider.d.ts +19 -0
  47. package/build/main/providers/on-chain-gas-price-provider.js +37 -0
  48. package/build/main/providers/on-chain-quote-provider.d.ts +258 -0
  49. package/build/main/providers/on-chain-quote-provider.js +713 -0
  50. package/build/main/providers/pool-provider.d.ts +45 -0
  51. package/build/main/providers/pool-provider.js +73 -0
  52. package/build/main/providers/portion-provider.d.ts +86 -0
  53. package/build/main/providers/portion-provider.js +118 -0
  54. package/build/main/providers/provider.d.ts +38 -0
  55. package/build/main/providers/provider.js +3 -0
  56. package/build/main/providers/simulation-provider.d.ts +46 -0
  57. package/build/main/providers/simulation-provider.js +138 -0
  58. package/build/main/providers/static-gas-price-provider.d.ts +7 -0
  59. package/build/main/providers/static-gas-price-provider.js +13 -0
  60. package/build/main/providers/subgraph-provider-with-fallback.d.ts +11 -0
  61. package/build/main/providers/subgraph-provider-with-fallback.js +25 -0
  62. package/build/main/providers/subgraph-provider.d.ts +56 -0
  63. package/build/main/providers/subgraph-provider.js +287 -0
  64. package/build/main/providers/swap-router-provider.d.ts +30 -0
  65. package/build/main/providers/swap-router-provider.js +42 -0
  66. package/build/main/providers/tenderly-simulation-provider.d.ts +69 -0
  67. package/build/main/providers/tenderly-simulation-provider.js +460 -0
  68. package/build/main/providers/token-fee-fetcher.d.ts +31 -0
  69. package/build/main/providers/token-fee-fetcher.js +165 -0
  70. package/build/main/providers/token-properties-provider.d.ts +31 -0
  71. package/build/main/providers/token-properties-provider.js +118 -0
  72. package/build/main/providers/token-provider.d.ts +140 -0
  73. package/build/main/providers/token-provider.js +392 -0
  74. package/build/main/providers/token-validator-provider.d.ts +42 -0
  75. package/build/main/providers/token-validator-provider.js +99 -0
  76. package/build/main/providers/uri-subgraph-provider.d.ts +20 -0
  77. package/build/main/providers/uri-subgraph-provider.js +65 -0
  78. package/build/main/providers/v2/caching-pool-provider.d.ts +33 -0
  79. package/build/main/providers/v2/caching-pool-provider.js +89 -0
  80. package/build/main/providers/v2/caching-subgraph-provider.d.ts +19 -0
  81. package/build/main/providers/v2/caching-subgraph-provider.js +24 -0
  82. package/build/main/providers/v2/pool-provider.d.ts +63 -0
  83. package/build/main/providers/v2/pool-provider.js +148 -0
  84. package/build/main/providers/v2/quote-provider.d.ts +34 -0
  85. package/build/main/providers/v2/quote-provider.js +90 -0
  86. package/build/main/providers/v2/static-subgraph-provider.d.ts +19 -0
  87. package/build/main/providers/v2/static-subgraph-provider.js +168 -0
  88. package/build/main/providers/v2/subgraph-provider-with-fallback.d.ts +16 -0
  89. package/build/main/providers/v2/subgraph-provider-with-fallback.js +23 -0
  90. package/build/main/providers/v2/subgraph-provider.d.ts +53 -0
  91. package/build/main/providers/v2/subgraph-provider.js +344 -0
  92. package/build/main/providers/v2/uri-subgraph-provider.d.ts +4 -0
  93. package/build/main/providers/v2/uri-subgraph-provider.js +8 -0
  94. package/build/main/providers/v3/caching-pool-provider.d.ts +32 -0
  95. package/build/main/providers/v3/caching-pool-provider.js +84 -0
  96. package/build/main/providers/v3/caching-subgraph-provider.d.ts +19 -0
  97. package/build/main/providers/v3/caching-subgraph-provider.js +24 -0
  98. package/build/main/providers/v3/gas-data-provider.d.ts +39 -0
  99. package/build/main/providers/v3/gas-data-provider.js +26 -0
  100. package/build/main/providers/v3/pool-provider.d.ts +77 -0
  101. package/build/main/providers/v3/pool-provider.js +108 -0
  102. package/build/main/providers/v3/static-subgraph-provider.d.ts +21 -0
  103. package/build/main/providers/v3/static-subgraph-provider.js +217 -0
  104. package/build/main/providers/v3/subgraph-provider-with-fallback.d.ts +12 -0
  105. package/build/main/providers/v3/subgraph-provider-with-fallback.js +19 -0
  106. package/build/main/providers/v3/subgraph-provider.d.ts +45 -0
  107. package/build/main/providers/v3/subgraph-provider.js +47 -0
  108. package/build/main/providers/v3/uri-subgraph-provider.d.ts +4 -0
  109. package/build/main/providers/v3/uri-subgraph-provider.js +8 -0
  110. package/build/main/providers/v4/caching-pool-provider.d.ts +24 -0
  111. package/build/main/providers/v4/caching-pool-provider.js +81 -0
  112. package/build/main/providers/v4/caching-subgraph-provider.d.ts +19 -0
  113. package/build/main/providers/v4/caching-subgraph-provider.js +0 -0
  114. package/build/main/providers/v4/euler-swap-hooks-subgraph-provider.d.ts +25 -0
  115. package/build/main/providers/v4/euler-swap-hooks-subgraph-provider.js +160 -0
  116. package/build/main/providers/v4/pool-provider.d.ts +58 -0
  117. package/build/main/providers/v4/pool-provider.js +115 -0
  118. package/build/main/providers/v4/static-subgraph-provider.d.ts +15 -0
  119. package/build/main/providers/v4/static-subgraph-provider.js +78 -0
  120. package/build/main/providers/v4/subgraph-provider-with-fallback.d.ts +5 -0
  121. package/build/main/providers/v4/subgraph-provider-with-fallback.js +12 -0
  122. package/build/main/providers/v4/subgraph-provider.d.ts +63 -0
  123. package/build/main/providers/v4/subgraph-provider.js +63 -0
  124. package/build/main/providers/v4/uri-subgraph-provider.d.ts +4 -0
  125. package/build/main/providers/v4/uri-subgraph-provider.js +8 -0
  126. package/build/main/routers/alpha-router/alpha-router.d.ts +483 -0
  127. package/build/main/routers/alpha-router/alpha-router.js +1679 -0
  128. package/build/main/routers/alpha-router/config.d.ts +4 -0
  129. package/build/main/routers/alpha-router/config.js +131 -0
  130. package/build/main/routers/alpha-router/entities/index.d.ts +1 -0
  131. package/build/main/routers/alpha-router/entities/index.js +18 -0
  132. package/build/main/routers/alpha-router/entities/route-with-valid-quote.d.ts +208 -0
  133. package/build/main/routers/alpha-router/entities/route-with-valid-quote.js +194 -0
  134. package/build/main/routers/alpha-router/functions/best-swap-route.d.ts +24 -0
  135. package/build/main/routers/alpha-router/functions/best-swap-route.js +538 -0
  136. package/build/main/routers/alpha-router/functions/calculate-ratio-amount-in.d.ts +3 -0
  137. package/build/main/routers/alpha-router/functions/calculate-ratio-amount-in.js +18 -0
  138. package/build/main/routers/alpha-router/functions/compute-all-routes.d.ts +12 -0
  139. package/build/main/routers/alpha-router/functions/compute-all-routes.js +133 -0
  140. package/build/main/routers/alpha-router/functions/get-candidate-pools.d.ts +126 -0
  141. package/build/main/routers/alpha-router/functions/get-candidate-pools.js +1532 -0
  142. package/build/main/routers/alpha-router/gas-models/gas-costs.d.ts +12 -0
  143. package/build/main/routers/alpha-router/gas-models/gas-costs.js +194 -0
  144. package/build/main/routers/alpha-router/gas-models/gas-model.d.ts +107 -0
  145. package/build/main/routers/alpha-router/gas-models/gas-model.js +119 -0
  146. package/build/main/routers/alpha-router/gas-models/index.d.ts +2 -0
  147. package/build/main/routers/alpha-router/gas-models/index.js +19 -0
  148. package/build/main/routers/alpha-router/gas-models/mixedRoute/mixed-route-heuristic-gas-model.d.ts +24 -0
  149. package/build/main/routers/alpha-router/gas-models/mixedRoute/mixed-route-heuristic-gas-model.js +161 -0
  150. package/build/main/routers/alpha-router/gas-models/tick-based-heuristic-gas-model.d.ts +15 -0
  151. package/build/main/routers/alpha-router/gas-models/tick-based-heuristic-gas-model.js +191 -0
  152. package/build/main/routers/alpha-router/gas-models/v2/v2-heuristic-gas-model.d.ts +31 -0
  153. package/build/main/routers/alpha-router/gas-models/v2/v2-heuristic-gas-model.js +169 -0
  154. package/build/main/routers/alpha-router/gas-models/v3/v3-heuristic-gas-model.d.ts +26 -0
  155. package/build/main/routers/alpha-router/gas-models/v3/v3-heuristic-gas-model.js +41 -0
  156. package/build/main/routers/alpha-router/gas-models/v4/v4-heuristic-gas-model.d.ts +15 -0
  157. package/build/main/routers/alpha-router/gas-models/v4/v4-heuristic-gas-model.js +40 -0
  158. package/build/main/routers/alpha-router/index.d.ts +4 -0
  159. package/build/main/routers/alpha-router/index.js +21 -0
  160. package/build/main/routers/alpha-router/quoters/base-quoter.d.ts +76 -0
  161. package/build/main/routers/alpha-router/quoters/base-quoter.js +76 -0
  162. package/build/main/routers/alpha-router/quoters/index.d.ts +5 -0
  163. package/build/main/routers/alpha-router/quoters/index.js +22 -0
  164. package/build/main/routers/alpha-router/quoters/mixed-quoter.d.ts +32 -0
  165. package/build/main/routers/alpha-router/quoters/mixed-quoter.js +154 -0
  166. package/build/main/routers/alpha-router/quoters/model/index.d.ts +1 -0
  167. package/build/main/routers/alpha-router/quoters/model/index.js +18 -0
  168. package/build/main/routers/alpha-router/quoters/model/results/get-quotes-result.d.ts +6 -0
  169. package/build/main/routers/alpha-router/quoters/model/results/get-quotes-result.js +3 -0
  170. package/build/main/routers/alpha-router/quoters/model/results/get-routes-result.d.ts +6 -0
  171. package/build/main/routers/alpha-router/quoters/model/results/get-routes-result.js +3 -0
  172. package/build/main/routers/alpha-router/quoters/model/results/index.d.ts +2 -0
  173. package/build/main/routers/alpha-router/quoters/model/results/index.js +19 -0
  174. package/build/main/routers/alpha-router/quoters/v2-quoter.d.ts +24 -0
  175. package/build/main/routers/alpha-router/quoters/v2-quoter.js +141 -0
  176. package/build/main/routers/alpha-router/quoters/v3-quoter.d.ts +19 -0
  177. package/build/main/routers/alpha-router/quoters/v3-quoter.js +125 -0
  178. package/build/main/routers/alpha-router/quoters/v4-quoter.d.ts +18 -0
  179. package/build/main/routers/alpha-router/quoters/v4-quoter.js +122 -0
  180. package/build/main/routers/index.d.ts +4 -0
  181. package/build/main/routers/index.js +21 -0
  182. package/build/main/routers/legacy-router/bases.d.ts +213 -0
  183. package/build/main/routers/legacy-router/bases.js +124 -0
  184. package/build/main/routers/legacy-router/index.d.ts +1 -0
  185. package/build/main/routers/legacy-router/index.js +18 -0
  186. package/build/main/routers/legacy-router/legacy-router.d.ts +41 -0
  187. package/build/main/routers/legacy-router/legacy-router.js +291 -0
  188. package/build/main/routers/router.d.ts +195 -0
  189. package/build/main/routers/router.js +92 -0
  190. package/build/main/tsconfig.tsbuildinfo +1 -0
  191. package/build/main/types/other/commons.d.ts +16 -0
  192. package/build/main/types/other/commons.js +6 -0
  193. package/build/main/types/other/factories/Erc20__factory.d.ts +45 -0
  194. package/build/main/types/other/factories/Erc20__factory.js +240 -0
  195. package/build/main/types/other/factories/GasDataArbitrum__factory.d.ts +18 -0
  196. package/build/main/types/other/factories/GasDataArbitrum__factory.js +58 -0
  197. package/build/main/types/other/factories/IMixedRouteQuoterV1__factory.d.ts +41 -0
  198. package/build/main/types/other/factories/IMixedRouteQuoterV1__factory.js +156 -0
  199. package/build/main/types/other/factories/ITokenValidator__factory.d.ts +22 -0
  200. package/build/main/types/other/factories/ITokenValidator__factory.js +78 -0
  201. package/build/main/types/other/factories/MixedRouteQuoterV2__factory.d.ts +86 -0
  202. package/build/main/types/other/factories/MixedRouteQuoterV2__factory.js +477 -0
  203. package/build/main/types/other/factories/Permit2__factory.d.ts +87 -0
  204. package/build/main/types/other/factories/Permit2__factory.js +936 -0
  205. package/build/main/types/other/factories/StateView__factory.d.ts +32 -0
  206. package/build/main/types/other/factories/StateView__factory.js +383 -0
  207. package/build/main/types/other/factories/SwapRouter02__factory.d.ts +67 -0
  208. package/build/main/types/other/factories/SwapRouter02__factory.js +1098 -0
  209. package/build/main/types/other/factories/TokenFeeDetector__factory.d.ts +47 -0
  210. package/build/main/types/other/factories/TokenFeeDetector__factory.js +243 -0
  211. package/build/main/types/other/factories/V4Quoter__factory.d.ts +37 -0
  212. package/build/main/types/other/factories/V4Quoter__factory.js +312 -0
  213. package/build/main/types/v2/commons.d.ts +16 -0
  214. package/build/main/types/v2/commons.js +6 -0
  215. package/build/main/types/v2/factories/IUniswapV2Pair__factory.d.ts +35 -0
  216. package/build/main/types/v2/factories/IUniswapV2Pair__factory.js +671 -0
  217. package/build/main/types/v3/commons.d.ts +16 -0
  218. package/build/main/types/v3/commons.js +6 -0
  219. package/build/main/types/v3/factories/IERC20Metadata__factory.d.ts +35 -0
  220. package/build/main/types/v3/factories/IERC20Metadata__factory.js +242 -0
  221. package/build/main/types/v3/factories/IQuoterV2__factory.d.ts +41 -0
  222. package/build/main/types/v3/factories/IQuoterV2__factory.js +220 -0
  223. package/build/main/types/v3/factories/IUniswapV3PoolState__factory.d.ts +22 -0
  224. package/build/main/types/v3/factories/IUniswapV3PoolState__factory.js +266 -0
  225. package/build/main/types/v3/factories/UniswapInterfaceMulticall__factory.d.ts +61 -0
  226. package/build/main/types/v3/factories/UniswapInterfaceMulticall__factory.js +127 -0
  227. package/build/main/util/addresses.d.ts +32 -0
  228. package/build/main/util/addresses.js +114 -0
  229. package/build/main/util/amounts.d.ts +10 -0
  230. package/build/main/util/amounts.js +94 -0
  231. package/build/main/util/callData.d.ts +1 -0
  232. package/build/main/util/callData.js +6 -0
  233. package/build/main/util/chains.d.ts +72 -0
  234. package/build/main/util/chains.js +785 -0
  235. package/build/main/util/defaultBlocksToLive.d.ts +4 -0
  236. package/build/main/util/defaultBlocksToLive.js +56 -0
  237. package/build/main/util/gas-factory-helpers.d.ts +34 -0
  238. package/build/main/util/gas-factory-helpers.js +439 -0
  239. package/build/main/util/hooksOptions.d.ts +5 -0
  240. package/build/main/util/hooksOptions.js +10 -0
  241. package/build/main/util/index.d.ts +10 -0
  242. package/build/main/util/index.js +27 -0
  243. package/build/main/util/intent.d.ts +6 -0
  244. package/build/main/util/intent.js +13 -0
  245. package/build/main/util/l2FeeChains.d.ts +2 -0
  246. package/build/main/util/l2FeeChains.js +20 -0
  247. package/build/main/util/log.d.ts +3 -0
  248. package/build/main/util/log.js +97 -0
  249. package/build/main/util/methodParameters.d.ts +5 -0
  250. package/build/main/util/methodParameters.js +147 -0
  251. package/build/main/util/metric.d.ts +48 -0
  252. package/build/main/util/metric.js +59 -0
  253. package/build/main/util/mixedRouteFilterOutV4Pools.d.ts +3 -0
  254. package/build/main/util/mixedRouteFilterOutV4Pools.js +17 -0
  255. package/build/main/util/onchainQuoteProviderConfigs.d.ts +42 -0
  256. package/build/main/util/onchainQuoteProviderConfigs.js +72 -0
  257. package/build/main/util/pool.d.ts +5 -0
  258. package/build/main/util/pool.js +44 -0
  259. package/build/main/util/protocols.d.ts +2 -0
  260. package/build/main/util/protocols.js +20 -0
  261. package/build/main/util/routes.d.ts +11 -0
  262. package/build/main/util/routes.js +148 -0
  263. package/build/main/util/serializeRouteIds.d.ts +2 -0
  264. package/build/main/util/serializeRouteIds.js +12 -0
  265. package/build/main/util/tenderlySimulationErrorBreakDown.d.ts +3 -0
  266. package/build/main/util/tenderlySimulationErrorBreakDown.js +33 -0
  267. package/build/main/util/unsupported-tokens.d.ts +37 -0
  268. package/build/main/util/unsupported-tokens.js +1119 -0
  269. package/build/module/index.d.ts +3 -0
  270. package/build/module/index.js +4 -0
  271. package/build/module/providers/cache-node.d.ts +10 -0
  272. package/build/module/providers/cache-node.js +29 -0
  273. package/build/module/providers/cache.d.ts +14 -0
  274. package/build/module/providers/cache.js +2 -0
  275. package/build/module/providers/caching/route/index.d.ts +2 -0
  276. package/build/module/providers/caching/route/index.js +3 -0
  277. package/build/module/providers/caching/route/model/cache-mode.d.ts +16 -0
  278. package/build/module/providers/caching/route/model/cache-mode.js +18 -0
  279. package/build/module/providers/caching/route/model/cached-route.d.ts +29 -0
  280. package/build/module/providers/caching/route/model/cached-route.js +73 -0
  281. package/build/module/providers/caching/route/model/cached-routes.d.ts +67 -0
  282. package/build/module/providers/caching/route/model/cached-routes.js +74 -0
  283. package/build/module/providers/caching/route/model/index.d.ts +3 -0
  284. package/build/module/providers/caching/route/model/index.js +4 -0
  285. package/build/module/providers/caching/route/route-caching-provider.d.ts +111 -0
  286. package/build/module/providers/caching/route/route-caching-provider.js +82 -0
  287. package/build/module/providers/caching-gas-provider.d.ts +23 -0
  288. package/build/module/providers/caching-gas-provider.js +37 -0
  289. package/build/module/providers/caching-subgraph-provider.d.ts +33 -0
  290. package/build/module/providers/caching-subgraph-provider.js +170 -0
  291. package/build/module/providers/caching-token-list-provider.d.ts +52 -0
  292. package/build/module/providers/caching-token-list-provider.js +140 -0
  293. package/build/module/providers/caching-token-provider.d.ts +24 -0
  294. package/build/module/providers/caching-token-provider.js +235 -0
  295. package/build/module/providers/eip-1559-gas-price-provider.d.ts +31 -0
  296. package/build/module/providers/eip-1559-gas-price-provider.js +64 -0
  297. package/build/module/providers/eth-estimate-gas-provider.d.ts +21 -0
  298. package/build/module/providers/eth-estimate-gas-provider.js +99 -0
  299. package/build/module/providers/eth-gas-station-info-gas-price-provider.d.ts +19 -0
  300. package/build/module/providers/eth-gas-station-info-gas-price-provider.js +29 -0
  301. package/build/module/providers/gas-price-provider.d.ts +10 -0
  302. package/build/module/providers/gas-price-provider.js +6 -0
  303. package/build/module/providers/index.d.ts +47 -0
  304. package/build/module/providers/index.js +48 -0
  305. package/build/module/providers/legacy-gas-price-provider.d.ts +7 -0
  306. package/build/module/providers/legacy-gas-price-provider.js +14 -0
  307. package/build/module/providers/multicall-provider.d.ts +83 -0
  308. package/build/module/providers/multicall-provider.js +11 -0
  309. package/build/module/providers/multicall-uniswap-provider.d.ts +37 -0
  310. package/build/module/providers/multicall-uniswap-provider.js +157 -0
  311. package/build/module/providers/on-chain-gas-price-provider.d.ts +19 -0
  312. package/build/module/providers/on-chain-gas-price-provider.js +33 -0
  313. package/build/module/providers/on-chain-quote-provider.d.ts +258 -0
  314. package/build/module/providers/on-chain-quote-provider.js +707 -0
  315. package/build/module/providers/pool-provider.d.ts +45 -0
  316. package/build/module/providers/pool-provider.js +66 -0
  317. package/build/module/providers/portion-provider.d.ts +86 -0
  318. package/build/module/providers/portion-provider.js +114 -0
  319. package/build/module/providers/provider.d.ts +38 -0
  320. package/build/module/providers/provider.js +2 -0
  321. package/build/module/providers/simulation-provider.d.ts +46 -0
  322. package/build/module/providers/simulation-provider.js +140 -0
  323. package/build/module/providers/static-gas-price-provider.d.ts +7 -0
  324. package/build/module/providers/static-gas-price-provider.js +9 -0
  325. package/build/module/providers/subgraph-provider-with-fallback.d.ts +11 -0
  326. package/build/module/providers/subgraph-provider-with-fallback.js +21 -0
  327. package/build/module/providers/subgraph-provider.d.ts +56 -0
  328. package/build/module/providers/subgraph-provider.js +284 -0
  329. package/build/module/providers/swap-router-provider.d.ts +30 -0
  330. package/build/module/providers/swap-router-provider.js +38 -0
  331. package/build/module/providers/tenderly-simulation-provider.d.ts +69 -0
  332. package/build/module/providers/tenderly-simulation-provider.js +458 -0
  333. package/build/module/providers/token-fee-fetcher.d.ts +31 -0
  334. package/build/module/providers/token-fee-fetcher.js +161 -0
  335. package/build/module/providers/token-properties-provider.d.ts +31 -0
  336. package/build/module/providers/token-properties-provider.js +114 -0
  337. package/build/module/providers/token-provider.d.ts +140 -0
  338. package/build/module/providers/token-provider.js +379 -0
  339. package/build/module/providers/token-validator-provider.d.ts +42 -0
  340. package/build/module/providers/token-validator-provider.js +92 -0
  341. package/build/module/providers/uri-subgraph-provider.d.ts +20 -0
  342. package/build/module/providers/uri-subgraph-provider.js +58 -0
  343. package/build/module/providers/v2/caching-pool-provider.d.ts +33 -0
  344. package/build/module/providers/v2/caching-pool-provider.js +85 -0
  345. package/build/module/providers/v2/caching-subgraph-provider.d.ts +19 -0
  346. package/build/module/providers/v2/caching-subgraph-provider.js +20 -0
  347. package/build/module/providers/v2/pool-provider.d.ts +63 -0
  348. package/build/module/providers/v2/pool-provider.js +141 -0
  349. package/build/module/providers/v2/quote-provider.d.ts +34 -0
  350. package/build/module/providers/v2/quote-provider.js +86 -0
  351. package/build/module/providers/v2/static-subgraph-provider.d.ts +19 -0
  352. package/build/module/providers/v2/static-subgraph-provider.js +161 -0
  353. package/build/module/providers/v2/subgraph-provider-with-fallback.d.ts +16 -0
  354. package/build/module/providers/v2/subgraph-provider-with-fallback.js +19 -0
  355. package/build/module/providers/v2/subgraph-provider.d.ts +53 -0
  356. package/build/module/providers/v2/subgraph-provider.js +341 -0
  357. package/build/module/providers/v2/uri-subgraph-provider.d.ts +4 -0
  358. package/build/module/providers/v2/uri-subgraph-provider.js +4 -0
  359. package/build/module/providers/v3/caching-pool-provider.d.ts +32 -0
  360. package/build/module/providers/v3/caching-pool-provider.js +77 -0
  361. package/build/module/providers/v3/caching-subgraph-provider.d.ts +19 -0
  362. package/build/module/providers/v3/caching-subgraph-provider.js +20 -0
  363. package/build/module/providers/v3/gas-data-provider.d.ts +39 -0
  364. package/build/module/providers/v3/gas-data-provider.js +22 -0
  365. package/build/module/providers/v3/pool-provider.d.ts +77 -0
  366. package/build/module/providers/v3/pool-provider.js +101 -0
  367. package/build/module/providers/v3/static-subgraph-provider.d.ts +21 -0
  368. package/build/module/providers/v3/static-subgraph-provider.js +210 -0
  369. package/build/module/providers/v3/subgraph-provider-with-fallback.d.ts +12 -0
  370. package/build/module/providers/v3/subgraph-provider-with-fallback.js +15 -0
  371. package/build/module/providers/v3/subgraph-provider.d.ts +45 -0
  372. package/build/module/providers/v3/subgraph-provider.js +43 -0
  373. package/build/module/providers/v3/uri-subgraph-provider.d.ts +4 -0
  374. package/build/module/providers/v3/uri-subgraph-provider.js +4 -0
  375. package/build/module/providers/v4/caching-pool-provider.d.ts +24 -0
  376. package/build/module/providers/v4/caching-pool-provider.js +74 -0
  377. package/build/module/providers/v4/caching-subgraph-provider.d.ts +19 -0
  378. package/build/module/providers/v4/caching-subgraph-provider.js +20 -0
  379. package/build/module/providers/v4/euler-swap-hooks-subgraph-provider.d.ts +25 -0
  380. package/build/module/providers/v4/euler-swap-hooks-subgraph-provider.js +153 -0
  381. package/build/module/providers/v4/pool-provider.d.ts +58 -0
  382. package/build/module/providers/v4/pool-provider.js +106 -0
  383. package/build/module/providers/v4/static-subgraph-provider.d.ts +15 -0
  384. package/build/module/providers/v4/static-subgraph-provider.js +71 -0
  385. package/build/module/providers/v4/subgraph-provider-with-fallback.d.ts +5 -0
  386. package/build/module/providers/v4/subgraph-provider-with-fallback.js +8 -0
  387. package/build/module/providers/v4/subgraph-provider.d.ts +63 -0
  388. package/build/module/providers/v4/subgraph-provider.js +59 -0
  389. package/build/module/providers/v4/uri-subgraph-provider.d.ts +4 -0
  390. package/build/module/providers/v4/uri-subgraph-provider.js +4 -0
  391. package/build/module/routers/alpha-router/alpha-router.d.ts +483 -0
  392. package/build/module/routers/alpha-router/alpha-router.js +1681 -0
  393. package/build/module/routers/alpha-router/config.d.ts +4 -0
  394. package/build/module/routers/alpha-router/config.js +127 -0
  395. package/build/module/routers/alpha-router/entities/index.d.ts +1 -0
  396. package/build/module/routers/alpha-router/entities/index.js +2 -0
  397. package/build/module/routers/alpha-router/entities/route-with-valid-quote.d.ts +208 -0
  398. package/build/module/routers/alpha-router/entities/route-with-valid-quote.js +184 -0
  399. package/build/module/routers/alpha-router/functions/best-swap-route.d.ts +24 -0
  400. package/build/module/routers/alpha-router/functions/best-swap-route.js +528 -0
  401. package/build/module/routers/alpha-router/functions/calculate-ratio-amount-in.d.ts +3 -0
  402. package/build/module/routers/alpha-router/functions/calculate-ratio-amount-in.js +14 -0
  403. package/build/module/routers/alpha-router/functions/compute-all-routes.d.ts +12 -0
  404. package/build/module/routers/alpha-router/functions/compute-all-routes.js +125 -0
  405. package/build/module/routers/alpha-router/functions/get-candidate-pools.d.ts +126 -0
  406. package/build/module/routers/alpha-router/functions/get-candidate-pools.js +1521 -0
  407. package/build/module/routers/alpha-router/gas-models/gas-costs.d.ts +12 -0
  408. package/build/module/routers/alpha-router/gas-models/gas-costs.js +183 -0
  409. package/build/module/routers/alpha-router/gas-models/gas-model.d.ts +107 -0
  410. package/build/module/routers/alpha-router/gas-models/gas-model.js +113 -0
  411. package/build/module/routers/alpha-router/gas-models/index.d.ts +2 -0
  412. package/build/module/routers/alpha-router/gas-models/index.js +3 -0
  413. package/build/module/routers/alpha-router/gas-models/mixedRoute/mixed-route-heuristic-gas-model.d.ts +24 -0
  414. package/build/module/routers/alpha-router/gas-models/mixedRoute/mixed-route-heuristic-gas-model.js +154 -0
  415. package/build/module/routers/alpha-router/gas-models/tick-based-heuristic-gas-model.d.ts +15 -0
  416. package/build/module/routers/alpha-router/gas-models/tick-based-heuristic-gas-model.js +187 -0
  417. package/build/module/routers/alpha-router/gas-models/v2/v2-heuristic-gas-model.d.ts +31 -0
  418. package/build/module/routers/alpha-router/gas-models/v2/v2-heuristic-gas-model.js +162 -0
  419. package/build/module/routers/alpha-router/gas-models/v3/v3-heuristic-gas-model.d.ts +26 -0
  420. package/build/module/routers/alpha-router/gas-models/v3/v3-heuristic-gas-model.js +37 -0
  421. package/build/module/routers/alpha-router/gas-models/v4/v4-heuristic-gas-model.d.ts +15 -0
  422. package/build/module/routers/alpha-router/gas-models/v4/v4-heuristic-gas-model.js +36 -0
  423. package/build/module/routers/alpha-router/index.d.ts +4 -0
  424. package/build/module/routers/alpha-router/index.js +5 -0
  425. package/build/module/routers/alpha-router/quoters/base-quoter.d.ts +76 -0
  426. package/build/module/routers/alpha-router/quoters/base-quoter.js +69 -0
  427. package/build/module/routers/alpha-router/quoters/index.d.ts +5 -0
  428. package/build/module/routers/alpha-router/quoters/index.js +6 -0
  429. package/build/module/routers/alpha-router/quoters/mixed-quoter.d.ts +32 -0
  430. package/build/module/routers/alpha-router/quoters/mixed-quoter.js +147 -0
  431. package/build/module/routers/alpha-router/quoters/model/index.d.ts +1 -0
  432. package/build/module/routers/alpha-router/quoters/model/index.js +2 -0
  433. package/build/module/routers/alpha-router/quoters/model/results/get-quotes-result.d.ts +6 -0
  434. package/build/module/routers/alpha-router/quoters/model/results/get-quotes-result.js +2 -0
  435. package/build/module/routers/alpha-router/quoters/model/results/get-routes-result.d.ts +6 -0
  436. package/build/module/routers/alpha-router/quoters/model/results/get-routes-result.js +2 -0
  437. package/build/module/routers/alpha-router/quoters/model/results/index.d.ts +2 -0
  438. package/build/module/routers/alpha-router/quoters/model/results/index.js +3 -0
  439. package/build/module/routers/alpha-router/quoters/v2-quoter.d.ts +24 -0
  440. package/build/module/routers/alpha-router/quoters/v2-quoter.js +138 -0
  441. package/build/module/routers/alpha-router/quoters/v3-quoter.d.ts +19 -0
  442. package/build/module/routers/alpha-router/quoters/v3-quoter.js +118 -0
  443. package/build/module/routers/alpha-router/quoters/v4-quoter.d.ts +18 -0
  444. package/build/module/routers/alpha-router/quoters/v4-quoter.js +115 -0
  445. package/build/module/routers/index.d.ts +4 -0
  446. package/build/module/routers/index.js +5 -0
  447. package/build/module/routers/legacy-router/bases.d.ts +213 -0
  448. package/build/module/routers/legacy-router/bases.js +130 -0
  449. package/build/module/routers/legacy-router/index.d.ts +1 -0
  450. package/build/module/routers/legacy-router/index.js +2 -0
  451. package/build/module/routers/legacy-router/legacy-router.d.ts +41 -0
  452. package/build/module/routers/legacy-router/legacy-router.js +292 -0
  453. package/build/module/routers/router.d.ts +195 -0
  454. package/build/module/routers/router.js +79 -0
  455. package/build/module/tsconfig.module.tsbuildinfo +1 -0
  456. package/build/module/types/other/commons.d.ts +16 -0
  457. package/build/module/types/other/commons.js +5 -0
  458. package/build/module/types/other/factories/Erc20__factory.d.ts +45 -0
  459. package/build/module/types/other/factories/Erc20__factory.js +236 -0
  460. package/build/module/types/other/factories/GasDataArbitrum__factory.d.ts +18 -0
  461. package/build/module/types/other/factories/GasDataArbitrum__factory.js +54 -0
  462. package/build/module/types/other/factories/IMixedRouteQuoterV1__factory.d.ts +41 -0
  463. package/build/module/types/other/factories/IMixedRouteQuoterV1__factory.js +152 -0
  464. package/build/module/types/other/factories/ITokenValidator__factory.d.ts +22 -0
  465. package/build/module/types/other/factories/ITokenValidator__factory.js +74 -0
  466. package/build/module/types/other/factories/MixedRouteQuoterV2__factory.d.ts +86 -0
  467. package/build/module/types/other/factories/MixedRouteQuoterV2__factory.js +473 -0
  468. package/build/module/types/other/factories/Permit2__factory.d.ts +87 -0
  469. package/build/module/types/other/factories/Permit2__factory.js +932 -0
  470. package/build/module/types/other/factories/StateView__factory.d.ts +32 -0
  471. package/build/module/types/other/factories/StateView__factory.js +379 -0
  472. package/build/module/types/other/factories/SwapRouter02__factory.d.ts +67 -0
  473. package/build/module/types/other/factories/SwapRouter02__factory.js +1094 -0
  474. package/build/module/types/other/factories/TokenFeeDetector__factory.d.ts +47 -0
  475. package/build/module/types/other/factories/TokenFeeDetector__factory.js +239 -0
  476. package/build/module/types/other/factories/V4Quoter__factory.d.ts +37 -0
  477. package/build/module/types/other/factories/V4Quoter__factory.js +308 -0
  478. package/build/module/types/v2/commons.d.ts +16 -0
  479. package/build/module/types/v2/commons.js +5 -0
  480. package/build/module/types/v2/factories/IUniswapV2Pair__factory.d.ts +35 -0
  481. package/build/module/types/v2/factories/IUniswapV2Pair__factory.js +667 -0
  482. package/build/module/types/v3/commons.d.ts +16 -0
  483. package/build/module/types/v3/commons.js +5 -0
  484. package/build/module/types/v3/factories/IERC20Metadata__factory.d.ts +35 -0
  485. package/build/module/types/v3/factories/IERC20Metadata__factory.js +238 -0
  486. package/build/module/types/v3/factories/IQuoterV2__factory.d.ts +41 -0
  487. package/build/module/types/v3/factories/IQuoterV2__factory.js +216 -0
  488. package/build/module/types/v3/factories/IUniswapV3PoolState__factory.d.ts +22 -0
  489. package/build/module/types/v3/factories/IUniswapV3PoolState__factory.js +262 -0
  490. package/build/module/types/v3/factories/UniswapInterfaceMulticall__factory.d.ts +61 -0
  491. package/build/module/types/v3/factories/UniswapInterfaceMulticall__factory.js +123 -0
  492. package/build/module/util/addresses.d.ts +32 -0
  493. package/build/module/util/addresses.js +239 -0
  494. package/build/module/util/amounts.d.ts +10 -0
  495. package/build/module/util/amounts.js +82 -0
  496. package/build/module/util/callData.d.ts +1 -0
  497. package/build/module/util/callData.js +3 -0
  498. package/build/module/util/chains.d.ts +72 -0
  499. package/build/module/util/chains.js +777 -0
  500. package/build/module/util/defaultBlocksToLive.d.ts +4 -0
  501. package/build/module/util/defaultBlocksToLive.js +53 -0
  502. package/build/module/util/gas-factory-helpers.d.ts +34 -0
  503. package/build/module/util/gas-factory-helpers.js +421 -0
  504. package/build/module/util/hooksOptions.d.ts +5 -0
  505. package/build/module/util/hooksOptions.js +7 -0
  506. package/build/module/util/index.d.ts +10 -0
  507. package/build/module/util/index.js +11 -0
  508. package/build/module/util/intent.d.ts +6 -0
  509. package/build/module/util/intent.js +10 -0
  510. package/build/module/util/l2FeeChains.d.ts +2 -0
  511. package/build/module/util/l2FeeChains.js +17 -0
  512. package/build/module/util/log.d.ts +3 -0
  513. package/build/module/util/log.js +93 -0
  514. package/build/module/util/methodParameters.d.ts +5 -0
  515. package/build/module/util/methodParameters.js +145 -0
  516. package/build/module/util/metric.d.ts +48 -0
  517. package/build/module/util/metric.js +53 -0
  518. package/build/module/util/mixedRouteFilterOutV4Pools.d.ts +3 -0
  519. package/build/module/util/mixedRouteFilterOutV4Pools.js +12 -0
  520. package/build/module/util/onchainQuoteProviderConfigs.d.ts +42 -0
  521. package/build/module/util/onchainQuoteProviderConfigs.js +74 -0
  522. package/build/module/util/pool.d.ts +5 -0
  523. package/build/module/util/pool.js +41 -0
  524. package/build/module/util/protocols.d.ts +2 -0
  525. package/build/module/util/protocols.js +16 -0
  526. package/build/module/util/routes.d.ts +11 -0
  527. package/build/module/util/routes.js +136 -0
  528. package/build/module/util/serializeRouteIds.d.ts +2 -0
  529. package/build/module/util/serializeRouteIds.js +7 -0
  530. package/build/module/util/tenderlySimulationErrorBreakDown.d.ts +3 -0
  531. package/build/module/util/tenderlySimulationErrorBreakDown.js +29 -0
  532. package/build/module/util/unsupported-tokens.d.ts +37 -0
  533. package/build/module/util/unsupported-tokens.js +1116 -0
  534. package/package.json +132 -0
@@ -0,0 +1,392 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.WMATIC_POLYGON_MUMBAI = exports.DAI_BASE_SEPOLIA = exports.DAI_POLYGON = exports.USDC_NATIVE_POLYGON = exports.USDC_POLYGON = exports.WETH_POLYGON = exports.WMATIC_POLYGON = exports.USDC_ARBITRUM_SEPOLIA = exports.USDC_ARBITRUM_GOERLI = exports.DAI_ARBITRUM_SEPOLIA = exports.DAI_ARBITRUM_GOERLI = exports.ARB_ARBITRUM = exports.DAI_ARBITRUM = exports.WBTC_ARBITRUM = exports.USDT_ARBITRUM = exports.USDC_NATIVE_ARBITRUM = exports.USDC_ARBITRUM = exports.DAI_OPTIMISM_SEPOLIA = exports.WBTC_OPTIMISM_SEPOLIA = exports.USDT_OPTIMISM_SEPOLIA = exports.USDC_OPTIMISM_SEPOLIA = exports.DAI_OPTIMISM_GOERLI = exports.WBTC_OPTIMISM_GOERLI = exports.USDT_OPTIMISM_GOERLI = exports.USDC_OPTIMISM_GOERLI = exports.OP_OPTIMISM = exports.DAI_OPTIMISM = exports.WBTC_OPTIMISM = exports.USDT_OPTIMISM = exports.USDC_NATIVE_OPTIMISM = exports.USDC_OPTIMISM = exports.UNI_GOERLI = exports.DAI_GOERLI = exports.WBTC_GOERLI = exports.USDT_GOERLI = exports.USDC_GOERLI = exports.DAI_SEPOLIA = exports.USDC_NATIVE_SEPOLIA = exports.USDC_SEPOLIA = exports.WSTETH_MAINNET = exports.LIDO_MAINNET = exports.AAVE_MAINNET = exports.UNI_MAINNET = exports.FEI_MAINNET = exports.AMPL_MAINNET = exports.EGGS_MAINNET = exports.DAI_MAINNET = exports.WBTC_MAINNET = exports.USDT_MAINNET = exports.USDC_MAINNET = void 0;
7
+ exports.USDC_UNICHAIN = exports.USDC_BASE_SEPOLIA = exports.USDC_UNICHAIN_SEPOLIA = exports.WBTC_WORLDCHAIN = exports.WLD_WORLDCHAIN = exports.USDC_XLAYER = exports.USDC_MONAD = exports.USDT_MONAD_TESTNET = exports.USDT_HASHKEYCHAIN_TESTNET = exports.USDC_WORLDCHAIN = exports.DAI_ZKSYNC = exports.USDCE_ZKSYNC = exports.USDC_ZKSYNC = exports.USDC_ZORA = exports.USDB_BLAST = exports.WBTC_MOONBEAM = exports.DAI_MOONBEAM = exports.WGLMR_MOONBEAM = exports.USDC_MOONBEAM = exports.WBTC_GNOSIS = exports.WXDAI_GNOSIS = exports.USDC_ETHEREUM_GNOSIS = exports.USDC_BASE_GOERLI = exports.VIRTUAL_BASE = exports.USDC_NATIVE_BASE = exports.USDC_BASE = exports.USDC_NATIVE_AVAX = exports.USDC_BRIDGED_AVAX = exports.USDC_AVAX = exports.DAI_AVAX = exports.CEUR_CELO_ALFAJORES = exports.CUSD_CELO_ALFAJORES = exports.DAI_CELO_ALFAJORES = exports.CELO_ALFAJORES = exports.CEUR_CELO = exports.USDC_NATIVE_CELO = exports.USDC_WORMHOLE_CELO = exports.USDC_CELO = exports.CUSD_CELO = exports.DAI_CELO = exports.CELO = exports.USDT_BNB = exports.USDC_BNB = exports.ETH_BNB = exports.DAI_BNB = exports.BUSD_BNB = exports.BTC_BNB = exports.WETH_POLYGON_MUMBAI = exports.DAI_POLYGON_MUMBAI = exports.USDC_POLYGON_MUMBAI = void 0;
8
+ exports.V4_SEPOLIA_TEST_B = exports.V4_SEPOLIA_TEST_A = exports.WNATIVE_ON = exports.USDC_ON = exports.USDT_ON = exports.DAI_ON = exports.TokenProvider = exports.USDC_SONEIUM = exports.DAI_UNICHAIN = void 0;
9
+ const abi_1 = require("@ethersproject/abi");
10
+ const strings_1 = require("@ethersproject/strings");
11
+ const sdk_core_1 = require("@uniswap/sdk-core");
12
+ const lodash_1 = __importDefault(require("lodash"));
13
+ const IERC20Metadata__factory_1 = require("../types/v3/factories/IERC20Metadata__factory");
14
+ const util_1 = require("../util");
15
+ // Some well known tokens on each chain for seeding cache / testing.
16
+ exports.USDC_MAINNET = new sdk_core_1.Token(sdk_core_1.ChainId.MAINNET, '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48', 6, 'USDC', 'USD//C');
17
+ exports.USDT_MAINNET = new sdk_core_1.Token(sdk_core_1.ChainId.MAINNET, '0xdAC17F958D2ee523a2206206994597C13D831ec7', 6, 'USDT', 'Tether USD');
18
+ exports.WBTC_MAINNET = new sdk_core_1.Token(sdk_core_1.ChainId.MAINNET, '0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599', 8, 'WBTC', 'Wrapped BTC');
19
+ exports.DAI_MAINNET = new sdk_core_1.Token(sdk_core_1.ChainId.MAINNET, '0x6B175474E89094C44Da98b954EedeAC495271d0F', 18, 'DAI', 'Dai Stablecoin');
20
+ exports.EGGS_MAINNET = new sdk_core_1.Token(sdk_core_1.ChainId.MAINNET, '0x2e516BA5Bf3b7eE47fb99B09eaDb60BDE80a82e0', 18, 'EGGS', 'EGGS');
21
+ exports.AMPL_MAINNET = new sdk_core_1.Token(sdk_core_1.ChainId.MAINNET, '0xD46bA6D942050d489DBd938a2C909A5d5039A161', 9, 'AMPL', 'AMPL');
22
+ exports.FEI_MAINNET = new sdk_core_1.Token(sdk_core_1.ChainId.MAINNET, '0x956F47F50A910163D8BF957Cf5846D573E7f87CA', 18, 'FEI', 'Fei USD');
23
+ exports.UNI_MAINNET = new sdk_core_1.Token(sdk_core_1.ChainId.MAINNET, '0x1f9840a85d5af5bf1d1762f925bdaddc4201f984', 18, 'UNI', 'Uniswap');
24
+ exports.AAVE_MAINNET = new sdk_core_1.Token(sdk_core_1.ChainId.MAINNET, '0x7Fc66500c84A76Ad7e9c93437bFc5Ac33E2DDaE9', 18, 'AAVE', 'Aave Token');
25
+ exports.LIDO_MAINNET = new sdk_core_1.Token(sdk_core_1.ChainId.MAINNET, '0x5A98FcBEA516Cf06857215779Fd812CA3beF1B32', 18, 'LDO', 'Lido DAO Token');
26
+ exports.WSTETH_MAINNET = new sdk_core_1.Token(sdk_core_1.ChainId.MAINNET, '0x7f39C581F595B53c5cb19bD0b3f8dA6c935E2Ca0', 18, 'wstETH', 'Wrapped liquid staked Ether');
27
+ exports.USDC_SEPOLIA = new sdk_core_1.Token(sdk_core_1.ChainId.SEPOLIA, '0x6f14C02Fc1F78322cFd7d707aB90f18baD3B54f5', 18, 'USDC', 'USDC Token');
28
+ exports.USDC_NATIVE_SEPOLIA = new sdk_core_1.Token(sdk_core_1.ChainId.SEPOLIA, '0x1c7d4b196cb0c7b01d743fbc6116a902379c7238', 6, 'USDC', 'USDC Token');
29
+ exports.DAI_SEPOLIA = new sdk_core_1.Token(sdk_core_1.ChainId.SEPOLIA, '0x7AF17A48a6336F7dc1beF9D485139f7B6f4FB5C8', 18, 'DAI', 'DAI Token');
30
+ exports.USDC_GOERLI = new sdk_core_1.Token(sdk_core_1.ChainId.GOERLI, '0x07865c6e87b9f70255377e024ace6630c1eaa37f', 6, 'USDC', 'USD//C');
31
+ exports.USDT_GOERLI = new sdk_core_1.Token(sdk_core_1.ChainId.GOERLI, '0xe583769738b6dd4e7caf8451050d1948be717679', 18, 'USDT', 'Tether USD');
32
+ exports.WBTC_GOERLI = new sdk_core_1.Token(sdk_core_1.ChainId.GOERLI, '0xa0a5ad2296b38bd3e3eb59aaeaf1589e8d9a29a9', 8, 'WBTC', 'Wrapped BTC');
33
+ exports.DAI_GOERLI = new sdk_core_1.Token(sdk_core_1.ChainId.GOERLI, '0x11fe4b6ae13d2a6055c8d9cf65c55bac32b5d844', 18, 'DAI', 'Dai Stablecoin');
34
+ exports.UNI_GOERLI = new sdk_core_1.Token(sdk_core_1.ChainId.GOERLI, '0x1f9840a85d5aF5bf1D1762F925BDADdC4201F984', 18, 'UNI', 'Uni token');
35
+ exports.USDC_OPTIMISM = new sdk_core_1.Token(sdk_core_1.ChainId.OPTIMISM, '0x7F5c764cBc14f9669B88837ca1490cCa17c31607', 6, 'USDC', 'USD//C.e');
36
+ exports.USDC_NATIVE_OPTIMISM = new sdk_core_1.Token(sdk_core_1.ChainId.OPTIMISM, '0x0b2C639c533813f4Aa9D7837CAf62653d097Ff85', 6, 'USDC', 'USD//C');
37
+ exports.USDT_OPTIMISM = new sdk_core_1.Token(sdk_core_1.ChainId.OPTIMISM, '0x94b008aA00579c1307B0EF2c499aD98a8ce58e58', 6, 'USDT', 'Tether USD');
38
+ exports.WBTC_OPTIMISM = new sdk_core_1.Token(sdk_core_1.ChainId.OPTIMISM, '0x68f180fcCe6836688e9084f035309E29Bf0A2095', 8, 'WBTC', 'Wrapped BTC');
39
+ exports.DAI_OPTIMISM = new sdk_core_1.Token(sdk_core_1.ChainId.OPTIMISM, '0xDA10009cBd5D07dd0CeCc66161FC93D7c9000da1', 18, 'DAI', 'Dai Stablecoin');
40
+ exports.OP_OPTIMISM = new sdk_core_1.Token(sdk_core_1.ChainId.OPTIMISM, '0x4200000000000000000000000000000000000042', 18, 'OP', 'Optimism');
41
+ exports.USDC_OPTIMISM_GOERLI = new sdk_core_1.Token(sdk_core_1.ChainId.OPTIMISM_GOERLI, '0x7E07E15D2a87A24492740D16f5bdF58c16db0c4E', 6, 'USDC', 'USD//C');
42
+ exports.USDT_OPTIMISM_GOERLI = new sdk_core_1.Token(sdk_core_1.ChainId.OPTIMISM_GOERLI, '0x853eb4bA5D0Ba2B77a0A5329Fd2110d5CE149ECE', 6, 'USDT', 'Tether USD');
43
+ exports.WBTC_OPTIMISM_GOERLI = new sdk_core_1.Token(sdk_core_1.ChainId.OPTIMISM_GOERLI, '0xe0a592353e81a94Db6E3226fD4A99F881751776a', 8, 'WBTC', 'Wrapped BTC');
44
+ exports.DAI_OPTIMISM_GOERLI = new sdk_core_1.Token(sdk_core_1.ChainId.OPTIMISM_GOERLI, '0xDA10009cBd5D07dd0CeCc66161FC93D7c9000da1', 18, 'DAI', 'Dai Stablecoin');
45
+ exports.USDC_OPTIMISM_SEPOLIA = new sdk_core_1.Token(sdk_core_1.ChainId.OPTIMISM_SEPOLIA, '0x7E07E15D2a87A24492740D16f5bdF58c16db0c4E', 6, 'USDC', 'USD//C');
46
+ exports.USDT_OPTIMISM_SEPOLIA = new sdk_core_1.Token(sdk_core_1.ChainId.OPTIMISM_SEPOLIA, '0x853eb4bA5D0Ba2B77a0A5329Fd2110d5CE149ECE', 6, 'USDT', 'Tether USD');
47
+ exports.WBTC_OPTIMISM_SEPOLIA = new sdk_core_1.Token(sdk_core_1.ChainId.OPTIMISM_SEPOLIA, '0xe0a592353e81a94Db6E3226fD4A99F881751776a', 8, 'WBTC', 'Wrapped BTC');
48
+ exports.DAI_OPTIMISM_SEPOLIA = new sdk_core_1.Token(sdk_core_1.ChainId.OPTIMISM_SEPOLIA, '0xDA10009cBd5D07dd0CeCc66161FC93D7c9000da1', 18, 'DAI', 'Dai Stablecoin');
49
+ exports.USDC_ARBITRUM = new sdk_core_1.Token(sdk_core_1.ChainId.ARBITRUM_ONE, '0xFF970A61A04b1cA14834A43f5dE4533eBDDB5CC8', 6, 'USDC', 'USD//C.e');
50
+ exports.USDC_NATIVE_ARBITRUM = new sdk_core_1.Token(sdk_core_1.ChainId.ARBITRUM_ONE, '0xaf88d065e77c8cC2239327C5EDb3A432268e5831', 6, 'USDC', 'USD//C');
51
+ exports.USDT_ARBITRUM = new sdk_core_1.Token(sdk_core_1.ChainId.ARBITRUM_ONE, '0xFd086bC7CD5C481DCC9C85ebE478A1C0b69FCbb9', 6, 'USDT', 'Tether USD');
52
+ exports.WBTC_ARBITRUM = new sdk_core_1.Token(sdk_core_1.ChainId.ARBITRUM_ONE, '0x2f2a2543B76A4166549F7aaB2e75Bef0aefC5B0f', 8, 'WBTC', 'Wrapped BTC');
53
+ exports.DAI_ARBITRUM = new sdk_core_1.Token(sdk_core_1.ChainId.ARBITRUM_ONE, '0xDA10009cBd5D07dd0CeCc66161FC93D7c9000da1', 18, 'DAI', 'Dai Stablecoin');
54
+ exports.ARB_ARBITRUM = new sdk_core_1.Token(sdk_core_1.ChainId.ARBITRUM_ONE, '0x912CE59144191C1204E64559FE8253a0e49E6548', 18, 'ARB', 'Arbitrum');
55
+ exports.DAI_ARBITRUM_GOERLI = new sdk_core_1.Token(sdk_core_1.ChainId.ARBITRUM_GOERLI, '0x0000000000000000000000000000000000000000', // TODO: add address
56
+ 18, 'DAI', 'Dai Stablecoin');
57
+ exports.DAI_ARBITRUM_SEPOLIA = new sdk_core_1.Token(sdk_core_1.ChainId.ARBITRUM_SEPOLIA, '0xc3826E277485c33F3D99C9e0CBbf8449513210EE', 18, 'DAI', 'Dai Stablecoin');
58
+ // Bridged version of official Goerli USDC
59
+ exports.USDC_ARBITRUM_GOERLI = new sdk_core_1.Token(sdk_core_1.ChainId.ARBITRUM_GOERLI, '0x8FB1E3fC51F3b789dED7557E680551d93Ea9d892', 6, 'USDC', 'USD//C');
60
+ // Bridged version of official Sepolia USDC
61
+ exports.USDC_ARBITRUM_SEPOLIA = new sdk_core_1.Token(sdk_core_1.ChainId.ARBITRUM_SEPOLIA, '0x75faf114eafb1BDbe2F0316DF893fd58CE46AA4d', 6, 'USDC', 'USD//C');
62
+ //polygon tokens
63
+ exports.WMATIC_POLYGON = new sdk_core_1.Token(sdk_core_1.ChainId.POLYGON, '0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270', 18, 'WMATIC', 'Wrapped MATIC');
64
+ exports.WETH_POLYGON = new sdk_core_1.Token(sdk_core_1.ChainId.POLYGON, '0x7ceb23fd6bc0add59e62ac25578270cff1b9f619', 18, 'WETH', 'Wrapped Ether');
65
+ exports.USDC_POLYGON = new sdk_core_1.Token(sdk_core_1.ChainId.POLYGON, '0x2791bca1f2de4661ed88a30c99a7a9449aa84174', 6, 'USDC', 'USD//C.e');
66
+ exports.USDC_NATIVE_POLYGON = new sdk_core_1.Token(sdk_core_1.ChainId.POLYGON, '0x3c499c542cef5e3811e1192ce70d8cc03d5c3359', 6, 'USDC', 'USD//C');
67
+ exports.DAI_POLYGON = new sdk_core_1.Token(sdk_core_1.ChainId.POLYGON, '0x8f3Cf7ad23Cd3CaDbD9735AFf958023239c6A063', 18, 'DAI', 'Dai Stablecoin');
68
+ exports.DAI_BASE_SEPOLIA = new sdk_core_1.Token(sdk_core_1.ChainId.SEPOLIA, '0xE6F6e27c0BF1a4841E3F09d03D7D31Da8eAd0a27', 18, 'DAI', 'Dai Stablecoin');
69
+ //polygon mumbai tokens
70
+ exports.WMATIC_POLYGON_MUMBAI = new sdk_core_1.Token(sdk_core_1.ChainId.POLYGON_MUMBAI, '0x9c3C9283D3e44854697Cd22D3Faa240Cfb032889', 18, 'WMATIC', 'Wrapped MATIC');
71
+ exports.USDC_POLYGON_MUMBAI = new sdk_core_1.Token(sdk_core_1.ChainId.POLYGON_MUMBAI, '0xe11a86849d99f524cac3e7a0ec1241828e332c62', 6, 'USDC', 'USD//C');
72
+ exports.DAI_POLYGON_MUMBAI = new sdk_core_1.Token(sdk_core_1.ChainId.POLYGON_MUMBAI, '0x001b3b4d0f3714ca98ba10f6042daebf0b1b7b6f', 18, 'DAI', 'Dai Stablecoin');
73
+ exports.WETH_POLYGON_MUMBAI = new sdk_core_1.Token(sdk_core_1.ChainId.POLYGON_MUMBAI, '0xa6fa4fb5f76172d178d61b04b0ecd319c5d1c0aa', 18, 'WETH', 'Wrapped Ether');
74
+ // BNB chain Tokens
75
+ exports.BTC_BNB = new sdk_core_1.Token(sdk_core_1.ChainId.BNB, '0x7130d2A12B9BCbFAe4f2634d864A1Ee1Ce3Ead9c', 18, 'BTCB', 'Binance BTC');
76
+ exports.BUSD_BNB = new sdk_core_1.Token(sdk_core_1.ChainId.BNB, '0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56', 18, 'BUSD', 'BUSD');
77
+ exports.DAI_BNB = new sdk_core_1.Token(sdk_core_1.ChainId.BNB, '0x1AF3F329e8BE154074D8769D1FFa4eE058B1DBc3', 18, 'DAI', 'DAI');
78
+ exports.ETH_BNB = new sdk_core_1.Token(sdk_core_1.ChainId.BNB, '0x2170Ed0880ac9A755fd29B2688956BD959F933F8', 18, 'ETH', 'ETH');
79
+ exports.USDC_BNB = new sdk_core_1.Token(sdk_core_1.ChainId.BNB, '0x8AC76a51cc950d9822D68b83fE1Ad97B32Cd580d', 18, 'USDC', 'USDC');
80
+ exports.USDT_BNB = new sdk_core_1.Token(sdk_core_1.ChainId.BNB, '0x55d398326f99059fF775485246999027B3197955', 18, 'USDT', 'USDT');
81
+ // Celo Tokens
82
+ exports.CELO = new sdk_core_1.Token(sdk_core_1.ChainId.CELO, '0x471EcE3750Da237f93B8E339c536989b8978a438', 18, 'CELO', 'Celo native asset');
83
+ exports.DAI_CELO = new sdk_core_1.Token(sdk_core_1.ChainId.CELO, '0xE4fE50cdD716522A56204352f00AA110F731932d', 18, 'DAI', 'Dai Stablecoin');
84
+ exports.CUSD_CELO = new sdk_core_1.Token(sdk_core_1.ChainId.CELO, '0x765DE816845861e75A25fCA122bb6898B8B1282a', 18, 'CUSD', 'Celo Dollar Stablecoin');
85
+ exports.USDC_CELO = new sdk_core_1.Token(sdk_core_1.ChainId.CELO, '0xA7D7079b0FEaD91F3e65f86E8915Cb59c1a4C664', 18, 'USDC', 'USD//C.e');
86
+ exports.USDC_WORMHOLE_CELO = new sdk_core_1.Token(sdk_core_1.ChainId.CELO, '0x37f750B7cC259A2f741AF45294f6a16572CF5cAd', 18, 'USDC', 'USD//C.e');
87
+ exports.USDC_NATIVE_CELO = new sdk_core_1.Token(sdk_core_1.ChainId.CELO, '0x765DE816845861e75A25fCA122bb6898B8B1282a', 18, 'USDC', 'USD//C');
88
+ exports.CEUR_CELO = new sdk_core_1.Token(sdk_core_1.ChainId.CELO, '0xD8763CBa276a3738E6DE85b4b3bF5FDed6D6cA73', 18, 'CEUR', 'Celo Euro Stablecoin');
89
+ // Celo Alfajores Tokens
90
+ exports.CELO_ALFAJORES = new sdk_core_1.Token(sdk_core_1.ChainId.CELO_ALFAJORES, '0xF194afDf50B03e69Bd7D057c1Aa9e10c9954E4C9', 18, 'CELO', 'Celo native asset');
91
+ exports.DAI_CELO_ALFAJORES = new sdk_core_1.Token(sdk_core_1.ChainId.CELO_ALFAJORES, '0x7d91E51C8F218f7140188A155f5C75388630B6a8', 18, 'DAI', 'Dai Stablecoin');
92
+ exports.CUSD_CELO_ALFAJORES = new sdk_core_1.Token(sdk_core_1.ChainId.CELO_ALFAJORES, '0x874069Fa1Eb16D44d622F2e0Ca25eeA172369bC1', 18, 'CUSD', 'Celo Dollar Stablecoin');
93
+ exports.CEUR_CELO_ALFAJORES = new sdk_core_1.Token(sdk_core_1.ChainId.CELO_ALFAJORES, '0x10c892A6EC43a53E45D0B916B4b7D383B1b78C0F', 18, 'CEUR', 'Celo Euro Stablecoin');
94
+ // Avalanche Tokens
95
+ exports.DAI_AVAX = new sdk_core_1.Token(sdk_core_1.ChainId.AVALANCHE, '0xd586E7F844cEa2F87f50152665BCbc2C279D8d70', 18, 'DAI.e', 'DAI.e Token');
96
+ exports.USDC_AVAX = new sdk_core_1.Token(sdk_core_1.ChainId.AVALANCHE, '0xB97EF9Ef8734C71904D8002F8b6Bc66Dd9c48a6E', 6, 'USDC', 'USDC Token');
97
+ exports.USDC_BRIDGED_AVAX = new sdk_core_1.Token(sdk_core_1.ChainId.AVALANCHE, '0xA7D7079b0FEaD91F3e65f86E8915Cb59c1a4C664', 6, 'USDC', 'USDC Token');
98
+ exports.USDC_NATIVE_AVAX = new sdk_core_1.Token(sdk_core_1.ChainId.AVALANCHE, '0xb97ef9ef8734c71904d8002f8b6bc66dd9c48a6e', 6, 'USDC', 'USDC Token');
99
+ // Base Tokens
100
+ exports.USDC_BASE = new sdk_core_1.Token(sdk_core_1.ChainId.BASE, '0xd9aAEc86B65D86f6A7B5B1b0c42FFA531710b6CA', 6, 'USDbC', 'USD Base Coin');
101
+ exports.USDC_NATIVE_BASE = new sdk_core_1.Token(sdk_core_1.ChainId.BASE, '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913', 6, 'USDbC', 'USD Base Coin');
102
+ exports.VIRTUAL_BASE = new sdk_core_1.Token(sdk_core_1.ChainId.BASE, '0x0b3e328455c4059EEb9e3f84b5543F74E24e7E1b', 18, 'VIRTUAL', 'Virtual Protocol');
103
+ // Base Goerli Tokens
104
+ exports.USDC_BASE_GOERLI = new sdk_core_1.Token(sdk_core_1.ChainId.BASE_GOERLI, '0x853154e2A5604E5C74a2546E2871Ad44932eB92C', 6, 'USDbC', 'USD Base Coin');
105
+ // Gnosis Tokens
106
+ exports.USDC_ETHEREUM_GNOSIS = new sdk_core_1.Token(sdk_core_1.ChainId.GNOSIS, '0xddafbb505ad214d7b80b1f830fccc89b60fb7a83', 6, 'USDC', 'USDC from Ethereum on Gnosis');
107
+ exports.WXDAI_GNOSIS = new sdk_core_1.Token(sdk_core_1.ChainId.GNOSIS, '0xe91d153e0b41518a2ce8dd3d7944fa863463a97d', 18, 'WXDAI', 'Wrapped XDAI on Gnosis');
108
+ exports.WBTC_GNOSIS = new sdk_core_1.Token(sdk_core_1.ChainId.GNOSIS, '0x8e5bbbb09ed1ebde8674cda39a0c169401db4252', 8, 'WBTC', 'Wrapped BTC from Ethereum on Gnosis');
109
+ // Moonbeam Tokens
110
+ exports.USDC_MOONBEAM = new sdk_core_1.Token(sdk_core_1.ChainId.MOONBEAM, '0x818ec0A7Fe18Ff94269904fCED6AE3DaE6d6dC0b', 6, 'USDC', 'USD Coin bridged using Multichain');
111
+ exports.WGLMR_MOONBEAM = new sdk_core_1.Token(sdk_core_1.ChainId.MOONBEAM, '0xAcc15dC74880C9944775448304B263D191c6077F', 18, 'WGLMR', 'Wrapped GLMR');
112
+ exports.DAI_MOONBEAM = new sdk_core_1.Token(sdk_core_1.ChainId.MOONBEAM, '0x818ec0A7Fe18Ff94269904fCED6AE3DaE6d6dC0b', 6, 'DAI', 'Dai on moonbeam bridged using Multichain');
113
+ exports.WBTC_MOONBEAM = new sdk_core_1.Token(sdk_core_1.ChainId.MOONBEAM, '0x922D641a426DcFFaeF11680e5358F34d97d112E1', 8, 'WBTC', 'Wrapped BTC bridged using Multichain');
114
+ // Blast Tokens
115
+ exports.USDB_BLAST = new sdk_core_1.Token(sdk_core_1.ChainId.BLAST, '0x4300000000000000000000000000000000000003', 18, 'USDB', 'USD Blast');
116
+ exports.USDC_ZORA = new sdk_core_1.Token(sdk_core_1.ChainId.ZORA, '0xCccCCccc7021b32EBb4e8C08314bD62F7c653EC4', 6, 'USDzC', 'USD Coin (Bridged from Ethereum)');
117
+ exports.USDC_ZKSYNC = new sdk_core_1.Token(sdk_core_1.ChainId.ZKSYNC, '0x1d17CBcF0D6D143135aE902365D2E5e2A16538D4', 6, 'USDC', 'USDC');
118
+ exports.USDCE_ZKSYNC = new sdk_core_1.Token(sdk_core_1.ChainId.ZKSYNC, '0x3355df6D4c9C3035724Fd0e3914dE96A5a83aaf4', 6, 'USDC.e', 'Bridged USDC (zkSync)');
119
+ exports.DAI_ZKSYNC = new sdk_core_1.Token(sdk_core_1.ChainId.ZKSYNC, '0x4B9eb6c0b6ea15176BBF62841C6B2A8a398cb656', 18, 'DAI', 'Dai Stablecoin');
120
+ exports.USDC_WORLDCHAIN = new sdk_core_1.Token(sdk_core_1.ChainId.WORLDCHAIN, '0x79A02482A880bCE3F13e09Da970dC34db4CD24d1', 6, 'USDC.e', 'Bridged USDC (world-chain-mainnet)');
121
+ exports.USDT_HASHKEYCHAIN_TESTNET = new sdk_core_1.Token(sdk_core_1.ChainId.HASHKEY_TESTNET, '0x98B6173A8B7DFc52ce8bc88f1184a918A1CCaa4F', 6, 'USDT', 'Tether USD');
122
+ exports.USDT_MONAD_TESTNET = new sdk_core_1.Token(sdk_core_1.ChainId.MONAD_TESTNET, '0xfBC2D240A5eD44231AcA3A9e9066bc4b33f01149', 6, 'USDT', 'USDT');
123
+ exports.USDC_MONAD = new sdk_core_1.Token(sdk_core_1.ChainId.MONAD, '0x754704Bc059F8C67012fEd69BC8A327a5aafb603', 6, 'USDC', 'USDC');
124
+ exports.USDC_XLAYER = new sdk_core_1.Token(sdk_core_1.ChainId.XLAYER, '0x74b7F16337b8972027F6196A17a631aC6dE26d22', 6, 'USDC', 'USDC');
125
+ exports.WLD_WORLDCHAIN = new sdk_core_1.Token(sdk_core_1.ChainId.WORLDCHAIN, '0x2cFc85d8E48F8EAB294be644d9E25C3030863003', 18, 'WLD', 'Worldcoin');
126
+ exports.WBTC_WORLDCHAIN = new sdk_core_1.Token(sdk_core_1.ChainId.WORLDCHAIN, '0x03C7054BCB39f7b2e5B2c7AcB37583e32D70Cfa3', 8, 'WBTC', 'Wrapped BTC');
127
+ exports.USDC_UNICHAIN_SEPOLIA = new sdk_core_1.Token(sdk_core_1.ChainId.UNICHAIN_SEPOLIA, '0x31d0220469e10c4E71834a79b1f276d740d3768F', 6, 'USDC', 'USDC Token');
128
+ exports.USDC_BASE_SEPOLIA = new sdk_core_1.Token(sdk_core_1.ChainId.BASE_SEPOLIA, '0x036CbD53842c5426634e7929541eC2318f3dCF7e', 6, 'USDC', 'USDC Token');
129
+ exports.USDC_UNICHAIN = new sdk_core_1.Token(sdk_core_1.ChainId.UNICHAIN,
130
+ // TODO: validate USDC address is final / validated
131
+ '0x078D782b760474a361dDA0AF3839290b0EF57AD6', 6, 'USDC', 'USD Token');
132
+ exports.DAI_UNICHAIN = new sdk_core_1.Token(sdk_core_1.ChainId.UNICHAIN, '0x20CAb320A855b39F724131C69424240519573f81', 18, 'DAI', 'Dai Stablecoin');
133
+ exports.USDC_SONEIUM = new sdk_core_1.Token(sdk_core_1.ChainId.SONEIUM, '0xbA9986D2381edf1DA03B0B9c1f8b00dc4AacC369', 6, 'USDCE', 'Soneium Bridged USDC Soneium');
134
+ class TokenProvider {
135
+ constructor(chainId, multicall2Provider) {
136
+ this.chainId = chainId;
137
+ this.multicall2Provider = multicall2Provider;
138
+ }
139
+ async getTokenSymbol(addresses, providerConfig) {
140
+ let result;
141
+ let isBytes32 = false;
142
+ try {
143
+ result =
144
+ await this.multicall2Provider.callSameFunctionOnMultipleContracts({
145
+ addresses,
146
+ contractInterface: IERC20Metadata__factory_1.IERC20Metadata__factory.createInterface(),
147
+ functionName: 'symbol',
148
+ providerConfig,
149
+ });
150
+ }
151
+ catch (error) {
152
+ util_1.log.error({ addresses }, `TokenProvider.getTokenSymbol[string] failed with error ${error}. Trying with bytes32.`);
153
+ const bytes32Interface = new abi_1.Interface([
154
+ {
155
+ inputs: [],
156
+ name: 'symbol',
157
+ outputs: [
158
+ {
159
+ internalType: 'bytes32',
160
+ name: '',
161
+ type: 'bytes32',
162
+ },
163
+ ],
164
+ stateMutability: 'view',
165
+ type: 'function',
166
+ },
167
+ ]);
168
+ try {
169
+ result =
170
+ await this.multicall2Provider.callSameFunctionOnMultipleContracts({
171
+ addresses,
172
+ contractInterface: bytes32Interface,
173
+ functionName: 'symbol',
174
+ providerConfig,
175
+ });
176
+ isBytes32 = true;
177
+ }
178
+ catch (error) {
179
+ util_1.log.fatal({ addresses }, `TokenProvider.getTokenSymbol[bytes32] failed with error ${error}.`);
180
+ throw new Error('[TokenProvider.getTokenSymbol] Impossible to fetch token symbol.');
181
+ }
182
+ }
183
+ return { result, isBytes32 };
184
+ }
185
+ async getTokenDecimals(addresses, providerConfig) {
186
+ return this.multicall2Provider.callSameFunctionOnMultipleContracts({
187
+ addresses,
188
+ contractInterface: IERC20Metadata__factory_1.IERC20Metadata__factory.createInterface(),
189
+ functionName: 'decimals',
190
+ providerConfig,
191
+ });
192
+ }
193
+ async getTokens(_addresses, providerConfig) {
194
+ const addressToToken = {};
195
+ const symbolToToken = {};
196
+ const addresses = (0, lodash_1.default)(_addresses)
197
+ .map((address) => address.toLowerCase())
198
+ .uniq()
199
+ .value();
200
+ if (addresses.length > 0) {
201
+ const [symbolsResult, decimalsResult] = await Promise.all([
202
+ this.getTokenSymbol(addresses, providerConfig),
203
+ this.getTokenDecimals(addresses, providerConfig),
204
+ ]);
205
+ const isBytes32 = symbolsResult.isBytes32;
206
+ const { results: symbols } = symbolsResult.result;
207
+ const { results: decimals } = decimalsResult;
208
+ for (let i = 0; i < addresses.length; i++) {
209
+ const address = addresses[i];
210
+ const symbolResult = symbols[i];
211
+ const decimalResult = decimals[i];
212
+ if (!(symbolResult === null || symbolResult === void 0 ? void 0 : symbolResult.success) || !(decimalResult === null || decimalResult === void 0 ? void 0 : decimalResult.success)) {
213
+ util_1.log.info({
214
+ symbolResult,
215
+ decimalResult,
216
+ }, `Dropping token with address ${address} as symbol or decimal are invalid`);
217
+ continue;
218
+ }
219
+ let symbol;
220
+ try {
221
+ symbol = isBytes32
222
+ ? (0, strings_1.parseBytes32String)(symbolResult.result[0])
223
+ : symbolResult.result[0];
224
+ }
225
+ catch (error) {
226
+ if (error instanceof Error &&
227
+ error.message.includes('invalid bytes32 string - no null terminator')) {
228
+ util_1.log.error({
229
+ symbolResult,
230
+ error,
231
+ address,
232
+ }, `invalid bytes32 string - no null terminator`);
233
+ }
234
+ throw error;
235
+ }
236
+ const decimal = decimalResult.result[0];
237
+ addressToToken[address.toLowerCase()] = new sdk_core_1.Token(this.chainId, address, decimal, symbol);
238
+ symbolToToken[symbol.toLowerCase()] =
239
+ addressToToken[address.toLowerCase()];
240
+ }
241
+ util_1.log.info(`Got token symbol and decimals for ${Object.values(addressToToken).length} out of ${addresses.length} tokens on-chain ${providerConfig ? `as of: ${providerConfig === null || providerConfig === void 0 ? void 0 : providerConfig.blockNumber}` : ''}`);
242
+ }
243
+ return {
244
+ getTokenByAddress: (address) => {
245
+ return addressToToken[address.toLowerCase()];
246
+ },
247
+ getTokenBySymbol: (symbol) => {
248
+ return symbolToToken[symbol.toLowerCase()];
249
+ },
250
+ getAllTokens: () => {
251
+ return Object.values(addressToToken);
252
+ },
253
+ };
254
+ }
255
+ }
256
+ exports.TokenProvider = TokenProvider;
257
+ const DAI_ON = (chainId) => {
258
+ switch (chainId) {
259
+ case sdk_core_1.ChainId.MAINNET:
260
+ return exports.DAI_MAINNET;
261
+ case sdk_core_1.ChainId.GOERLI:
262
+ return exports.DAI_GOERLI;
263
+ case sdk_core_1.ChainId.SEPOLIA:
264
+ return exports.DAI_SEPOLIA;
265
+ case sdk_core_1.ChainId.OPTIMISM:
266
+ return exports.DAI_OPTIMISM;
267
+ case sdk_core_1.ChainId.OPTIMISM_GOERLI:
268
+ return exports.DAI_OPTIMISM_GOERLI;
269
+ case sdk_core_1.ChainId.OPTIMISM_SEPOLIA:
270
+ return exports.DAI_OPTIMISM_SEPOLIA;
271
+ case sdk_core_1.ChainId.ARBITRUM_ONE:
272
+ return exports.DAI_ARBITRUM;
273
+ case sdk_core_1.ChainId.ARBITRUM_GOERLI:
274
+ return exports.DAI_ARBITRUM_GOERLI;
275
+ case sdk_core_1.ChainId.ARBITRUM_SEPOLIA:
276
+ return exports.DAI_ARBITRUM_SEPOLIA;
277
+ case sdk_core_1.ChainId.POLYGON:
278
+ return exports.DAI_POLYGON;
279
+ case sdk_core_1.ChainId.POLYGON_MUMBAI:
280
+ return exports.DAI_POLYGON_MUMBAI;
281
+ case sdk_core_1.ChainId.CELO:
282
+ return exports.DAI_CELO;
283
+ case sdk_core_1.ChainId.CELO_ALFAJORES:
284
+ return exports.DAI_CELO_ALFAJORES;
285
+ case sdk_core_1.ChainId.MOONBEAM:
286
+ return exports.DAI_MOONBEAM;
287
+ case sdk_core_1.ChainId.BNB:
288
+ return exports.DAI_BNB;
289
+ case sdk_core_1.ChainId.AVALANCHE:
290
+ return exports.DAI_AVAX;
291
+ case sdk_core_1.ChainId.ZKSYNC:
292
+ return exports.DAI_ZKSYNC;
293
+ case sdk_core_1.ChainId.UNICHAIN:
294
+ return exports.DAI_UNICHAIN;
295
+ case sdk_core_1.ChainId.BASE_SEPOLIA:
296
+ return exports.DAI_BASE_SEPOLIA;
297
+ default:
298
+ throw new Error(`Chain id: ${chainId} not supported`);
299
+ }
300
+ };
301
+ exports.DAI_ON = DAI_ON;
302
+ const USDT_ON = (chainId) => {
303
+ switch (chainId) {
304
+ case sdk_core_1.ChainId.MAINNET:
305
+ return exports.USDT_MAINNET;
306
+ case sdk_core_1.ChainId.GOERLI:
307
+ return exports.USDT_GOERLI;
308
+ case sdk_core_1.ChainId.OPTIMISM:
309
+ return exports.USDT_OPTIMISM;
310
+ case sdk_core_1.ChainId.OPTIMISM_GOERLI:
311
+ return exports.USDT_OPTIMISM_GOERLI;
312
+ case sdk_core_1.ChainId.OPTIMISM_SEPOLIA:
313
+ return exports.USDT_OPTIMISM_SEPOLIA;
314
+ case sdk_core_1.ChainId.HASHKEY_TESTNET:
315
+ return exports.USDT_HASHKEYCHAIN_TESTNET;
316
+ case sdk_core_1.ChainId.ARBITRUM_ONE:
317
+ return exports.USDT_ARBITRUM;
318
+ case sdk_core_1.ChainId.BNB:
319
+ return exports.USDT_BNB;
320
+ case sdk_core_1.ChainId.MONAD_TESTNET:
321
+ return exports.USDT_MONAD_TESTNET;
322
+ default:
323
+ throw new Error(`Chain id: ${chainId} not supported`);
324
+ }
325
+ };
326
+ exports.USDT_ON = USDT_ON;
327
+ const USDC_ON = (chainId) => {
328
+ switch (chainId) {
329
+ case sdk_core_1.ChainId.MAINNET:
330
+ return exports.USDC_MAINNET;
331
+ case sdk_core_1.ChainId.GOERLI:
332
+ return exports.USDC_GOERLI;
333
+ case sdk_core_1.ChainId.SEPOLIA:
334
+ return exports.USDC_SEPOLIA;
335
+ case sdk_core_1.ChainId.OPTIMISM:
336
+ return exports.USDC_OPTIMISM;
337
+ case sdk_core_1.ChainId.OPTIMISM_GOERLI:
338
+ return exports.USDC_OPTIMISM_GOERLI;
339
+ case sdk_core_1.ChainId.OPTIMISM_SEPOLIA:
340
+ return exports.USDC_OPTIMISM_SEPOLIA;
341
+ case sdk_core_1.ChainId.ARBITRUM_ONE:
342
+ return exports.USDC_ARBITRUM;
343
+ case sdk_core_1.ChainId.ARBITRUM_GOERLI:
344
+ return exports.USDC_ARBITRUM_GOERLI;
345
+ case sdk_core_1.ChainId.ARBITRUM_SEPOLIA:
346
+ return exports.USDC_ARBITRUM_SEPOLIA;
347
+ case sdk_core_1.ChainId.POLYGON:
348
+ return exports.USDC_POLYGON;
349
+ case sdk_core_1.ChainId.POLYGON_MUMBAI:
350
+ return exports.USDC_POLYGON_MUMBAI;
351
+ case sdk_core_1.ChainId.GNOSIS:
352
+ return exports.USDC_ETHEREUM_GNOSIS;
353
+ case sdk_core_1.ChainId.MOONBEAM:
354
+ return exports.USDC_MOONBEAM;
355
+ case sdk_core_1.ChainId.BNB:
356
+ return exports.USDC_BNB;
357
+ case sdk_core_1.ChainId.AVALANCHE:
358
+ return exports.USDC_AVAX;
359
+ case sdk_core_1.ChainId.BASE:
360
+ return exports.USDC_BASE;
361
+ case sdk_core_1.ChainId.BASE_GOERLI:
362
+ return exports.USDC_BASE_GOERLI;
363
+ case sdk_core_1.ChainId.ZORA:
364
+ return exports.USDC_ZORA;
365
+ case sdk_core_1.ChainId.ZKSYNC:
366
+ return exports.USDCE_ZKSYNC;
367
+ case sdk_core_1.ChainId.WORLDCHAIN:
368
+ return exports.USDC_WORLDCHAIN;
369
+ case sdk_core_1.ChainId.UNICHAIN_SEPOLIA:
370
+ return exports.USDC_UNICHAIN_SEPOLIA;
371
+ case sdk_core_1.ChainId.BASE_SEPOLIA:
372
+ return exports.USDC_BASE_SEPOLIA;
373
+ case sdk_core_1.ChainId.UNICHAIN:
374
+ return exports.USDC_UNICHAIN;
375
+ case sdk_core_1.ChainId.SONEIUM:
376
+ return exports.USDC_SONEIUM;
377
+ case sdk_core_1.ChainId.MONAD:
378
+ return exports.USDC_MONAD;
379
+ case sdk_core_1.ChainId.XLAYER:
380
+ return exports.USDC_XLAYER;
381
+ default:
382
+ throw new Error(`Chain id: ${chainId} not supported`);
383
+ }
384
+ };
385
+ exports.USDC_ON = USDC_ON;
386
+ const WNATIVE_ON = (chainId) => {
387
+ return util_1.WRAPPED_NATIVE_CURRENCY[chainId];
388
+ };
389
+ exports.WNATIVE_ON = WNATIVE_ON;
390
+ exports.V4_SEPOLIA_TEST_A = new sdk_core_1.Token(sdk_core_1.ChainId.SEPOLIA, '0x0275C79896215a790dD57F436E1103D4179213be', 18, 'A', 'MockA');
391
+ exports.V4_SEPOLIA_TEST_B = new sdk_core_1.Token(sdk_core_1.ChainId.SEPOLIA, '0x1a6990c77cfbba398beb230dd918e28aab71eec2', 18, 'B', 'MockB');
392
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9rZW4tcHJvdmlkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcHJvdmlkZXJzL3Rva2VuLXByb3ZpZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBQUEsNENBQStDO0FBRS9DLG9EQUE0RDtBQUM1RCxnREFBbUQ7QUFDbkQsb0RBQXVCO0FBRXZCLDJGQUF3RjtBQUN4RixrQ0FBdUQ7QUErQnZELG9FQUFvRTtBQUN2RCxRQUFBLFlBQVksR0FBRyxJQUFJLGdCQUFLLENBQ25DLGtCQUFPLENBQUMsT0FBTyxFQUNmLDRDQUE0QyxFQUM1QyxDQUFDLEVBQ0QsTUFBTSxFQUNOLFFBQVEsQ0FDVCxDQUFDO0FBQ1csUUFBQSxZQUFZLEdBQUcsSUFBSSxnQkFBSyxDQUNuQyxrQkFBTyxDQUFDLE9BQU8sRUFDZiw0Q0FBNEMsRUFDNUMsQ0FBQyxFQUNELE1BQU0sRUFDTixZQUFZLENBQ2IsQ0FBQztBQUNXLFFBQUEsWUFBWSxHQUFHLElBQUksZ0JBQUssQ0FDbkMsa0JBQU8sQ0FBQyxPQUFPLEVBQ2YsNENBQTRDLEVBQzVDLENBQUMsRUFDRCxNQUFNLEVBQ04sYUFBYSxDQUNkLENBQUM7QUFDVyxRQUFBLFdBQVcsR0FBRyxJQUFJLGdCQUFLLENBQ2xDLGtCQUFPLENBQUMsT0FBTyxFQUNmLDRDQUE0QyxFQUM1QyxFQUFFLEVBQ0YsS0FBSyxFQUNMLGdCQUFnQixDQUNqQixDQUFDO0FBQ1csUUFBQSxZQUFZLEdBQUcsSUFBSSxnQkFBSyxDQUNuQyxrQkFBTyxDQUFDLE9BQU8sRUFDZiw0Q0FBNEMsRUFDNUMsRUFBRSxFQUNGLE1BQU0sRUFDTixNQUFNLENBQ1AsQ0FBQztBQUNXLFFBQUEsWUFBWSxHQUFHLElBQUksZ0JBQUssQ0FDbkMsa0JBQU8sQ0FBQyxPQUFPLEVBQ2YsNENBQTRDLEVBQzVDLENBQUMsRUFDRCxNQUFNLEVBQ04sTUFBTSxDQUNQLENBQUM7QUFDVyxRQUFBLFdBQVcsR0FBRyxJQUFJLGdC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
@@ -0,0 +1,42 @@
1
+ import { ChainId, Token } from '@uniswap/sdk-core';
2
+ import { ICache } from './cache';
3
+ import { IMulticallProvider } from './multicall-provider';
4
+ import { ProviderConfig } from './provider';
5
+ export declare const DEFAULT_ALLOWLIST: Set<string>;
6
+ export declare enum TokenValidationResult {
7
+ UNKN = 0,
8
+ FOT = 1,
9
+ STF = 2
10
+ }
11
+ export interface TokenValidationResults {
12
+ getValidationByToken(token: Token): TokenValidationResult | undefined;
13
+ }
14
+ /**
15
+ * Provider for getting token data.
16
+ *
17
+ * @export
18
+ * @interface ITokenValidatorProvider
19
+ */
20
+ export interface ITokenValidatorProvider {
21
+ /**
22
+ * Gets the token at each address. Any addresses that are not valid ERC-20 are ignored.
23
+ *
24
+ * @param addresses The token addresses to get.
25
+ * @param [providerConfig] The provider config.
26
+ * @returns A token accessor with methods for accessing the tokens.
27
+ */
28
+ validateTokens(tokens: Token[], providerConfig?: ProviderConfig): Promise<TokenValidationResults>;
29
+ }
30
+ export declare class TokenValidatorProvider implements ITokenValidatorProvider {
31
+ protected chainId: ChainId;
32
+ protected multicall2Provider: IMulticallProvider;
33
+ private tokenValidationCache;
34
+ private tokenValidatorAddress;
35
+ private gasLimitPerCall;
36
+ private amountToFlashBorrow;
37
+ private allowList;
38
+ private CACHE_KEY;
39
+ private BASES;
40
+ constructor(chainId: ChainId, multicall2Provider: IMulticallProvider, tokenValidationCache: ICache<TokenValidationResult>, tokenValidatorAddress?: string, gasLimitPerCall?: number, amountToFlashBorrow?: string, allowList?: Set<string>);
41
+ validateTokens(tokens: Token[], providerConfig?: ProviderConfig): Promise<TokenValidationResults>;
42
+ }
@@ -0,0 +1,99 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.TokenValidatorProvider = exports.TokenValidationResult = exports.DEFAULT_ALLOWLIST = void 0;
7
+ const lodash_1 = __importDefault(require("lodash"));
8
+ const ITokenValidator__factory_1 = require("../types/other/factories/ITokenValidator__factory");
9
+ const util_1 = require("../util");
10
+ exports.DEFAULT_ALLOWLIST = new Set([
11
+ // RYOSHI. Does not allow transfers between contracts so fails validation.
12
+ '0x777E2ae845272a2F540ebf6a3D03734A5a8f618e'.toLowerCase(),
13
+ ]);
14
+ var TokenValidationResult;
15
+ (function (TokenValidationResult) {
16
+ TokenValidationResult[TokenValidationResult["UNKN"] = 0] = "UNKN";
17
+ TokenValidationResult[TokenValidationResult["FOT"] = 1] = "FOT";
18
+ TokenValidationResult[TokenValidationResult["STF"] = 2] = "STF";
19
+ })(TokenValidationResult = exports.TokenValidationResult || (exports.TokenValidationResult = {}));
20
+ const TOKEN_VALIDATOR_ADDRESS = '0xb5ee1690b7dcc7859771148d0889be838fe108e0';
21
+ const AMOUNT_TO_FLASH_BORROW = '1000';
22
+ const GAS_LIMIT_PER_VALIDATE = 1000000;
23
+ class TokenValidatorProvider {
24
+ constructor(chainId, multicall2Provider, tokenValidationCache, tokenValidatorAddress = TOKEN_VALIDATOR_ADDRESS, gasLimitPerCall = GAS_LIMIT_PER_VALIDATE, amountToFlashBorrow = AMOUNT_TO_FLASH_BORROW, allowList = exports.DEFAULT_ALLOWLIST) {
25
+ this.chainId = chainId;
26
+ this.multicall2Provider = multicall2Provider;
27
+ this.tokenValidationCache = tokenValidationCache;
28
+ this.tokenValidatorAddress = tokenValidatorAddress;
29
+ this.gasLimitPerCall = gasLimitPerCall;
30
+ this.amountToFlashBorrow = amountToFlashBorrow;
31
+ this.allowList = allowList;
32
+ this.CACHE_KEY = (chainId, address) => `token-${chainId}-${address}`;
33
+ this.BASES = [util_1.WRAPPED_NATIVE_CURRENCY[this.chainId].address];
34
+ }
35
+ async validateTokens(tokens, providerConfig) {
36
+ const tokenAddressToToken = lodash_1.default.keyBy(tokens, 'address');
37
+ const addressesRaw = (0, lodash_1.default)(tokens)
38
+ .map((token) => token.address)
39
+ .uniq()
40
+ .value();
41
+ const addresses = [];
42
+ const tokenToResult = {};
43
+ // Check if we have cached token validation results for any tokens.
44
+ for (const address of addressesRaw) {
45
+ if (await this.tokenValidationCache.has(this.CACHE_KEY(this.chainId, address))) {
46
+ tokenToResult[address.toLowerCase()] =
47
+ (await this.tokenValidationCache.get(this.CACHE_KEY(this.chainId, address)));
48
+ util_1.metric.putMetric(`TokenValidatorProviderValidateCacheHitResult${tokenToResult[address.toLowerCase()]}`, 1, util_1.MetricLoggerUnit.Count);
49
+ }
50
+ else {
51
+ addresses.push(address);
52
+ }
53
+ }
54
+ util_1.log.info(`Got token validation results for ${addressesRaw.length - addresses.length} tokens from cache. Getting ${addresses.length} on-chain.`);
55
+ const functionParams = (0, lodash_1.default)(addresses)
56
+ .map((address) => [address, this.BASES, this.amountToFlashBorrow])
57
+ .value();
58
+ // We use the validate function instead of batchValidate to avoid poison pill problem.
59
+ // One token that consumes too much gas could cause the entire batch to fail.
60
+ const multicallResult = await this.multicall2Provider.callSameFunctionOnContractWithMultipleParams({
61
+ address: this.tokenValidatorAddress,
62
+ contractInterface: ITokenValidator__factory_1.ITokenValidator__factory.createInterface(),
63
+ functionName: 'validate',
64
+ functionParams: functionParams,
65
+ providerConfig,
66
+ additionalConfig: {
67
+ gasLimitPerCallOverride: this.gasLimitPerCall,
68
+ },
69
+ });
70
+ for (let i = 0; i < multicallResult.results.length; i++) {
71
+ const resultWrapper = multicallResult.results[i];
72
+ const tokenAddress = addresses[i];
73
+ const token = tokenAddressToToken[tokenAddress];
74
+ if (this.allowList.has(token.address.toLowerCase())) {
75
+ tokenToResult[token.address.toLowerCase()] = TokenValidationResult.UNKN;
76
+ await this.tokenValidationCache.set(this.CACHE_KEY(this.chainId, token.address.toLowerCase()), tokenToResult[token.address.toLowerCase()]);
77
+ continue;
78
+ }
79
+ // Could happen if the tokens transfer consumes too much gas so we revert. Just
80
+ // drop the token in that case.
81
+ if (!resultWrapper.success) {
82
+ util_1.metric.putMetric('TokenValidatorProviderValidateFailed', 1, util_1.MetricLoggerUnit.Count);
83
+ util_1.log.error({ result: resultWrapper }, `Failed to validate token ${token.symbol}`);
84
+ continue;
85
+ }
86
+ util_1.metric.putMetric('TokenValidatorProviderValidateSuccess', 1, util_1.MetricLoggerUnit.Count);
87
+ const validationResult = resultWrapper.result[0];
88
+ tokenToResult[token.address.toLowerCase()] =
89
+ validationResult;
90
+ await this.tokenValidationCache.set(this.CACHE_KEY(this.chainId, token.address.toLowerCase()), tokenToResult[token.address.toLowerCase()]);
91
+ util_1.metric.putMetric(`TokenValidatorProviderValidateCacheMissResult${validationResult}`, 1, util_1.MetricLoggerUnit.Count);
92
+ }
93
+ return {
94
+ getValidationByToken: (token) => tokenToResult[token.address.toLowerCase()],
95
+ };
96
+ }
97
+ }
98
+ exports.TokenValidatorProvider = TokenValidatorProvider;
99
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9rZW4tdmFsaWRhdG9yLXByb3ZpZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3Byb3ZpZGVycy90b2tlbi12YWxpZGF0b3ItcHJvdmlkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQ0Esb0RBQXVCO0FBRXZCLGdHQUE2RjtBQUM3RixrQ0FLaUI7QUFNSixRQUFBLGlCQUFpQixHQUFHLElBQUksR0FBRyxDQUFTO0lBQy9DLDBFQUEwRTtJQUMxRSw0Q0FBNEMsQ0FBQyxXQUFXLEVBQUU7Q0FDM0QsQ0FBQyxDQUFDO0FBRUgsSUFBWSxxQkFJWDtBQUpELFdBQVkscUJBQXFCO0lBQy9CLGlFQUFRLENBQUE7SUFDUiwrREFBTyxDQUFBO0lBQ1AsK0RBQU8sQ0FBQTtBQUNULENBQUMsRUFKVyxxQkFBcUIsR0FBckIsNkJBQXFCLEtBQXJCLDZCQUFxQixRQUloQztBQU1ELE1BQU0sdUJBQXVCLEdBQUcsNENBQTRDLENBQUM7QUFDN0UsTUFBTSxzQkFBc0IsR0FBRyxNQUFNLENBQUM7QUFDdEMsTUFBTSxzQkFBc0IsR0FBRyxPQUFTLENBQUM7QUFzQnpDLE1BQWEsc0JBQXNCO0lBTWpDLFlBQ1ksT0FBZ0IsRUFDaEIsa0JBQXNDLEVBQ3hDLG9CQUFtRCxFQUNuRCx3QkFBd0IsdUJBQXVCLEVBQy9DLGtCQUFrQixzQkFBc0IsRUFDeEMsc0JBQXNCLHNCQUFzQixFQUM1QyxZQUFZLHlCQUFpQjtRQU4zQixZQUFPLEdBQVAsT0FBTyxDQUFTO1FBQ2hCLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBb0I7UUFDeEMseUJBQW9CLEdBQXBCLG9CQUFvQixDQUErQjtRQUNuRCwwQkFBcUIsR0FBckIscUJBQXFCLENBQTBCO1FBQy9DLG9CQUFlLEdBQWYsZUFBZSxDQUF5QjtRQUN4Qyx3QkFBbUIsR0FBbkIsbUJBQW1CLENBQXlCO1FBQzVDLGNBQVMsR0FBVCxTQUFTLENBQW9CO1FBWi9CLGNBQVMsR0FBRyxDQUFDLE9B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
@@ -0,0 +1,20 @@
1
+ import { ChainId } from '@uniswap/sdk-core';
2
+ import { V2SubgraphPool } from './v2/subgraph-provider';
3
+ import { V3SubgraphPool } from './v3/subgraph-provider';
4
+ /**
5
+ * Gets subgraph pools from a URI. The URI shoudl contain a JSON
6
+ * stringified array of V2SubgraphPool objects or V3SubgraphPool
7
+ * objects.
8
+ *
9
+ * @export
10
+ * @class URISubgraphProvider
11
+ * @template TSubgraphPool
12
+ */
13
+ export declare class URISubgraphProvider<TSubgraphPool extends V2SubgraphPool | V3SubgraphPool> {
14
+ private chainId;
15
+ private uri;
16
+ private timeout;
17
+ private retries;
18
+ constructor(chainId: ChainId, uri: string, timeout?: number, retries?: number);
19
+ getPools(): Promise<TSubgraphPool[]>;
20
+ }