@xspswap/smart-order-router 1.0.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 (402) hide show
  1. package/CHANGELOG.md +255 -0
  2. package/LICENSE +674 -0
  3. package/README.md +189 -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 +23 -0
  15. package/build/main/providers/caching/route/model/cached-route.js +24 -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 +113 -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 +14 -0
  31. package/build/main/providers/eth-estimate-gas-provider.js +72 -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 +33 -0
  46. package/build/main/providers/on-chain-quote-provider.d.ts +221 -0
  47. package/build/main/providers/on-chain-quote-provider.js +511 -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 +43 -0
  57. package/build/main/providers/tenderly-simulation-provider.js +244 -0
  58. package/build/main/providers/token-provider.d.ts +45 -0
  59. package/build/main/providers/token-provider.js +121 -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 +73 -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 +30 -0
  85. package/build/main/providers/v3/gas-data-provider.js +3 -0
  86. package/build/main/providers/v3/pool-provider.d.ts +61 -0
  87. package/build/main/providers/v3/pool-provider.js +125 -0
  88. package/build/main/providers/v3/static-subgraph-provider.d.ts +21 -0
  89. package/build/main/providers/v3/static-subgraph-provider.js +100 -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 +137 -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 +762 -0
  98. package/build/main/routers/alpha-router/config.d.ts +4 -0
  99. package/build/main/routers/alpha-router/config.js +61 -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 +344 -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 +704 -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 +39 -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 +171 -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 +43 -0
  122. package/build/main/routers/alpha-router/gas-models/v3/v3-heuristic-gas-model.d.ts +25 -0
  123. package/build/main/routers/alpha-router/gas-models/v3/v3-heuristic-gas-model.js +223 -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 +28 -0
  147. package/build/main/routers/legacy-router/bases.js +58 -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/factories/Erc20__factory.d.ts +45 -0
  156. package/build/main/types/other/factories/Erc20__factory.js +240 -0
  157. package/build/main/types/other/factories/GasDataArbitrum__factory.d.ts +18 -0
  158. package/build/main/types/other/factories/GasDataArbitrum__factory.js +58 -0
  159. package/build/main/types/other/factories/GasPriceOracle__factory.d.ts +46 -0
  160. package/build/main/types/other/factories/GasPriceOracle__factory.js +316 -0
  161. package/build/main/types/other/factories/IMixedRouteQuoterV1__factory.d.ts +41 -0
  162. package/build/main/types/other/factories/IMixedRouteQuoterV1__factory.js +156 -0
  163. package/build/main/types/other/factories/ITokenValidator__factory.d.ts +22 -0
  164. package/build/main/types/other/factories/ITokenValidator__factory.js +78 -0
  165. package/build/main/types/other/factories/Permit2__factory.d.ts +87 -0
  166. package/build/main/types/other/factories/Permit2__factory.js +941 -0
  167. package/build/main/types/other/factories/SwapRouter02__factory.d.ts +67 -0
  168. package/build/main/types/other/factories/SwapRouter02__factory.js +1103 -0
  169. package/build/main/types/v2/factories/IUniswapV2Pair__factory.d.ts +35 -0
  170. package/build/main/types/v2/factories/IUniswapV2Pair__factory.js +671 -0
  171. package/build/main/types/v3/factories/IERC20Metadata__factory.d.ts +35 -0
  172. package/build/main/types/v3/factories/IERC20Metadata__factory.js +242 -0
  173. package/build/main/types/v3/factories/IQuoterV2__factory.d.ts +41 -0
  174. package/build/main/types/v3/factories/IQuoterV2__factory.js +220 -0
  175. package/build/main/types/v3/factories/IUniswapV3PoolState__factory.d.ts +22 -0
  176. package/build/main/types/v3/factories/IUniswapV3PoolState__factory.js +266 -0
  177. package/build/main/types/v3/factories/UniswapInterfaceMulticall__factory.d.ts +61 -0
  178. package/build/main/types/v3/factories/UniswapInterfaceMulticall__factory.js +132 -0
  179. package/build/main/util/addresses.d.ts +25 -0
  180. package/build/main/util/addresses.js +59 -0
  181. package/build/main/util/amounts.d.ts +8 -0
  182. package/build/main/util/amounts.js +51 -0
  183. package/build/main/util/callData.d.ts +1 -0
  184. package/build/main/util/callData.js +6 -0
  185. package/build/main/util/chains.d.ts +34 -0
  186. package/build/main/util/chains.js +128 -0
  187. package/build/main/util/gas-factory-helpers.d.ts +24 -0
  188. package/build/main/util/gas-factory-helpers.js +294 -0
  189. package/build/main/util/index.d.ts +7 -0
  190. package/build/main/util/index.js +24 -0
  191. package/build/main/util/log.d.ts +3 -0
  192. package/build/main/util/log.js +97 -0
  193. package/build/main/util/methodParameters.d.ts +5 -0
  194. package/build/main/util/methodParameters.js +108 -0
  195. package/build/main/util/metric.d.ts +48 -0
  196. package/build/main/util/metric.js +59 -0
  197. package/build/main/util/protocols.d.ts +2 -0
  198. package/build/main/util/protocols.js +18 -0
  199. package/build/main/util/routes.d.ts +8 -0
  200. package/build/main/util/routes.js +60 -0
  201. package/build/main/util/unsupported-tokens.d.ts +37 -0
  202. package/build/main/util/unsupported-tokens.js +1119 -0
  203. package/build/module/index.d.ts +3 -0
  204. package/build/module/index.js +4 -0
  205. package/build/module/providers/cache-node.d.ts +9 -0
  206. package/build/module/providers/cache-node.js +15 -0
  207. package/build/module/providers/cache.d.ts +13 -0
  208. package/build/module/providers/cache.js +2 -0
  209. package/build/module/providers/caching/route/index.d.ts +2 -0
  210. package/build/module/providers/caching/route/index.js +3 -0
  211. package/build/module/providers/caching/route/model/cache-mode.d.ts +16 -0
  212. package/build/module/providers/caching/route/model/cache-mode.js +18 -0
  213. package/build/module/providers/caching/route/model/cached-route.d.ts +23 -0
  214. package/build/module/providers/caching/route/model/cached-route.js +20 -0
  215. package/build/module/providers/caching/route/model/cached-routes.d.ts +63 -0
  216. package/build/module/providers/caching/route/model/cached-routes.js +66 -0
  217. package/build/module/providers/caching/route/model/index.d.ts +3 -0
  218. package/build/module/providers/caching/route/model/index.js +4 -0
  219. package/build/module/providers/caching/route/route-caching-provider.d.ts +91 -0
  220. package/build/module/providers/caching/route/route-caching-provider.js +61 -0
  221. package/build/module/providers/caching-gas-provider.d.ts +23 -0
  222. package/build/module/providers/caching-gas-provider.js +33 -0
  223. package/build/module/providers/caching-token-list-provider.d.ts +40 -0
  224. package/build/module/providers/caching-token-list-provider.js +116 -0
  225. package/build/module/providers/caching-token-provider.d.ts +25 -0
  226. package/build/module/providers/caching-token-provider.js +106 -0
  227. package/build/module/providers/eip-1559-gas-price-provider.d.ts +31 -0
  228. package/build/module/providers/eip-1559-gas-price-provider.js +59 -0
  229. package/build/module/providers/eth-estimate-gas-provider.d.ts +14 -0
  230. package/build/module/providers/eth-estimate-gas-provider.js +80 -0
  231. package/build/module/providers/eth-gas-station-info-gas-price-provider.d.ts +19 -0
  232. package/build/module/providers/eth-gas-station-info-gas-price-provider.js +30 -0
  233. package/build/module/providers/gas-price-provider.d.ts +10 -0
  234. package/build/module/providers/gas-price-provider.js +6 -0
  235. package/build/module/providers/index.d.ts +37 -0
  236. package/build/module/providers/index.js +38 -0
  237. package/build/module/providers/legacy-gas-price-provider.d.ts +7 -0
  238. package/build/module/providers/legacy-gas-price-provider.js +16 -0
  239. package/build/module/providers/multicall-provider.d.ts +82 -0
  240. package/build/module/providers/multicall-provider.js +11 -0
  241. package/build/module/providers/multicall-uniswap-provider.d.ts +37 -0
  242. package/build/module/providers/multicall-uniswap-provider.js +156 -0
  243. package/build/module/providers/on-chain-gas-price-provider.d.ts +19 -0
  244. package/build/module/providers/on-chain-gas-price-provider.js +29 -0
  245. package/build/module/providers/on-chain-quote-provider.d.ts +221 -0
  246. package/build/module/providers/on-chain-quote-provider.js +505 -0
  247. package/build/module/providers/provider.d.ts +10 -0
  248. package/build/module/providers/provider.js +2 -0
  249. package/build/module/providers/simulation-provider.d.ts +42 -0
  250. package/build/module/providers/simulation-provider.js +132 -0
  251. package/build/module/providers/static-gas-price-provider.d.ts +7 -0
  252. package/build/module/providers/static-gas-price-provider.js +9 -0
  253. package/build/module/providers/swap-router-provider.d.ts +31 -0
  254. package/build/module/providers/swap-router-provider.js +38 -0
  255. package/build/module/providers/tenderly-simulation-provider.d.ts +43 -0
  256. package/build/module/providers/tenderly-simulation-provider.js +239 -0
  257. package/build/module/providers/token-provider.d.ts +45 -0
  258. package/build/module/providers/token-provider.js +110 -0
  259. package/build/module/providers/token-validator-provider.d.ts +42 -0
  260. package/build/module/providers/token-validator-provider.js +88 -0
  261. package/build/module/providers/uri-subgraph-provider.d.ts +20 -0
  262. package/build/module/providers/uri-subgraph-provider.js +58 -0
  263. package/build/module/providers/v2/caching-pool-provider.d.ts +34 -0
  264. package/build/module/providers/v2/caching-pool-provider.js +81 -0
  265. package/build/module/providers/v2/caching-subgraph-provider.d.ts +23 -0
  266. package/build/module/providers/v2/caching-subgraph-provider.js +30 -0
  267. package/build/module/providers/v2/pool-provider.d.ts +60 -0
  268. package/build/module/providers/v2/pool-provider.js +103 -0
  269. package/build/module/providers/v2/quote-provider.d.ts +33 -0
  270. package/build/module/providers/v2/quote-provider.js +87 -0
  271. package/build/module/providers/v2/static-subgraph-provider.d.ts +20 -0
  272. package/build/module/providers/v2/static-subgraph-provider.js +66 -0
  273. package/build/module/providers/v2/subgraph-provider-with-fallback.d.ts +19 -0
  274. package/build/module/providers/v2/subgraph-provider-with-fallback.js +31 -0
  275. package/build/module/providers/v2/subgraph-provider.d.ts +34 -0
  276. package/build/module/providers/v2/subgraph-provider.js +136 -0
  277. package/build/module/providers/v2/uri-subgraph-provider.d.ts +4 -0
  278. package/build/module/providers/v2/uri-subgraph-provider.js +4 -0
  279. package/build/module/providers/v3/caching-pool-provider.d.ts +33 -0
  280. package/build/module/providers/v3/caching-pool-provider.js +70 -0
  281. package/build/module/providers/v3/caching-subgraph-provider.d.ts +23 -0
  282. package/build/module/providers/v3/caching-subgraph-provider.js +30 -0
  283. package/build/module/providers/v3/gas-data-provider.d.ts +30 -0
  284. package/build/module/providers/v3/gas-data-provider.js +2 -0
  285. package/build/module/providers/v3/pool-provider.d.ts +61 -0
  286. package/build/module/providers/v3/pool-provider.js +118 -0
  287. package/build/module/providers/v3/static-subgraph-provider.d.ts +21 -0
  288. package/build/module/providers/v3/static-subgraph-provider.js +93 -0
  289. package/build/module/providers/v3/subgraph-provider-with-fallback.d.ts +15 -0
  290. package/build/module/providers/v3/subgraph-provider-with-fallback.js +27 -0
  291. package/build/module/providers/v3/subgraph-provider.d.ts +37 -0
  292. package/build/module/providers/v3/subgraph-provider.js +124 -0
  293. package/build/module/providers/v3/uri-subgraph-provider.d.ts +4 -0
  294. package/build/module/providers/v3/uri-subgraph-provider.js +4 -0
  295. package/build/module/routers/alpha-router/alpha-router.d.ts +267 -0
  296. package/build/module/routers/alpha-router/alpha-router.js +760 -0
  297. package/build/module/routers/alpha-router/config.d.ts +4 -0
  298. package/build/module/routers/alpha-router/config.js +57 -0
  299. package/build/module/routers/alpha-router/entities/index.d.ts +1 -0
  300. package/build/module/routers/alpha-router/entities/index.js +2 -0
  301. package/build/module/routers/alpha-router/entities/route-with-valid-quote.d.ts +163 -0
  302. package/build/module/routers/alpha-router/entities/route-with-valid-quote.js +134 -0
  303. package/build/module/routers/alpha-router/functions/best-swap-route.d.ts +19 -0
  304. package/build/module/routers/alpha-router/functions/best-swap-route.js +336 -0
  305. package/build/module/routers/alpha-router/functions/calculate-ratio-amount-in.d.ts +3 -0
  306. package/build/module/routers/alpha-router/functions/calculate-ratio-amount-in.js +14 -0
  307. package/build/module/routers/alpha-router/functions/compute-all-routes.d.ts +8 -0
  308. package/build/module/routers/alpha-router/functions/compute-all-routes.js +65 -0
  309. package/build/module/routers/alpha-router/functions/get-candidate-pools.d.ts +78 -0
  310. package/build/module/routers/alpha-router/functions/get-candidate-pools.js +715 -0
  311. package/build/module/routers/alpha-router/gas-models/gas-model.d.ts +83 -0
  312. package/build/module/routers/alpha-router/gas-models/gas-model.js +34 -0
  313. package/build/module/routers/alpha-router/gas-models/index.d.ts +2 -0
  314. package/build/module/routers/alpha-router/gas-models/index.js +3 -0
  315. package/build/module/routers/alpha-router/gas-models/mixedRoute/mixed-route-heuristic-gas-model.d.ts +25 -0
  316. package/build/module/routers/alpha-router/gas-models/mixedRoute/mixed-route-heuristic-gas-model.js +164 -0
  317. package/build/module/routers/alpha-router/gas-models/v2/v2-heuristic-gas-model.d.ts +29 -0
  318. package/build/module/routers/alpha-router/gas-models/v2/v2-heuristic-gas-model.js +160 -0
  319. package/build/module/routers/alpha-router/gas-models/v3/gas-costs.d.ts +6 -0
  320. package/build/module/routers/alpha-router/gas-models/v3/gas-costs.js +37 -0
  321. package/build/module/routers/alpha-router/gas-models/v3/v3-heuristic-gas-model.d.ts +25 -0
  322. package/build/module/routers/alpha-router/gas-models/v3/v3-heuristic-gas-model.js +216 -0
  323. package/build/module/routers/alpha-router/index.d.ts +4 -0
  324. package/build/module/routers/alpha-router/index.js +5 -0
  325. package/build/module/routers/alpha-router/quoters/base-quoter.d.ts +68 -0
  326. package/build/module/routers/alpha-router/quoters/base-quoter.js +54 -0
  327. package/build/module/routers/alpha-router/quoters/index.d.ts +5 -0
  328. package/build/module/routers/alpha-router/quoters/index.js +6 -0
  329. package/build/module/routers/alpha-router/quoters/mixed-quoter.d.ts +20 -0
  330. package/build/module/routers/alpha-router/quoters/mixed-quoter.js +123 -0
  331. package/build/module/routers/alpha-router/quoters/model/index.d.ts +1 -0
  332. package/build/module/routers/alpha-router/quoters/model/index.js +2 -0
  333. package/build/module/routers/alpha-router/quoters/model/results/get-quotes-result.d.ts +6 -0
  334. package/build/module/routers/alpha-router/quoters/model/results/get-quotes-result.js +2 -0
  335. package/build/module/routers/alpha-router/quoters/model/results/get-routes-result.d.ts +6 -0
  336. package/build/module/routers/alpha-router/quoters/model/results/get-routes-result.js +2 -0
  337. package/build/module/routers/alpha-router/quoters/model/results/index.d.ts +2 -0
  338. package/build/module/routers/alpha-router/quoters/model/results/index.js +3 -0
  339. package/build/module/routers/alpha-router/quoters/v2-quoter.d.ts +21 -0
  340. package/build/module/routers/alpha-router/quoters/v2-quoter.js +115 -0
  341. package/build/module/routers/alpha-router/quoters/v3-quoter.d.ts +19 -0
  342. package/build/module/routers/alpha-router/quoters/v3-quoter.js +118 -0
  343. package/build/module/routers/index.d.ts +4 -0
  344. package/build/module/routers/index.js +5 -0
  345. package/build/module/routers/legacy-router/bases.d.ts +28 -0
  346. package/build/module/routers/legacy-router/bases.js +54 -0
  347. package/build/module/routers/legacy-router/index.d.ts +1 -0
  348. package/build/module/routers/legacy-router/index.js +2 -0
  349. package/build/module/routers/legacy-router/legacy-router.d.ts +42 -0
  350. package/build/module/routers/legacy-router/legacy-router.js +290 -0
  351. package/build/module/routers/router.d.ts +165 -0
  352. package/build/module/routers/router.js +44 -0
  353. package/build/module/tsconfig.module.tsbuildinfo +1 -0
  354. package/build/module/types/other/factories/Erc20__factory.d.ts +45 -0
  355. package/build/module/types/other/factories/Erc20__factory.js +236 -0
  356. package/build/module/types/other/factories/GasDataArbitrum__factory.d.ts +18 -0
  357. package/build/module/types/other/factories/GasDataArbitrum__factory.js +54 -0
  358. package/build/module/types/other/factories/GasPriceOracle__factory.d.ts +46 -0
  359. package/build/module/types/other/factories/GasPriceOracle__factory.js +312 -0
  360. package/build/module/types/other/factories/IMixedRouteQuoterV1__factory.d.ts +41 -0
  361. package/build/module/types/other/factories/IMixedRouteQuoterV1__factory.js +152 -0
  362. package/build/module/types/other/factories/ITokenValidator__factory.d.ts +22 -0
  363. package/build/module/types/other/factories/ITokenValidator__factory.js +74 -0
  364. package/build/module/types/other/factories/Permit2__factory.d.ts +87 -0
  365. package/build/module/types/other/factories/Permit2__factory.js +937 -0
  366. package/build/module/types/other/factories/SwapRouter02__factory.d.ts +67 -0
  367. package/build/module/types/other/factories/SwapRouter02__factory.js +1099 -0
  368. package/build/module/types/v2/factories/IUniswapV2Pair__factory.d.ts +35 -0
  369. package/build/module/types/v2/factories/IUniswapV2Pair__factory.js +667 -0
  370. package/build/module/types/v3/factories/IERC20Metadata__factory.d.ts +35 -0
  371. package/build/module/types/v3/factories/IERC20Metadata__factory.js +238 -0
  372. package/build/module/types/v3/factories/IQuoterV2__factory.d.ts +41 -0
  373. package/build/module/types/v3/factories/IQuoterV2__factory.js +216 -0
  374. package/build/module/types/v3/factories/IUniswapV3PoolState__factory.d.ts +22 -0
  375. package/build/module/types/v3/factories/IUniswapV3PoolState__factory.js +262 -0
  376. package/build/module/types/v3/factories/UniswapInterfaceMulticall__factory.d.ts +61 -0
  377. package/build/module/types/v3/factories/UniswapInterfaceMulticall__factory.js +128 -0
  378. package/build/module/util/addresses.d.ts +25 -0
  379. package/build/module/util/addresses.js +70 -0
  380. package/build/module/util/amounts.d.ts +8 -0
  381. package/build/module/util/amounts.js +41 -0
  382. package/build/module/util/callData.d.ts +1 -0
  383. package/build/module/util/callData.js +3 -0
  384. package/build/module/util/chains.d.ts +34 -0
  385. package/build/module/util/chains.js +120 -0
  386. package/build/module/util/gas-factory-helpers.d.ts +24 -0
  387. package/build/module/util/gas-factory-helpers.js +277 -0
  388. package/build/module/util/index.d.ts +7 -0
  389. package/build/module/util/index.js +8 -0
  390. package/build/module/util/log.d.ts +3 -0
  391. package/build/module/util/log.js +93 -0
  392. package/build/module/util/methodParameters.d.ts +5 -0
  393. package/build/module/util/methodParameters.js +106 -0
  394. package/build/module/util/metric.d.ts +48 -0
  395. package/build/module/util/metric.js +53 -0
  396. package/build/module/util/protocols.d.ts +2 -0
  397. package/build/module/util/protocols.js +14 -0
  398. package/build/module/util/routes.d.ts +8 -0
  399. package/build/module/util/routes.js +50 -0
  400. package/build/module/util/unsupported-tokens.d.ts +37 -0
  401. package/build/module/util/unsupported-tokens.js +1116 -0
  402. package/package.json +133 -0
