@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,223 @@
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.V3HeuristicGasModelFactory = void 0;
7
+ const bignumber_1 = require("@ethersproject/bignumber");
8
+ const sdk_core_1 = require("@uniswap/sdk-core");
9
+ const lodash_1 = __importDefault(require("lodash"));
10
+ const __1 = require("../../../..");
11
+ const amounts_1 = require("../../../../util/amounts");
12
+ const gas_factory_helpers_1 = require("../../../../util/gas-factory-helpers");
13
+ const log_1 = require("../../../../util/log");
14
+ const gas_model_1 = require("../gas-model");
15
+ const gas_costs_1 = require("./gas-costs");
16
+ /**
17
+ * Computes a gas estimate for a V3 swap using heuristics.
18
+ * Considers number of hops in the route, number of ticks crossed
19
+ * and the typical base cost for a swap.
20
+ *
21
+ * We get the number of ticks crossed in a swap from the QuoterV2
22
+ * contract.
23
+ *
24
+ * We compute gas estimates off-chain because
25
+ * 1/ Calling eth_estimateGas for a swaps requires the caller to have
26
+ * the full balance token being swapped, and approvals.
27
+ * 2/ Tracking gas used using a wrapper contract is not accurate with Multicall
28
+ * due to EIP-2929. We would have to make a request for every swap we wanted to estimate.
29
+ * 3/ For V2 we simulate all our swaps off-chain so have no way to track gas used.
30
+ *
31
+ * @export
32
+ * @class V3HeuristicGasModelFactory
33
+ */
34
+ class V3HeuristicGasModelFactory extends gas_model_1.IOnChainGasModelFactory {
35
+ constructor() {
36
+ super();
37
+ }
38
+ async buildGasModel({ chainId, gasPriceWei, v3poolProvider: poolProvider, amountToken, quoteToken, }) {
39
+ const usdPool = await (0, gas_factory_helpers_1.getHighestLiquidityV3USDPool)(chainId, poolProvider);
40
+ const calculateL1GasFees = async () => {
41
+ let l1Used = bignumber_1.BigNumber.from(0);
42
+ let l1FeeInWei = bignumber_1.BigNumber.from(0);
43
+ // wrap fee to native currency
44
+ const nativeCurrency = __1.WRAPPED_NATIVE_CURRENCY[chainId];
45
+ const costNativeCurrency = amounts_1.CurrencyAmount.fromRawAmount(nativeCurrency, l1FeeInWei.toString());
46
+ // convert fee into usd
47
+ const nativeTokenPrice = usdPool.token0.address == nativeCurrency.address
48
+ ? usdPool.token0Price
49
+ : usdPool.token1Price;
50
+ const gasCostL1USD = nativeTokenPrice.quote(costNativeCurrency);
51
+ let gasCostL1QuoteToken = costNativeCurrency;
52
+ // 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
53
+ if (!quoteToken.equals(nativeCurrency)) {
54
+ const nativePool = await (0, gas_factory_helpers_1.getHighestLiquidityV3NativePool)(quoteToken, poolProvider);
55
+ if (!nativePool) {
56
+ log_1.log.info('Could not find a pool to convert the cost into the quote token');
57
+ gasCostL1QuoteToken = amounts_1.CurrencyAmount.fromRawAmount(quoteToken, 0);
58
+ }
59
+ else {
60
+ const nativeTokenPrice = nativePool.token0.address == nativeCurrency.address
61
+ ? nativePool.token0Price
62
+ : nativePool.token1Price;
63
+ gasCostL1QuoteToken = nativeTokenPrice.quote(costNativeCurrency);
64
+ }
65
+ }
66
+ // gasUsedL1 is the gas units used calculated from the bytes of the calldata
67
+ // gasCostL1USD and gasCostL1QuoteToken is the cost of gas in each of those tokens
68
+ return {
69
+ gasUsedL1: l1Used,
70
+ gasCostL1USD,
71
+ gasCostL1QuoteToken,
72
+ };
73
+ };
74
+ // If our quote token is WETH, we don't need to convert our gas use to be in terms
75
+ // of the quote token in order to produce a gas adjusted amount.
76
+ // We do return a gas use in USD however, so we still convert to usd.
77
+ const nativeCurrency = __1.WRAPPED_NATIVE_CURRENCY[chainId];
78
+ if (quoteToken.equals(nativeCurrency)) {
79
+ const estimateGasCost = (routeWithValidQuote) => {
80
+ const { totalGasCostNativeCurrency, baseGasUse } = this.estimateGas(routeWithValidQuote, gasPriceWei, chainId);
81
+ const token0 = usdPool.token0.address == nativeCurrency.address;
82
+ const nativeTokenPrice = token0
83
+ ? usdPool.token0Price
84
+ : usdPool.token1Price;
85
+ const gasCostInTermsOfUSD = nativeTokenPrice.quote(totalGasCostNativeCurrency);
86
+ return {
87
+ gasEstimate: baseGasUse,
88
+ gasCostInToken: totalGasCostNativeCurrency,
89
+ gasCostInUSD: gasCostInTermsOfUSD,
90
+ };
91
+ };
92
+ return {
93
+ estimateGasCost,
94
+ calculateL1GasFees,
95
+ };
96
+ }
97
+ // If the quote token is not in the native currency, we convert the gas cost to be in terms of the quote token.
98
+ // We do this by getting the highest liquidity <quoteToken>/<nativeCurrency> pool. eg. <quoteToken>/ETH pool.
99
+ const nativePool = await (0, gas_factory_helpers_1.getHighestLiquidityV3NativePool)(quoteToken, poolProvider);
100
+ let nativeAmountPool = null;
101
+ if (!amountToken.equals(nativeCurrency)) {
102
+ nativeAmountPool = await (0, gas_factory_helpers_1.getHighestLiquidityV3NativePool)(amountToken, poolProvider);
103
+ }
104
+ const usdToken = usdPool.token0.address == nativeCurrency.address
105
+ ? usdPool.token1
106
+ : usdPool.token0;
107
+ const estimateGasCost = (routeWithValidQuote) => {
108
+ const { totalGasCostNativeCurrency, baseGasUse } = this.estimateGas(routeWithValidQuote, gasPriceWei, chainId);
109
+ let gasCostInTermsOfQuoteToken = null;
110
+ if (nativePool) {
111
+ const token0 = nativePool.token0.address == nativeCurrency.address;
112
+ // returns mid price in terms of the native currency (the ratio of quoteToken/nativeToken)
113
+ const nativeTokenPrice = token0
114
+ ? nativePool.token0Price
115
+ : nativePool.token1Price;
116
+ try {
117
+ // native token is base currency
118
+ gasCostInTermsOfQuoteToken = nativeTokenPrice.quote(totalGasCostNativeCurrency);
119
+ }
120
+ catch (err) {
121
+ log_1.log.info({
122
+ nativeTokenPriceBase: nativeTokenPrice.baseCurrency,
123
+ nativeTokenPriceQuote: nativeTokenPrice.quoteCurrency,
124
+ gasCostInEth: totalGasCostNativeCurrency.currency,
125
+ }, 'Debug eth price token issue');
126
+ throw err;
127
+ }
128
+ }
129
+ // we have a nativeAmountPool, but not a nativePool
130
+ else {
131
+ log_1.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.`);
132
+ }
133
+ // Highest liquidity pool for the non quote token / ETH
134
+ // A pool with the non quote token / ETH should not be required and errors should be handled separately
135
+ if (nativeAmountPool) {
136
+ // get current execution price (amountToken / quoteToken)
137
+ const executionPrice = new sdk_core_1.Price(routeWithValidQuote.amount.currency, routeWithValidQuote.quote.currency, routeWithValidQuote.amount.quotient, routeWithValidQuote.quote.quotient);
138
+ const inputIsToken0 = nativeAmountPool.token0.address == nativeCurrency.address;
139
+ // ratio of input / native
140
+ const nativeAmountTokenPrice = inputIsToken0
141
+ ? nativeAmountPool.token0Price
142
+ : nativeAmountPool.token1Price;
143
+ const gasCostInTermsOfAmountToken = nativeAmountTokenPrice.quote(totalGasCostNativeCurrency);
144
+ // Convert gasCostInTermsOfAmountToken to quote token using execution price
145
+ const syntheticGasCostInTermsOfQuoteToken = executionPrice.quote(gasCostInTermsOfAmountToken);
146
+ // Note that the syntheticGasCost being lessThan the original quoted value is not always strictly better
147
+ // e.g. the scenario where the amountToken/ETH pool is very illiquid as well and returns an extremely small number
148
+ // however, it is better to have the gasEstimation be almost 0 than almost infinity, as the user will still receive a quote
149
+ if (gasCostInTermsOfQuoteToken === null ||
150
+ syntheticGasCostInTermsOfQuoteToken.lessThan(gasCostInTermsOfQuoteToken.asFraction)) {
151
+ log_1.log.info({
152
+ nativeAmountTokenPrice: nativeAmountTokenPrice.toSignificant(6),
153
+ gasCostInTermsOfQuoteToken: gasCostInTermsOfQuoteToken
154
+ ? gasCostInTermsOfQuoteToken.toExact()
155
+ : 0,
156
+ gasCostInTermsOfAmountToken: gasCostInTermsOfAmountToken.toExact(),
157
+ executionPrice: executionPrice.toSignificant(6),
158
+ syntheticGasCostInTermsOfQuoteToken: syntheticGasCostInTermsOfQuoteToken.toSignificant(6),
159
+ }, 'New gasCostInTermsOfQuoteToken calculated with synthetic quote token price is less than original');
160
+ gasCostInTermsOfQuoteToken = syntheticGasCostInTermsOfQuoteToken;
161
+ }
162
+ }
163
+ // true if token0 is the native currency
164
+ const token0USDPool = usdPool.token0.address == nativeCurrency.address;
165
+ // gets the mid price of the pool in terms of the native token
166
+ const nativeTokenPriceUSDPool = token0USDPool
167
+ ? usdPool.token0Price
168
+ : usdPool.token1Price;
169
+ let gasCostInTermsOfUSD;
170
+ try {
171
+ gasCostInTermsOfUSD = nativeTokenPriceUSDPool.quote(totalGasCostNativeCurrency);
172
+ }
173
+ catch (err) {
174
+ log_1.log.info({
175
+ usdT1: usdPool.token0.symbol,
176
+ usdT2: usdPool.token1.symbol,
177
+ gasCostInNativeToken: totalGasCostNativeCurrency.currency.symbol,
178
+ }, 'Failed to compute USD gas price');
179
+ throw err;
180
+ }
181
+ // If gasCostInTermsOfQuoteToken is null, both attempts to calculate gasCostInTermsOfQuoteToken failed (nativePool and amountNativePool)
182
+ if (gasCostInTermsOfQuoteToken === null) {
183
+ log_1.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.`);
184
+ return {
185
+ gasEstimate: baseGasUse,
186
+ gasCostInToken: amounts_1.CurrencyAmount.fromRawAmount(quoteToken, 0),
187
+ gasCostInUSD: amounts_1.CurrencyAmount.fromRawAmount(usdToken, 0),
188
+ };
189
+ }
190
+ return {
191
+ gasEstimate: baseGasUse,
192
+ gasCostInToken: gasCostInTermsOfQuoteToken,
193
+ gasCostInUSD: gasCostInTermsOfUSD,
194
+ };
195
+ };
196
+ return {
197
+ estimateGasCost: estimateGasCost.bind(this),
198
+ calculateL1GasFees,
199
+ };
200
+ }
201
+ estimateGas(routeWithValidQuote, gasPriceWei, chainId) {
202
+ const totalInitializedTicksCrossed = bignumber_1.BigNumber.from(Math.max(1, lodash_1.default.sum(routeWithValidQuote.initializedTicksCrossedList)));
203
+ const totalHops = bignumber_1.BigNumber.from(routeWithValidQuote.route.pools.length);
204
+ const hopsGasUse = (0, gas_costs_1.COST_PER_HOP)(chainId).mul(totalHops);
205
+ const tickGasUse = (0, gas_costs_1.COST_PER_INIT_TICK)(chainId).mul(totalInitializedTicksCrossed);
206
+ const uninitializedTickGasUse = gas_costs_1.COST_PER_UNINIT_TICK.mul(0);
207
+ // base estimate gas used based on chainId estimates for hops and ticks gas useage
208
+ const baseGasUse = (0, gas_costs_1.BASE_SWAP_COST)(chainId)
209
+ .add(hopsGasUse)
210
+ .add(tickGasUse)
211
+ .add(uninitializedTickGasUse);
212
+ const baseGasCostWei = gasPriceWei.mul(baseGasUse);
213
+ const wrappedCurrency = __1.WRAPPED_NATIVE_CURRENCY[chainId];
214
+ const totalGasCostNativeCurrency = amounts_1.CurrencyAmount.fromRawAmount(wrappedCurrency, baseGasCostWei.toString());
215
+ return {
216
+ totalGasCostNativeCurrency,
217
+ totalInitializedTicksCrossed,
218
+ baseGasUse,
219
+ };
220
+ }
221
+ }
222
+ exports.V3HeuristicGasModelFactory = V3HeuristicGasModelFactory;
223
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidjMtaGV1cmlzdGljLWdhcy1tb2RlbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9yb3V0ZXJzL2FscGhhLXJvdXRlci9nYXMtbW9kZWxzL3YzL3YzLWhldXJpc3RpYy1nYXMtbW9kZWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsd0RBQXFEO0FBQ3JELGdEQUEwQztBQUUxQyxvREFBdUI7QUFFdkIsbUNBQXNEO0FBRXRELHNEQUEwRDtBQUMxRCw4RUFHOEM7QUFDOUMsOENBQTJDO0FBRTNDLDRDQUlzQjtBQUV0QiwyQ0FLcUI7QUFFckI7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBaUJHO0FBQ0gsTUFBYSwwQkFBMkIsU0FBUSxtQ0FBdUI7SUFDckU7UUFDRSxLQUFLLEVBQUUsQ0FBQztJQUNWLENBQUM7SUFFTSxLQUFLLENBQUMsYUFBYSxDQUFDLEVBQ3pCLE9BQU8sRUFDUCxXQUFXLEVBQ1gsY0FBYyxFQUFFLFlBQVksRUFDNUIsV0FBVyxFQUNYLFVBQVUsR0FFbUI7UUFDN0IsTUFBTSxPQUFPLEdBQVMsTUFBTSxJQUFBLGtEQUE0QixFQUN0RCxPQUFPLEVBQ1AsWUFBWSxDQUNiLENBQUM7UUFFRixNQUFNLGtCQUFrQixHQUFHLEtBQUssSUFJN0IsRUFBRTtZQUNILElBQUksTUFBTSxHQUFHLHFCQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQy9CLElBQUksVUFBVSxHQUFHLHFCQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBRW5DLDhCQUE4QjtZQUM5QixNQUFNLGNBQWMsR0FBRywyQkFBdUIsQ0FBQyxPQUFPLENBQUMsQ0FBQztZQUN4RCxNQUFNLGtCQUFrQixHQUFHLHdCQUFjLENBQUMsYUFBYSxDQUNyRCxjQUFjLEVBQ2QsVUFBVSxDQUFDLFFBQVEsRUFBRSxDQUN0QixDQUFDO1lBRUYsdUJBQXVCO1lBQ3ZCLE1BQU0sZ0JBQWdCLEdBQ3BCLE9BQU8s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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,21 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./alpha-router"), exports);
18
+ __exportStar(require("./entities"), exports);
19
+ __exportStar(require("./gas-models"), exports);
20
+ __exportStar(require("./quoters"), exports);
21
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvcm91dGVycy9hbHBoYS1yb3V0ZXIvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLGlEQUErQjtBQUMvQiw2Q0FBMkI7QUFDM0IsK0NBQTZCO0FBQzdCLDRDQUEwQiJ9
@@ -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,61 @@
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.BaseQuoter = void 0;
7
+ const lodash_1 = __importDefault(require("lodash"));
8
+ const util_1 = require("../../../util");
9
+ /**
10
+ * Interface for a Quoter.
11
+ * Defines the base dependencies, helper methods and interface for how to fetch quotes.
12
+ *
13
+ * @abstract
14
+ * @template Route
15
+ */
16
+ class BaseQuoter {
17
+ constructor(tokenProvider, chainId, blockedTokenListProvider, tokenValidatorProvider) {
18
+ this.tokenProvider = tokenProvider;
19
+ this.chainId = chainId;
20
+ this.blockedTokenListProvider = blockedTokenListProvider;
21
+ this.tokenValidatorProvider = tokenValidatorProvider;
22
+ }
23
+ /**
24
+ * Public method which would first get the routes and then get the quotes.
25
+ *
26
+ * @param tokenIn The token that the user wants to provide
27
+ * @param tokenOut The token that the usaw wants to receive
28
+ * @param amounts the list of amounts to query for EACH route.
29
+ * @param percents the percentage of each amount.
30
+ * @param quoteToken
31
+ * @param tradeType
32
+ * @param routingConfig
33
+ * @param gasModel the gasModel to be used for estimating gas cost
34
+ * @param gasPriceWei instead of passing gasModel, gasPriceWei is used to generate a gasModel
35
+ */
36
+ getRoutesThenQuotes(tokenIn, tokenOut, amounts, percents, quoteToken, tradeType, routingConfig, gasModel, gasPriceWei) {
37
+ return this.getRoutes(tokenIn, tokenOut, tradeType, routingConfig)
38
+ .then((routesResult) => this.getQuotes(routesResult.routes, amounts, percents, quoteToken, tradeType, routingConfig, routesResult.candidatePools, gasModel, gasPriceWei));
39
+ }
40
+ async applyTokenValidatorToPools(pools, isInvalidFn) {
41
+ if (!this.tokenValidatorProvider) {
42
+ return pools;
43
+ }
44
+ util_1.log.info(`Running token validator on ${pools.length} pools`);
45
+ const tokens = lodash_1.default.flatMap(pools, (pool) => [pool.token0, pool.token1]);
46
+ const tokenValidationResults = await this.tokenValidatorProvider.validateTokens(tokens);
47
+ const poolsFiltered = lodash_1.default.filter(pools, (pool) => {
48
+ const token0Validation = tokenValidationResults.getValidationByToken(pool.token0);
49
+ const token1Validation = tokenValidationResults.getValidationByToken(pool.token1);
50
+ const token0Invalid = isInvalidFn(pool.token0, token0Validation);
51
+ const token1Invalid = isInvalidFn(pool.token1, token1Validation);
52
+ if (token0Invalid || token1Invalid) {
53
+ util_1.log.info(`Dropping pool ${(0, util_1.poolToString)(pool)} because token is invalid. ${pool.token0.symbol}: ${token0Validation}, ${pool.token1.symbol}: ${token1Validation}`);
54
+ }
55
+ return !token0Invalid && !token1Invalid;
56
+ });
57
+ return poolsFiltered;
58
+ }
59
+ }
60
+ exports.BaseQuoter = BaseQuoter;
61
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS1xdW90ZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvcm91dGVycy9hbHBoYS1yb3V0ZXIvcXVvdGVycy9iYXNlLXF1b3Rlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFJQSxvREFBdUI7QUFHdkIsd0NBQTJFO0FBUzNFOzs7Ozs7R0FNRztBQUNILE1BQXNCLFVBQVU7SUFNOUIsWUFDRSxhQUE2QixFQUM3QixPQUFnQixFQUNoQix3QkFBNkMsRUFDN0Msc0JBQWdEO1FBRWhELElBQUksQ0FBQyxhQUFhLEdBQUcsYUFBYSxDQUFDO1FBQ25DLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO1FBQ3ZCLElBQUksQ0FBQyx3QkFBd0IsR0FBRyx3QkFBd0IsQ0FBQztRQUN6RCxJQUFJLENBQUMsc0JBQXNCLEdBQUcsc0JBQXNCLENBQUM7SUFDdkQsQ0FBQztJQThDRDs7Ozs7Ozs7Ozs7O09BWUc7SUFDSSxtQkFBbUIsQ0FDeEIsT0FBYyxFQUNkLFFBQWUsRUFDZixPQUF5QixFQUN6QixRQUFrQixFQUNsQixVQUFpQixFQUNqQixTQUFvQixFQUNwQixhQUFnQyxFQUNoQyxRQUF5QyxFQUN6QyxXQUF1QjtRQUV2QixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxFQUFFLFFBQVEsRUFBRSxTQUFTLEVBQUUsYUFBYSxDQUFDO2FBQy9ELElBQUksQ0FBQyxDQUFDLFlBQVksRUFBRSxFQUFFLENBQ3JCLElBQUksQ0FBQyxTQUFTLENBQ1osWUFBWSxDQUFDLE1BQU0sRUFDbkIsT0FBTyxFQUNQLFFBQVEsRUFDUixVQUFVLEVBQ1YsU0FBUyxFQUNULGFBQWEsRUFDYixZQUFZLENBQUMsY0FBYyxFQUMzQixRQUFRLEVBQ1IsV0FBVyxDQUNaLENBQ0YsQ0FBQztJQUNOLENBQUM7SUFFUyxLQUFLLENBQUMsMEJBQTBCLENBQ3hDLEtBQVUsRUFDVixXQUdZO1FBRVosSUFBSSxDQUFDLElBQUksQ0FBQyxzQkFBc0IsRUFBRTtZQUNoQyxPQUFPLEtBQUssQ0FBQztTQUNkO1FBRUQsVUFBRyxDQUFDLElBQUksQ0FBQyw4QkFBOEIsS0FBSyxDQUFDLE1BQU0sUUFBUSxDQUFDLENBQUM7UUFFN0QsTUFBTSxNQUFNLEdBQUcsZ0JBQUMsQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7UUFFdEUsTUFBTSxzQkFBc0IsR0FBRyxNQUFNLElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLENBQUM7UUFFeEYsTUFBTSxhQUFhLEdBQUcsZ0JBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUMsSUFBTyxFQUFFLEVBQUU7WUFDaEQsTUFBTSxnQkFBZ0IsR0FBRyxzQkFBc0IsQ0FBQyxvQkFBb0IsQ0FDbEUsSUFBSSxDQUFDLE1BQU0sQ0FDWixDQUFDO1lBQ0YsTUFBTSxnQkFBZ0IsR0FBRyxzQkFBc0IsQ0FBQyxvQkFBb0IsQ0FDbEUsSUFBSSxDQUFDLE1BQU0sQ0FDWixDQUFDO1lBRUYsTUFBTSxhQUFhLEdBQUcsV0FBVyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztZQUNqRSxNQUFNLGFBQWEsR0FBRyxXQUFXLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDO1lBRWpFLElBQUksYUFBYSxJQUFJLGFBQWEsRUFBRTtnQkFDbEMsVUFBRyxDQUFDLElBQUksQ0FDTixpQkFBaUIsSUFBQSxtQkFBWSxFQUFDLElBQUksQ0FBQyw4QkFBOEIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUM3RSxLQUFLLGdCQUFnQixLQUFLLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxLQUFLLGdCQUFnQixFQUFFLENBQ3BFLENBQUM7YUFDSDtZQUVELE9BQU8sQ0FBQyxhQUFhLElBQUksQ0FBQyxhQUFhLENBQUM7UUFDMUMsQ0FBQyxDQUFDLENBQUM7UUFFSCxPQUFPLGFBQWEsQ0FBQztJQUN2QixDQUFDO0NBQ0Y7QUE5SUQsZ0NBOElDIn0=
@@ -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,22 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./model/"), exports);
18
+ __exportStar(require("./base-quoter"), exports);
19
+ __exportStar(require("./v2-quoter"), exports);
20
+ __exportStar(require("./v3-quoter"), exports);
21
+ __exportStar(require("./mixed-quoter"), exports);
22
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvcm91dGVycy9hbHBoYS1yb3V0ZXIvcXVvdGVycy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsMkNBQXlCO0FBQ3pCLGdEQUE4QjtBQUM5Qiw4Q0FBNEI7QUFDNUIsOENBQTRCO0FBQzVCLGlEQUErQiJ9
@@ -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,130 @@
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.MixedQuoter = void 0;
7
+ const sdk_core_1 = require("@uniswap/sdk-core");
8
+ const lodash_1 = __importDefault(require("lodash"));
9
+ const providers_1 = require("../../../providers");
10
+ const util_1 = require("../../../util");
11
+ const entities_1 = require("../entities");
12
+ const compute_all_routes_1 = require("../functions/compute-all-routes");
13
+ const get_candidate_pools_1 = require("../functions/get-candidate-pools");
14
+ const base_quoter_1 = require("./base-quoter");
15
+ class MixedQuoter extends base_quoter_1.BaseQuoter {
16
+ constructor(v3SubgraphProvider, v3PoolProvider, v2SubgraphProvider, v2PoolProvider, onChainQuoteProvider, tokenProvider, chainId, blockedTokenListProvider, tokenValidatorProvider) {
17
+ super(tokenProvider, chainId, blockedTokenListProvider, tokenValidatorProvider);
18
+ this.v3SubgraphProvider = v3SubgraphProvider;
19
+ this.v3PoolProvider = v3PoolProvider;
20
+ this.v2SubgraphProvider = v2SubgraphProvider;
21
+ this.v2PoolProvider = v2PoolProvider;
22
+ this.onChainQuoteProvider = onChainQuoteProvider;
23
+ }
24
+ async getRoutes(tokenIn, tokenOut, tradeType, routingConfig) {
25
+ if (tradeType != sdk_core_1.TradeType.EXACT_INPUT) {
26
+ throw new Error('Mixed route quotes are not supported for EXACT_OUTPUT');
27
+ }
28
+ const { V2poolAccessor, V3poolAccessor, candidatePools: mixedRouteCandidatePools, } = await (0, get_candidate_pools_1.getMixedRouteCandidatePools)({
29
+ tokenIn,
30
+ tokenOut,
31
+ tokenProvider: this.tokenProvider,
32
+ blockedTokenListProvider: this.blockedTokenListProvider,
33
+ v3poolProvider: this.v3PoolProvider,
34
+ v2poolProvider: this.v2PoolProvider,
35
+ routeType: tradeType,
36
+ v3subgraphProvider: this.v3SubgraphProvider,
37
+ v2subgraphProvider: this.v2SubgraphProvider,
38
+ routingConfig,
39
+ chainId: this.chainId,
40
+ });
41
+ const V3poolsRaw = V3poolAccessor.getAllPools();
42
+ const V2poolsRaw = V2poolAccessor.getAllPools();
43
+ const poolsRaw = [...V3poolsRaw, ...V2poolsRaw];
44
+ const candidatePools = mixedRouteCandidatePools;
45
+ // Drop any pools that contain fee on transfer tokens (not supported by v3) or have issues with being transferred.
46
+ const pools = await this.applyTokenValidatorToPools(poolsRaw, (token, tokenValidation) => {
47
+ // If there is no available validation result we assume the token is fine.
48
+ if (!tokenValidation) {
49
+ return false;
50
+ }
51
+ // Only filters out *intermediate* pools that involve tokens that we detect
52
+ // cant be transferred. This prevents us trying to route through tokens that may
53
+ // not be transferrable, but allows users to still swap those tokens if they
54
+ // specify.
55
+ //
56
+ if (tokenValidation == providers_1.TokenValidationResult.STF &&
57
+ (token.equals(tokenIn) || token.equals(tokenOut))) {
58
+ return false;
59
+ }
60
+ return (tokenValidation == providers_1.TokenValidationResult.FOT ||
61
+ tokenValidation == providers_1.TokenValidationResult.STF);
62
+ });
63
+ const { maxSwapsPerPath } = routingConfig;
64
+ const routes = (0, compute_all_routes_1.computeAllMixedRoutes)(tokenIn, tokenOut, pools, maxSwapsPerPath);
65
+ return {
66
+ routes,
67
+ candidatePools
68
+ };
69
+ }
70
+ async getQuotes(routes, amounts, percents, quoteToken, tradeType, routingConfig, candidatePools, gasModel) {
71
+ util_1.log.info('Starting to get mixed quotes');
72
+ if (gasModel === undefined) {
73
+ throw new Error('GasModel for MixedRouteWithValidQuote is required to getQuotes');
74
+ }
75
+ if (routes.length == 0) {
76
+ return { routesWithValidQuotes: [], candidatePools };
77
+ }
78
+ // For all our routes, and all the fractional amounts, fetch quotes on-chain.
79
+ const quoteFn = this.onChainQuoteProvider.getQuotesManyExactIn.bind(this.onChainQuoteProvider);
80
+ const beforeQuotes = Date.now();
81
+ util_1.log.info(`Getting quotes for mixed for ${routes.length} routes with ${amounts.length} amounts per route.`);
82
+ const { routesWithQuotes } = await quoteFn(amounts, routes, {
83
+ blockNumber: routingConfig.blockNumber,
84
+ });
85
+ util_1.metric.putMetric('MixedQuotesLoad', Date.now() - beforeQuotes, util_1.MetricLoggerUnit.Milliseconds);
86
+ util_1.metric.putMetric('MixedQuotesFetched', (0, lodash_1.default)(routesWithQuotes)
87
+ .map(([, quotes]) => quotes.length)
88
+ .sum(), util_1.MetricLoggerUnit.Count);
89
+ const routesWithValidQuotes = [];
90
+ for (const routeWithQuote of routesWithQuotes) {
91
+ const [route, quotes] = routeWithQuote;
92
+ for (let i = 0; i < quotes.length; i++) {
93
+ const percent = percents[i];
94
+ const amountQuote = quotes[i];
95
+ const { quote, amount, sqrtPriceX96AfterList, initializedTicksCrossedList, gasEstimate, } = amountQuote;
96
+ if (!quote ||
97
+ !sqrtPriceX96AfterList ||
98
+ !initializedTicksCrossedList ||
99
+ !gasEstimate) {
100
+ util_1.log.debug({
101
+ route: (0, util_1.routeToString)(route),
102
+ amountQuote,
103
+ }, 'Dropping a null mixed quote for route.');
104
+ continue;
105
+ }
106
+ const routeWithValidQuote = new entities_1.MixedRouteWithValidQuote({
107
+ route,
108
+ rawQuote: quote,
109
+ amount,
110
+ percent,
111
+ sqrtPriceX96AfterList,
112
+ initializedTicksCrossedList,
113
+ quoterGasEstimate: gasEstimate,
114
+ mixedRouteGasModel: gasModel,
115
+ quoteToken,
116
+ tradeType,
117
+ v3PoolProvider: this.v3PoolProvider,
118
+ v2PoolProvider: this.v2PoolProvider,
119
+ });
120
+ routesWithValidQuotes.push(routeWithValidQuote);
121
+ }
122
+ }
123
+ return {
124
+ routesWithValidQuotes,
125
+ candidatePools
126
+ };
127
+ }
128
+ }
129
+ exports.MixedQuoter = MixedQuoter;
130
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWl4ZWQtcXVvdGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL3JvdXRlcnMvYWxwaGEtcm91dGVyL3F1b3RlcnMvbWl4ZWQtcXVvdGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLGdEQUErRDtBQUMvRCxvREFBdUI7QUFFdkIsa0RBVTRCO0FBQzVCLHdDQUFzRztBQUd0RywwQ0FBdUQ7QUFDdkQsd0VBQXdFO0FBQ3hFLDBFQUFrSDtBQUdsSCwrQ0FBMkM7QUFHM0MsTUFBYSxXQUFZLFNBQVEsd0JBQXNCO0lBT3JELFlBQ0Usa0JBQXVDLEVBQ3ZDLGNBQStCLEVBQy9CLGtCQUF1QyxFQUN2QyxjQUErQixFQUMvQixvQkFBMkMsRUFDM0MsYUFBNkIsRUFDN0IsT0FBZ0IsRUFDaEIsd0JBQTZDLEVBQzdDLHNCQUFnRDtRQUVoRCxLQUFLLENBQUMsYUFBYSxFQUFFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxzQkFBc0IsQ0FBQyxDQUFDO1FBQ2hGLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxrQkFBa0IsQ0FBQztRQUM3QyxJQUFJLENBQUMsY0FBYyxHQUFHLGNBQWMsQ0FBQztRQUNyQyxJQUFJLENBQUMsa0JBQWtCLEdBQUcsa0JBQWtCLENBQUM7UUFDN0MsSUFBSSxDQUFDLGNBQWMsR0FBRyxjQUFjLENBQUM7UUFDckMsSUFBSSxDQUFDLG9CQUFvQixHQUFHLG9CQUFvQixDQUFDO0lBQ25ELENBQUM7SUFFUyxLQUFLLENBQUMsU0FBUyxDQUN2QixPQUFjLEVBQ2QsUUFBZSxFQUNmLFNBQW9CLEVBQ3BCLGFBQWdDO1FBRWhDLElBQUksU0FBUyxJQUFJLG9CQUFTLENBQUMsV0FBVyxFQUFFO1lBQ3RDLE1BQU0sSUFBSSxLQUFLLENBQUMsdURBQXVELENBQUMsQ0FBQztTQUMxRTtRQUVELE1BQU0sRUFDSixjQUFjLEVBQ2QsY0FBYyxFQUNkLGNBQWMsRUFBRSx3QkFBd0IsR0FDekMsR0FBRyxNQUFN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
@@ -0,0 +1 @@
1
+ export * from './results';
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./results"), exports);
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvcm91dGVycy9hbHBoYS1yb3V0ZXIvcXVvdGVycy9tb2RlbC9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsNENBQTBCIn0=
@@ -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,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# 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
+ }