v-swap-smart-order-router 3.10.2

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 (414) hide show
  1. package/CHANGELOG.md +255 -0
  2. package/LICENSE +674 -0
  3. package/README.md +248 -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 +9 -0
  7. package/build/main/providers/cache-node.js +19 -0
  8. package/build/main/providers/cache.d.ts +13 -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 +26 -0
  15. package/build/main/providers/caching/route/model/cached-route.js +30 -0
  16. package/build/main/providers/caching/route/model/cached-routes.d.ts +63 -0
  17. package/build/main/providers/caching/route/model/cached-routes.js +73 -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 +91 -0
  21. package/build/main/providers/caching/route/route-caching-provider.js +65 -0
  22. package/build/main/providers/caching-gas-provider.d.ts +23 -0
  23. package/build/main/providers/caching-gas-provider.js +37 -0
  24. package/build/main/providers/caching-token-list-provider.d.ts +40 -0
  25. package/build/main/providers/caching-token-list-provider.js +123 -0
  26. package/build/main/providers/caching-token-provider.d.ts +25 -0
  27. package/build/main/providers/caching-token-provider.js +202 -0
  28. package/build/main/providers/eip-1559-gas-price-provider.d.ts +31 -0
  29. package/build/main/providers/eip-1559-gas-price-provider.js +66 -0
  30. package/build/main/providers/eth-estimate-gas-provider.d.ts +16 -0
  31. package/build/main/providers/eth-estimate-gas-provider.js +74 -0
  32. package/build/main/providers/eth-gas-station-info-gas-price-provider.d.ts +19 -0
  33. package/build/main/providers/eth-gas-station-info-gas-price-provider.js +37 -0
  34. package/build/main/providers/gas-price-provider.d.ts +10 -0
  35. package/build/main/providers/gas-price-provider.js +10 -0
  36. package/build/main/providers/index.d.ts +37 -0
  37. package/build/main/providers/index.js +54 -0
  38. package/build/main/providers/legacy-gas-price-provider.d.ts +7 -0
  39. package/build/main/providers/legacy-gas-price-provider.js +20 -0
  40. package/build/main/providers/multicall-provider.d.ts +82 -0
  41. package/build/main/providers/multicall-provider.js +15 -0
  42. package/build/main/providers/multicall-uniswap-provider.d.ts +37 -0
  43. package/build/main/providers/multicall-uniswap-provider.js +163 -0
  44. package/build/main/providers/on-chain-gas-price-provider.d.ts +19 -0
  45. package/build/main/providers/on-chain-gas-price-provider.js +38 -0
  46. package/build/main/providers/on-chain-quote-provider.d.ts +221 -0
  47. package/build/main/providers/on-chain-quote-provider.js +523 -0
  48. package/build/main/providers/provider.d.ts +10 -0
  49. package/build/main/providers/provider.js +3 -0
  50. package/build/main/providers/simulation-provider.d.ts +42 -0
  51. package/build/main/providers/simulation-provider.js +130 -0
  52. package/build/main/providers/static-gas-price-provider.d.ts +7 -0
  53. package/build/main/providers/static-gas-price-provider.js +13 -0
  54. package/build/main/providers/swap-router-provider.d.ts +31 -0
  55. package/build/main/providers/swap-router-provider.js +42 -0
  56. package/build/main/providers/tenderly-simulation-provider.d.ts +45 -0
  57. package/build/main/providers/tenderly-simulation-provider.js +254 -0
  58. package/build/main/providers/token-provider.d.ts +114 -0
  59. package/build/main/providers/token-provider.js +297 -0
  60. package/build/main/providers/token-validator-provider.d.ts +42 -0
  61. package/build/main/providers/token-validator-provider.js +95 -0
  62. package/build/main/providers/uri-subgraph-provider.d.ts +20 -0
  63. package/build/main/providers/uri-subgraph-provider.js +65 -0
  64. package/build/main/providers/v2/caching-pool-provider.d.ts +34 -0
  65. package/build/main/providers/v2/caching-pool-provider.js +88 -0
  66. package/build/main/providers/v2/caching-subgraph-provider.d.ts +23 -0
  67. package/build/main/providers/v2/caching-subgraph-provider.js +34 -0
  68. package/build/main/providers/v2/pool-provider.d.ts +60 -0
  69. package/build/main/providers/v2/pool-provider.js +110 -0
  70. package/build/main/providers/v2/quote-provider.d.ts +33 -0
  71. package/build/main/providers/v2/quote-provider.js +91 -0
  72. package/build/main/providers/v2/static-subgraph-provider.d.ts +20 -0
  73. package/build/main/providers/v2/static-subgraph-provider.js +103 -0
  74. package/build/main/providers/v2/subgraph-provider-with-fallback.d.ts +19 -0
  75. package/build/main/providers/v2/subgraph-provider-with-fallback.js +35 -0
  76. package/build/main/providers/v2/subgraph-provider.d.ts +34 -0
  77. package/build/main/providers/v2/subgraph-provider.js +135 -0
  78. package/build/main/providers/v2/uri-subgraph-provider.d.ts +4 -0
  79. package/build/main/providers/v2/uri-subgraph-provider.js +8 -0
  80. package/build/main/providers/v3/caching-pool-provider.d.ts +33 -0
  81. package/build/main/providers/v3/caching-pool-provider.js +77 -0
  82. package/build/main/providers/v3/caching-subgraph-provider.d.ts +23 -0
  83. package/build/main/providers/v3/caching-subgraph-provider.js +34 -0
  84. package/build/main/providers/v3/gas-data-provider.d.ts +57 -0
  85. package/build/main/providers/v3/gas-data-provider.js +66 -0
  86. package/build/main/providers/v3/pool-provider.d.ts +61 -0
  87. package/build/main/providers/v3/pool-provider.js +123 -0
  88. package/build/main/providers/v3/static-subgraph-provider.d.ts +21 -0
  89. package/build/main/providers/v3/static-subgraph-provider.js +203 -0
  90. package/build/main/providers/v3/subgraph-provider-with-fallback.d.ts +15 -0
  91. package/build/main/providers/v3/subgraph-provider-with-fallback.js +31 -0
  92. package/build/main/providers/v3/subgraph-provider.d.ts +37 -0
  93. package/build/main/providers/v3/subgraph-provider.js +145 -0
  94. package/build/main/providers/v3/uri-subgraph-provider.d.ts +4 -0
  95. package/build/main/providers/v3/uri-subgraph-provider.js +8 -0
  96. package/build/main/routers/alpha-router/alpha-router.d.ts +267 -0
  97. package/build/main/routers/alpha-router/alpha-router.js +825 -0
  98. package/build/main/routers/alpha-router/config.d.ts +4 -0
  99. package/build/main/routers/alpha-router/config.js +93 -0
  100. package/build/main/routers/alpha-router/entities/index.d.ts +1 -0
  101. package/build/main/routers/alpha-router/entities/index.js +18 -0
  102. package/build/main/routers/alpha-router/entities/route-with-valid-quote.d.ts +163 -0
  103. package/build/main/routers/alpha-router/entities/route-with-valid-quote.js +143 -0
  104. package/build/main/routers/alpha-router/functions/best-swap-route.d.ts +19 -0
  105. package/build/main/routers/alpha-router/functions/best-swap-route.js +364 -0
  106. package/build/main/routers/alpha-router/functions/calculate-ratio-amount-in.d.ts +3 -0
  107. package/build/main/routers/alpha-router/functions/calculate-ratio-amount-in.js +18 -0
  108. package/build/main/routers/alpha-router/functions/compute-all-routes.d.ts +8 -0
  109. package/build/main/routers/alpha-router/functions/compute-all-routes.js +72 -0
  110. package/build/main/routers/alpha-router/functions/get-candidate-pools.d.ts +78 -0
  111. package/build/main/routers/alpha-router/functions/get-candidate-pools.js +761 -0
  112. package/build/main/routers/alpha-router/gas-models/gas-model.d.ts +83 -0
  113. package/build/main/routers/alpha-router/gas-models/gas-model.js +68 -0
  114. package/build/main/routers/alpha-router/gas-models/index.d.ts +2 -0
  115. package/build/main/routers/alpha-router/gas-models/index.js +19 -0
  116. package/build/main/routers/alpha-router/gas-models/mixedRoute/mixed-route-heuristic-gas-model.d.ts +25 -0
  117. package/build/main/routers/alpha-router/gas-models/mixedRoute/mixed-route-heuristic-gas-model.js +175 -0
  118. package/build/main/routers/alpha-router/gas-models/v2/v2-heuristic-gas-model.d.ts +29 -0
  119. package/build/main/routers/alpha-router/gas-models/v2/v2-heuristic-gas-model.js +167 -0
  120. package/build/main/routers/alpha-router/gas-models/v3/gas-costs.d.ts +6 -0
  121. package/build/main/routers/alpha-router/gas-models/v3/gas-costs.js +110 -0
  122. package/build/main/routers/alpha-router/gas-models/v3/v3-heuristic-gas-model.d.ts +31 -0
  123. package/build/main/routers/alpha-router/gas-models/v3/v3-heuristic-gas-model.js +288 -0
  124. package/build/main/routers/alpha-router/index.d.ts +4 -0
  125. package/build/main/routers/alpha-router/index.js +21 -0
  126. package/build/main/routers/alpha-router/quoters/base-quoter.d.ts +68 -0
  127. package/build/main/routers/alpha-router/quoters/base-quoter.js +61 -0
  128. package/build/main/routers/alpha-router/quoters/index.d.ts +5 -0
  129. package/build/main/routers/alpha-router/quoters/index.js +22 -0
  130. package/build/main/routers/alpha-router/quoters/mixed-quoter.d.ts +20 -0
  131. package/build/main/routers/alpha-router/quoters/mixed-quoter.js +130 -0
  132. package/build/main/routers/alpha-router/quoters/model/index.d.ts +1 -0
  133. package/build/main/routers/alpha-router/quoters/model/index.js +18 -0
  134. package/build/main/routers/alpha-router/quoters/model/results/get-quotes-result.d.ts +6 -0
  135. package/build/main/routers/alpha-router/quoters/model/results/get-quotes-result.js +3 -0
  136. package/build/main/routers/alpha-router/quoters/model/results/get-routes-result.d.ts +6 -0
  137. package/build/main/routers/alpha-router/quoters/model/results/get-routes-result.js +3 -0
  138. package/build/main/routers/alpha-router/quoters/model/results/index.d.ts +2 -0
  139. package/build/main/routers/alpha-router/quoters/model/results/index.js +19 -0
  140. package/build/main/routers/alpha-router/quoters/v2-quoter.d.ts +21 -0
  141. package/build/main/routers/alpha-router/quoters/v2-quoter.js +122 -0
  142. package/build/main/routers/alpha-router/quoters/v3-quoter.d.ts +19 -0
  143. package/build/main/routers/alpha-router/quoters/v3-quoter.js +125 -0
  144. package/build/main/routers/index.d.ts +4 -0
  145. package/build/main/routers/index.js +21 -0
  146. package/build/main/routers/legacy-router/bases.d.ts +136 -0
  147. package/build/main/routers/legacy-router/bases.js +87 -0
  148. package/build/main/routers/legacy-router/index.d.ts +1 -0
  149. package/build/main/routers/legacy-router/index.js +18 -0
  150. package/build/main/routers/legacy-router/legacy-router.d.ts +42 -0
  151. package/build/main/routers/legacy-router/legacy-router.js +289 -0
  152. package/build/main/routers/router.d.ts +165 -0
  153. package/build/main/routers/router.js +52 -0
  154. package/build/main/tsconfig.tsbuildinfo +1 -0
  155. package/build/main/types/other/commons.d.ts +16 -0
  156. package/build/main/types/other/commons.js +6 -0
  157. package/build/main/types/other/factories/Erc20__factory.d.ts +45 -0
  158. package/build/main/types/other/factories/Erc20__factory.js +240 -0
  159. package/build/main/types/other/factories/GasDataArbitrum__factory.d.ts +18 -0
  160. package/build/main/types/other/factories/GasDataArbitrum__factory.js +58 -0
  161. package/build/main/types/other/factories/GasPriceOracle__factory.d.ts +46 -0
  162. package/build/main/types/other/factories/GasPriceOracle__factory.js +316 -0
  163. package/build/main/types/other/factories/IMixedRouteQuoterV1__factory.d.ts +41 -0
  164. package/build/main/types/other/factories/IMixedRouteQuoterV1__factory.js +156 -0
  165. package/build/main/types/other/factories/ITokenValidator__factory.d.ts +22 -0
  166. package/build/main/types/other/factories/ITokenValidator__factory.js +78 -0
  167. package/build/main/types/other/factories/Permit2__factory.d.ts +87 -0
  168. package/build/main/types/other/factories/Permit2__factory.js +936 -0
  169. package/build/main/types/other/factories/SwapRouter02__factory.d.ts +67 -0
  170. package/build/main/types/other/factories/SwapRouter02__factory.js +1098 -0
  171. package/build/main/types/v2/commons.d.ts +16 -0
  172. package/build/main/types/v2/commons.js +6 -0
  173. package/build/main/types/v2/factories/IUniswapV2Pair__factory.d.ts +35 -0
  174. package/build/main/types/v2/factories/IUniswapV2Pair__factory.js +671 -0
  175. package/build/main/types/v3/commons.d.ts +16 -0
  176. package/build/main/types/v3/commons.js +6 -0
  177. package/build/main/types/v3/factories/IERC20Metadata__factory.d.ts +35 -0
  178. package/build/main/types/v3/factories/IERC20Metadata__factory.js +242 -0
  179. package/build/main/types/v3/factories/IQuoterV2__factory.d.ts +41 -0
  180. package/build/main/types/v3/factories/IQuoterV2__factory.js +220 -0
  181. package/build/main/types/v3/factories/IUniswapV3PoolState__factory.d.ts +22 -0
  182. package/build/main/types/v3/factories/IUniswapV3PoolState__factory.js +266 -0
  183. package/build/main/types/v3/factories/UniswapInterfaceMulticall__factory.d.ts +61 -0
  184. package/build/main/types/v3/factories/UniswapInterfaceMulticall__factory.js +127 -0
  185. package/build/main/util/addresses.d.ts +26 -0
  186. package/build/main/util/addresses.js +73 -0
  187. package/build/main/util/amounts.d.ts +8 -0
  188. package/build/main/util/amounts.js +51 -0
  189. package/build/main/util/callData.d.ts +1 -0
  190. package/build/main/util/callData.js +6 -0
  191. package/build/main/util/chains.d.ts +77 -0
  192. package/build/main/util/chains.js +564 -0
  193. package/build/main/util/gas-factory-helpers.d.ts +24 -0
  194. package/build/main/util/gas-factory-helpers.js +308 -0
  195. package/build/main/util/index.d.ts +7 -0
  196. package/build/main/util/index.js +24 -0
  197. package/build/main/util/log.d.ts +3 -0
  198. package/build/main/util/log.js +97 -0
  199. package/build/main/util/methodParameters.d.ts +5 -0
  200. package/build/main/util/methodParameters.js +108 -0
  201. package/build/main/util/metric.d.ts +48 -0
  202. package/build/main/util/metric.js +59 -0
  203. package/build/main/util/protocols.d.ts +2 -0
  204. package/build/main/util/protocols.js +18 -0
  205. package/build/main/util/routes.d.ts +8 -0
  206. package/build/main/util/routes.js +60 -0
  207. package/build/main/util/unsupported-tokens.d.ts +37 -0
  208. package/build/main/util/unsupported-tokens.js +1119 -0
  209. package/build/module/index.d.ts +3 -0
  210. package/build/module/index.js +4 -0
  211. package/build/module/providers/cache-node.d.ts +9 -0
  212. package/build/module/providers/cache-node.js +15 -0
  213. package/build/module/providers/cache.d.ts +13 -0
  214. package/build/module/providers/cache.js +2 -0
  215. package/build/module/providers/caching/route/index.d.ts +2 -0
  216. package/build/module/providers/caching/route/index.js +3 -0
  217. package/build/module/providers/caching/route/model/cache-mode.d.ts +16 -0
  218. package/build/module/providers/caching/route/model/cache-mode.js +18 -0
  219. package/build/module/providers/caching/route/model/cached-route.d.ts +26 -0
  220. package/build/module/providers/caching/route/model/cached-route.js +26 -0
  221. package/build/module/providers/caching/route/model/cached-routes.d.ts +63 -0
  222. package/build/module/providers/caching/route/model/cached-routes.js +66 -0
  223. package/build/module/providers/caching/route/model/index.d.ts +3 -0
  224. package/build/module/providers/caching/route/model/index.js +4 -0
  225. package/build/module/providers/caching/route/route-caching-provider.d.ts +91 -0
  226. package/build/module/providers/caching/route/route-caching-provider.js +61 -0
  227. package/build/module/providers/caching-gas-provider.d.ts +23 -0
  228. package/build/module/providers/caching-gas-provider.js +33 -0
  229. package/build/module/providers/caching-token-list-provider.d.ts +40 -0
  230. package/build/module/providers/caching-token-list-provider.js +116 -0
  231. package/build/module/providers/caching-token-provider.d.ts +25 -0
  232. package/build/module/providers/caching-token-provider.js +195 -0
  233. package/build/module/providers/eip-1559-gas-price-provider.d.ts +31 -0
  234. package/build/module/providers/eip-1559-gas-price-provider.js +59 -0
  235. package/build/module/providers/eth-estimate-gas-provider.d.ts +16 -0
  236. package/build/module/providers/eth-estimate-gas-provider.js +82 -0
  237. package/build/module/providers/eth-gas-station-info-gas-price-provider.d.ts +19 -0
  238. package/build/module/providers/eth-gas-station-info-gas-price-provider.js +30 -0
  239. package/build/module/providers/gas-price-provider.d.ts +10 -0
  240. package/build/module/providers/gas-price-provider.js +6 -0
  241. package/build/module/providers/index.d.ts +37 -0
  242. package/build/module/providers/index.js +38 -0
  243. package/build/module/providers/legacy-gas-price-provider.d.ts +7 -0
  244. package/build/module/providers/legacy-gas-price-provider.js +16 -0
  245. package/build/module/providers/multicall-provider.d.ts +82 -0
  246. package/build/module/providers/multicall-provider.js +11 -0
  247. package/build/module/providers/multicall-uniswap-provider.d.ts +37 -0
  248. package/build/module/providers/multicall-uniswap-provider.js +156 -0
  249. package/build/module/providers/on-chain-gas-price-provider.d.ts +19 -0
  250. package/build/module/providers/on-chain-gas-price-provider.js +34 -0
  251. package/build/module/providers/on-chain-quote-provider.d.ts +221 -0
  252. package/build/module/providers/on-chain-quote-provider.js +517 -0
  253. package/build/module/providers/provider.d.ts +10 -0
  254. package/build/module/providers/provider.js +2 -0
  255. package/build/module/providers/simulation-provider.d.ts +42 -0
  256. package/build/module/providers/simulation-provider.js +132 -0
  257. package/build/module/providers/static-gas-price-provider.d.ts +7 -0
  258. package/build/module/providers/static-gas-price-provider.js +9 -0
  259. package/build/module/providers/swap-router-provider.d.ts +31 -0
  260. package/build/module/providers/swap-router-provider.js +38 -0
  261. package/build/module/providers/tenderly-simulation-provider.d.ts +45 -0
  262. package/build/module/providers/tenderly-simulation-provider.js +249 -0
  263. package/build/module/providers/token-provider.d.ts +114 -0
  264. package/build/module/providers/token-provider.js +285 -0
  265. package/build/module/providers/token-validator-provider.d.ts +42 -0
  266. package/build/module/providers/token-validator-provider.js +88 -0
  267. package/build/module/providers/uri-subgraph-provider.d.ts +20 -0
  268. package/build/module/providers/uri-subgraph-provider.js +58 -0
  269. package/build/module/providers/v2/caching-pool-provider.d.ts +34 -0
  270. package/build/module/providers/v2/caching-pool-provider.js +81 -0
  271. package/build/module/providers/v2/caching-subgraph-provider.d.ts +23 -0
  272. package/build/module/providers/v2/caching-subgraph-provider.js +30 -0
  273. package/build/module/providers/v2/pool-provider.d.ts +60 -0
  274. package/build/module/providers/v2/pool-provider.js +103 -0
  275. package/build/module/providers/v2/quote-provider.d.ts +33 -0
  276. package/build/module/providers/v2/quote-provider.js +87 -0
  277. package/build/module/providers/v2/static-subgraph-provider.d.ts +20 -0
  278. package/build/module/providers/v2/static-subgraph-provider.js +96 -0
  279. package/build/module/providers/v2/subgraph-provider-with-fallback.d.ts +19 -0
  280. package/build/module/providers/v2/subgraph-provider-with-fallback.js +31 -0
  281. package/build/module/providers/v2/subgraph-provider.d.ts +34 -0
  282. package/build/module/providers/v2/subgraph-provider.js +136 -0
  283. package/build/module/providers/v2/uri-subgraph-provider.d.ts +4 -0
  284. package/build/module/providers/v2/uri-subgraph-provider.js +4 -0
  285. package/build/module/providers/v3/caching-pool-provider.d.ts +33 -0
  286. package/build/module/providers/v3/caching-pool-provider.js +70 -0
  287. package/build/module/providers/v3/caching-subgraph-provider.d.ts +23 -0
  288. package/build/module/providers/v3/caching-subgraph-provider.js +30 -0
  289. package/build/module/providers/v3/gas-data-provider.d.ts +57 -0
  290. package/build/module/providers/v3/gas-data-provider.js +61 -0
  291. package/build/module/providers/v3/pool-provider.d.ts +61 -0
  292. package/build/module/providers/v3/pool-provider.js +116 -0
  293. package/build/module/providers/v3/static-subgraph-provider.d.ts +21 -0
  294. package/build/module/providers/v3/static-subgraph-provider.js +200 -0
  295. package/build/module/providers/v3/subgraph-provider-with-fallback.d.ts +15 -0
  296. package/build/module/providers/v3/subgraph-provider-with-fallback.js +27 -0
  297. package/build/module/providers/v3/subgraph-provider.d.ts +37 -0
  298. package/build/module/providers/v3/subgraph-provider.js +132 -0
  299. package/build/module/providers/v3/uri-subgraph-provider.d.ts +4 -0
  300. package/build/module/providers/v3/uri-subgraph-provider.js +4 -0
  301. package/build/module/routers/alpha-router/alpha-router.d.ts +267 -0
  302. package/build/module/routers/alpha-router/alpha-router.js +823 -0
  303. package/build/module/routers/alpha-router/config.d.ts +4 -0
  304. package/build/module/routers/alpha-router/config.js +89 -0
  305. package/build/module/routers/alpha-router/entities/index.d.ts +1 -0
  306. package/build/module/routers/alpha-router/entities/index.js +2 -0
  307. package/build/module/routers/alpha-router/entities/route-with-valid-quote.d.ts +163 -0
  308. package/build/module/routers/alpha-router/entities/route-with-valid-quote.js +134 -0
  309. package/build/module/routers/alpha-router/functions/best-swap-route.d.ts +19 -0
  310. package/build/module/routers/alpha-router/functions/best-swap-route.js +356 -0
  311. package/build/module/routers/alpha-router/functions/calculate-ratio-amount-in.d.ts +3 -0
  312. package/build/module/routers/alpha-router/functions/calculate-ratio-amount-in.js +14 -0
  313. package/build/module/routers/alpha-router/functions/compute-all-routes.d.ts +8 -0
  314. package/build/module/routers/alpha-router/functions/compute-all-routes.js +65 -0
  315. package/build/module/routers/alpha-router/functions/get-candidate-pools.d.ts +78 -0
  316. package/build/module/routers/alpha-router/functions/get-candidate-pools.js +776 -0
  317. package/build/module/routers/alpha-router/gas-models/gas-model.d.ts +83 -0
  318. package/build/module/routers/alpha-router/gas-models/gas-model.js +67 -0
  319. package/build/module/routers/alpha-router/gas-models/index.d.ts +2 -0
  320. package/build/module/routers/alpha-router/gas-models/index.js +3 -0
  321. package/build/module/routers/alpha-router/gas-models/mixedRoute/mixed-route-heuristic-gas-model.d.ts +25 -0
  322. package/build/module/routers/alpha-router/gas-models/mixedRoute/mixed-route-heuristic-gas-model.js +168 -0
  323. package/build/module/routers/alpha-router/gas-models/v2/v2-heuristic-gas-model.d.ts +29 -0
  324. package/build/module/routers/alpha-router/gas-models/v2/v2-heuristic-gas-model.js +160 -0
  325. package/build/module/routers/alpha-router/gas-models/v3/gas-costs.d.ts +6 -0
  326. package/build/module/routers/alpha-router/gas-models/v3/gas-costs.js +104 -0
  327. package/build/module/routers/alpha-router/gas-models/v3/v3-heuristic-gas-model.d.ts +31 -0
  328. package/build/module/routers/alpha-router/gas-models/v3/v3-heuristic-gas-model.js +281 -0
  329. package/build/module/routers/alpha-router/index.d.ts +4 -0
  330. package/build/module/routers/alpha-router/index.js +5 -0
  331. package/build/module/routers/alpha-router/quoters/base-quoter.d.ts +68 -0
  332. package/build/module/routers/alpha-router/quoters/base-quoter.js +54 -0
  333. package/build/module/routers/alpha-router/quoters/index.d.ts +5 -0
  334. package/build/module/routers/alpha-router/quoters/index.js +6 -0
  335. package/build/module/routers/alpha-router/quoters/mixed-quoter.d.ts +20 -0
  336. package/build/module/routers/alpha-router/quoters/mixed-quoter.js +123 -0
  337. package/build/module/routers/alpha-router/quoters/model/index.d.ts +1 -0
  338. package/build/module/routers/alpha-router/quoters/model/index.js +2 -0
  339. package/build/module/routers/alpha-router/quoters/model/results/get-quotes-result.d.ts +6 -0
  340. package/build/module/routers/alpha-router/quoters/model/results/get-quotes-result.js +2 -0
  341. package/build/module/routers/alpha-router/quoters/model/results/get-routes-result.d.ts +6 -0
  342. package/build/module/routers/alpha-router/quoters/model/results/get-routes-result.js +2 -0
  343. package/build/module/routers/alpha-router/quoters/model/results/index.d.ts +2 -0
  344. package/build/module/routers/alpha-router/quoters/model/results/index.js +3 -0
  345. package/build/module/routers/alpha-router/quoters/v2-quoter.d.ts +21 -0
  346. package/build/module/routers/alpha-router/quoters/v2-quoter.js +115 -0
  347. package/build/module/routers/alpha-router/quoters/v3-quoter.d.ts +19 -0
  348. package/build/module/routers/alpha-router/quoters/v3-quoter.js +118 -0
  349. package/build/module/routers/index.d.ts +4 -0
  350. package/build/module/routers/index.js +5 -0
  351. package/build/module/routers/legacy-router/bases.d.ts +136 -0
  352. package/build/module/routers/legacy-router/bases.js +93 -0
  353. package/build/module/routers/legacy-router/index.d.ts +1 -0
  354. package/build/module/routers/legacy-router/index.js +2 -0
  355. package/build/module/routers/legacy-router/legacy-router.d.ts +42 -0
  356. package/build/module/routers/legacy-router/legacy-router.js +290 -0
  357. package/build/module/routers/router.d.ts +165 -0
  358. package/build/module/routers/router.js +44 -0
  359. package/build/module/tsconfig.module.tsbuildinfo +1 -0
  360. package/build/module/types/other/commons.d.ts +16 -0
  361. package/build/module/types/other/commons.js +5 -0
  362. package/build/module/types/other/factories/Erc20__factory.d.ts +45 -0
  363. package/build/module/types/other/factories/Erc20__factory.js +236 -0
  364. package/build/module/types/other/factories/GasDataArbitrum__factory.d.ts +18 -0
  365. package/build/module/types/other/factories/GasDataArbitrum__factory.js +54 -0
  366. package/build/module/types/other/factories/GasPriceOracle__factory.d.ts +46 -0
  367. package/build/module/types/other/factories/GasPriceOracle__factory.js +312 -0
  368. package/build/module/types/other/factories/IMixedRouteQuoterV1__factory.d.ts +41 -0
  369. package/build/module/types/other/factories/IMixedRouteQuoterV1__factory.js +152 -0
  370. package/build/module/types/other/factories/ITokenValidator__factory.d.ts +22 -0
  371. package/build/module/types/other/factories/ITokenValidator__factory.js +74 -0
  372. package/build/module/types/other/factories/Permit2__factory.d.ts +87 -0
  373. package/build/module/types/other/factories/Permit2__factory.js +932 -0
  374. package/build/module/types/other/factories/SwapRouter02__factory.d.ts +67 -0
  375. package/build/module/types/other/factories/SwapRouter02__factory.js +1094 -0
  376. package/build/module/types/v2/commons.d.ts +16 -0
  377. package/build/module/types/v2/commons.js +5 -0
  378. package/build/module/types/v2/factories/IUniswapV2Pair__factory.d.ts +35 -0
  379. package/build/module/types/v2/factories/IUniswapV2Pair__factory.js +667 -0
  380. package/build/module/types/v3/commons.d.ts +16 -0
  381. package/build/module/types/v3/commons.js +5 -0
  382. package/build/module/types/v3/factories/IERC20Metadata__factory.d.ts +35 -0
  383. package/build/module/types/v3/factories/IERC20Metadata__factory.js +238 -0
  384. package/build/module/types/v3/factories/IQuoterV2__factory.d.ts +41 -0
  385. package/build/module/types/v3/factories/IQuoterV2__factory.js +216 -0
  386. package/build/module/types/v3/factories/IUniswapV3PoolState__factory.d.ts +22 -0
  387. package/build/module/types/v3/factories/IUniswapV3PoolState__factory.js +262 -0
  388. package/build/module/types/v3/factories/UniswapInterfaceMulticall__factory.d.ts +61 -0
  389. package/build/module/types/v3/factories/UniswapInterfaceMulticall__factory.js +123 -0
  390. package/build/module/util/addresses.d.ts +26 -0
  391. package/build/module/util/addresses.js +98 -0
  392. package/build/module/util/amounts.d.ts +8 -0
  393. package/build/module/util/amounts.js +41 -0
  394. package/build/module/util/callData.d.ts +1 -0
  395. package/build/module/util/callData.js +3 -0
  396. package/build/module/util/chains.d.ts +77 -0
  397. package/build/module/util/chains.js +556 -0
  398. package/build/module/util/gas-factory-helpers.d.ts +24 -0
  399. package/build/module/util/gas-factory-helpers.js +291 -0
  400. package/build/module/util/index.d.ts +7 -0
  401. package/build/module/util/index.js +8 -0
  402. package/build/module/util/log.d.ts +3 -0
  403. package/build/module/util/log.js +93 -0
  404. package/build/module/util/methodParameters.d.ts +5 -0
  405. package/build/module/util/methodParameters.js +106 -0
  406. package/build/module/util/metric.d.ts +48 -0
  407. package/build/module/util/metric.js +53 -0
  408. package/build/module/util/protocols.d.ts +2 -0
  409. package/build/module/util/protocols.js +14 -0
  410. package/build/module/util/routes.d.ts +8 -0
  411. package/build/module/util/routes.js +50 -0
  412. package/build/module/util/unsupported-tokens.d.ts +37 -0
  413. package/build/module/util/unsupported-tokens.js +1116 -0
  414. package/package.json +119 -0
