@fanx-protocol/smart-order-router 0.0.1

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 (438) hide show
  1. package/CHANGELOG.md +255 -0
  2. package/LICENSE +674 -0
  3. package/README.md +273 -0
  4. package/build/main/index.d.ts +3 -0
  5. package/build/main/index.js +20 -0
  6. package/build/main/providers/cache-node.d.ts +10 -0
  7. package/build/main/providers/cache-node.js +33 -0
  8. package/build/main/providers/cache.d.ts +14 -0
  9. package/build/main/providers/cache.js +3 -0
  10. package/build/main/providers/caching/route/index.d.ts +2 -0
  11. package/build/main/providers/caching/route/index.js +19 -0
  12. package/build/main/providers/caching/route/model/cache-mode.d.ts +16 -0
  13. package/build/main/providers/caching/route/model/cache-mode.js +21 -0
  14. package/build/main/providers/caching/route/model/cached-route.d.ts +29 -0
  15. package/build/main/providers/caching/route/model/cached-route.js +89 -0
  16. package/build/main/providers/caching/route/model/cached-routes.d.ts +67 -0
  17. package/build/main/providers/caching/route/model/cached-routes.js +81 -0
  18. package/build/main/providers/caching/route/model/index.d.ts +3 -0
  19. package/build/main/providers/caching/route/model/index.js +20 -0
  20. package/build/main/providers/caching/route/route-caching-provider.d.ts +88 -0
  21. package/build/main/providers/caching/route/route-caching-provider.js +72 -0
  22. package/build/main/providers/caching-gas-provider.d.ts +23 -0
  23. package/build/main/providers/caching-gas-provider.js +41 -0
  24. package/build/main/providers/caching-subgraph-provider.d.ts +33 -0
  25. package/build/main/providers/caching-subgraph-provider.js +37 -0
  26. package/build/main/providers/caching-token-list-provider.d.ts +52 -0
  27. package/build/main/providers/caching-token-list-provider.js +147 -0
  28. package/build/main/providers/caching-token-provider.d.ts +24 -0
  29. package/build/main/providers/caching-token-provider.js +108 -0
  30. package/build/main/providers/eip-1559-gas-price-provider.d.ts +31 -0
  31. package/build/main/providers/eip-1559-gas-price-provider.js +71 -0
  32. package/build/main/providers/eth-estimate-gas-provider.d.ts +19 -0
  33. package/build/main/providers/eth-estimate-gas-provider.js +94 -0
  34. package/build/main/providers/eth-gas-station-info-gas-price-provider.d.ts +19 -0
  35. package/build/main/providers/eth-gas-station-info-gas-price-provider.js +36 -0
  36. package/build/main/providers/gas-price-provider.d.ts +10 -0
  37. package/build/main/providers/gas-price-provider.js +10 -0
  38. package/build/main/providers/index.d.ts +38 -0
  39. package/build/main/providers/index.js +55 -0
  40. package/build/main/providers/legacy-gas-price-provider.d.ts +7 -0
  41. package/build/main/providers/legacy-gas-price-provider.js +18 -0
  42. package/build/main/providers/multicall-provider.d.ts +83 -0
  43. package/build/main/providers/multicall-provider.js +15 -0
  44. package/build/main/providers/multicall-uniswap-provider.d.ts +37 -0
  45. package/build/main/providers/multicall-uniswap-provider.js +164 -0
  46. package/build/main/providers/on-chain-gas-price-provider.d.ts +19 -0
  47. package/build/main/providers/on-chain-gas-price-provider.js +36 -0
  48. package/build/main/providers/on-chain-quote-provider.d.ts +258 -0
  49. package/build/main/providers/on-chain-quote-provider.js +693 -0
  50. package/build/main/providers/pool-provider.d.ts +44 -0
  51. package/build/main/providers/pool-provider.js +73 -0
  52. package/build/main/providers/portion-provider.d.ts +86 -0
  53. package/build/main/providers/portion-provider.js +118 -0
  54. package/build/main/providers/provider.d.ts +38 -0
  55. package/build/main/providers/provider.js +3 -0
  56. package/build/main/providers/simulation-provider.d.ts +43 -0
  57. package/build/main/providers/simulation-provider.js +136 -0
  58. package/build/main/providers/static-gas-price-provider.d.ts +7 -0
  59. package/build/main/providers/static-gas-price-provider.js +13 -0
  60. package/build/main/providers/subgraph-provider-with-fallback.d.ts +11 -0
  61. package/build/main/providers/subgraph-provider-with-fallback.js +25 -0
  62. package/build/main/providers/subgraph-provider.d.ts +51 -0
  63. package/build/main/providers/subgraph-provider.js +120 -0
  64. package/build/main/providers/swap-router-provider.d.ts +30 -0
  65. package/build/main/providers/swap-router-provider.js +42 -0
  66. package/build/main/providers/token-fee-fetcher.d.ts +31 -0
  67. package/build/main/providers/token-fee-fetcher.js +108 -0
  68. package/build/main/providers/token-properties-provider.d.ts +31 -0
  69. package/build/main/providers/token-properties-provider.js +118 -0
  70. package/build/main/providers/token-provider.d.ts +38 -0
  71. package/build/main/providers/token-provider.js +175 -0
  72. package/build/main/providers/token-validator-provider.d.ts +42 -0
  73. package/build/main/providers/token-validator-provider.js +99 -0
  74. package/build/main/providers/uri-subgraph-provider.d.ts +20 -0
  75. package/build/main/providers/uri-subgraph-provider.js +65 -0
  76. package/build/main/providers/v2/caching-pool-provider.d.ts +33 -0
  77. package/build/main/providers/v2/caching-pool-provider.js +89 -0
  78. package/build/main/providers/v2/caching-subgraph-provider.d.ts +19 -0
  79. package/build/main/providers/v2/caching-subgraph-provider.js +24 -0
  80. package/build/main/providers/v2/pool-provider.d.ts +63 -0
  81. package/build/main/providers/v2/pool-provider.js +138 -0
  82. package/build/main/providers/v2/quote-provider.d.ts +34 -0
  83. package/build/main/providers/v2/quote-provider.js +90 -0
  84. package/build/main/providers/v2/static-subgraph-provider.d.ts +19 -0
  85. package/build/main/providers/v2/static-subgraph-provider.js +75 -0
  86. package/build/main/providers/v2/subgraph-provider-with-fallback.d.ts +16 -0
  87. package/build/main/providers/v2/subgraph-provider-with-fallback.js +23 -0
  88. package/build/main/providers/v2/subgraph-provider.d.ts +36 -0
  89. package/build/main/providers/v2/subgraph-provider.js +174 -0
  90. package/build/main/providers/v2/uri-subgraph-provider.d.ts +4 -0
  91. package/build/main/providers/v2/uri-subgraph-provider.js +8 -0
  92. package/build/main/providers/v3/caching-pool-provider.d.ts +32 -0
  93. package/build/main/providers/v3/caching-pool-provider.js +84 -0
  94. package/build/main/providers/v3/caching-subgraph-provider.d.ts +19 -0
  95. package/build/main/providers/v3/caching-subgraph-provider.js +24 -0
  96. package/build/main/providers/v3/gas-data-provider.d.ts +39 -0
  97. package/build/main/providers/v3/gas-data-provider.js +26 -0
  98. package/build/main/providers/v3/pool-provider.d.ts +77 -0
  99. package/build/main/providers/v3/pool-provider.js +108 -0
  100. package/build/main/providers/v3/static-subgraph-provider.d.ts +21 -0
  101. package/build/main/providers/v3/static-subgraph-provider.js +89 -0
  102. package/build/main/providers/v3/subgraph-provider-with-fallback.d.ts +12 -0
  103. package/build/main/providers/v3/subgraph-provider-with-fallback.js +19 -0
  104. package/build/main/providers/v3/subgraph-provider.d.ts +46 -0
  105. package/build/main/providers/v3/subgraph-provider.js +54 -0
  106. package/build/main/providers/v3/uri-subgraph-provider.d.ts +4 -0
  107. package/build/main/providers/v3/uri-subgraph-provider.js +8 -0
  108. package/build/main/routers/alpha-router/alpha-router.d.ts +347 -0
  109. package/build/main/routers/alpha-router/alpha-router.js +1219 -0
  110. package/build/main/routers/alpha-router/config.d.ts +4 -0
  111. package/build/main/routers/alpha-router/config.js +40 -0
  112. package/build/main/routers/alpha-router/entities/index.d.ts +1 -0
  113. package/build/main/routers/alpha-router/entities/index.js +18 -0
  114. package/build/main/routers/alpha-router/entities/route-with-valid-quote.d.ts +167 -0
  115. package/build/main/routers/alpha-router/entities/route-with-valid-quote.js +166 -0
  116. package/build/main/routers/alpha-router/functions/best-swap-route.d.ts +22 -0
  117. package/build/main/routers/alpha-router/functions/best-swap-route.js +534 -0
  118. package/build/main/routers/alpha-router/functions/calculate-ratio-amount-in.d.ts +3 -0
  119. package/build/main/routers/alpha-router/functions/calculate-ratio-amount-in.js +18 -0
  120. package/build/main/routers/alpha-router/functions/compute-all-routes.d.ts +9 -0
  121. package/build/main/routers/alpha-router/functions/compute-all-routes.js +104 -0
  122. package/build/main/routers/alpha-router/functions/get-candidate-pools.d.ts +100 -0
  123. package/build/main/routers/alpha-router/functions/get-candidate-pools.js +1008 -0
  124. package/build/main/routers/alpha-router/gas-models/gas-costs.d.ts +12 -0
  125. package/build/main/routers/alpha-router/gas-models/gas-costs.js +90 -0
  126. package/build/main/routers/alpha-router/gas-models/gas-model.d.ts +106 -0
  127. package/build/main/routers/alpha-router/gas-models/gas-model.js +68 -0
  128. package/build/main/routers/alpha-router/gas-models/index.d.ts +2 -0
  129. package/build/main/routers/alpha-router/gas-models/index.js +19 -0
  130. package/build/main/routers/alpha-router/gas-models/mixedRoute/mixed-route-heuristic-gas-model.d.ts +24 -0
  131. package/build/main/routers/alpha-router/gas-models/mixedRoute/mixed-route-heuristic-gas-model.js +161 -0
  132. package/build/main/routers/alpha-router/gas-models/tick-based-heuristic-gas-model.d.ts +15 -0
  133. package/build/main/routers/alpha-router/gas-models/tick-based-heuristic-gas-model.js +185 -0
  134. package/build/main/routers/alpha-router/gas-models/v2/v2-heuristic-gas-model.d.ts +31 -0
  135. package/build/main/routers/alpha-router/gas-models/v2/v2-heuristic-gas-model.js +169 -0
  136. package/build/main/routers/alpha-router/gas-models/v3/v3-heuristic-gas-model.d.ts +26 -0
  137. package/build/main/routers/alpha-router/gas-models/v3/v3-heuristic-gas-model.js +41 -0
  138. package/build/main/routers/alpha-router/index.d.ts +4 -0
  139. package/build/main/routers/alpha-router/index.js +21 -0
  140. package/build/main/routers/alpha-router/quoters/base-quoter.d.ts +76 -0
  141. package/build/main/routers/alpha-router/quoters/base-quoter.js +76 -0
  142. package/build/main/routers/alpha-router/quoters/index.d.ts +5 -0
  143. package/build/main/routers/alpha-router/quoters/index.js +22 -0
  144. package/build/main/routers/alpha-router/quoters/mixed-quoter.d.ts +28 -0
  145. package/build/main/routers/alpha-router/quoters/mixed-quoter.js +154 -0
  146. package/build/main/routers/alpha-router/quoters/model/index.d.ts +1 -0
  147. package/build/main/routers/alpha-router/quoters/model/index.js +18 -0
  148. package/build/main/routers/alpha-router/quoters/model/results/get-quotes-result.d.ts +6 -0
  149. package/build/main/routers/alpha-router/quoters/model/results/get-quotes-result.js +3 -0
  150. package/build/main/routers/alpha-router/quoters/model/results/get-routes-result.d.ts +6 -0
  151. package/build/main/routers/alpha-router/quoters/model/results/get-routes-result.js +3 -0
  152. package/build/main/routers/alpha-router/quoters/model/results/index.d.ts +2 -0
  153. package/build/main/routers/alpha-router/quoters/model/results/index.js +19 -0
  154. package/build/main/routers/alpha-router/quoters/v2-quoter.d.ts +24 -0
  155. package/build/main/routers/alpha-router/quoters/v2-quoter.js +140 -0
  156. package/build/main/routers/alpha-router/quoters/v3-quoter.d.ts +19 -0
  157. package/build/main/routers/alpha-router/quoters/v3-quoter.js +117 -0
  158. package/build/main/routers/index.d.ts +3 -0
  159. package/build/main/routers/index.js +20 -0
  160. package/build/main/routers/router.d.ts +186 -0
  161. package/build/main/routers/router.js +55 -0
  162. package/build/main/tsconfig.tsbuildinfo +1 -0
  163. package/build/main/types/other/commons.d.ts +16 -0
  164. package/build/main/types/other/commons.js +6 -0
  165. package/build/main/types/other/factories/Erc20__factory.d.ts +45 -0
  166. package/build/main/types/other/factories/Erc20__factory.js +240 -0
  167. package/build/main/types/other/factories/GasDataArbitrum__factory.d.ts +18 -0
  168. package/build/main/types/other/factories/GasDataArbitrum__factory.js +58 -0
  169. package/build/main/types/other/factories/IMixedRouteQuoterV1__factory.d.ts +41 -0
  170. package/build/main/types/other/factories/IMixedRouteQuoterV1__factory.js +156 -0
  171. package/build/main/types/other/factories/ITokenValidator__factory.d.ts +22 -0
  172. package/build/main/types/other/factories/ITokenValidator__factory.js +78 -0
  173. package/build/main/types/other/factories/MixedRouteQuoterV2__factory.d.ts +86 -0
  174. package/build/main/types/other/factories/MixedRouteQuoterV2__factory.js +477 -0
  175. package/build/main/types/other/factories/Permit2__factory.d.ts +87 -0
  176. package/build/main/types/other/factories/Permit2__factory.js +936 -0
  177. package/build/main/types/other/factories/SwapRouter02__factory.d.ts +67 -0
  178. package/build/main/types/other/factories/SwapRouter02__factory.js +1098 -0
  179. package/build/main/types/other/factories/TokenFeeDetector__factory.d.ts +47 -0
  180. package/build/main/types/other/factories/TokenFeeDetector__factory.js +243 -0
  181. package/build/main/types/v2/commons.d.ts +16 -0
  182. package/build/main/types/v2/commons.js +6 -0
  183. package/build/main/types/v2/factories/IUniswapV2Pair__factory.d.ts +35 -0
  184. package/build/main/types/v2/factories/IUniswapV2Pair__factory.js +671 -0
  185. package/build/main/types/v3/commons.d.ts +16 -0
  186. package/build/main/types/v3/commons.js +6 -0
  187. package/build/main/types/v3/factories/IERC20Metadata__factory.d.ts +35 -0
  188. package/build/main/types/v3/factories/IERC20Metadata__factory.js +242 -0
  189. package/build/main/types/v3/factories/IQuoterV2__factory.d.ts +41 -0
  190. package/build/main/types/v3/factories/IQuoterV2__factory.js +220 -0
  191. package/build/main/types/v3/factories/IUniswapV3PoolState__factory.d.ts +22 -0
  192. package/build/main/types/v3/factories/IUniswapV3PoolState__factory.js +266 -0
  193. package/build/main/types/v3/factories/UniswapInterfaceMulticall__factory.d.ts +61 -0
  194. package/build/main/types/v3/factories/UniswapInterfaceMulticall__factory.js +127 -0
  195. package/build/main/util/addresses.d.ts +24 -0
  196. package/build/main/util/addresses.js +76 -0
  197. package/build/main/util/amounts.d.ts +9 -0
  198. package/build/main/util/amounts.js +73 -0
  199. package/build/main/util/chains.d.ts +31 -0
  200. package/build/main/util/chains.js +97 -0
  201. package/build/main/util/gas-factory-helpers.d.ts +33 -0
  202. package/build/main/util/gas-factory-helpers.js +463 -0
  203. package/build/main/util/index.d.ts +7 -0
  204. package/build/main/util/index.js +24 -0
  205. package/build/main/util/l2FeeChains.d.ts +2 -0
  206. package/build/main/util/l2FeeChains.js +13 -0
  207. package/build/main/util/log.d.ts +3 -0
  208. package/build/main/util/log.js +97 -0
  209. package/build/main/util/methodParameters.d.ts +5 -0
  210. package/build/main/util/methodParameters.js +183 -0
  211. package/build/main/util/metric.d.ts +48 -0
  212. package/build/main/util/metric.js +59 -0
  213. package/build/main/util/onchainQuoteProviderConfigs.d.ts +42 -0
  214. package/build/main/util/onchainQuoteProviderConfigs.js +74 -0
  215. package/build/main/util/protocols.d.ts +2 -0
  216. package/build/main/util/protocols.js +20 -0
  217. package/build/main/util/routes.d.ts +11 -0
  218. package/build/main/util/routes.js +149 -0
  219. package/build/main/util/unsupported-tokens.d.ts +37 -0
  220. package/build/main/util/unsupported-tokens.js +1119 -0
  221. package/build/module/index.d.ts +3 -0
  222. package/build/module/index.js +4 -0
  223. package/build/module/providers/cache-node.d.ts +10 -0
  224. package/build/module/providers/cache-node.js +29 -0
  225. package/build/module/providers/cache.d.ts +14 -0
  226. package/build/module/providers/cache.js +2 -0
  227. package/build/module/providers/caching/route/index.d.ts +2 -0
  228. package/build/module/providers/caching/route/index.js +3 -0
  229. package/build/module/providers/caching/route/model/cache-mode.d.ts +16 -0
  230. package/build/module/providers/caching/route/model/cache-mode.js +18 -0
  231. package/build/module/providers/caching/route/model/cached-route.d.ts +29 -0
  232. package/build/module/providers/caching/route/model/cached-route.js +85 -0
  233. package/build/module/providers/caching/route/model/cached-routes.d.ts +67 -0
  234. package/build/module/providers/caching/route/model/cached-routes.js +74 -0
  235. package/build/module/providers/caching/route/model/index.d.ts +3 -0
  236. package/build/module/providers/caching/route/model/index.js +4 -0
  237. package/build/module/providers/caching/route/route-caching-provider.d.ts +88 -0
  238. package/build/module/providers/caching/route/route-caching-provider.js +68 -0
  239. package/build/module/providers/caching-gas-provider.d.ts +23 -0
  240. package/build/module/providers/caching-gas-provider.js +37 -0
  241. package/build/module/providers/caching-subgraph-provider.d.ts +33 -0
  242. package/build/module/providers/caching-subgraph-provider.js +33 -0
  243. package/build/module/providers/caching-token-list-provider.d.ts +52 -0
  244. package/build/module/providers/caching-token-list-provider.js +140 -0
  245. package/build/module/providers/caching-token-provider.d.ts +24 -0
  246. package/build/module/providers/caching-token-provider.js +101 -0
  247. package/build/module/providers/eip-1559-gas-price-provider.d.ts +31 -0
  248. package/build/module/providers/eip-1559-gas-price-provider.js +64 -0
  249. package/build/module/providers/eth-estimate-gas-provider.d.ts +19 -0
  250. package/build/module/providers/eth-estimate-gas-provider.js +102 -0
  251. package/build/module/providers/eth-gas-station-info-gas-price-provider.d.ts +19 -0
  252. package/build/module/providers/eth-gas-station-info-gas-price-provider.js +29 -0
  253. package/build/module/providers/gas-price-provider.d.ts +10 -0
  254. package/build/module/providers/gas-price-provider.js +6 -0
  255. package/build/module/providers/index.d.ts +38 -0
  256. package/build/module/providers/index.js +39 -0
  257. package/build/module/providers/legacy-gas-price-provider.d.ts +7 -0
  258. package/build/module/providers/legacy-gas-price-provider.js +14 -0
  259. package/build/module/providers/multicall-provider.d.ts +83 -0
  260. package/build/module/providers/multicall-provider.js +11 -0
  261. package/build/module/providers/multicall-uniswap-provider.d.ts +37 -0
  262. package/build/module/providers/multicall-uniswap-provider.js +157 -0
  263. package/build/module/providers/on-chain-gas-price-provider.d.ts +19 -0
  264. package/build/module/providers/on-chain-gas-price-provider.js +32 -0
  265. package/build/module/providers/on-chain-quote-provider.d.ts +258 -0
  266. package/build/module/providers/on-chain-quote-provider.js +687 -0
  267. package/build/module/providers/pool-provider.d.ts +44 -0
  268. package/build/module/providers/pool-provider.js +66 -0
  269. package/build/module/providers/portion-provider.d.ts +86 -0
  270. package/build/module/providers/portion-provider.js +114 -0
  271. package/build/module/providers/provider.d.ts +38 -0
  272. package/build/module/providers/provider.js +2 -0
  273. package/build/module/providers/simulation-provider.d.ts +43 -0
  274. package/build/module/providers/simulation-provider.js +138 -0
  275. package/build/module/providers/static-gas-price-provider.d.ts +7 -0
  276. package/build/module/providers/static-gas-price-provider.js +9 -0
  277. package/build/module/providers/subgraph-provider-with-fallback.d.ts +11 -0
  278. package/build/module/providers/subgraph-provider-with-fallback.js +21 -0
  279. package/build/module/providers/subgraph-provider.d.ts +51 -0
  280. package/build/module/providers/subgraph-provider.js +113 -0
  281. package/build/module/providers/swap-router-provider.d.ts +30 -0
  282. package/build/module/providers/swap-router-provider.js +38 -0
  283. package/build/module/providers/token-fee-fetcher.d.ts +31 -0
  284. package/build/module/providers/token-fee-fetcher.js +104 -0
  285. package/build/module/providers/token-properties-provider.d.ts +31 -0
  286. package/build/module/providers/token-properties-provider.js +114 -0
  287. package/build/module/providers/token-provider.d.ts +38 -0
  288. package/build/module/providers/token-provider.js +164 -0
  289. package/build/module/providers/token-validator-provider.d.ts +42 -0
  290. package/build/module/providers/token-validator-provider.js +92 -0
  291. package/build/module/providers/uri-subgraph-provider.d.ts +20 -0
  292. package/build/module/providers/uri-subgraph-provider.js +58 -0
  293. package/build/module/providers/v2/caching-pool-provider.d.ts +33 -0
  294. package/build/module/providers/v2/caching-pool-provider.js +85 -0
  295. package/build/module/providers/v2/caching-subgraph-provider.d.ts +19 -0
  296. package/build/module/providers/v2/caching-subgraph-provider.js +20 -0
  297. package/build/module/providers/v2/pool-provider.d.ts +63 -0
  298. package/build/module/providers/v2/pool-provider.js +131 -0
  299. package/build/module/providers/v2/quote-provider.d.ts +34 -0
  300. package/build/module/providers/v2/quote-provider.js +86 -0
  301. package/build/module/providers/v2/static-subgraph-provider.d.ts +19 -0
  302. package/build/module/providers/v2/static-subgraph-provider.js +68 -0
  303. package/build/module/providers/v2/subgraph-provider-with-fallback.d.ts +16 -0
  304. package/build/module/providers/v2/subgraph-provider-with-fallback.js +19 -0
  305. package/build/module/providers/v2/subgraph-provider.d.ts +36 -0
  306. package/build/module/providers/v2/subgraph-provider.js +167 -0
  307. package/build/module/providers/v2/uri-subgraph-provider.d.ts +4 -0
  308. package/build/module/providers/v2/uri-subgraph-provider.js +4 -0
  309. package/build/module/providers/v3/caching-pool-provider.d.ts +32 -0
  310. package/build/module/providers/v3/caching-pool-provider.js +77 -0
  311. package/build/module/providers/v3/caching-subgraph-provider.d.ts +19 -0
  312. package/build/module/providers/v3/caching-subgraph-provider.js +20 -0
  313. package/build/module/providers/v3/gas-data-provider.d.ts +39 -0
  314. package/build/module/providers/v3/gas-data-provider.js +22 -0
  315. package/build/module/providers/v3/pool-provider.d.ts +77 -0
  316. package/build/module/providers/v3/pool-provider.js +101 -0
  317. package/build/module/providers/v3/static-subgraph-provider.d.ts +21 -0
  318. package/build/module/providers/v3/static-subgraph-provider.js +82 -0
  319. package/build/module/providers/v3/subgraph-provider-with-fallback.d.ts +12 -0
  320. package/build/module/providers/v3/subgraph-provider-with-fallback.js +15 -0
  321. package/build/module/providers/v3/subgraph-provider.d.ts +46 -0
  322. package/build/module/providers/v3/subgraph-provider.js +50 -0
  323. package/build/module/providers/v3/uri-subgraph-provider.d.ts +4 -0
  324. package/build/module/providers/v3/uri-subgraph-provider.js +4 -0
  325. package/build/module/routers/alpha-router/alpha-router.d.ts +347 -0
  326. package/build/module/routers/alpha-router/alpha-router.js +1229 -0
  327. package/build/module/routers/alpha-router/config.d.ts +4 -0
  328. package/build/module/routers/alpha-router/config.js +36 -0
  329. package/build/module/routers/alpha-router/entities/index.d.ts +1 -0
  330. package/build/module/routers/alpha-router/entities/index.js +2 -0
  331. package/build/module/routers/alpha-router/entities/route-with-valid-quote.d.ts +167 -0
  332. package/build/module/routers/alpha-router/entities/route-with-valid-quote.js +157 -0
  333. package/build/module/routers/alpha-router/functions/best-swap-route.d.ts +22 -0
  334. package/build/module/routers/alpha-router/functions/best-swap-route.js +526 -0
  335. package/build/module/routers/alpha-router/functions/calculate-ratio-amount-in.d.ts +3 -0
  336. package/build/module/routers/alpha-router/functions/calculate-ratio-amount-in.js +14 -0
  337. package/build/module/routers/alpha-router/functions/compute-all-routes.d.ts +9 -0
  338. package/build/module/routers/alpha-router/functions/compute-all-routes.js +97 -0
  339. package/build/module/routers/alpha-router/functions/get-candidate-pools.d.ts +100 -0
  340. package/build/module/routers/alpha-router/functions/get-candidate-pools.js +998 -0
  341. package/build/module/routers/alpha-router/gas-models/gas-costs.d.ts +12 -0
  342. package/build/module/routers/alpha-router/gas-models/gas-costs.js +79 -0
  343. package/build/module/routers/alpha-router/gas-models/gas-model.d.ts +106 -0
  344. package/build/module/routers/alpha-router/gas-models/gas-model.js +102 -0
  345. package/build/module/routers/alpha-router/gas-models/index.d.ts +2 -0
  346. package/build/module/routers/alpha-router/gas-models/index.js +3 -0
  347. package/build/module/routers/alpha-router/gas-models/mixedRoute/mixed-route-heuristic-gas-model.d.ts +24 -0
  348. package/build/module/routers/alpha-router/gas-models/mixedRoute/mixed-route-heuristic-gas-model.js +154 -0
  349. package/build/module/routers/alpha-router/gas-models/tick-based-heuristic-gas-model.d.ts +15 -0
  350. package/build/module/routers/alpha-router/gas-models/tick-based-heuristic-gas-model.js +181 -0
  351. package/build/module/routers/alpha-router/gas-models/v2/v2-heuristic-gas-model.d.ts +31 -0
  352. package/build/module/routers/alpha-router/gas-models/v2/v2-heuristic-gas-model.js +162 -0
  353. package/build/module/routers/alpha-router/gas-models/v3/v3-heuristic-gas-model.d.ts +26 -0
  354. package/build/module/routers/alpha-router/gas-models/v3/v3-heuristic-gas-model.js +37 -0
  355. package/build/module/routers/alpha-router/index.d.ts +4 -0
  356. package/build/module/routers/alpha-router/index.js +5 -0
  357. package/build/module/routers/alpha-router/quoters/base-quoter.d.ts +76 -0
  358. package/build/module/routers/alpha-router/quoters/base-quoter.js +69 -0
  359. package/build/module/routers/alpha-router/quoters/index.d.ts +5 -0
  360. package/build/module/routers/alpha-router/quoters/index.js +6 -0
  361. package/build/module/routers/alpha-router/quoters/mixed-quoter.d.ts +28 -0
  362. package/build/module/routers/alpha-router/quoters/mixed-quoter.js +152 -0
  363. package/build/module/routers/alpha-router/quoters/model/index.d.ts +1 -0
  364. package/build/module/routers/alpha-router/quoters/model/index.js +2 -0
  365. package/build/module/routers/alpha-router/quoters/model/results/get-quotes-result.d.ts +6 -0
  366. package/build/module/routers/alpha-router/quoters/model/results/get-quotes-result.js +2 -0
  367. package/build/module/routers/alpha-router/quoters/model/results/get-routes-result.d.ts +6 -0
  368. package/build/module/routers/alpha-router/quoters/model/results/get-routes-result.js +2 -0
  369. package/build/module/routers/alpha-router/quoters/model/results/index.d.ts +2 -0
  370. package/build/module/routers/alpha-router/quoters/model/results/index.js +3 -0
  371. package/build/module/routers/alpha-router/quoters/v2-quoter.d.ts +24 -0
  372. package/build/module/routers/alpha-router/quoters/v2-quoter.js +137 -0
  373. package/build/module/routers/alpha-router/quoters/v3-quoter.d.ts +19 -0
  374. package/build/module/routers/alpha-router/quoters/v3-quoter.js +110 -0
  375. package/build/module/routers/index.d.ts +3 -0
  376. package/build/module/routers/index.js +4 -0
  377. package/build/module/routers/router.d.ts +186 -0
  378. package/build/module/routers/router.js +47 -0
  379. package/build/module/tsconfig.module.tsbuildinfo +1 -0
  380. package/build/module/types/other/commons.d.ts +16 -0
  381. package/build/module/types/other/commons.js +5 -0
  382. package/build/module/types/other/factories/Erc20__factory.d.ts +45 -0
  383. package/build/module/types/other/factories/Erc20__factory.js +236 -0
  384. package/build/module/types/other/factories/GasDataArbitrum__factory.d.ts +18 -0
  385. package/build/module/types/other/factories/GasDataArbitrum__factory.js +54 -0
  386. package/build/module/types/other/factories/IMixedRouteQuoterV1__factory.d.ts +41 -0
  387. package/build/module/types/other/factories/IMixedRouteQuoterV1__factory.js +152 -0
  388. package/build/module/types/other/factories/ITokenValidator__factory.d.ts +22 -0
  389. package/build/module/types/other/factories/ITokenValidator__factory.js +74 -0
  390. package/build/module/types/other/factories/MixedRouteQuoterV2__factory.d.ts +86 -0
  391. package/build/module/types/other/factories/MixedRouteQuoterV2__factory.js +473 -0
  392. package/build/module/types/other/factories/Permit2__factory.d.ts +87 -0
  393. package/build/module/types/other/factories/Permit2__factory.js +932 -0
  394. package/build/module/types/other/factories/SwapRouter02__factory.d.ts +67 -0
  395. package/build/module/types/other/factories/SwapRouter02__factory.js +1094 -0
  396. package/build/module/types/other/factories/TokenFeeDetector__factory.d.ts +47 -0
  397. package/build/module/types/other/factories/TokenFeeDetector__factory.js +239 -0
  398. package/build/module/types/v2/commons.d.ts +16 -0
  399. package/build/module/types/v2/commons.js +5 -0
  400. package/build/module/types/v2/factories/IUniswapV2Pair__factory.d.ts +35 -0
  401. package/build/module/types/v2/factories/IUniswapV2Pair__factory.js +667 -0
  402. package/build/module/types/v3/commons.d.ts +16 -0
  403. package/build/module/types/v3/commons.js +5 -0
  404. package/build/module/types/v3/factories/IERC20Metadata__factory.d.ts +35 -0
  405. package/build/module/types/v3/factories/IERC20Metadata__factory.js +238 -0
  406. package/build/module/types/v3/factories/IQuoterV2__factory.d.ts +41 -0
  407. package/build/module/types/v3/factories/IQuoterV2__factory.js +216 -0
  408. package/build/module/types/v3/factories/IUniswapV3PoolState__factory.d.ts +22 -0
  409. package/build/module/types/v3/factories/IUniswapV3PoolState__factory.js +262 -0
  410. package/build/module/types/v3/factories/UniswapInterfaceMulticall__factory.d.ts +61 -0
  411. package/build/module/types/v3/factories/UniswapInterfaceMulticall__factory.js +123 -0
  412. package/build/module/util/addresses.d.ts +24 -0
  413. package/build/module/util/addresses.js +69 -0
  414. package/build/module/util/amounts.d.ts +9 -0
  415. package/build/module/util/amounts.js +62 -0
  416. package/build/module/util/chains.d.ts +31 -0
  417. package/build/module/util/chains.js +89 -0
  418. package/build/module/util/gas-factory-helpers.d.ts +33 -0
  419. package/build/module/util/gas-factory-helpers.js +446 -0
  420. package/build/module/util/index.d.ts +7 -0
  421. package/build/module/util/index.js +8 -0
  422. package/build/module/util/l2FeeChains.d.ts +2 -0
  423. package/build/module/util/l2FeeChains.js +10 -0
  424. package/build/module/util/log.d.ts +3 -0
  425. package/build/module/util/log.js +93 -0
  426. package/build/module/util/methodParameters.d.ts +5 -0
  427. package/build/module/util/methodParameters.js +181 -0
  428. package/build/module/util/metric.d.ts +48 -0
  429. package/build/module/util/metric.js +53 -0
  430. package/build/module/util/onchainQuoteProviderConfigs.d.ts +42 -0
  431. package/build/module/util/onchainQuoteProviderConfigs.js +76 -0
  432. package/build/module/util/protocols.d.ts +2 -0
  433. package/build/module/util/protocols.js +16 -0
  434. package/build/module/util/routes.d.ts +11 -0
  435. package/build/module/util/routes.js +137 -0
  436. package/build/module/util/unsupported-tokens.d.ts +37 -0
  437. package/build/module/util/unsupported-tokens.js +1116 -0
  438. package/package.json +133 -0