@@ -0,0 +1,216 @@
1
+ import { BigNumber } from '@ethersproject/bignumber';
2
+ import { Price } from '@uniswap/sdk-core';
3
+ import _ from 'lodash';
4
+ import { WRAPPED_NATIVE_CURRENCY } from '../../../..';
5
+ import { CurrencyAmount } from '../../../../util/amounts';
6
+ import { getHighestLiquidityV3NativePool, getHighestLiquidityV3USDPool, } from '../../../../util/gas-factory-helpers';
7
+ import { log } from '../../../../util/log';
8
+ import { IOnChainGasModelFactory, } from '../gas-model';
9
+ import { BASE_SWAP_COST, COST_PER_HOP, COST_PER_INIT_TICK, COST_PER_UNINIT_TICK, } from './gas-costs';
10
+ /**
11
+ * Computes a gas estimate for a V3 swap using heuristics.
12
+ * Considers number of hops in the route, number of ticks crossed
13
+ * and the typical base cost for a swap.
14
+ *
15
+ * We get the number of ticks crossed in a swap from the QuoterV2
16
+ * contract.
17
+ *
18
+ * We compute gas estimates off-chain because
19
+ * 1/ Calling eth_estimateGas for a swaps requires the caller to have
20
+ * the full balance token being swapped, and approvals.
21
+ * 2/ Tracking gas used using a wrapper contract is not accurate with Multicall
22
+ * due to EIP-2929. We would have to make a request for every swap we wanted to estimate.
23
+ * 3/ For V2 we simulate all our swaps off-chain so have no way to track gas used.
24
+ *
25
+ * @export
26
+ * @class V3HeuristicGasModelFactory
27
+ */
28
+ export class V3HeuristicGasModelFactory extends IOnChainGasModelFactory {
29
+ constructor() {
30
+ super();
31
+ }
32
+ async buildGasModel({ chainId, gasPriceWei, v3poolProvider: poolProvider, amountToken, quoteToken, }) {
33
+ const usdPool = await getHighestLiquidityV3USDPool(chainId, poolProvider);
34
+ const calculateL1GasFees = async () => {
35
+ let l1Used = BigNumber.from(0);
36
+ let l1FeeInWei = BigNumber.from(0);
37
+ // wrap fee to native currency
38
+ const nativeCurrency = WRAPPED_NATIVE_CURRENCY[chainId];
39
+ const costNativeCurrency = CurrencyAmount.fromRawAmount(nativeCurrency, l1FeeInWei.toString());
40
+ // convert fee into usd
41
+ const nativeTokenPrice = usdPool.token0.address == nativeCurrency.address
42
+ ? usdPool.token0Price
43
+ : usdPool.token1Price;
44
+ const gasCostL1USD = nativeTokenPrice.quote(costNativeCurrency);
45
+ let gasCostL1QuoteToken = costNativeCurrency;
46
+ // if the inputted token is not in the native currency, quote a native/quote token pool to get the gas cost in terms of the quote token
47
+ if (!quoteToken.equals(nativeCurrency)) {
48
+ const nativePool = await getHighestLiquidityV3NativePool(quoteToken, poolProvider);
49
+ if (!nativePool) {
50
+ log.info('Could not find a pool to convert the cost into the quote token');
51
+ gasCostL1QuoteToken = CurrencyAmount.fromRawAmount(quoteToken, 0);
52
+ }
53
+ else {
54
+ const nativeTokenPrice = nativePool.token0.address == nativeCurrency.address
55
+ ? nativePool.token0Price
56
+ : nativePool.token1Price;
57
+ gasCostL1QuoteToken = nativeTokenPrice.quote(costNativeCurrency);
58
+ }
59
+ }
60
+ // gasUsedL1 is the gas units used calculated from the bytes of the calldata
61
+ // gasCostL1USD and gasCostL1QuoteToken is the cost of gas in each of those tokens
62
+ return {
63
+ gasUsedL1: l1Used,
64
+ gasCostL1USD,
65
+ gasCostL1QuoteToken,
66
+ };
67
+ };
68
+ // If our quote token is WETH, we don't need to convert our gas use to be in terms
69
+ // of the quote token in order to produce a gas adjusted amount.
70
+ // We do return a gas use in USD however, so we still convert to usd.
71
+ const nativeCurrency = WRAPPED_NATIVE_CURRENCY[chainId];
72
+ if (quoteToken.equals(nativeCurrency)) {
73
+ const estimateGasCost = (routeWithValidQuote) => {
74
+ const { totalGasCostNativeCurrency, baseGasUse } = this.estimateGas(routeWithValidQuote, gasPriceWei, chainId);
75
+ const token0 = usdPool.token0.address == nativeCurrency.address;
76
+ const nativeTokenPrice = token0
77
+ ? usdPool.token0Price
78
+ : usdPool.token1Price;
79
+ const gasCostInTermsOfUSD = nativeTokenPrice.quote(totalGasCostNativeCurrency);
80
+ return {
81
+ gasEstimate: baseGasUse,
82
+ gasCostInToken: totalGasCostNativeCurrency,
83
+ gasCostInUSD: gasCostInTermsOfUSD,
84
+ };
85
+ };
86
+ return {
87
+ estimateGasCost,
88
+ calculateL1GasFees,
89
+ };
90
+ }
91
+ // If the quote token is not in the native currency, we convert the gas cost to be in terms of the quote token.
92
+ // We do this by getting the highest liquidity <quoteToken>/<nativeCurrency> pool. eg. <quoteToken>/ETH pool.
93
+ const nativePool = await getHighestLiquidityV3NativePool(quoteToken, poolProvider);
94
+ let nativeAmountPool = null;
95
+ if (!amountToken.equals(nativeCurrency)) {
96
+ nativeAmountPool = await getHighestLiquidityV3NativePool(amountToken, poolProvider);
97
+ }
98
+ const usdToken = usdPool.token0.address == nativeCurrency.address
99
+ ? usdPool.token1
100
+ : usdPool.token0;
101
+ const estimateGasCost = (routeWithValidQuote) => {
102
+ const { totalGasCostNativeCurrency, baseGasUse } = this.estimateGas(routeWithValidQuote, gasPriceWei, chainId);
103
+ let gasCostInTermsOfQuoteToken = null;
104
+ if (nativePool) {
105
+ const token0 = nativePool.token0.address == nativeCurrency.address;
106
+ // returns mid price in terms of the native currency (the ratio of quoteToken/nativeToken)
107
+ const nativeTokenPrice = token0
108
+ ? nativePool.token0Price
109
+ : nativePool.token1Price;
110
+ try {
111
+ // native token is base currency
112
+ gasCostInTermsOfQuoteToken = nativeTokenPrice.quote(totalGasCostNativeCurrency);
113
+ }
114
+ catch (err) {
115
+ log.info({
116
+ nativeTokenPriceBase: nativeTokenPrice.baseCurrency,
117
+ nativeTokenPriceQuote: nativeTokenPrice.quoteCurrency,
118
+ gasCostInEth: totalGasCostNativeCurrency.currency,
119
+ }, 'Debug eth price token issue');
120
+ throw err;
121
+ }
122
+ }
123
+ // we have a nativeAmountPool, but not a nativePool
124
+ else {
125
+ log.info(`Unable to find ${nativeCurrency.symbol} pool with the quote token, ${quoteToken.symbol} to produce gas adjusted costs. Using amountToken to calculate gas costs.`);
126
+ }
127
+ // Highest liquidity pool for the non quote token / ETH
128
+ // A pool with the non quote token / ETH should not be required and errors should be handled separately
129
+ if (nativeAmountPool) {
130
+ // get current execution price (amountToken / quoteToken)
131
+ const executionPrice = new Price(routeWithValidQuote.amount.currency, routeWithValidQuote.quote.currency, routeWithValidQuote.amount.quotient, routeWithValidQuote.quote.quotient);
132
+ const inputIsToken0 = nativeAmountPool.token0.address == nativeCurrency.address;
133
+ // ratio of input / native
134
+ const nativeAmountTokenPrice = inputIsToken0
135
+ ? nativeAmountPool.token0Price
136
+ : nativeAmountPool.token1Price;
137
+ const gasCostInTermsOfAmountToken = nativeAmountTokenPrice.quote(totalGasCostNativeCurrency);
138
+ // Convert gasCostInTermsOfAmountToken to quote token using execution price
139
+ const syntheticGasCostInTermsOfQuoteToken = executionPrice.quote(gasCostInTermsOfAmountToken);
140
+ // Note that the syntheticGasCost being lessThan the original quoted value is not always strictly better
141
+ // e.g. the scenario where the amountToken/ETH pool is very illiquid as well and returns an extremely small number
142
+ // however, it is better to have the gasEstimation be almost 0 than almost infinity, as the user will still receive a quote
143
+ if (gasCostInTermsOfQuoteToken === null ||
144
+ syntheticGasCostInTermsOfQuoteToken.lessThan(gasCostInTermsOfQuoteToken.asFraction)) {
145
+ log.info({
146
+ nativeAmountTokenPrice: nativeAmountTokenPrice.toSignificant(6),
147
+ gasCostInTermsOfQuoteToken: gasCostInTermsOfQuoteToken
148
+ ? gasCostInTermsOfQuoteToken.toExact()
149
+ : 0,
150
+ gasCostInTermsOfAmountToken: gasCostInTermsOfAmountToken.toExact(),
151
+ executionPrice: executionPrice.toSignificant(6),
152
+ syntheticGasCostInTermsOfQuoteToken: syntheticGasCostInTermsOfQuoteToken.toSignificant(6),
153
+ }, 'New gasCostInTermsOfQuoteToken calculated with synthetic quote token price is less than original');
154
+ gasCostInTermsOfQuoteToken = syntheticGasCostInTermsOfQuoteToken;
155
+ }
156
+ }
157
+ // true if token0 is the native currency
158
+ const token0USDPool = usdPool.token0.address == nativeCurrency.address;
159
+ // gets the mid price of the pool in terms of the native token
160
+ const nativeTokenPriceUSDPool = token0USDPool
161
+ ? usdPool.token0Price
162
+ : usdPool.token1Price;
163
+ let gasCostInTermsOfUSD;
164
+ try {
165
+ gasCostInTermsOfUSD = nativeTokenPriceUSDPool.quote(totalGasCostNativeCurrency);
166
+ }
167
+ catch (err) {
168
+ log.info({
169
+ usdT1: usdPool.token0.symbol,
170
+ usdT2: usdPool.token1.symbol,
171
+ gasCostInNativeToken: totalGasCostNativeCurrency.currency.symbol,
172
+ }, 'Failed to compute USD gas price');
173
+ throw err;
174
+ }
175
+ // If gasCostInTermsOfQuoteToken is null, both attempts to calculate gasCostInTermsOfQuoteToken failed (nativePool and amountNativePool)
176
+ if (gasCostInTermsOfQuoteToken === null) {
177
+ log.info(`Unable to find ${nativeCurrency.symbol} pool with the quote token, ${quoteToken.symbol}, or amount Token, ${amountToken.symbol} to produce gas adjusted costs. Route will not account for gas.`);
178
+ return {
179
+ gasEstimate: baseGasUse,
180
+ gasCostInToken: CurrencyAmount.fromRawAmount(quoteToken, 0),
181
+ gasCostInUSD: CurrencyAmount.fromRawAmount(usdToken, 0),
182
+ };
183
+ }
184
+ return {
185
+ gasEstimate: baseGasUse,
186
+ gasCostInToken: gasCostInTermsOfQuoteToken,
187
+ gasCostInUSD: gasCostInTermsOfUSD,
188
+ };
189
+ };
190
+ return {
191
+ estimateGasCost: estimateGasCost.bind(this),
192
+ calculateL1GasFees,
193
+ };
194
+ }
195
+ estimateGas(routeWithValidQuote, gasPriceWei, chainId) {
196
+ const totalInitializedTicksCrossed = BigNumber.from(Math.max(1, _.sum(routeWithValidQuote.initializedTicksCrossedList)));
197
+ const totalHops = BigNumber.from(routeWithValidQuote.route.pools.length);
198
+ const hopsGasUse = COST_PER_HOP(chainId).mul(totalHops);
199
+ const tickGasUse = COST_PER_INIT_TICK(chainId).mul(totalInitializedTicksCrossed);
200
+ const uninitializedTickGasUse = COST_PER_UNINIT_TICK.mul(0);
201
+ // base estimate gas used based on chainId estimates for hops and ticks gas useage
202
+ const baseGasUse = BASE_SWAP_COST(chainId)
203
+ .add(hopsGasUse)
204
+ .add(tickGasUse)
205
+ .add(uninitializedTickGasUse);
206
+ const baseGasCostWei = gasPriceWei.mul(baseGasUse);
207
+ const wrappedCurrency = WRAPPED_NATIVE_CURRENCY[chainId];
208
+ const totalGasCostNativeCurrency = CurrencyAmount.fromRawAmount(wrappedCurrency, baseGasCostWei.toString());
209
+ return {
210
+ totalGasCostNativeCurrency,
211
+ totalInitializedTicksCrossed,
212
+ baseGasUse,
213
+ };
214
+ }
215
+ }
216
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidjMtaGV1cmlzdGljLWdhcy1tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9yb3V0ZXJzL2FscGhhLXJvdXRlci9nYXMtbW9kZWxzL3YzL3YzLWhldXJpc3RpYy1nYXMtbW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUUxQyxPQUFPLENBQUMsTUFBTSxRQUFRLENBQUM7QUFFdkIsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sYUFBYSxDQUFDO0FBRXRELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMxRCxPQUFPLEVBQ0wsK0JBQStCLEVBQy9CLDRCQUE0QixHQUM3QixNQUFNLHNDQUFzQyxDQUFDO0FBQzlDLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUUzQyxPQUFPLEVBR0wsdUJBQXVCLEdBQ3hCLE1BQU0sY0FBYyxDQUFDO0FBRXRCLE9BQU8sRUFDTCxjQUFjLEVBQ2QsWUFBWSxFQUNaLGtCQUFrQixFQUNsQixvQkFBb0IsR0FDckIsTUFBTSxhQUFhLENBQUM7QUFFckI7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBaUJHO0FBQ0gsTUFBTSxPQUFPLDBCQUEyQixTQUFRLHVCQUF1QjtJQUNyRTtRQUNFLEtBQUssRUFBRSxDQUFDO0lBQ1YsQ0FBQztJQUVNLEtBQUssQ0FBQyxhQUFhLENBQUMsRUFDekIsT0FBTyxFQUNQLFdBQVcsRUFDWCxjQUFjLEVBQUUsWUFBWSxFQUM1QixXQUFXLEVBQ1gsVUFBVSxHQUVtQjtRQUM3QixNQUFNLE9BQU8sR0FBUyxNQUFNLDRCQUE0QixDQUN0RCxPQUFPLEVBQ1AsWUFBWSxDQUNiLENBQUM7UUFFRixNQUFNLGtCQUFrQixHQUFHLEtBQUssSUFJN0IsRUFB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
@@ -0,0 +1,4 @@
1
+ export * from './alpha-router';
2
+ export * from './entities';
3
+ export * from './gas-models';
4
+ export * from './quoters';
@@ -0,0 +1,5 @@
1
+ export * from './alpha-router';
2
+ export * from './entities';
3
+ export * from './gas-models';
4
+ export * from './quoters';
5
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvcm91dGVycy9hbHBoYS1yb3V0ZXIvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxnQkFBZ0IsQ0FBQztBQUMvQixjQUFjLFlBQVksQ0FBQztBQUMzQixjQUFjLGNBQWMsQ0FBQztBQUM3QixjQUFjLFdBQVcsQ0FBQyJ9
@@ -0,0 +1,68 @@
1
+ import { BigNumber } from '@ethersproject/bignumber';
2
+ import { Currency, Token, TradeType } from '@uniswap/sdk-core';
3
+ import { Pair } from '@xswap-v3/v2-sdk';
4
+ import { Pool } from '@uniswap/v3-sdk';
5
+ import { ITokenListProvider, ITokenProvider, ITokenValidatorProvider, TokenValidationResult } from '../../../providers';
6
+ import { ChainId, CurrencyAmount } from '../../../util';
7
+ import { MixedRoute, V2Route, V3Route } from '../../router';
8
+ import { AlphaRouterConfig } from '../alpha-router';
9
+ import { RouteWithValidQuote } from '../entities/route-with-valid-quote';
10
+ import { CandidatePoolsBySelectionCriteria } from '../functions/get-candidate-pools';
11
+ import { IGasModel } from '../gas-models';
12
+ import { GetQuotesResult, GetRoutesResult } from './model/results';
13
+ /**
14
+ * Interface for a Quoter.
15
+ * Defines the base dependencies, helper methods and interface for how to fetch quotes.
16
+ *
17
+ * @abstract
18
+ * @template Route
19
+ */
20
+ export declare abstract class BaseQuoter<Route extends V2Route | V3Route | MixedRoute> {
21
+ protected tokenProvider: ITokenProvider;
22
+ protected chainId: ChainId;
23
+ protected blockedTokenListProvider?: ITokenListProvider;
24
+ protected tokenValidatorProvider?: ITokenValidatorProvider;
25
+ constructor(tokenProvider: ITokenProvider, chainId: ChainId, blockedTokenListProvider?: ITokenListProvider, tokenValidatorProvider?: ITokenValidatorProvider);
26
+ /**
27
+ * Protected method in charge of fetching the routes for the tokenIn/tokenOut pair.
28
+ *
29
+ * @protected
30
+ * @abstract
31
+ * @param tokenIn The token that the user wants to provide
32
+ * @param tokenOut The token that the usaw wants to receive
33
+ * @param tradeType The type of quote the user wants. He could want to provide exactly X tokenIn or receive exactly X tokenOut
34
+ * @param routingConfig
35
+ * @returns Promise<GetRoutesResult<Route>>
36
+ */
37
+ protected abstract getRoutes(tokenIn: Token, tokenOut: Token, tradeType: TradeType, routingConfig: AlphaRouterConfig): Promise<GetRoutesResult<Route>>;
38
+ /**
39
+ * Public method that will fetch quotes for the combination of every route and every amount.
40
+ *
41
+ * @param routes the list of route that can be used to fetch a quote.
42
+ * @param amounts the list of amounts to query for EACH route.
43
+ * @param percents the percentage of each amount.
44
+ * @param quoteToken
45
+ * @param tradeType
46
+ * @param routingConfig
47
+ * @param candidatePools the candidate pools that were used to generate the routes
48
+ * @param gasModel the gasModel to be used for estimating gas cost
49
+ * @param gasPriceWei instead of passing gasModel, gasPriceWei is used to generate a gasModel
50
+ * @returns Promise<GetQuotesResult<Route>>
51
+ */
52
+ abstract getQuotes(routes: Route[], amounts: CurrencyAmount[], percents: number[], quoteToken: Token, tradeType: TradeType, routingConfig: AlphaRouterConfig, candidatePools?: CandidatePoolsBySelectionCriteria, gasModel?: IGasModel<RouteWithValidQuote>, gasPriceWei?: BigNumber): Promise<GetQuotesResult>;
53
+ /**
54
+ * Public method which would first get the routes and then get the quotes.
55
+ *
56
+ * @param tokenIn The token that the user wants to provide
57
+ * @param tokenOut The token that the usaw wants to receive
58
+ * @param amounts the list of amounts to query for EACH route.
59
+ * @param percents the percentage of each amount.
60
+ * @param quoteToken
61
+ * @param tradeType
62
+ * @param routingConfig
63
+ * @param gasModel the gasModel to be used for estimating gas cost
64
+ * @param gasPriceWei instead of passing gasModel, gasPriceWei is used to generate a gasModel
65
+ */
66
+ getRoutesThenQuotes(tokenIn: Token, tokenOut: Token, amounts: CurrencyAmount[], percents: number[], quoteToken: Token, tradeType: TradeType, routingConfig: AlphaRouterConfig, gasModel?: IGasModel<RouteWithValidQuote>, gasPriceWei?: BigNumber): Promise<GetQuotesResult>;
67
+ protected applyTokenValidatorToPools<T extends Pool | Pair>(pools: T[], isInvalidFn: (token: Currency, tokenValidation: TokenValidationResult | undefined) => boolean): Promise<T[]>;
68
+ }
@@ -0,0 +1,54 @@
1
+ import _ from 'lodash';
2
+ import { log, poolToString } from '../../../util';
3
+ /**
4
+ * Interface for a Quoter.
5
+ * Defines the base dependencies, helper methods and interface for how to fetch quotes.
6
+ *
7
+ * @abstract
8
+ * @template Route
9
+ */
10
+ export class BaseQuoter {
11
+ constructor(tokenProvider, chainId, blockedTokenListProvider, tokenValidatorProvider) {
12
+ this.tokenProvider = tokenProvider;
13
+ this.chainId = chainId;
14
+ this.blockedTokenListProvider = blockedTokenListProvider;
15
+ this.tokenValidatorProvider = tokenValidatorProvider;
16
+ }
17
+ /**
18
+ * Public method which would first get the routes and then get the quotes.
19
+ *
20
+ * @param tokenIn The token that the user wants to provide
21
+ * @param tokenOut The token that the usaw wants to receive
22
+ * @param amounts the list of amounts to query for EACH route.
23
+ * @param percents the percentage of each amount.
24
+ * @param quoteToken
25
+ * @param tradeType
26
+ * @param routingConfig
27
+ * @param gasModel the gasModel to be used for estimating gas cost
28
+ * @param gasPriceWei instead of passing gasModel, gasPriceWei is used to generate a gasModel
29
+ */
30
+ getRoutesThenQuotes(tokenIn, tokenOut, amounts, percents, quoteToken, tradeType, routingConfig, gasModel, gasPriceWei) {
31
+ return this.getRoutes(tokenIn, tokenOut, tradeType, routingConfig)
32
+ .then((routesResult) => this.getQuotes(routesResult.routes, amounts, percents, quoteToken, tradeType, routingConfig, routesResult.candidatePools, gasModel, gasPriceWei));
33
+ }
34
+ async applyTokenValidatorToPools(pools, isInvalidFn) {
35
+ if (!this.tokenValidatorProvider) {
36
+ return pools;
37
+ }
38
+ log.info(`Running token validator on ${pools.length} pools`);
39
+ const tokens = _.flatMap(pools, (pool) => [pool.token0, pool.token1]);
40
+ const tokenValidationResults = await this.tokenValidatorProvider.validateTokens(tokens);
41
+ const poolsFiltered = _.filter(pools, (pool) => {
42
+ const token0Validation = tokenValidationResults.getValidationByToken(pool.token0);
43
+ const token1Validation = tokenValidationResults.getValidationByToken(pool.token1);
44
+ const token0Invalid = isInvalidFn(pool.token0, token0Validation);
45
+ const token1Invalid = isInvalidFn(pool.token1, token1Validation);
46
+ if (token0Invalid || token1Invalid) {
47
+ log.info(`Dropping pool ${poolToString(pool)} because token is invalid. ${pool.token0.symbol}: ${token0Validation}, ${pool.token1.symbol}: ${token1Validation}`);
48
+ }
49
+ return !token0Invalid && !token1Invalid;
50
+ });
51
+ return poolsFiltered;
52
+ }
53
+ }
54
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1xdW90ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvcm91dGVycy9hbHBoYS1yb3V0ZXIvcXVvdGVycy9iYXNlLXF1b3Rlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFJQSxPQUFPLENBQUMsTUFBTSxRQUFRLENBQUM7QUFHdkIsT0FBTyxFQUEyQixHQUFHLEVBQUUsWUFBWSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBUzNFOzs7Ozs7R0FNRztBQUNILE1BQU0sT0FBZ0IsVUFBVTtJQU05QixZQUNFLGFBQTZCLEVBQzdCLE9BQWdCLEVBQ2hCLHdCQUE2QyxFQUM3QyxzQkFBZ0Q7UUFFaEQsSUFBSSxDQUFDLGFBQWEsR0FBRyxhQUFhLENBQUM7UUFDbkMsSUFBSSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7UUFDdkIsSUFBSSxDQUFDLHdCQUF3QixHQUFHLHdCQUF3QixDQUFDO1FBQ3pELElBQUksQ0FBQyxzQkFBc0IsR0FBRyxzQkFBc0IsQ0FBQztJQUN2RCxDQUFDO0lBOENEOzs7Ozs7Ozs7Ozs7T0FZRztJQUNJLG1CQUFtQixDQUN4QixPQUFjLEVBQ2QsUUFBZSxFQUNmLE9BQXlCLEVBQ3pCLFFBQWtCLEVBQ2xCLFVBQWlCLEVBQ2pCLFNBQW9CLEVBQ3BCLGFBQWdDLEVBQ2hDLFFBQXlDLEVBQ3pDLFdBQXVCO1FBRXZCLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxhQUFhLENBQUM7YUFDL0QsSUFBSSxDQUFDLENBQUMsWUFBWSxFQUFFLEVBQUUsQ0FDckIsSUFBSSxDQUFDLFNBQVMsQ0FDWixZQUFZLENBQUMsTUFBTSxFQUNuQixPQUFPLEVBQ1AsUUFBUSxFQUNSLFVBQVUsRUFDVixTQUFTLEVBQ1QsYUFBYSxFQUNiLFlBQVksQ0FBQyxjQUFjLEVBQzNCLFFBQVEsRUFDUixXQUFXLENBQ1osQ0FDRixDQUFDO0lBQ04sQ0FBQztJQUVTLEtBQUssQ0FBQywwQkFBMEIsQ0FDeEMsS0FBVSxFQUNWLFdBR1k7UUFFWixJQUFJLENBQUMsSUFBSSxDQUFDLHNCQUFzQixFQUFFO1lBQ2hDLE9BQU8sS0FBSyxDQUFDO1NBQ2Q7UUFFRCxHQUFHLENBQUMsSUFBSSxDQUFDLDhCQUE4QixLQUFLLENBQUMsTUFBTSxRQUFRLENBQUMsQ0FBQztRQUU3RCxNQUFNLE1BQU0sR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLEtBQUssRUFBRSxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO1FBRXRFLE1BQU0sc0JBQXNCLEdBQUcsTUFBTSxJQUFJLENBQUMsc0JBQXNCLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBRXhGLE1BQU0sYUFBYSxHQUFHLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUMsSUFBTyxFQUFFLEVBQUU7WUFDaEQsTUFBTSxnQkFBZ0IsR0FBRyxzQkFBc0IsQ0FBQyxvQkFBb0IsQ0FDbEUsSUFBSSxDQUFDLE1BQU0sQ0FDWixDQUFDO1lBQ0YsTUFBTSxnQkFBZ0IsR0FBRyxzQkFBc0IsQ0FBQyxvQkFBb0IsQ0FDbEUsSUFBSSxDQUFDLE1BQU0sQ0FDWixDQUFDO1lBRUYsTUFBTSxhQUFhLEdBQUcsV0FBVyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztZQUNqRSxNQUFNLGFBQWEsR0FBRyxXQUFXLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO1lBRWpFLElBQUksYUFBYSxJQUFJLGFBQWEsRUFBRTtnQkFDbEMsR0FBRyxDQUFDLElBQUksQ0FDTixpQkFBaUIsWUFBWSxDQUFDLElBQUksQ0FBQyw4QkFBOEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUM3RSxLQUFLLGdCQUFnQixLQUFLLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxLQUFLLGdCQUFnQixFQUFFLENBQ3BFLENBQUM7YUFDSDtZQUVELE9BQU8sQ0FBQyxhQUFhLElBQUksQ0FBQyxhQUFhLENBQUM7UUFDMUMsQ0FBQyxDQUFDLENBQUM7UUFFSCxPQUFPLGFBQWEsQ0FBQztJQUN2QixDQUFDO0NBQ0YifQ==
@@ -0,0 +1,5 @@
1
+ export * from './model/';
2
+ export * from './base-quoter';
3
+ export * from './v2-quoter';
4
+ export * from './v3-quoter';
5
+ export * from './mixed-quoter';
@@ -0,0 +1,6 @@
1
+ export * from './model/';
2
+ export * from './base-quoter';
3
+ export * from './v2-quoter';
4
+ export * from './v3-quoter';
5
+ export * from './mixed-quoter';
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvcm91dGVycy9hbHBoYS1yb3V0ZXIvcXVvdGVycy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLFVBQVUsQ0FBQztBQUN6QixjQUFjLGVBQWUsQ0FBQztBQUM5QixjQUFjLGFBQWEsQ0FBQztBQUM1QixjQUFjLGFBQWEsQ0FBQztBQUM1QixjQUFjLGdCQUFnQixDQUFDIn0=
@@ -0,0 +1,20 @@
1
+ import { Token, TradeType } from '@uniswap/sdk-core';
2
+ import { IOnChainQuoteProvider, ITokenListProvider, ITokenProvider, ITokenValidatorProvider, IV2PoolProvider, IV2SubgraphProvider, IV3PoolProvider, IV3SubgraphProvider } from '../../../providers';
3
+ import { ChainId, CurrencyAmount } from '../../../util';
4
+ import { MixedRoute } from '../../router';
5
+ import { AlphaRouterConfig } from '../alpha-router';
6
+ import { MixedRouteWithValidQuote } from '../entities';
7
+ import { CandidatePoolsBySelectionCriteria } from '../functions/get-candidate-pools';
8
+ import { IGasModel } from '../gas-models';
9
+ import { BaseQuoter } from './base-quoter';
10
+ import { GetQuotesResult, GetRoutesResult } from './model';
11
+ export declare class MixedQuoter extends BaseQuoter<MixedRoute> {
12
+ protected v3SubgraphProvider: IV3SubgraphProvider;
13
+ protected v3PoolProvider: IV3PoolProvider;
14
+ protected v2SubgraphProvider: IV2SubgraphProvider;
15
+ protected v2PoolProvider: IV2PoolProvider;
16
+ protected onChainQuoteProvider: IOnChainQuoteProvider;
17
+ constructor(v3SubgraphProvider: IV3SubgraphProvider, v3PoolProvider: IV3PoolProvider, v2SubgraphProvider: IV2SubgraphProvider, v2PoolProvider: IV2PoolProvider, onChainQuoteProvider: IOnChainQuoteProvider, tokenProvider: ITokenProvider, chainId: ChainId, blockedTokenListProvider?: ITokenListProvider, tokenValidatorProvider?: ITokenValidatorProvider);
18
+ protected getRoutes(tokenIn: Token, tokenOut: Token, tradeType: TradeType, routingConfig: AlphaRouterConfig): Promise<GetRoutesResult<MixedRoute>>;
19
+ getQuotes(routes: MixedRoute[], amounts: CurrencyAmount[], percents: number[], quoteToken: Token, tradeType: TradeType, routingConfig: AlphaRouterConfig, candidatePools?: CandidatePoolsBySelectionCriteria, gasModel?: IGasModel<MixedRouteWithValidQuote>): Promise<GetQuotesResult>;
20
+ }
@@ -0,0 +1,123 @@
1
+ import { TradeType } from '@uniswap/sdk-core';
2
+ import _ from 'lodash';
3
+ import { TokenValidationResult } from '../../../providers';
4
+ import { log, metric, MetricLoggerUnit, routeToString } from '../../../util';
5
+ import { MixedRouteWithValidQuote } from '../entities';
6
+ import { computeAllMixedRoutes } from '../functions/compute-all-routes';
7
+ import { getMixedRouteCandidatePools } from '../functions/get-candidate-pools';
8
+ import { BaseQuoter } from './base-quoter';
9
+ export class MixedQuoter extends BaseQuoter {
10
+ constructor(v3SubgraphProvider, v3PoolProvider, v2SubgraphProvider, v2PoolProvider, onChainQuoteProvider, tokenProvider, chainId, blockedTokenListProvider, tokenValidatorProvider) {
11
+ super(tokenProvider, chainId, blockedTokenListProvider, tokenValidatorProvider);
12
+ this.v3SubgraphProvider = v3SubgraphProvider;
13
+ this.v3PoolProvider = v3PoolProvider;
14
+ this.v2SubgraphProvider = v2SubgraphProvider;
15
+ this.v2PoolProvider = v2PoolProvider;
16
+ this.onChainQuoteProvider = onChainQuoteProvider;
17
+ }
18
+ async getRoutes(tokenIn, tokenOut, tradeType, routingConfig) {
19
+ if (tradeType != TradeType.EXACT_INPUT) {
20
+ throw new Error('Mixed route quotes are not supported for EXACT_OUTPUT');
21
+ }
22
+ const { V2poolAccessor, V3poolAccessor, candidatePools: mixedRouteCandidatePools, } = await getMixedRouteCandidatePools({
23
+ tokenIn,
24
+ tokenOut,
25
+ tokenProvider: this.tokenProvider,
26
+ blockedTokenListProvider: this.blockedTokenListProvider,
27
+ v3poolProvider: this.v3PoolProvider,
28
+ v2poolProvider: this.v2PoolProvider,
29
+ routeType: tradeType,
30
+ v3subgraphProvider: this.v3SubgraphProvider,
31
+ v2subgraphProvider: this.v2SubgraphProvider,
32
+ routingConfig,
33
+ chainId: this.chainId,
34
+ });
35
+ const V3poolsRaw = V3poolAccessor.getAllPools();
36
+ const V2poolsRaw = V2poolAccessor.getAllPools();
37
+ const poolsRaw = [...V3poolsRaw, ...V2poolsRaw];
38
+ const candidatePools = mixedRouteCandidatePools;
39
+ // Drop any pools that contain fee on transfer tokens (not supported by v3) or have issues with being transferred.
40
+ const pools = await this.applyTokenValidatorToPools(poolsRaw, (token, tokenValidation) => {
41
+ // If there is no available validation result we assume the token is fine.
42
+ if (!tokenValidation) {
43
+ return false;
44
+ }
45
+ // Only filters out *intermediate* pools that involve tokens that we detect
46
+ // cant be transferred. This prevents us trying to route through tokens that may
47
+ // not be transferrable, but allows users to still swap those tokens if they
48
+ // specify.
49
+ //
50
+ if (tokenValidation == TokenValidationResult.STF &&
51
+ (token.equals(tokenIn) || token.equals(tokenOut))) {
52
+ return false;
53
+ }
54
+ return (tokenValidation == TokenValidationResult.FOT ||
55
+ tokenValidation == TokenValidationResult.STF);
56
+ });
57
+ const { maxSwapsPerPath } = routingConfig;
58
+ const routes = computeAllMixedRoutes(tokenIn, tokenOut, pools, maxSwapsPerPath);
59
+ return {
60
+ routes,
61
+ candidatePools
62
+ };
63
+ }
64
+ async getQuotes(routes, amounts, percents, quoteToken, tradeType, routingConfig, candidatePools, gasModel) {
65
+ log.info('Starting to get mixed quotes');
66
+ if (gasModel === undefined) {
67
+ throw new Error('GasModel for MixedRouteWithValidQuote is required to getQuotes');
68
+ }
69
+ if (routes.length == 0) {
70
+ return { routesWithValidQuotes: [], candidatePools };
71
+ }
72
+ // For all our routes, and all the fractional amounts, fetch quotes on-chain.
73
+ const quoteFn = this.onChainQuoteProvider.getQuotesManyExactIn.bind(this.onChainQuoteProvider);
74
+ const beforeQuotes = Date.now();
75
+ log.info(`Getting quotes for mixed for ${routes.length} routes with ${amounts.length} amounts per route.`);
76
+ const { routesWithQuotes } = await quoteFn(amounts, routes, {
77
+ blockNumber: routingConfig.blockNumber,
78
+ });
79
+ metric.putMetric('MixedQuotesLoad', Date.now() - beforeQuotes, MetricLoggerUnit.Milliseconds);
80
+ metric.putMetric('MixedQuotesFetched', _(routesWithQuotes)
81
+ .map(([, quotes]) => quotes.length)
82
+ .sum(), MetricLoggerUnit.Count);
83
+ const routesWithValidQuotes = [];
84
+ for (const routeWithQuote of routesWithQuotes) {
85
+ const [route, quotes] = routeWithQuote;
86
+ for (let i = 0; i < quotes.length; i++) {
87
+ const percent = percents[i];
88
+ const amountQuote = quotes[i];
89
+ const { quote, amount, sqrtPriceX96AfterList, initializedTicksCrossedList, gasEstimate, } = amountQuote;
90
+ if (!quote ||
91
+ !sqrtPriceX96AfterList ||
92
+ !initializedTicksCrossedList ||
93
+ !gasEstimate) {
94
+ log.debug({
95
+ route: routeToString(route),
96
+ amountQuote,
97
+ }, 'Dropping a null mixed quote for route.');
98
+ continue;
99
+ }
100
+ const routeWithValidQuote = new MixedRouteWithValidQuote({
101
+ route,
102
+ rawQuote: quote,
103
+ amount,
104
+ percent,
105
+ sqrtPriceX96AfterList,
106
+ initializedTicksCrossedList,
107
+ quoterGasEstimate: gasEstimate,
108
+ mixedRouteGasModel: gasModel,
109
+ quoteToken,
110
+ tradeType,
111
+ v3PoolProvider: this.v3PoolProvider,
112
+ v2PoolProvider: this.v2PoolProvider,
113
+ });
114
+ routesWithValidQuotes.push(routeWithValidQuote);
115
+ }
116
+ }
117
+ return {
118
+ routesWithValidQuotes,
119
+ candidatePools
120
+ };
121
+ }
122
+ }
123
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWl4ZWQtcXVvdGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL3JvdXRlcnMvYWxwaGEtcm91dGVyL3F1b3RlcnMvbWl4ZWQtcXVvdGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBbUIsU0FBUyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDL0QsT0FBTyxDQUFDLE1BQU0sUUFBUSxDQUFDO0FBRXZCLE9BQU8sRUFTTCxxQkFBcUIsRUFDdEIsTUFBTSxvQkFBb0IsQ0FBQztBQUM1QixPQUFPLEVBQTJCLEdBQUcsRUFBRSxNQUFNLEVBQUUsZ0JBQWdCLEVBQUUsYUFBYSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBR3RHLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUN2RCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQztBQUN4RSxPQUFPLEVBQXFDLDJCQUEyQixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFHbEgsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUczQyxNQUFNLE9BQU8sV0FBWSxTQUFRLFVBQXNCO0lBT3JELFlBQ0Usa0JBQXVDLEVBQ3ZDLGNBQStCLEVBQy9CLGtCQUF1QyxFQUN2QyxjQUErQixFQUMvQixvQkFBMkMsRUFDM0MsYUFBNkIsRUFDN0IsT0FBZ0IsRUFDaEIsd0JBQTZDLEVBQzdDLHNCQUFnRDtRQUVoRCxLQUFLLENBQUMsYUFBYSxFQUFFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxzQkFBc0IsQ0FBQyxDQUFDO1FBQ2hGLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxrQkFBa0IsQ0FBQztRQUM3QyxJQUFJLENBQUMsY0FBYyxHQUFHLGNBQWMsQ0FBQztRQUNyQyxJQUFJLENBQUMsa0JBQWtCLEdBQUcsa0JBQWtCLENBQUM7UUFDN0MsSUFBSSxDQUFDLGNBQWMsR0FBRyxjQUFjLENBQUM7UUFDckMsSUFB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
@@ -0,0 +1 @@
1
+ export * from './results';
@@ -0,0 +1,2 @@
1
+ export * from './results';
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvcm91dGVycy9hbHBoYS1yb3V0ZXIvcXVvdGVycy9tb2RlbC9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxjQUFjLFdBQVcsQ0FBQyJ9
@@ -0,0 +1,6 @@
1
+ import { RouteWithValidQuote } from '../../../entities';
2
+ import { CandidatePoolsBySelectionCriteria } from '../../../functions/get-candidate-pools';
3
+ export interface GetQuotesResult {
4
+ routesWithValidQuotes: RouteWithValidQuote[];
5
+ candidatePools?: CandidatePoolsBySelectionCriteria;
6
+ }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0LXF1b3Rlcy1yZXN1bHQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvcm91dGVycy9hbHBoYS1yb3V0ZXIvcXVvdGVycy9tb2RlbC9yZXN1bHRzL2dldC1xdW90ZXMtcmVzdWx0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIifQ==
@@ -0,0 +1,6 @@
1
+ import { MixedRoute, V2Route, V3Route } from '../../../../router';
2
+ import { CandidatePoolsBySelectionCriteria } from '../../../functions/get-candidate-pools';
3
+ export interface GetRoutesResult<Route extends V2Route | V3Route | MixedRoute> {
4
+ routes: Route[];
5
+ candidatePools: CandidatePoolsBySelectionCriteria;
6
+ }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2V0LXJvdXRlcy1yZXN1bHQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvcm91dGVycy9hbHBoYS1yb3V0ZXIvcXVvdGVycy9tb2RlbC9yZXN1bHRzL2dldC1yb3V0ZXMtcmVzdWx0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIifQ==
@@ -0,0 +1,2 @@
1
+ export * from './get-routes-result';
2
+ export * from './get-quotes-result';
@@ -0,0 +1,3 @@
1
+ export * from './get-routes-result';
2
+ export * from './get-quotes-result';
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvcm91dGVycy9hbHBoYS1yb3V0ZXIvcXVvdGVycy9tb2RlbC9yZXN1bHRzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMscUJBQXFCLENBQUM7QUFDcEMsY0FBYyxxQkFBcUIsQ0FBQyJ9
@@ -0,0 +1,21 @@
1
+ import { BigNumber } from '@ethersproject/bignumber';
2
+ import { Token, TradeType } from '@uniswap/sdk-core';
3
+ import { ITokenListProvider, ITokenProvider, ITokenValidatorProvider, IV2PoolProvider, IV2QuoteProvider, IV2SubgraphProvider } from '../../../providers';
4
+ import { ChainId, CurrencyAmount } from '../../../util';
5
+ import { V2Route } from '../../router';
6
+ import { AlphaRouterConfig } from '../alpha-router';
7
+ import { V2RouteWithValidQuote } from '../entities';
8
+ import { CandidatePoolsBySelectionCriteria } from '../functions/get-candidate-pools';
9
+ import { IGasModel, IV2GasModelFactory } from '../gas-models';
10
+ import { BaseQuoter } from './base-quoter';
11
+ import { GetQuotesResult } from './model/results/get-quotes-result';
12
+ import { GetRoutesResult } from './model/results/get-routes-result';
13
+ export declare class V2Quoter extends BaseQuoter<V2Route> {
14
+ protected v2SubgraphProvider: IV2SubgraphProvider;
15
+ protected v2PoolProvider: IV2PoolProvider;
16
+ protected v2QuoteProvider: IV2QuoteProvider;
17
+ protected v2GasModelFactory: IV2GasModelFactory;
18
+ constructor(v2SubgraphProvider: IV2SubgraphProvider, v2PoolProvider: IV2PoolProvider, v2QuoteProvider: IV2QuoteProvider, v2GasModelFactory: IV2GasModelFactory, tokenProvider: ITokenProvider, chainId: ChainId, blockedTokenListProvider?: ITokenListProvider, tokenValidatorProvider?: ITokenValidatorProvider);
19
+ protected getRoutes(tokenIn: Token, tokenOut: Token, tradeType: TradeType, routingConfig: AlphaRouterConfig): Promise<GetRoutesResult<V2Route>>;
20
+ getQuotes(routes: V2Route[], amounts: CurrencyAmount[], percents: number[], quoteToken: Token, tradeType: TradeType, _routingConfig: AlphaRouterConfig, candidatePools?: CandidatePoolsBySelectionCriteria, _gasModel?: IGasModel<V2RouteWithValidQuote>, gasPriceWei?: BigNumber): Promise<GetQuotesResult>;
21
+ }