@@ -0,0 +1,114 @@
1
+ import { Token } from '@uniswap/sdk-core';
2
+ import { ChainId } from '../util';
3
+ import { IMulticallProvider } from './multicall-provider';
4
+ import { ProviderConfig } from './provider';
5
+ /**
6
+ * Provider for getting token data.
7
+ *
8
+ * @export
9
+ * @interface ITokenProvider
10
+ */
11
+ export interface ITokenProvider {
12
+ /**
13
+ * Gets the token at each address. Any addresses that are not valid ERC-20 are ignored.
14
+ *
15
+ * @param addresses The token addresses to get.
16
+ * @param [providerConfig] The provider config.
17
+ * @returns A token accessor with methods for accessing the tokens.
18
+ */
19
+ getTokens(addresses: string[], providerConfig?: ProviderConfig): Promise<TokenAccessor>;
20
+ }
21
+ export declare type TokenAccessor = {
22
+ getTokenByAddress(address: string): Token | undefined;
23
+ getTokenBySymbol(symbol: string): Token | undefined;
24
+ getAllTokens: () => Token[];
25
+ };
26
+ export declare const USDC_MAINNET: Token;
27
+ export declare const USDT_MAINNET: Token;
28
+ export declare const WBTC_MAINNET: Token;
29
+ export declare const DAI_MAINNET: Token;
30
+ export declare const FEI_MAINNET: Token;
31
+ export declare const UNI_MAINNET: Token;
32
+ export declare const USDC_ROPSTEN: Token;
33
+ export declare const USDT_ROPSTEN: Token;
34
+ export declare const DAI_ROPSTEN: Token;
35
+ export declare const DAI_RINKEBY_1: Token;
36
+ export declare const DAI_RINKEBY_2: Token;
37
+ export declare const USDC_RINKEBY: Token;
38
+ export declare const USDT_RINKEBY: Token;
39
+ export declare const USDC_GÖRLI: Token;
40
+ export declare const USDT_GÖRLI: Token;
41
+ export declare const WBTC_GÖRLI: Token;
42
+ export declare const DAI_GÖRLI: Token;
43
+ export declare const UNI_GÖRLI: Token;
44
+ export declare const USDC_KOVAN: Token;
45
+ export declare const USDT_KOVAN: Token;
46
+ export declare const WBTC_KOVAN: Token;
47
+ export declare const DAI_KOVAN: Token;
48
+ export declare const USDC_OPTIMISM: Token;
49
+ export declare const USDT_OPTIMISM: Token;
50
+ export declare const WBTC_OPTIMISM: Token;
51
+ export declare const DAI_OPTIMISM: Token;
52
+ export declare const USDC_OPTIMISM_GOERLI: Token;
53
+ export declare const USDT_OPTIMISM_GOERLI: Token;
54
+ export declare const WBTC_OPTIMISM_GOERLI: Token;
55
+ export declare const DAI_OPTIMISM_GOERLI: Token;
56
+ export declare const USDC_OPTIMISTIC_KOVAN: Token;
57
+ export declare const USDT_OPTIMISTIC_KOVAN: Token;
58
+ export declare const WBTC_OPTIMISTIC_KOVAN: Token;
59
+ export declare const DAI_OPTIMISTIC_KOVAN: Token;
60
+ export declare const USDC_ARBITRUM: Token;
61
+ export declare const USDT_ARBITRUM: Token;
62
+ export declare const WBTC_ARBITRUM: Token;
63
+ export declare const DAI_ARBITRUM: Token;
64
+ export declare const DAI_ARBITRUM_RINKEBY: Token;
65
+ export declare const DAI_ARBITRUM_GOERLI: Token;
66
+ export declare const USDT_ARBITRUM_RINKEBY: Token;
67
+ export declare const USDC_ARBITRUM_RINKEBY: Token;
68
+ export declare const UNI_ARBITRUM_RINKEBY: Token;
69
+ export declare const USDC_ARBITRUM_GOERLI: Token;
70
+ export declare const WMATIC_POLYGON: Token;
71
+ export declare const WETH_POLYGON: Token;
72
+ export declare const USDC_POLYGON: Token;
73
+ export declare const DAI_POLYGON: Token;
74
+ export declare const WMATIC_POLYGON_MUMBAI: Token;
75
+ export declare const USDC_POLYGON_MUMBAI: Token;
76
+ export declare const DAI_POLYGON_MUMBAI: Token;
77
+ export declare const WETH_POLYGON_MUMBAI: Token;
78
+ export declare const BTC_BSC: Token;
79
+ export declare const BUSD_BSC: Token;
80
+ export declare const DAI_BSC: Token;
81
+ export declare const ETH_BSC: Token;
82
+ export declare const USDC_BSC: Token;
83
+ export declare const USDT_BSC: Token;
84
+ export declare const CELO: Token;
85
+ export declare const DAI_CELO: Token;
86
+ export declare const CUSD_CELO: Token;
87
+ export declare const CEUR_CELO: Token;
88
+ export declare const CELO_ALFAJORES: Token;
89
+ export declare const DAI_CELO_ALFAJORES: Token;
90
+ export declare const CUSD_CELO_ALFAJORES: Token;
91
+ export declare const CEUR_CELO_ALFAJORES: Token;
92
+ export declare const USDC_ETHEREUM_GNOSIS: Token;
93
+ export declare const WXDAI_GNOSIS: Token;
94
+ export declare const WBTC_GNOSIS: Token;
95
+ export declare const USDC_MOONBEAM: Token;
96
+ export declare const WGLMR_MOONBEAM: Token;
97
+ export declare const DAI_MOONBEAM: Token;
98
+ export declare const WBTC_MOONBEAM: Token;
99
+ export declare const USDC_CFX: Token;
100
+ export declare const USDT_CFX: Token;
101
+ export declare const DAI_CFX: Token;
102
+ export declare const USDC_CFX_TEST: Token;
103
+ export declare const USDT_CFX_TEST: Token;
104
+ export declare const DAI_CFX_TEST: Token;
105
+ export declare class TokenProvider implements ITokenProvider {
106
+ private chainId;
107
+ protected multicall2Provider: IMulticallProvider;
108
+ constructor(chainId: ChainId, multicall2Provider: IMulticallProvider);
109
+ getTokens(_addresses: string[], providerConfig?: ProviderConfig): Promise<TokenAccessor>;
110
+ }
111
+ export declare const DAI_ON: (chainId: ChainId) => Token;
112
+ export declare const USDT_ON: (chainId: ChainId) => Token;
113
+ export declare const USDC_ON: (chainId: ChainId) => Token;
114
+ export declare const WNATIVE_ON: (chainId: ChainId) => Token;
@@ -0,0 +1,297 @@
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.USDC_POLYGON_MUMBAI = exports.WMATIC_POLYGON_MUMBAI = exports.DAI_POLYGON = exports.USDC_POLYGON = exports.WETH_POLYGON = exports.WMATIC_POLYGON = exports.USDC_ARBITRUM_GOERLI = exports.UNI_ARBITRUM_RINKEBY = exports.USDC_ARBITRUM_RINKEBY = exports.USDT_ARBITRUM_RINKEBY = exports.DAI_ARBITRUM_GOERLI = exports.DAI_ARBITRUM_RINKEBY = exports.DAI_ARBITRUM = exports.WBTC_ARBITRUM = exports.USDT_ARBITRUM = exports.USDC_ARBITRUM = exports.DAI_OPTIMISTIC_KOVAN = exports.WBTC_OPTIMISTIC_KOVAN = exports.USDT_OPTIMISTIC_KOVAN = exports.USDC_OPTIMISTIC_KOVAN = exports.DAI_OPTIMISM_GOERLI = exports.WBTC_OPTIMISM_GOERLI = exports.USDT_OPTIMISM_GOERLI = exports.USDC_OPTIMISM_GOERLI = exports.DAI_OPTIMISM = exports.WBTC_OPTIMISM = exports.USDT_OPTIMISM = exports.USDC_OPTIMISM = exports.DAI_KOVAN = exports.WBTC_KOVAN = exports.USDT_KOVAN = exports.USDC_KOVAN = exports.UNI_GÖRLI = exports.DAI_GÖRLI = exports.WBTC_GÖRLI = exports.USDT_GÖRLI = exports.USDC_GÖRLI = exports.USDT_RINKEBY = exports.USDC_RINKEBY = exports.DAI_RINKEBY_2 = exports.DAI_RINKEBY_1 = exports.DAI_ROPSTEN = exports.USDT_ROPSTEN = exports.USDC_ROPSTEN = exports.UNI_MAINNET = exports.FEI_MAINNET = exports.DAI_MAINNET = exports.WBTC_MAINNET = exports.USDT_MAINNET = exports.USDC_MAINNET = void 0;
7
+ exports.WNATIVE_ON = exports.USDC_ON = exports.USDT_ON = exports.DAI_ON = exports.TokenProvider = exports.DAI_CFX_TEST = exports.USDT_CFX_TEST = exports.USDC_CFX_TEST = exports.DAI_CFX = exports.USDT_CFX = exports.USDC_CFX = exports.WBTC_MOONBEAM = exports.DAI_MOONBEAM = exports.WGLMR_MOONBEAM = exports.USDC_MOONBEAM = exports.WBTC_GNOSIS = exports.WXDAI_GNOSIS = exports.USDC_ETHEREUM_GNOSIS = exports.CEUR_CELO_ALFAJORES = exports.CUSD_CELO_ALFAJORES = exports.DAI_CELO_ALFAJORES = exports.CELO_ALFAJORES = exports.CEUR_CELO = exports.CUSD_CELO = exports.DAI_CELO = exports.CELO = exports.USDT_BSC = exports.USDC_BSC = exports.ETH_BSC = exports.DAI_BSC = exports.BUSD_BSC = exports.BTC_BSC = exports.WETH_POLYGON_MUMBAI = exports.DAI_POLYGON_MUMBAI = void 0;
8
+ const sdk_core_1 = require("@uniswap/sdk-core");
9
+ const lodash_1 = __importDefault(require("lodash"));
10
+ const IERC20Metadata__factory_1 = require("../types/v3/factories/IERC20Metadata__factory");
11
+ const util_1 = require("../util");
12
+ // Some well known tokens on each chain for seeding cache / testing.
13
+ exports.USDC_MAINNET = new sdk_core_1.Token(util_1.ChainId.MAINNET, '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48', 6, 'USDC', 'USD//C');
14
+ exports.USDT_MAINNET = new sdk_core_1.Token(util_1.ChainId.MAINNET, '0xdAC17F958D2ee523a2206206994597C13D831ec7', 6, 'USDT', 'Tether USD');
15
+ exports.WBTC_MAINNET = new sdk_core_1.Token(util_1.ChainId.MAINNET, '0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599', 8, 'WBTC', 'Wrapped BTC');
16
+ exports.DAI_MAINNET = new sdk_core_1.Token(util_1.ChainId.MAINNET, '0x6B175474E89094C44Da98b954EedeAC495271d0F', 18, 'DAI', 'Dai Stablecoin');
17
+ exports.FEI_MAINNET = new sdk_core_1.Token(util_1.ChainId.MAINNET, '0x956F47F50A910163D8BF957Cf5846D573E7f87CA', 18, 'FEI', 'Fei USD');
18
+ exports.UNI_MAINNET = new sdk_core_1.Token(util_1.ChainId.MAINNET, '0x1f9840a85d5af5bf1d1762f925bdaddc4201f984', 18, 'UNI', 'Uniswap');
19
+ exports.USDC_ROPSTEN = new sdk_core_1.Token(util_1.ChainId.ROPSTEN, '0x07865c6e87b9f70255377e024ace6630c1eaa37f', 6, 'USDC', 'USD//C');
20
+ exports.USDT_ROPSTEN = new sdk_core_1.Token(util_1.ChainId.ROPSTEN, '0x516de3a7a567d81737e3a46ec4ff9cfd1fcb0136', 6, 'USDT', 'Tether USD');
21
+ exports.DAI_ROPSTEN = new sdk_core_1.Token(util_1.ChainId.ROPSTEN, '0xad6d458402f60fd3bd25163575031acdce07538d', 18, 'DAI', 'Dai Stablecoin');
22
+ exports.DAI_RINKEBY_1 = new sdk_core_1.Token(util_1.ChainId.RINKEBY, '0x5592ec0cfb4dbc12d3ab100b257153436a1f0fea', 18, 'DAI', 'DAI');
23
+ exports.DAI_RINKEBY_2 = new sdk_core_1.Token(util_1.ChainId.RINKEBY, '0xc7AD46e0b8a400Bb3C915120d284AafbA8fc4735', 18, 'DAI', 'DAI');
24
+ exports.USDC_RINKEBY = new sdk_core_1.Token(util_1.ChainId.RINKEBY, '0x4DBCdF9B62e891a7cec5A2568C3F4FAF9E8Abe2b', 6, 'tUSDC', 'test USD//C');
25
+ exports.USDT_RINKEBY = new sdk_core_1.Token(util_1.ChainId.RINKEBY, '0xa689352b7c1cad82864beb1d90679356d3962f4d', 18, 'USDT', 'Tether USD');
26
+ exports.USDC_GÖRLI = new sdk_core_1.Token(util_1.ChainId.GÖRLI, '0x07865c6e87b9f70255377e024ace6630c1eaa37f', 6, 'USDC', 'USD//C');
27
+ exports.USDT_GÖRLI = new sdk_core_1.Token(util_1.ChainId.GÖRLI, '0xe583769738b6dd4e7caf8451050d1948be717679', 18, 'USDT', 'Tether USD');
28
+ exports.WBTC_GÖRLI = new sdk_core_1.Token(util_1.ChainId.GÖRLI, '0xa0a5ad2296b38bd3e3eb59aaeaf1589e8d9a29a9', 8, 'WBTC', 'Wrapped BTC');
29
+ exports.DAI_GÖRLI = new sdk_core_1.Token(util_1.ChainId.GÖRLI, '0x11fe4b6ae13d2a6055c8d9cf65c55bac32b5d844', 18, 'DAI', 'Dai Stablecoin');
30
+ exports.UNI_GÖRLI = new sdk_core_1.Token(util_1.ChainId.GÖRLI, '0x1f9840a85d5aF5bf1D1762F925BDADdC4201F984', 18, 'UNI', 'Uni token');
31
+ exports.USDC_KOVAN = new sdk_core_1.Token(util_1.ChainId.KOVAN, '0x31eeb2d0f9b6fd8642914ab10f4dd473677d80df', 6, 'USDC', 'USD//C');
32
+ exports.USDT_KOVAN = new sdk_core_1.Token(util_1.ChainId.KOVAN, '0xa325f1b1ebb748715dfbbaf62e0c6677e137f45d', 18, 'USDT', 'Tether USD');
33
+ exports.WBTC_KOVAN = new sdk_core_1.Token(util_1.ChainId.KOVAN, '0xe36bc5d8b689ad6d80e78c3e736670e80d4b329d', 8, 'WBTC', 'Wrapped BTC');
34
+ exports.DAI_KOVAN = new sdk_core_1.Token(util_1.ChainId.KOVAN, '0x9dc7b33c3b63fc00ed5472fbd7813edda6a64752', 18, 'DAI', 'Dai Stablecoin');
35
+ exports.USDC_OPTIMISM = new sdk_core_1.Token(util_1.ChainId.OPTIMISM, '0x7F5c764cBc14f9669B88837ca1490cCa17c31607', 6, 'USDC', 'USD//C');
36
+ exports.USDT_OPTIMISM = new sdk_core_1.Token(util_1.ChainId.OPTIMISM, '0x94b008aA00579c1307B0EF2c499aD98a8ce58e58', 6, 'USDT', 'Tether USD');
37
+ exports.WBTC_OPTIMISM = new sdk_core_1.Token(util_1.ChainId.OPTIMISM, '0x68f180fcCe6836688e9084f035309E29Bf0A2095', 8, 'WBTC', 'Wrapped BTC');
38
+ exports.DAI_OPTIMISM = new sdk_core_1.Token(util_1.ChainId.OPTIMISM, '0xDA10009cBd5D07dd0CeCc66161FC93D7c9000da1', 18, 'DAI', 'Dai Stablecoin');
39
+ exports.USDC_OPTIMISM_GOERLI = new sdk_core_1.Token(util_1.ChainId.OPTIMISM_GOERLI, '0x7E07E15D2a87A24492740D16f5bdF58c16db0c4E', 6, 'USDC', 'USD//C');
40
+ exports.USDT_OPTIMISM_GOERLI = new sdk_core_1.Token(util_1.ChainId.OPTIMISM_GOERLI, '0x853eb4bA5D0Ba2B77a0A5329Fd2110d5CE149ECE', 6, 'USDT', 'Tether USD');
41
+ exports.WBTC_OPTIMISM_GOERLI = new sdk_core_1.Token(util_1.ChainId.OPTIMISM_GOERLI, '0xe0a592353e81a94Db6E3226fD4A99F881751776a', 8, 'WBTC', 'Wrapped BTC');
42
+ exports.DAI_OPTIMISM_GOERLI = new sdk_core_1.Token(util_1.ChainId.OPTIMISM_GOERLI, '0xDA10009cBd5D07dd0CeCc66161FC93D7c9000da1', 18, 'DAI', 'Dai Stablecoin');
43
+ exports.USDC_OPTIMISTIC_KOVAN = new sdk_core_1.Token(util_1.ChainId.OPTIMISTIC_KOVAN, '0x3b8e53b3ab8e01fb57d0c9e893bc4d655aa67d84', 6, 'USDC', 'USD//C');
44
+ exports.USDT_OPTIMISTIC_KOVAN = new sdk_core_1.Token(util_1.ChainId.OPTIMISTIC_KOVAN, '0x7F5c764cBc14f9669B88837ca1490cCa17c31607', 6, 'USDT', 'Tether USD');
45
+ exports.WBTC_OPTIMISTIC_KOVAN = new sdk_core_1.Token(util_1.ChainId.OPTIMISTIC_KOVAN, '0x2382a8f65b9120E554d1836a504808aC864E169d', 8, 'WBTC', 'Wrapped BTC');
46
+ exports.DAI_OPTIMISTIC_KOVAN = new sdk_core_1.Token(util_1.ChainId.OPTIMISTIC_KOVAN, '0xDA10009cBd5D07dd0CeCc66161FC93D7c9000da1', 18, 'DAI', 'Dai Stablecoin');
47
+ exports.USDC_ARBITRUM = new sdk_core_1.Token(util_1.ChainId.ARBITRUM_ONE, '0xFF970A61A04b1cA14834A43f5dE4533eBDDB5CC8', 6, 'USDC', 'USD//C');
48
+ exports.USDT_ARBITRUM = new sdk_core_1.Token(util_1.ChainId.ARBITRUM_ONE, '0xFd086bC7CD5C481DCC9C85ebE478A1C0b69FCbb9', 6, 'USDT', 'Tether USD');
49
+ exports.WBTC_ARBITRUM = new sdk_core_1.Token(util_1.ChainId.ARBITRUM_ONE, '0x2f2a2543B76A4166549F7aaB2e75Bef0aefC5B0f', 8, 'WBTC', 'Wrapped BTC');
50
+ exports.DAI_ARBITRUM = new sdk_core_1.Token(util_1.ChainId.ARBITRUM_ONE, '0xDA10009cBd5D07dd0CeCc66161FC93D7c9000da1', 18, 'DAI', 'Dai Stablecoin');
51
+ // export const DAI_ARBITRUM_RINKEBY = new Token(
52
+ // ChainId.ARBITRUM_RINKEBY,
53
+ // '0x2f3C1B6A51A469051A22986aA0dDF98466cc8D3c',
54
+ // 18,
55
+ // 'DAI',
56
+ // 'Dai Stablecoin'
57
+ // );
58
+ // higher liquidity in dai-weth pool on arb-rinkeby
59
+ exports.DAI_ARBITRUM_RINKEBY = new sdk_core_1.Token(util_1.ChainId.ARBITRUM_RINKEBY, '0x5364dc963c402aaf150700f38a8ef52c1d7d7f14', 18, 'DAI', 'Dai Stablecoin');
60
+ exports.DAI_ARBITRUM_GOERLI = new sdk_core_1.Token(util_1.ChainId.ARBITRUM_GOERLI, '0x0000000000000000000000000000000000000000', // TODO: add address
61
+ 18, 'DAI', 'Dai Stablecoin');
62
+ exports.USDT_ARBITRUM_RINKEBY = new sdk_core_1.Token(util_1.ChainId.ARBITRUM_RINKEBY, '0x920b9301c2de92186299cd2abc7199e25b9728b3', 6, 'UDST', 'Tether USD');
63
+ exports.USDC_ARBITRUM_RINKEBY = new sdk_core_1.Token(util_1.ChainId.ARBITRUM_RINKEBY, '0x09b98f8b2395d076514037ff7d39a091a536206c', 6, 'USDC', 'USD//C');
64
+ exports.UNI_ARBITRUM_RINKEBY = new sdk_core_1.Token(util_1.ChainId.ARBITRUM_RINKEBY, '0x049251a7175071316e089d0616d8b6aacd2c93b8', 18, 'UNI', 'Uni token');
65
+ // Bridged version of official Goerli USDC
66
+ exports.USDC_ARBITRUM_GOERLI = new sdk_core_1.Token(util_1.ChainId.ARBITRUM_GOERLI, '0x8FB1E3fC51F3b789dED7557E680551d93Ea9d892', 6, 'USDC', 'USD//C');
67
+ //polygon tokens
68
+ exports.WMATIC_POLYGON = new sdk_core_1.Token(util_1.ChainId.POLYGON, '0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270', 18, 'WMATIC', 'Wrapped MATIC');
69
+ exports.WETH_POLYGON = new sdk_core_1.Token(util_1.ChainId.POLYGON, '0x7ceb23fd6bc0add59e62ac25578270cff1b9f619', 18, 'WETH', 'Wrapped Ether');
70
+ exports.USDC_POLYGON = new sdk_core_1.Token(util_1.ChainId.POLYGON, '0x2791bca1f2de4661ed88a30c99a7a9449aa84174', 6, 'USDC', 'USD//C');
71
+ exports.DAI_POLYGON = new sdk_core_1.Token(util_1.ChainId.POLYGON, '0x8f3Cf7ad23Cd3CaDbD9735AFf958023239c6A063', 18, 'DAI', 'Dai Stablecoin');
72
+ //polygon mumbai tokens
73
+ exports.WMATIC_POLYGON_MUMBAI = new sdk_core_1.Token(util_1.ChainId.POLYGON_MUMBAI, '0x9c3C9283D3e44854697Cd22D3Faa240Cfb032889', 18, 'WMATIC', 'Wrapped MATIC');
74
+ exports.USDC_POLYGON_MUMBAI = new sdk_core_1.Token(util_1.ChainId.POLYGON_MUMBAI, '0xe11a86849d99f524cac3e7a0ec1241828e332c62', 6, 'USDC', 'USD//C');
75
+ exports.DAI_POLYGON_MUMBAI = new sdk_core_1.Token(util_1.ChainId.POLYGON_MUMBAI, '0x001b3b4d0f3714ca98ba10f6042daebf0b1b7b6f', 18, 'DAI', 'Dai Stablecoin');
76
+ exports.WETH_POLYGON_MUMBAI = new sdk_core_1.Token(util_1.ChainId.POLYGON_MUMBAI, '0xa6fa4fb5f76172d178d61b04b0ecd319c5d1c0aa', 18, 'WETH', 'Wrapped Ether');
77
+ // BNB chain Tokens
78
+ exports.BTC_BSC = new sdk_core_1.Token(util_1.ChainId.BSC, '0x7130d2A12B9BCbFAe4f2634d864A1Ee1Ce3Ead9c', 18, 'BTCB', 'Binance BTC');
79
+ exports.BUSD_BSC = new sdk_core_1.Token(util_1.ChainId.BSC, '0xe9e7CEA3DedcA5984780Bafc599bD69ADd087D56', 18, 'BUSD', 'BUSD');
80
+ exports.DAI_BSC = new sdk_core_1.Token(util_1.ChainId.BSC, '0x1AF3F329e8BE154074D8769D1FFa4eE058B1DBc3', 18, 'DAI', 'DAI');
81
+ exports.ETH_BSC = new sdk_core_1.Token(util_1.ChainId.BSC, '0x2170Ed0880ac9A755fd29B2688956BD959F933F8', 18, 'ETH', 'ETH');
82
+ exports.USDC_BSC = new sdk_core_1.Token(util_1.ChainId.BSC, '0x8AC76a51cc950d9822D68b83fE1Ad97B32Cd580d', 18, 'USDC', 'USDC');
83
+ exports.USDT_BSC = new sdk_core_1.Token(util_1.ChainId.BSC, '0x55d398326f99059fF775485246999027B3197955', 18, 'USDT', 'USDT');
84
+ // Celo Tokens
85
+ exports.CELO = new sdk_core_1.Token(util_1.ChainId.CELO, '0x471EcE3750Da237f93B8E339c536989b8978a438', 18, 'CELO', 'Celo native asset');
86
+ exports.DAI_CELO = new sdk_core_1.Token(util_1.ChainId.CELO, '0xE4fE50cdD716522A56204352f00AA110F731932d', 18, 'DAI', 'Dai Stablecoin');
87
+ exports.CUSD_CELO = new sdk_core_1.Token(util_1.ChainId.CELO, '0x765DE816845861e75A25fCA122bb6898B8B1282a', 18, 'CUSD', 'Celo Dollar Stablecoin');
88
+ exports.CEUR_CELO = new sdk_core_1.Token(util_1.ChainId.CELO, '0xD8763CBa276a3738E6DE85b4b3bF5FDed6D6cA73', 18, 'CEUR', 'Celo Euro Stablecoin');
89
+ // Celo Alfajores Tokens
90
+ exports.CELO_ALFAJORES = new sdk_core_1.Token(util_1.ChainId.CELO_ALFAJORES, '0xF194afDf50B03e69Bd7D057c1Aa9e10c9954E4C9', 18, 'CELO', 'Celo native asset');
91
+ exports.DAI_CELO_ALFAJORES = new sdk_core_1.Token(util_1.ChainId.CELO_ALFAJORES, '0x7d91E51C8F218f7140188A155f5C75388630B6a8', 18, 'DAI', 'Dai Stablecoin');
92
+ exports.CUSD_CELO_ALFAJORES = new sdk_core_1.Token(util_1.ChainId.CELO_ALFAJORES, '0x874069Fa1Eb16D44d622F2e0Ca25eeA172369bC1', 18, 'CUSD', 'Celo Dollar Stablecoin');
93
+ exports.CEUR_CELO_ALFAJORES = new sdk_core_1.Token(util_1.ChainId.CELO_ALFAJORES, '0x10c892A6EC43a53E45D0B916B4b7D383B1b78C0F', 18, 'CEUR', 'Celo Euro Stablecoin');
94
+ // Gnosis Tokens
95
+ exports.USDC_ETHEREUM_GNOSIS = new sdk_core_1.Token(util_1.ChainId.GNOSIS, '0xddafbb505ad214d7b80b1f830fccc89b60fb7a83', 6, 'USDC', 'USDC from Ethereum on Gnosis');
96
+ exports.WXDAI_GNOSIS = new sdk_core_1.Token(util_1.ChainId.GNOSIS, '0xe91d153e0b41518a2ce8dd3d7944fa863463a97d', 18, 'WXDAI', 'Wrapped XDAI on Gnosis');
97
+ exports.WBTC_GNOSIS = new sdk_core_1.Token(util_1.ChainId.GNOSIS, '0x8e5bbbb09ed1ebde8674cda39a0c169401db4252', 8, 'WBTC', 'Wrapped BTC from Ethereum on Gnosis');
98
+ // Moonbeam Tokens
99
+ exports.USDC_MOONBEAM = new sdk_core_1.Token(util_1.ChainId.MOONBEAM, '0x818ec0A7Fe18Ff94269904fCED6AE3DaE6d6dC0b', 6, 'USDC', 'USD Coin bridged using Multichain');
100
+ exports.WGLMR_MOONBEAM = new sdk_core_1.Token(util_1.ChainId.MOONBEAM, '0xAcc15dC74880C9944775448304B263D191c6077F', 18, 'WGLMR', 'Wrapped GLMR');
101
+ exports.DAI_MOONBEAM = new sdk_core_1.Token(util_1.ChainId.MOONBEAM, '0x818ec0A7Fe18Ff94269904fCED6AE3DaE6d6dC0b', 6, 'DAI', 'Dai on moonbeam bridged using Multichain');
102
+ exports.WBTC_MOONBEAM = new sdk_core_1.Token(util_1.ChainId.MOONBEAM, '0x922D641a426DcFFaeF11680e5358F34d97d112E1', 8, 'WBTC', 'Wrapped BTC bridged using Multichain');
103
+ exports.USDC_CFX = new sdk_core_1.Token(util_1.ChainId.CFX, "0x6963efed0ab40f6c3d7bda44a05dcf1437c44372", 18, "USDC", "USD//C");
104
+ exports.USDT_CFX = new sdk_core_1.Token(util_1.ChainId.CFX, "0xfe97e85d13abd9c1c33384e796f10b73905637ce", 18, "USDT", "Tether USD");
105
+ exports.DAI_CFX = new sdk_core_1.Token(util_1.ChainId.CFX, "0x74eae367d018a5f29be559752e4b67d01cc6b151", 18, "DAI", "Dai Stablecoin");
106
+ exports.USDC_CFX_TEST = new sdk_core_1.Token(util_1.ChainId.CFX_TEST, "0x349298b0e20df67defd6efb8f3170cf4a32722ef", 18, "USDC", "USD//C");
107
+ exports.USDT_CFX_TEST = new sdk_core_1.Token(util_1.ChainId.CFX_TEST, "0x7d682e65efc5c13bf4e394b8f376c48e6bae0355", 18, "USDT", "Tether USD");
108
+ exports.DAI_CFX_TEST = new sdk_core_1.Token(util_1.ChainId.CFX_TEST, "0x7d682e65efc5c13bf4e394b8f376c48e6bae0344", // TODO: change to right address
109
+ 18, "DAI", "Dai Stablecoin");
110
+ class TokenProvider {
111
+ constructor(chainId, multicall2Provider) {
112
+ this.chainId = chainId;
113
+ this.multicall2Provider = multicall2Provider;
114
+ }
115
+ async getTokens(_addresses, providerConfig) {
116
+ const addressToToken = {};
117
+ const symbolToToken = {};
118
+ const addresses = (0, lodash_1.default)(_addresses)
119
+ .map((address) => address.toLowerCase())
120
+ .uniq()
121
+ .value();
122
+ if (addresses.length > 0) {
123
+ const [symbolsResult, decimalsResult] = await Promise.all([
124
+ this.multicall2Provider.callSameFunctionOnMultipleContracts({
125
+ addresses,
126
+ contractInterface: IERC20Metadata__factory_1.IERC20Metadata__factory.createInterface(),
127
+ functionName: 'symbol',
128
+ providerConfig,
129
+ }),
130
+ this.multicall2Provider.callSameFunctionOnMultipleContracts({
131
+ addresses,
132
+ contractInterface: IERC20Metadata__factory_1.IERC20Metadata__factory.createInterface(),
133
+ functionName: 'decimals',
134
+ providerConfig,
135
+ }),
136
+ ]);
137
+ const { results: symbols } = symbolsResult;
138
+ const { results: decimals } = decimalsResult;
139
+ for (let i = 0; i < addresses.length; i++) {
140
+ const address = addresses[i];
141
+ const symbolResult = symbols[i];
142
+ const decimalResult = decimals[i];
143
+ if (!(symbolResult === null || symbolResult === void 0 ? void 0 : symbolResult.success) || !(decimalResult === null || decimalResult === void 0 ? void 0 : decimalResult.success)) {
144
+ util_1.log.info({
145
+ symbolResult,
146
+ decimalResult,
147
+ }, `Dropping token with address ${address} as symbol or decimal are invalid`);
148
+ continue;
149
+ }
150
+ const symbol = symbolResult.result[0];
151
+ const decimal = decimalResult.result[0];
152
+ addressToToken[address.toLowerCase()] = new sdk_core_1.Token(this.chainId, address, decimal, symbol);
153
+ symbolToToken[symbol.toLowerCase()] =
154
+ addressToToken[address.toLowerCase()];
155
+ }
156
+ 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}` : ''}`);
157
+ }
158
+ return {
159
+ getTokenByAddress: (address) => {
160
+ return addressToToken[address.toLowerCase()];
161
+ },
162
+ getTokenBySymbol: (symbol) => {
163
+ return symbolToToken[symbol.toLowerCase()];
164
+ },
165
+ getAllTokens: () => {
166
+ return Object.values(addressToToken);
167
+ },
168
+ };
169
+ }
170
+ }
171
+ exports.TokenProvider = TokenProvider;
172
+ const DAI_ON = (chainId) => {
173
+ switch (chainId) {
174
+ case util_1.ChainId.MAINNET:
175
+ return exports.DAI_MAINNET;
176
+ case util_1.ChainId.ROPSTEN:
177
+ return exports.DAI_ROPSTEN;
178
+ case util_1.ChainId.RINKEBY:
179
+ return exports.DAI_RINKEBY_1;
180
+ case util_1.ChainId.GÖRLI:
181
+ return exports.DAI_GÖRLI;
182
+ case util_1.ChainId.KOVAN:
183
+ return exports.DAI_KOVAN;
184
+ case util_1.ChainId.OPTIMISM:
185
+ return exports.DAI_OPTIMISM;
186
+ case util_1.ChainId.OPTIMISM_GOERLI:
187
+ return exports.DAI_OPTIMISM_GOERLI;
188
+ case util_1.ChainId.OPTIMISTIC_KOVAN:
189
+ return exports.DAI_OPTIMISTIC_KOVAN;
190
+ case util_1.ChainId.ARBITRUM_ONE:
191
+ return exports.DAI_ARBITRUM;
192
+ case util_1.ChainId.ARBITRUM_RINKEBY:
193
+ return exports.DAI_ARBITRUM_RINKEBY;
194
+ case util_1.ChainId.ARBITRUM_GOERLI:
195
+ return exports.DAI_ARBITRUM_GOERLI;
196
+ case util_1.ChainId.POLYGON:
197
+ return exports.DAI_POLYGON;
198
+ case util_1.ChainId.POLYGON_MUMBAI:
199
+ return exports.DAI_POLYGON_MUMBAI;
200
+ case util_1.ChainId.CELO:
201
+ return exports.DAI_CELO;
202
+ case util_1.ChainId.CELO_ALFAJORES:
203
+ return exports.DAI_CELO_ALFAJORES;
204
+ case util_1.ChainId.MOONBEAM:
205
+ return exports.DAI_MOONBEAM;
206
+ case util_1.ChainId.BSC:
207
+ return exports.DAI_BSC;
208
+ case util_1.ChainId.CFX:
209
+ return exports.DAI_CFX;
210
+ case util_1.ChainId.CFX_TEST:
211
+ return exports.DAI_CFX_TEST;
212
+ default:
213
+ throw new Error(`Chain id: ${chainId} not supported`);
214
+ }
215
+ };
216
+ exports.DAI_ON = DAI_ON;
217
+ const USDT_ON = (chainId) => {
218
+ switch (chainId) {
219
+ case util_1.ChainId.MAINNET:
220
+ return exports.USDT_MAINNET;
221
+ case util_1.ChainId.ROPSTEN:
222
+ return exports.USDT_ROPSTEN;
223
+ case util_1.ChainId.RINKEBY:
224
+ return exports.USDT_RINKEBY;
225
+ case util_1.ChainId.GÖRLI:
226
+ return exports.USDT_GÖRLI;
227
+ case util_1.ChainId.KOVAN:
228
+ return exports.USDT_KOVAN;
229
+ case util_1.ChainId.OPTIMISM:
230
+ return exports.USDT_OPTIMISM;
231
+ case util_1.ChainId.OPTIMISM_GOERLI:
232
+ return exports.USDT_OPTIMISM_GOERLI;
233
+ case util_1.ChainId.OPTIMISTIC_KOVAN:
234
+ return exports.USDT_OPTIMISTIC_KOVAN;
235
+ case util_1.ChainId.ARBITRUM_ONE:
236
+ return exports.USDT_ARBITRUM;
237
+ case util_1.ChainId.ARBITRUM_RINKEBY:
238
+ return exports.USDT_ARBITRUM_RINKEBY;
239
+ case util_1.ChainId.BSC:
240
+ return exports.USDT_BSC;
241
+ case util_1.ChainId.CFX:
242
+ return exports.USDT_CFX;
243
+ case util_1.ChainId.CFX_TEST:
244
+ return exports.USDT_CFX_TEST;
245
+ default:
246
+ throw new Error(`Chain id: ${chainId} not supported`);
247
+ }
248
+ };
249
+ exports.USDT_ON = USDT_ON;
250
+ const USDC_ON = (chainId) => {
251
+ switch (chainId) {
252
+ case util_1.ChainId.MAINNET:
253
+ return exports.USDC_MAINNET;
254
+ case util_1.ChainId.ROPSTEN:
255
+ return exports.USDC_ROPSTEN;
256
+ case util_1.ChainId.RINKEBY:
257
+ return exports.USDC_RINKEBY;
258
+ case util_1.ChainId.GÖRLI:
259
+ return exports.USDC_GÖRLI;
260
+ case util_1.ChainId.KOVAN:
261
+ return exports.USDC_KOVAN;
262
+ case util_1.ChainId.OPTIMISM:
263
+ return exports.USDC_OPTIMISM;
264
+ case util_1.ChainId.OPTIMISM_GOERLI:
265
+ return exports.USDC_OPTIMISM_GOERLI;
266
+ case util_1.ChainId.OPTIMISTIC_KOVAN:
267
+ return exports.USDC_OPTIMISTIC_KOVAN;
268
+ case util_1.ChainId.ARBITRUM_ONE:
269
+ return exports.USDC_ARBITRUM;
270
+ case util_1.ChainId.ARBITRUM_RINKEBY:
271
+ return exports.USDC_ARBITRUM_RINKEBY;
272
+ case util_1.ChainId.ARBITRUM_GOERLI:
273
+ return exports.USDC_ARBITRUM_GOERLI;
274
+ case util_1.ChainId.POLYGON:
275
+ return exports.USDC_POLYGON;
276
+ case util_1.ChainId.POLYGON_MUMBAI:
277
+ return exports.USDC_POLYGON_MUMBAI;
278
+ case util_1.ChainId.GNOSIS:
279
+ return exports.USDC_ETHEREUM_GNOSIS;
280
+ case util_1.ChainId.MOONBEAM:
281
+ return exports.USDC_MOONBEAM;
282
+ case util_1.ChainId.BSC:
283
+ return exports.USDC_BSC;
284
+ case util_1.ChainId.CFX:
285
+ return exports.USDC_CFX;
286
+ case util_1.ChainId.CFX_TEST:
287
+ return exports.USDC_CFX_TEST;
288
+ default:
289
+ throw new Error(`Chain id: ${chainId} not supported`);
290
+ }
291
+ };
292
+ exports.USDC_ON = USDC_ON;
293
+ const WNATIVE_ON = (chainId) => {
294
+ return util_1.WRAPPED_NATIVE_CURRENCY[chainId];
295
+ };
296
+ exports.WNATIVE_ON = WNATIVE_ON;
297
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9rZW4tcHJvdmlkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcHJvdmlkZXJzL3Rva2VuLXByb3ZpZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQSxnREFBMEM7QUFDMUMsb0RBQXVCO0FBRXZCLDJGQUF3RjtBQUN4RixrQ0FBZ0U7QUErQmhFLG9FQUFvRTtBQUN2RCxRQUFBLFlBQVksR0FBRyxJQUFJLGdCQUFLLENBQ25DLGNBQU8sQ0FBQyxPQUFPLEVBQ2YsNENBQTRDLEVBQzVDLENBQUMsRUFDRCxNQUFNLEVBQ04sUUFBUSxDQUNULENBQUM7QUFDVyxRQUFBLFlBQVksR0FBRyxJQUFJLGdCQUFLLENBQ25DLGNBQU8sQ0FBQyxPQUFPLEVBQ2YsNENBQTRDLEVBQzVDLENBQUMsRUFDRCxNQUFNLEVBQ04sWUFBWSxDQUNiLENBQUM7QUFDVyxRQUFBLFlBQVksR0FBRyxJQUFJLGdCQUFLLENBQ25DLGNBQU8sQ0FBQyxPQUFPLEVBQ2YsNENBQTRDLEVBQzVDLENBQUMsRUFDRCxNQUFNLEVBQ04sYUFBYSxDQUNkLENBQUM7QUFDVyxRQUFBLFdBQVcsR0FBRyxJQUFJLGdCQUFLLENBQ2xDLGNBQU8sQ0FBQyxPQUFPLEVBQ2YsNENBQTRDLEVBQzVDLEVBQUUsRUFDRixLQUFLLEVBQ0wsZ0JBQWdCLENBQ2pCLENBQUM7QUFDVyxRQUFBLFdBQVcsR0FBRyxJQUFJLGdCQUFLLENBQ2xDLGNBQU8sQ0FBQyxPQUFPLEVBQ2YsNENBQTRDLEVBQzVDLEVBQUUsRUFDRixLQUFLLEVBQ0wsU0FBUyxDQUNWLENBQUM7QUFDVyxRQUFBLFdBQVcsR0FBRyxJQUFJLGdCQUFLLENBQ2xDLGNBQU8sQ0FBQyxPQUFPLEVBQ2YsNENBQTRDLEVBQzVDLEVBQUUsRUFDRixLQUFLLEVBQ0wsU0FBUyxDQUNWLENBQUM7QUFFVyxRQUFBLFlBQVksR0FBRyxJQUFJLGdCQUFLLENBQ25DLGNBQU8sQ0FBQyxPQUFPLEVBQ2YsNENB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
@@ -0,0 +1,42 @@
1
+ import { Token } from '@uniswap/sdk-core';
2
+ import { ChainId } from '../util';
3
+ import { ICache } from './cache';
4
+ import { IMulticallProvider } from './multicall-provider';
5
+ import { ProviderConfig } from './provider';
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,95 @@
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 = 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
+ const 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 = 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
+ }
49
+ else {
50
+ addresses.push(address);
51
+ }
52
+ }
53
+ util_1.log.info(`Got token validation results for ${addressesRaw.length - addresses.length} tokens from cache. Getting ${addresses.length} on-chain.`);
54
+ const functionParams = (0, lodash_1.default)(addresses)
55
+ .map((address) => [address, this.BASES, this.amountToFlashBorrow])
56
+ .value();
57
+ // We use the validate function instead of batchValidate to avoid poison pill problem.
58
+ // One token that consumes too much gas could cause the entire batch to fail.
59
+ const multicallResult = await this.multicall2Provider.callSameFunctionOnContractWithMultipleParams({
60
+ address: this.tokenValidatorAddress,
61
+ contractInterface: ITokenValidator__factory_1.ITokenValidator__factory.createInterface(),
62
+ functionName: 'validate',
63
+ functionParams: functionParams,
64
+ providerConfig,
65
+ additionalConfig: {
66
+ gasLimitPerCallOverride: this.gasLimitPerCall,
67
+ },
68
+ });
69
+ for (let i = 0; i < multicallResult.results.length; i++) {
70
+ const resultWrapper = multicallResult.results[i];
71
+ const tokenAddress = addresses[i];
72
+ const token = tokenAddressToToken[tokenAddress];
73
+ if (this.allowList.has(token.address.toLowerCase())) {
74
+ tokenToResult[token.address.toLowerCase()] = TokenValidationResult.UNKN;
75
+ await this.tokenValidationCache.set(this.CACHE_KEY(this.chainId, token.address.toLowerCase()), tokenToResult[token.address.toLowerCase()]);
76
+ continue;
77
+ }
78
+ // Could happen if the tokens transfer consumes too much gas so we revert. Just
79
+ // drop the token in that case.
80
+ if (!resultWrapper.success) {
81
+ util_1.log.info({ result: resultWrapper }, `Failed to validate token ${token.symbol}`);
82
+ continue;
83
+ }
84
+ const validationResult = resultWrapper.result[0];
85
+ tokenToResult[token.address.toLowerCase()] =
86
+ validationResult;
87
+ await this.tokenValidationCache.set(this.CACHE_KEY(this.chainId, token.address.toLowerCase()), tokenToResult[token.address.toLowerCase()]);
88
+ }
89
+ return {
90
+ getValidationByToken: (token) => tokenToResult[token.address.toLowerCase()],
91
+ };
92
+ }
93
+ }
94
+ exports.TokenValidatorProvider = TokenValidatorProvider;
95
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9rZW4tdmFsaWRhdG9yLXByb3ZpZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3Byb3ZpZGVycy90b2tlbi12YWxpZGF0b3ItcHJvdmlkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQ0Esb0RBQXVCO0FBRXZCLGdHQUE2RjtBQUM3RixrQ0FBZ0U7QUFNaEUsTUFBTSxpQkFBaUIsR0FBRyxJQUFJLEdBQUcsQ0FBUztJQUN4QywwRUFBMEU7SUFDMUUsNENBQTRDLENBQUMsV0FBVyxFQUFFO0NBQzNELENBQUMsQ0FBQztBQUVILElBQVkscUJBSVg7QUFKRCxXQUFZLHFCQUFxQjtJQUMvQixpRUFBUSxDQUFBO0lBQ1IsK0RBQU8sQ0FBQTtJQUNQLCtEQUFPLENBQUE7QUFDVCxDQUFDLEVBSlcscUJBQXFCLEdBQXJCLDZCQUFxQixLQUFyQiw2QkFBcUIsUUFJaEM7QUFNRCxNQUFNLHVCQUF1QixHQUFHLDRDQUE0QyxDQUFDO0FBQzdFLE1BQU0sc0JBQXNCLEdBQUcsTUFBTSxDQUFDO0FBQ3RDLE1BQU0sc0JBQXNCLEdBQUcsT0FBUyxDQUFDO0FBc0J6QyxNQUFhLHNCQUFzQjtJQU1qQyxZQUNZLE9BQWdCLEVBQ2hCLGtCQUFzQyxFQUN4QyxvQkFBbUQsRUFDbkQsd0JBQXdCLHVCQUF1QixFQUMvQyxrQkFBa0Isc0JBQXNCLEVBQ3hDLHNCQUFzQixzQkFBc0IsRUFDNUMsWUFBWSxpQkFBaUI7UUFOM0IsWUFBTyxHQUFQLE9BQU8sQ0FBUztRQUNoQix1QkFBa0IsR0FBbEIsa0JBQWtCLENBQW9CO1FBQ3hDLHlCQUFvQixHQUFwQixvQkFBb0IsQ0FBK0I7UUFDbkQsMEJBQXFCLEdBQXJCLHFCQUFxQixDQUEwQjtRQUMvQyxvQkFBZSxHQUFmLGVBQWUsQ0FBeUI7UUFDeEMsd0JBQW1CLEdBQW5CLG1CQUFtQixDQUF5QjtRQUM1QyxjQUFTLEdBQVQsU0FBUyxDQUFvQjtRQVovQixjQUFTLEdBQUcsQ0FBQyxP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
@@ -0,0 +1,20 @@
1
+ import { ChainId } from '../util/chains';
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
+ }