package/README.md ADDED
@@ -0,0 +1,273 @@
1
+ # Uniswap Smart Order Router
2
+
3
+ This repository contains routing logic for the Uniswap V3 protocol.
4
+
5
+ It searches for the most efficient way to swap token A for token B, considering splitting swaps across multiple routes and gas costs.
6
+
7
+ ## Testing
8
+
9
+ ### Unit Tests
10
+
11
+ First make sure you have run `npm install` and `npm run build`.
12
+
13
+ ```
14
+ npm run test
15
+ ```
16
+
17
+ ### Integration Tests
18
+
19
+ Make sure the `.env` file is configured to connect to mainnet and other chains. See the [CLI](#cli) section below for more details.
20
+
21
+ ```
22
+ npm run integ-test
23
+ ```
24
+
25
+ ### Tenderly Simulations
26
+
27
+ Quotes can be simulated on Tenderly
28
+
29
+ Ensure you set the following environment variables:
30
+
31
+ ```
32
+ process.env.TENDERLY_BASE_URL!,
33
+ process.env.TENDERLY_USER!,
34
+ process.env.TENDERLY_PROJECT!,
35
+ process.env.TENDERLY_ACCESS_KEY!,
36
+ ```
37
+
38
+ ### CLI
39
+
40
+ The package can be run as a CLI for testing purposes.
41
+
42
+ First create a `.env` file in the root of the project and configure:
43
+
44
+ ```
45
+ JSON_RPC_PROVIDER = '<JSON_RPC_PROVIDER>'
46
+ ```
47
+
48
+ To run on chains other than mainnet set up a connection by specifying the environment variable
49
+
50
+ ```
51
+ JSON_RPC_PROVIDER_GORLI = '<JSON_RPC_PROVIDER>'
52
+ JSON_RPC_PROVIDER_OPTIMISM = '<JSON_RPC_PROVIDER>'
53
+ JSON_RPC_PROVIDER_OPTIMISM_GOERLI = '<JSON_RPC_PROVIDER>'
54
+ JSON_RPC_PROVIDER_ARBITRUM_ONE = '<JSON_RPC_PROVIDER>'
55
+ JSON_RPC_PROVIDER_ARBITRUM_GOERLI = '<JSON_RPC_PROVIDER>'
56
+ JSON_RPC_PROVIDER_POLYGON = '<JSON_RPC_PROVIDER>'
57
+ JSON_RPC_PROVIDER_POLYGON_MUMBAI = '<JSON_RPC_PROVIDER>'
58
+ JSON_RPC_PROVIDER_CELO = '<JSON_RPC_PROVIDER>'
59
+ JSON_RPC_PROVIDER_CELO_ALFAJORES = '<JSON_RPC_PROVIDER>'
60
+ JSON_RPC_PROVIDER_BNB = '<JSON_RPC_PROVIDER>'
61
+ JSON_RPC_PROVIDER_AVALANCHE = '<JSON_RPC_PROVIDER>'
62
+ JSON_RPC_PROVIDER_BASE = '<JSON_RPC_PROVIDER>'
63
+ ```
64
+
65
+ Then from the root directory you can execute the CLI.
66
+
67
+ ## Examples
68
+
69
+ Some examples to use for manual CLI testing.
70
+
71
+ ### Mainnet
72
+
73
+ ```
74
+ ./bin/cli quote --tokenIn 0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 --tokenOut 0x1f9840a85d5af5bf1d1762f925bdaddc4201f984 --amount 1000 --exactIn --recipient 0xAb5801a7D398351b8bE11C439e05C5B3259aeC9B --protocols v2,v3
75
+
76
+ Best Route:
77
+ 100.00% = USDC -- 0.3% --> UNI
78
+ Raw Quote Out:
79
+ 35.72
80
+ Gas Adjusted Quote Out:
81
+ 34.03
82
+
83
+ Gas Used Quote Token: 1.691772
84
+ Gas Used USD: 47.592951
85
+ Calldata: 0x414bf389000000000000...
86
+ Value: 0x00
87
+
88
+ blockNumber: "13088815"
89
+ estimatedGasUsed: "113000"
90
+ gasPriceWei: "130000000000"
91
+
92
+
93
+ ./bin/cli quote-to-ratio --token0 0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48 --token1 0xdac17f958d2ee523a2206206994597c13d831ec7 --feeAmount 3000 --recipient 0xAb5801a7D398351b8bE11C439e05C5B3259aeC9B --token0Balance 1000 --token1Balance 2000 --tickLower -120 --tickUpper 120
94
+
95
+ Best Route:
96
+ 100.00% = USDT -- 0.05% --> USDC
97
+ Raw Quote Exact In:
98
+ 392.68
99
+ Gas Adjusted Quote In}:
100
+ 346.13
101
+
102
+ Gas Used Quote Token: 46.550010
103
+ Gas Used USD: 46.342899
104
+ Calldata: 0x414bf389000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec7000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4800000000000000000000000000000000000000000000000000000000000001f4000000000000000000000000ab5801a7d398351b8be11c439e05c5b3259aec9b000000000000000000000000000000000000000000000000000000000000006400000000000000000000000000000000000000000000000000000000176a736c000000000000000000000000000000000000000000000000000000001764f8650000000000000000000000000000000000000000000000000000000000000000
105
+ Value: 0x00
106
+
107
+ blockNumber: "13239188"
108
+ estimatedGasUsed: "113000"
109
+ gasPriceWei: "116690684398"
110
+
111
+ ./bin/cli quote --tokenIn 0x0391D2021f89DC339F60Fff84546EA23E337750f --tokenOut 0x4d224452801ACEd8B2F0aebE155379bb5D594381 --amount 10000 --exactIn --recipient 0xAb5801a7D398351b8bE11C439e05C5B3259aeC9B --protocols v2,v3,mixed
112
+ Best Route:
113
+ [V2 + V3] 100.00% = BOND -- [0x6591c4BcD6D7A1eb4E537DA8B78676C1576Ba244] --> USDC -- 0.3% [0xB07Fe2F407F971125D4EB1977f8aCEe8846C7324] --> APE
114
+ Raw Quote Exact In:
115
+ 10437.85
116
+ Gas Adjusted Quote In:
117
+ 10433.83
118
+
119
+ Gas Used Quote Token: 4.018625
120
+ Gas Used USD: 29.669402
121
+ Calldata: 0x5ae401dc0000000000000000000000000000000000000000000000000000000000000064000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000016000000000000000000000000000000000000000000000000000000000000000e4472b43f300000000000000000000000000000000000000000000021e19e0c9bab240000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000020000000000000000000000000391d2021f89dc339f60fff84546ea23e337750f000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000104b858183f00000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000080000000000000000000000000ab5801a7d398351b8be11c439e05c5b3259aec9b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002358df5b3b4459a3f5b000000000000000000000000000000000000000000000000000000000000002ba0b86991c6218b36c1d19d4a2e9eb0ce3606eb48000bb84d224452801aced8b2f0aebe155379bb5d59438100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
122
+ Value: 0x00
123
+
124
+ blockNumber: "15303839"
125
+ estimatedGasUsed: "434000"
126
+ gasPriceWei: "38218865879"
127
+ Total ticks crossed: 7
128
+ ```
129
+
130
+ ## Rinkeby
131
+
132
+ ```
133
+ ./bin/cli quote --tokenIn 0x5592ec0cfb4dbc12d3ab100b257153436a1f0fea --tokenOut 0x4DBCdF9B62e891a7cec5A2568C3F4FAF9E8Abe2b --amount 200000 --exactIn --minSplits 1 --router alpha --chainId 4
134
+ ```
135
+
136
+ ## Sepolia
137
+
138
+ ```
139
+ ./bin/cli quote --tokenIn 0x7AF17A48a6336F7dc1beF9D485139f7B6f4FB5C8 --tokenOut 0x6f14C02Fc1F78322cFd7d707aB90f18baD3B54f5 --amount 10 --exactIn --minSplits 1 --router alpha --chainId 11155111
140
+ ```
141
+
142
+ ## Kovan
143
+
144
+ ```
145
+ ./bin/cli quote --tokenIn 0x4f96fe3b7a6cf9725f59d353f723c1bdb64ca6aa --tokenOut 0xd0a1e359811322d97991e03f863a0c30c2cf029c --amount 10 --exactIn --minSplits 1 --router alpha --chainId 42
146
+ ```
147
+
148
+ ## Ropsten
149
+
150
+ ```
151
+ ./bin/cli quote --tokenIn 0x07865c6e87b9f70255377e024ace6630c1eaa37f --tokenOut 0xc778417e063141139fce010982780140aa0cd5ab --amount 200000 --exactIn --minSplits 1 --router alpha --chainId 3
152
+ ```
153
+
154
+ ## Optimism
155
+
156
+ ```
157
+ ./bin/cli quote --tokenIn 0x7F5c764cBc14f9669B88837ca1490cCa17c31607 --tokenOut 0xDA10009cBd5D07dd0CeCc66161FC93D7c9000da1 --amount 200000 --exactIn --minSplits 1 --router alpha --chainId 10
158
+
159
+ ```
160
+
161
+ ```
162
+ ./bin/cli quote --tokenIn 0x7F5c764cBc14f9669B88837ca1490cCa17c31607 --tokenOut 0x4200000000000000000000000000000000000042 --amount 1 --exactIn --minSplits 1 --protocols v2 --router alpha --chainId 10
163
+ ```
164
+
165
+
166
+ ## Optimism-Goerli
167
+
168
+ ```
169
+ ./bin/cli quote --tokenIn 0x7E07E15D2a87A24492740D16f5bdF58c16db0c4E --tokenOut 0xDA10009cBd5D07dd0CeCc66161FC93D7c9000da1 --amount 200000 --exactIn --minSplits 1 --router alpha --chainId 420
170
+ ```
171
+
172
+ ## Optimistic-Kovan
173
+
174
+ ```
175
+ ./bin/cli quote --tokenIn 0x7F5c764cBc14f9669B88837ca1490cCa17c31607 --tokenOut 0xDA10009cBd5D07dd0CeCc66161FC93D7c9000da1 --amount 200 --exactIn --minSplits 1 --router alpha --chainId 69
176
+ ```
177
+
178
+ ## Arbitrum
179
+
180
+ ```
181
+ ./bin/cli quote --tokenIn 0xfd086bc7cd5c481dcc9c85ebe478a1c0b69fcbb9 --tokenOut 0x82af49447d8a07e3bd95bd0d56f35241523fbab1 --amount 20000 --exactIn --minSplits 1 --router alpha --chainId 42161 --debug
182
+ ```
183
+
184
+ ## Arbitrum-Rinkeby
185
+
186
+ ```
187
+ ./bin/cli quote --tokenIn 0x09b98f8b2395d076514037ff7d39a091a536206c --tokenOut 0xb47e6a5f8b33b3f17603c83a0535a9dcd7e32681 --amount 200 --exactIn --minSplits 1 --router alpha --chainId 421611
188
+ ```
189
+
190
+ ## Arbitrum-Goerli
191
+
192
+ ```
193
+ ./bin/cli quote --tokenIn 0xe39ab88f8a4777030a534146a9ca3b52bd5d43a3 --tokenOut 0x8FB1E3fC51F3b789dED7557E680551d93Ea9d892 --amount 200 --exactIn --minSplits 1 --router alpha --chainId 421613
194
+ ```
195
+
196
+ ## Polygon Mumbai
197
+
198
+ ```
199
+ ./bin/cli quote --tokenIn 0x001b3b4d0f3714ca98ba10f6042daebf0b1b7b6f --tokenOut 0x9c3c9283d3e44854697cd22d3faa240cfb032889 --amount 1 --exactIn --protocols v3 --recipient 0xAb5801a7D398351b8bE11C439e05C5B3259aeC9B --minSplits 1 --router alpha --chainId 80001
200
+ ```
201
+
202
+ ## Polygon Mainnet
203
+
204
+ ```
205
+ ./bin/cli quote --tokenIn 0x2791bca1f2de4661ed88a30c99a7a9449aa84174 --tokenOut 0x7ceb23fd6bc0add59e62ac25578270cff1b9f619 --amount 5 --exactIn --minSplits 1 --protocols v3 --router alpha --chainId 137
206
+ ```
207
+
208
+ ## Celo Mainnet
209
+
210
+ ```
211
+ ./bin/cli quote --tokenIn CELO --tokenOut 0x765DE816845861e75A25fCA122bb6898B8B1282a --amount 5 --exactIn --minSplits 1 --protocols v3 --router alpha --chainId 42220
212
+ ```
213
+
214
+ ## BNB Mainnet
215
+
216
+ ```
217
+ ./bin/cli quote --tokenIn 0x55d398326f99059fF775485246999027B3197955 --tokenOut 0x8AC76a51cc950d9822D68b83fE1Ad97B32Cd580d --amount 1 --exactIn --minSplits 1 --protocols v3 --router alpha --chainId 56
218
+ ```
219
+
220
+ ## AVAX Mainnet
221
+
222
+ ```
223
+ ./bin/cli quote --tokenIn 0xB97EF9Ef8734C71904D8002F8b6Bc66Dd9c48a6E --tokenOut 0xB31f66AA3C1e785363F0875A1B74E27b85FD66c7 --amount 1000 --exactIn --minSplits 1 --protocols v3 --router alpha --chainId 43114
224
+ ```
225
+
226
+ ## BASE Mainnet
227
+
228
+ ```
229
+ ./bin/cli quote --tokenIn 0xd9aAEc86B65D86f6A7B5B1b0c42FFA531710b6CA --tokenOut 0x4200000000000000000000000000000000000006 --amount 10 --exactIn --minSplits 1 --protocols v3 --router alpha --chainId 8453
230
+ ```
231
+
232
+ ## ZKSYNC Mainnet
233
+
234
+ ```
235
+ ./bin/cli quote --tokenIn 0x5aea5775959fbc2557cc8789bc1bf90a239d9a91 --tokenOut 0x1d17cbcf0d6d143135ae902365d2e5e2a16538d4 --amount 10 --exactIn --minSplits 1 --protocols v3 --router alpha --chainId 324
236
+ ```
237
+
238
+
239
+ ## Adding a new Chain
240
+
241
+ The main components to complete are:
242
+
243
+ - Deploy contracts on chain, add the pools to subgraph
244
+ - Populate v3 providers in `src/providers/v3/subgraph-provider` and `src/providers/v3/static-subgraph-provider`
245
+ - Populate chainId and addresses in `src/util/chains.ts` and `src/util/addresses.ts`
246
+ - Populate token providers in `src/providers/caching-token-provider` and `src/providers/token-provider.ts`
247
+ - Populate gas constants in `src/routers/alpha-router/gas-models/*`
248
+ - Populate bases in `src/routers/legacy-router/bases.ts`
249
+ - Populate `test/integ/routers/alpha-router/alpha-router.integration.test.ts` and `src/providers/v2/static-subgraph-provider.ts`
250
+ - Populate `src/routers/alpha-router/*`
251
+ - Add a log to `/CHANGELOG.md`
252
+ - Run `npm run integ-test` successfully
253
+
254
+ # Troubleshooting
255
+
256
+ ## ProviderGasLimit errors
257
+
258
+ The package sends many large multicall requests to nodes. You must ensure that your node provider's `eth_call` gas limit is high enough to successfully process the RPC calls.
259
+
260
+ By default each `eth_call` will consume up to:
261
+
262
+ - 132,000,000 gas on Optimism
263
+ - 120,000,000 gas on Arbitrum
264
+ - 50,000,000 gas on Celo
265
+ - 150,000,000 gas on every other network (Mainnet, Goerli, etc.)
266
+
267
+ These parameters should work on Infura and Alchemy by default.
268
+
269
+ This total amount of gas each `eth_call` can consume is equal to the `multicallChunk` config value multiplied by the `gasLimitPerCall` config value. If you are using a node provider with a lower gas limit per `eth_call` you will need to override the default `V3QuoteProvider` with an instance that lowers the `multicallChunk` and `gasLimitPerCall` parameters such that the multiplication is below your node providers limit. Lowering these values will cause each multicall to consume less gas. See [here](https://github.com/Uniswap/smart-order-router/blob/98c58bdee9981fd9ffac9e7d7a97b18302d5f77a/src/routers/alpha-router/alpha-router.ts#L415-L416) for examples of how to set these values. Note some providers have different limits per chain.
270
+
271
+ If you are running your own node, we recommend you configure start your node with a higher gas limit per call. For example, on Geth you can use the command line argument `--rpc.gascap 150000000` to raise the limit to 150m, which is enough to run the default configuration of this package.
272
+
273
+ If you are using Hardhat mainnet forking, you should add `blockGasLimit: 150_000_000` to your Hardhat config to use the default package configuration.
@@ -0,0 +1,3 @@
1
+ export * from './providers';
2
+ export * from './routers';
3
+ export * from './util';
@@ -0,0 +1,20 @@
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("./providers"), exports);
18
+ __exportStar(require("./routers"), exports);
19
+ __exportStar(require("./util"), exports);
20
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDhDQUE0QjtBQUM1Qiw0Q0FBMEI7QUFDMUIseUNBQXVCIn0=
@@ -0,0 +1,10 @@
1
+ import NodeCache from 'node-cache';
2
+ import { ICache } from './cache';
3
+ export declare class NodeJSCache<T> implements ICache<T> {
4
+ private nodeCache;
5
+ constructor(nodeCache: NodeCache);
6
+ get(key: string): Promise<T | undefined>;
7
+ batchGet(keys: Set<string>): Promise<Record<string, T | undefined>>;
8
+ set(key: string, value: T, ttl?: number): Promise<boolean>;
9
+ has(key: string): Promise<boolean>;
10
+ }
@@ -0,0 +1,33 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.NodeJSCache = void 0;
4
+ class NodeJSCache {
5
+ constructor(nodeCache) {
6
+ this.nodeCache = nodeCache;
7
+ }
8
+ async get(key) {
9
+ return this.nodeCache.get(key);
10
+ }
11
+ async batchGet(keys) {
12
+ const keysArr = Array.from(keys);
13
+ const values = await Promise.all(keysArr.map((key) => this.get(key)));
14
+ const result = {};
15
+ keysArr.forEach((key, index) => {
16
+ result[key] = values[index];
17
+ });
18
+ return result;
19
+ }
20
+ async set(key, value, ttl) {
21
+ if (ttl) {
22
+ return this.nodeCache.set(key, value, ttl);
23
+ }
24
+ else {
25
+ return this.nodeCache.set(key, value);
26
+ }
27
+ }
28
+ async has(key) {
29
+ return this.nodeCache.has(key);
30
+ }
31
+ }
32
+ exports.NodeJSCache = NodeJSCache;
33
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FjaGUtbm9kZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9wcm92aWRlcnMvY2FjaGUtbm9kZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFJQSxNQUFhLFdBQVc7SUFDdEIsWUFBb0IsU0FBb0I7UUFBcEIsY0FBUyxHQUFULFNBQVMsQ0FBVztJQUFHLENBQUM7SUFFNUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFXO1FBQ25CLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUksR0FBRyxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUVELEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBaUI7UUFDOUIsTUFBTSxPQUFPLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNqQyxNQUFNLE1BQU0sR0FBRyxNQUFNLE9BQU8sQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEdBQUcsRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFFdEUsTUFBTSxNQUFNLEdBQWtDLEVBQUUsQ0FBQztRQUVqRCxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFO1lBQzdCLE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBRyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDOUIsQ0FBQyxDQUFDLENBQUM7UUFFSCxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDO0lBRUQsS0FBSyxDQUFDLEdBQUcsQ0FBQyxHQUFXLEVBQUUsS0FBUSxFQUFFLEdBQVk7UUFDM0MsSUFBSSxHQUFHLEVBQUU7WUFDUCxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxLQUFLLEVBQUUsR0FBRyxDQUFDLENBQUM7U0FDNUM7YUFBTTtZQUNMLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO1NBQ3ZDO0lBQ0gsQ0FBQztJQUVELEtBQUssQ0FBQyxHQUFHLENBQUMsR0FBVztRQUNuQixPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ2pDLENBQUM7Q0FDRjtBQS9CRCxrQ0ErQkMifQ==
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Generic cache used by providers. Allows caching of results to minimize
3
+ * round trips to external data sources.
4
+ *
5
+ * @export
6
+ * @interface ICache
7
+ * @template T
8
+ */
9
+ export interface ICache<T> {
10
+ get(key: string): Promise<T | undefined>;
11
+ batchGet(keys: Set<string>): Promise<Record<string, T | undefined>>;
12
+ set(key: string, value: T, ttl?: number): Promise<boolean>;
13
+ has(key: string): Promise<boolean>;
14
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FjaGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcHJvdmlkZXJzL2NhY2hlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIifQ==
@@ -0,0 +1,2 @@
1
+ export * from './model/';
2
+ export * from './route-caching-provider';
@@ -0,0 +1,19 @@
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("./route-caching-provider"), exports);
19
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9zcmMvcHJvdmlkZXJzL2NhY2hpbmcvcm91dGUvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLDJDQUF5QjtBQUN6QiwyREFBeUMifQ==
@@ -0,0 +1,16 @@
1
+ /**
2
+ * CacheMode enum that controls the way that the RouteCachingProvider works.
3
+ * - *Livemode*: This mode will set materialized routes into cache and fetch routes from cache.
4
+ * If the route exists in cache, it will be quoted and returned, otherwise it will materialized.
5
+ * - *Darkmode*: This mode indicates that the cache will not be used, it will not be inserted nor fetched.
6
+ * Routes will always be materialized.
7
+ * - *Tapcompare*: In this mode we will insert and fetch routes to/from cache, and we will also materialize the route.
8
+ * Ultimately the materialized route will be returned, but we will log some metrics comparing both.
9
+ *
10
+ * @enum {string}
11
+ */
12
+ export declare enum CacheMode {
13
+ Livemode = "livemode",
14
+ Darkmode = "darkmode",
15
+ Tapcompare = "tapcompare"
16
+ }
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CacheMode = void 0;
4
+ /**
5
+ * CacheMode enum that controls the way that the RouteCachingProvider works.
6
+ * - *Livemode*: This mode will set materialized routes into cache and fetch routes from cache.
7
+ * If the route exists in cache, it will be quoted and returned, otherwise it will materialized.
8
+ * - *Darkmode*: This mode indicates that the cache will not be used, it will not be inserted nor fetched.
9
+ * Routes will always be materialized.
10
+ * - *Tapcompare*: In this mode we will insert and fetch routes to/from cache, and we will also materialize the route.
11
+ * Ultimately the materialized route will be returned, but we will log some metrics comparing both.
12
+ *
13
+ * @enum {string}
14
+ */
15
+ var CacheMode;
16
+ (function (CacheMode) {
17
+ CacheMode["Livemode"] = "livemode";
18
+ CacheMode["Darkmode"] = "darkmode";
19
+ CacheMode["Tapcompare"] = "tapcompare";
20
+ })(CacheMode = exports.CacheMode || (exports.CacheMode = {}));
21
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FjaGUtbW9kZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3NyYy9wcm92aWRlcnMvY2FjaGluZy9yb3V0ZS9tb2RlbC9jYWNoZS1tb2RlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBOzs7Ozs7Ozs7O0dBVUc7QUFDSCxJQUFZLFNBSVg7QUFKRCxXQUFZLFNBQVM7SUFDbkIsa0NBQXFCLENBQUE7SUFDckIsa0NBQXFCLENBQUE7SUFDckIsc0NBQXlCLENBQUE7QUFDM0IsQ0FBQyxFQUpXLFNBQVMsR0FBVCxpQkFBUyxLQUFULGlCQUFTLFFBSXBCIn0=
@@ -0,0 +1,29 @@
1
+ import { Protocol } from '@fanx-protocol/router-sdk';
2
+ import { Token } from '@fanx-protocol/sdk-core';
3
+ import { SupportedRoutes } from '../../../../routers';
4
+ interface CachedRouteParams<Route extends SupportedRoutes> {
5
+ route: Route;
6
+ percent: number;
7
+ }
8
+ /**
9
+ * Class defining the route to cache
10
+ *
11
+ * @export
12
+ * @class CachedRoute
13
+ */
14
+ export declare class CachedRoute<Route extends SupportedRoutes> {
15
+ readonly route: Route;
16
+ readonly percent: number;
17
+ private hashCode;
18
+ /**
19
+ * @param route
20
+ * @param percent
21
+ */
22
+ constructor({ route, percent }: CachedRouteParams<Route>);
23
+ get protocol(): Protocol;
24
+ get tokenIn(): Token;
25
+ get tokenOut(): Token;
26
+ get routePath(): string;
27
+ get routeId(): number;
28
+ }
29
+ export {};
@@ -0,0 +1,89 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CachedRoute = void 0;
4
+ const router_sdk_1 = require("@fanx-protocol/router-sdk");
5
+ const v2_sdk_1 = require("@fanx-protocol/v2-sdk");
6
+ const v3_sdk_1 = require("@fanx-protocol/v3-sdk");
7
+ /**
8
+ * Class defining the route to cache
9
+ *
10
+ * @export
11
+ * @class CachedRoute
12
+ */
13
+ class CachedRoute {
14
+ /**
15
+ * @param route
16
+ * @param percent
17
+ */
18
+ constructor({ route, percent }) {
19
+ // Hashing function copying the same implementation as Java's `hashCode`
20
+ // Sourced from: https://gist.github.com/hyamamoto/fd435505d29ebfa3d9716fd2be8d42f0?permalink_comment_id=4613539#gistcomment-4613539
21
+ this.hashCode = (str) => [...str].reduce((s, c) => (Math.imul(31, s) + c.charCodeAt(0)) | 0, 0);
22
+ this.route = route;
23
+ this.percent = percent;
24
+ }
25
+ get protocol() {
26
+ return this.route.protocol;
27
+ }
28
+ // TODO: ROUTE-217 - Support native currency routing in V4
29
+ get tokenIn() {
30
+ return this.route.input.wrapped;
31
+ }
32
+ // TODO: ROUTE-217 - Support native currency routing in V4
33
+ get tokenOut() {
34
+ return this.route.output.wrapped;
35
+ }
36
+ get routePath() {
37
+ switch (this.protocol) {
38
+ // case Protocol.V4:
39
+ // // TODO: ROUTE-217 - Support native currency routing in V4
40
+ // return (this.route as V4Route).pools
41
+ // .map(
42
+ // (pool) =>
43
+ // `[V4]${pool.token0.wrapped.address}/${pool.token1.wrapped.address}`
44
+ // )
45
+ // .join('->');
46
+ case router_sdk_1.Protocol.V3:
47
+ return this.route.pools
48
+ .map((pool) => `[V3]${pool.token0.address}/${pool.token1.address}/${pool.fee}`)
49
+ .join('->');
50
+ case router_sdk_1.Protocol.V2:
51
+ return this.route.pairs
52
+ .map((pair) => `[V2]${pair.token0.address}/${pair.token1.address}`)
53
+ .join('->');
54
+ case router_sdk_1.Protocol.MIXED:
55
+ return this.route.pools
56
+ .map((pool) => {
57
+ // if (pool instanceof V4Pool) {
58
+ // // TODO: ROUTE-217 - Support native currency routing in V4
59
+ // return `[V4]${
60
+ // pool.token0.isToken
61
+ // ? pool.token0.wrapped.address
62
+ // : pool.token0.symbol
63
+ // }/${
64
+ // pool.token1.isToken
65
+ // ? pool.token1.wrapped.address
66
+ // : pool.token1.symbol
67
+ // }`;
68
+ // } else
69
+ if (pool instanceof v3_sdk_1.Pool) {
70
+ return `[V3]${pool.token0.address}/${pool.token1.address}/${pool.fee}`;
71
+ }
72
+ else if (pool instanceof v2_sdk_1.Pair) {
73
+ return `[V2]${pool.token0.address}/${pool.token1.address}`;
74
+ }
75
+ else {
76
+ throw new Error(`Unsupported pool type ${JSON.stringify(pool)}`);
77
+ }
78
+ })
79
+ .join('->');
80
+ default:
81
+ throw new Error(`Unsupported protocol ${this.protocol}`);
82
+ }
83
+ }
84
+ get routeId() {
85
+ return this.hashCode(this.routePath);
86
+ }
87
+ }
88
+ exports.CachedRoute = CachedRoute;
89
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FjaGVkLXJvdXRlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vc3JjL3Byb3ZpZGVycy9jYWNoaW5nL3JvdXRlL21vZGVsL2NhY2hlZC1yb3V0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSwwREFBcUQ7QUFFckQsa0RBQTZDO0FBQzdDLGtEQUF1RDtBQWV2RDs7Ozs7R0FLRztBQUNILE1BQWEsV0FBVztJQVF0Qjs7O09BR0c7SUFDSCxZQUFZLEVBQUUsS0FBSyxFQUFFLE9BQU8sRUFBNEI7UUFUeEQsd0VBQXdFO1FBQ3hFLG9JQUFvSTtRQUM1SCxhQUFRLEdBQUcsQ0FBQyxHQUFXLEVBQUUsRUFBRSxDQUNqQyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1FBT3ZFLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ25CLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO0lBQ3pCLENBQUM7SUFFRCxJQUFXLFFBQVE7UUFDakIsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQztJQUM3QixDQUFDO0lBRUQsMERBQTBEO0lBQzFELElBQVcsT0FBTztRQUNoQixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQztJQUNsQyxDQUFDO0lBRUQsMERBQTBEO0lBQzFELElBQVcsUUFBUTtRQUNqQixPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQztJQUNuQyxDQUFDO0lBRUQsSUFBVyxTQUFTO1FBQ2xCLFFBQVEsSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUNyQixvQkFBb0I7WUFDcEIsK0RBQStEO1lBQy9ELHlDQUF5QztZQUN6QyxZQUFZO1lBQ1osa0JBQWtCO1lBQ2xCLDhFQUE4RTtZQUM5RSxRQUFRO1lBQ1IsbUJBQW1CO1lBQ25CLEtBQUsscUJBQVEsQ0FBQyxFQUFFO2dCQUNkLE9BQVEsSUFBSSxDQUFDLEtBQWlCLENBQUMsS0FBSztxQkFDakMsR0FBRyxDQUNGLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FDUCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxJQUFJLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FDbEU7cUJBQ0EsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ2hCLEtBQUsscUJBQVEsQ0FBQyxFQUFFO2dCQUNkLE9BQVEsSUFBSSxDQUFDLEtBQWlCLENBQUMsS0FBSztxQkFDakMsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLENBQUM7cUJBQ2xFLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNoQixLQUFLLHFCQUFRLENBQUMsS0FBSztnQkFDakIsT0FBUSxJQUFJLENBQUMsS0FBb0IsQ0FBQyxLQUFLO3FCQUNwQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtvQkFDWixnQ0FBZ0M7b0JBQ2hDLCtEQUErRDtvQkFDL0QsbUJBQW1CO29CQUNuQiwwQkFBMEI7b0JBQzFCLHNDQUFzQztvQkFDdEMsNkJBQTZCO29CQUM3QixTQUFTO29CQUNULDBCQUEwQjtvQkFDMUIsc0NBQXNDO29CQUN0Qyw2QkFBNkI7b0JBQzdCLFFBQVE7b0JBQ1IsU0FBUztvQkFDVCxJQUFJLElBQUksWUFBWSxhQUFNLEVBQUU7d0JBQzFCLE9BQU8sT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7cUJBQ3hFO3lCQUFNLElBQUksSUFBSSxZQUFZLGFBQUksRUFBRTt3QkFDL0IsT0FBTyxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFLENBQUM7cUJBQzVEO3lCQUFNO3dCQUNMLE1BQU0sSUFBSSxLQUFLLENBQUMseUJBQXlCLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO3FCQUNsRTtnQkFDSCxDQUFDLENBQUM7cUJBQ0QsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ2hCO2dCQUNFLE1BQU0sSUFBSSxLQUFLLENBQUMsd0JBQXdCLElBQUksQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO1NBQzVEO0lBQ0gsQ0FBQztJQUVELElBQVcsT0FBTztRQUNoQixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ3ZDLENBQUM7Q0FDRjtBQXBGRCxrQ0FvRkMifQ==
@@ -0,0 +1,67 @@
1
+ import { Protocol } from '@fanx-protocol/router-sdk';
2
+ import { ChainId, Currency, TradeType } from '@fanx-protocol/sdk-core';
3
+ import { RouteWithValidQuote, SupportedRoutes } from '../../../../routers';
4
+ import { CachedRoute } from './cached-route';
5
+ interface CachedRoutesParams {
6
+ routes: CachedRoute<SupportedRoutes>[];
7
+ chainId: ChainId;
8
+ currencyIn: Currency;
9
+ currencyOut: Currency;
10
+ protocolsCovered: Protocol[];
11
+ blockNumber: number;
12
+ tradeType: TradeType;
13
+ originalAmount: string;
14
+ blocksToLive?: number;
15
+ }
16
+ /**
17
+ * Class defining the route to cache
18
+ *
19
+ * @export
20
+ * @class CachedRoute
21
+ */
22
+ export declare class CachedRoutes {
23
+ readonly routes: CachedRoute<SupportedRoutes>[];
24
+ readonly chainId: ChainId;
25
+ readonly currencyIn: Currency;
26
+ readonly currencyOut: Currency;
27
+ readonly protocolsCovered: Protocol[];
28
+ readonly blockNumber: number;
29
+ readonly tradeType: TradeType;
30
+ readonly originalAmount: string;
31
+ blocksToLive: number;
32
+ /**
33
+ * @param routes
34
+ * @param chainId
35
+ * @param currencyIn
36
+ * @param currencyOut
37
+ * @param protocolsCovered
38
+ * @param blockNumber
39
+ * @param tradeType
40
+ * @param originalAmount
41
+ * @param blocksToLive
42
+ */
43
+ constructor({ routes, chainId, currencyIn, currencyOut, protocolsCovered, blockNumber, tradeType, originalAmount, blocksToLive, }: CachedRoutesParams);
44
+ /**
45
+ * Factory method that creates a `CachedRoutes` object from an array of RouteWithValidQuote.
46
+ *
47
+ * @public
48
+ * @static
49
+ * @param routes
50
+ * @param chainId
51
+ * @param currencyIn
52
+ * @param currencyOut
53
+ * @param protocolsCovered
54
+ * @param blockNumber
55
+ * @param tradeType
56
+ * @param originalAmount
57
+ */
58
+ static fromRoutesWithValidQuotes(routes: RouteWithValidQuote[], chainId: ChainId, currencyIn: Currency, currencyOut: Currency, protocolsCovered: Protocol[], blockNumber: number, tradeType: TradeType, originalAmount: string): CachedRoutes | undefined;
59
+ /**
60
+ * Function to determine if, given a block number, the CachedRoute is expired or not.
61
+ *
62
+ * @param currentBlockNumber
63
+ * @param optimistic
64
+ */
65
+ notExpired(currentBlockNumber: number, optimistic?: boolean): boolean;
66
+ }
67
+ export {};