v-swap-smart-order-router 3.10.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +255 -0
- package/LICENSE +674 -0
- package/README.md +248 -0
- package/build/main/index.d.ts +3 -0
- package/build/main/index.js +20 -0
- package/build/main/providers/cache-node.d.ts +9 -0
- package/build/main/providers/cache-node.js +19 -0
- package/build/main/providers/cache.d.ts +13 -0
- package/build/main/providers/cache.js +3 -0
- package/build/main/providers/caching/route/index.d.ts +2 -0
- package/build/main/providers/caching/route/index.js +19 -0
- package/build/main/providers/caching/route/model/cache-mode.d.ts +16 -0
- package/build/main/providers/caching/route/model/cache-mode.js +21 -0
- package/build/main/providers/caching/route/model/cached-route.d.ts +26 -0
- package/build/main/providers/caching/route/model/cached-route.js +30 -0
- package/build/main/providers/caching/route/model/cached-routes.d.ts +63 -0
- package/build/main/providers/caching/route/model/cached-routes.js +73 -0
- package/build/main/providers/caching/route/model/index.d.ts +3 -0
- package/build/main/providers/caching/route/model/index.js +20 -0
- package/build/main/providers/caching/route/route-caching-provider.d.ts +91 -0
- package/build/main/providers/caching/route/route-caching-provider.js +65 -0
- package/build/main/providers/caching-gas-provider.d.ts +23 -0
- package/build/main/providers/caching-gas-provider.js +37 -0
- package/build/main/providers/caching-token-list-provider.d.ts +40 -0
- package/build/main/providers/caching-token-list-provider.js +123 -0
- package/build/main/providers/caching-token-provider.d.ts +25 -0
- package/build/main/providers/caching-token-provider.js +202 -0
- package/build/main/providers/eip-1559-gas-price-provider.d.ts +31 -0
- package/build/main/providers/eip-1559-gas-price-provider.js +66 -0
- package/build/main/providers/eth-estimate-gas-provider.d.ts +16 -0
- package/build/main/providers/eth-estimate-gas-provider.js +74 -0
- package/build/main/providers/eth-gas-station-info-gas-price-provider.d.ts +19 -0
- package/build/main/providers/eth-gas-station-info-gas-price-provider.js +37 -0
- package/build/main/providers/gas-price-provider.d.ts +10 -0
- package/build/main/providers/gas-price-provider.js +10 -0
- package/build/main/providers/index.d.ts +37 -0
- package/build/main/providers/index.js +54 -0
- package/build/main/providers/legacy-gas-price-provider.d.ts +7 -0
- package/build/main/providers/legacy-gas-price-provider.js +20 -0
- package/build/main/providers/multicall-provider.d.ts +82 -0
- package/build/main/providers/multicall-provider.js +15 -0
- package/build/main/providers/multicall-uniswap-provider.d.ts +37 -0
- package/build/main/providers/multicall-uniswap-provider.js +163 -0
- package/build/main/providers/on-chain-gas-price-provider.d.ts +19 -0
- package/build/main/providers/on-chain-gas-price-provider.js +38 -0
- package/build/main/providers/on-chain-quote-provider.d.ts +221 -0
- package/build/main/providers/on-chain-quote-provider.js +523 -0
- package/build/main/providers/provider.d.ts +10 -0
- package/build/main/providers/provider.js +3 -0
- package/build/main/providers/simulation-provider.d.ts +42 -0
- package/build/main/providers/simulation-provider.js +130 -0
- package/build/main/providers/static-gas-price-provider.d.ts +7 -0
- package/build/main/providers/static-gas-price-provider.js +13 -0
- package/build/main/providers/swap-router-provider.d.ts +31 -0
- package/build/main/providers/swap-router-provider.js +42 -0
- package/build/main/providers/tenderly-simulation-provider.d.ts +45 -0
- package/build/main/providers/tenderly-simulation-provider.js +254 -0
- package/build/main/providers/token-provider.d.ts +114 -0
- package/build/main/providers/token-provider.js +297 -0
- package/build/main/providers/token-validator-provider.d.ts +42 -0
- package/build/main/providers/token-validator-provider.js +95 -0
- package/build/main/providers/uri-subgraph-provider.d.ts +20 -0
- package/build/main/providers/uri-subgraph-provider.js +65 -0
- package/build/main/providers/v2/caching-pool-provider.d.ts +34 -0
- package/build/main/providers/v2/caching-pool-provider.js +88 -0
- package/build/main/providers/v2/caching-subgraph-provider.d.ts +23 -0
- package/build/main/providers/v2/caching-subgraph-provider.js +34 -0
- package/build/main/providers/v2/pool-provider.d.ts +60 -0
- package/build/main/providers/v2/pool-provider.js +110 -0
- package/build/main/providers/v2/quote-provider.d.ts +33 -0
- package/build/main/providers/v2/quote-provider.js +91 -0
- package/build/main/providers/v2/static-subgraph-provider.d.ts +20 -0
- package/build/main/providers/v2/static-subgraph-provider.js +103 -0
- package/build/main/providers/v2/subgraph-provider-with-fallback.d.ts +19 -0
- package/build/main/providers/v2/subgraph-provider-with-fallback.js +35 -0
- package/build/main/providers/v2/subgraph-provider.d.ts +34 -0
- package/build/main/providers/v2/subgraph-provider.js +135 -0
- package/build/main/providers/v2/uri-subgraph-provider.d.ts +4 -0
- package/build/main/providers/v2/uri-subgraph-provider.js +8 -0
- package/build/main/providers/v3/caching-pool-provider.d.ts +33 -0
- package/build/main/providers/v3/caching-pool-provider.js +77 -0
- package/build/main/providers/v3/caching-subgraph-provider.d.ts +23 -0
- package/build/main/providers/v3/caching-subgraph-provider.js +34 -0
- package/build/main/providers/v3/gas-data-provider.d.ts +57 -0
- package/build/main/providers/v3/gas-data-provider.js +66 -0
- package/build/main/providers/v3/pool-provider.d.ts +61 -0
- package/build/main/providers/v3/pool-provider.js +123 -0
- package/build/main/providers/v3/static-subgraph-provider.d.ts +21 -0
- package/build/main/providers/v3/static-subgraph-provider.js +203 -0
- package/build/main/providers/v3/subgraph-provider-with-fallback.d.ts +15 -0
- package/build/main/providers/v3/subgraph-provider-with-fallback.js +31 -0
- package/build/main/providers/v3/subgraph-provider.d.ts +37 -0
- package/build/main/providers/v3/subgraph-provider.js +145 -0
- package/build/main/providers/v3/uri-subgraph-provider.d.ts +4 -0
- package/build/main/providers/v3/uri-subgraph-provider.js +8 -0
- package/build/main/routers/alpha-router/alpha-router.d.ts +267 -0
- package/build/main/routers/alpha-router/alpha-router.js +825 -0
- package/build/main/routers/alpha-router/config.d.ts +4 -0
- package/build/main/routers/alpha-router/config.js +93 -0
- package/build/main/routers/alpha-router/entities/index.d.ts +1 -0
- package/build/main/routers/alpha-router/entities/index.js +18 -0
- package/build/main/routers/alpha-router/entities/route-with-valid-quote.d.ts +163 -0
- package/build/main/routers/alpha-router/entities/route-with-valid-quote.js +143 -0
- package/build/main/routers/alpha-router/functions/best-swap-route.d.ts +19 -0
- package/build/main/routers/alpha-router/functions/best-swap-route.js +364 -0
- package/build/main/routers/alpha-router/functions/calculate-ratio-amount-in.d.ts +3 -0
- package/build/main/routers/alpha-router/functions/calculate-ratio-amount-in.js +18 -0
- package/build/main/routers/alpha-router/functions/compute-all-routes.d.ts +8 -0
- package/build/main/routers/alpha-router/functions/compute-all-routes.js +72 -0
- package/build/main/routers/alpha-router/functions/get-candidate-pools.d.ts +78 -0
- package/build/main/routers/alpha-router/functions/get-candidate-pools.js +761 -0
- package/build/main/routers/alpha-router/gas-models/gas-model.d.ts +83 -0
- package/build/main/routers/alpha-router/gas-models/gas-model.js +68 -0
- package/build/main/routers/alpha-router/gas-models/index.d.ts +2 -0
- package/build/main/routers/alpha-router/gas-models/index.js +19 -0
- package/build/main/routers/alpha-router/gas-models/mixedRoute/mixed-route-heuristic-gas-model.d.ts +25 -0
- package/build/main/routers/alpha-router/gas-models/mixedRoute/mixed-route-heuristic-gas-model.js +175 -0
- package/build/main/routers/alpha-router/gas-models/v2/v2-heuristic-gas-model.d.ts +29 -0
- package/build/main/routers/alpha-router/gas-models/v2/v2-heuristic-gas-model.js +167 -0
- package/build/main/routers/alpha-router/gas-models/v3/gas-costs.d.ts +6 -0
- package/build/main/routers/alpha-router/gas-models/v3/gas-costs.js +110 -0
- package/build/main/routers/alpha-router/gas-models/v3/v3-heuristic-gas-model.d.ts +31 -0
- package/build/main/routers/alpha-router/gas-models/v3/v3-heuristic-gas-model.js +288 -0
- package/build/main/routers/alpha-router/index.d.ts +4 -0
- package/build/main/routers/alpha-router/index.js +21 -0
- package/build/main/routers/alpha-router/quoters/base-quoter.d.ts +68 -0
- package/build/main/routers/alpha-router/quoters/base-quoter.js +61 -0
- package/build/main/routers/alpha-router/quoters/index.d.ts +5 -0
- package/build/main/routers/alpha-router/quoters/index.js +22 -0
- package/build/main/routers/alpha-router/quoters/mixed-quoter.d.ts +20 -0
- package/build/main/routers/alpha-router/quoters/mixed-quoter.js +130 -0
- package/build/main/routers/alpha-router/quoters/model/index.d.ts +1 -0
- package/build/main/routers/alpha-router/quoters/model/index.js +18 -0
- package/build/main/routers/alpha-router/quoters/model/results/get-quotes-result.d.ts +6 -0
- package/build/main/routers/alpha-router/quoters/model/results/get-quotes-result.js +3 -0
- package/build/main/routers/alpha-router/quoters/model/results/get-routes-result.d.ts +6 -0
- package/build/main/routers/alpha-router/quoters/model/results/get-routes-result.js +3 -0
- package/build/main/routers/alpha-router/quoters/model/results/index.d.ts +2 -0
- package/build/main/routers/alpha-router/quoters/model/results/index.js +19 -0
- package/build/main/routers/alpha-router/quoters/v2-quoter.d.ts +21 -0
- package/build/main/routers/alpha-router/quoters/v2-quoter.js +122 -0
- package/build/main/routers/alpha-router/quoters/v3-quoter.d.ts +19 -0
- package/build/main/routers/alpha-router/quoters/v3-quoter.js +125 -0
- package/build/main/routers/index.d.ts +4 -0
- package/build/main/routers/index.js +21 -0
- package/build/main/routers/legacy-router/bases.d.ts +136 -0
- package/build/main/routers/legacy-router/bases.js +87 -0
- package/build/main/routers/legacy-router/index.d.ts +1 -0
- package/build/main/routers/legacy-router/index.js +18 -0
- package/build/main/routers/legacy-router/legacy-router.d.ts +42 -0
- package/build/main/routers/legacy-router/legacy-router.js +289 -0
- package/build/main/routers/router.d.ts +165 -0
- package/build/main/routers/router.js +52 -0
- package/build/main/tsconfig.tsbuildinfo +1 -0
- package/build/main/types/other/commons.d.ts +16 -0
- package/build/main/types/other/commons.js +6 -0
- package/build/main/types/other/factories/Erc20__factory.d.ts +45 -0
- package/build/main/types/other/factories/Erc20__factory.js +240 -0
- package/build/main/types/other/factories/GasDataArbitrum__factory.d.ts +18 -0
- package/build/main/types/other/factories/GasDataArbitrum__factory.js +58 -0
- package/build/main/types/other/factories/GasPriceOracle__factory.d.ts +46 -0
- package/build/main/types/other/factories/GasPriceOracle__factory.js +316 -0
- package/build/main/types/other/factories/IMixedRouteQuoterV1__factory.d.ts +41 -0
- package/build/main/types/other/factories/IMixedRouteQuoterV1__factory.js +156 -0
- package/build/main/types/other/factories/ITokenValidator__factory.d.ts +22 -0
- package/build/main/types/other/factories/ITokenValidator__factory.js +78 -0
- package/build/main/types/other/factories/Permit2__factory.d.ts +87 -0
- package/build/main/types/other/factories/Permit2__factory.js +936 -0
- package/build/main/types/other/factories/SwapRouter02__factory.d.ts +67 -0
- package/build/main/types/other/factories/SwapRouter02__factory.js +1098 -0
- package/build/main/types/v2/commons.d.ts +16 -0
- package/build/main/types/v2/commons.js +6 -0
- package/build/main/types/v2/factories/IUniswapV2Pair__factory.d.ts +35 -0
- package/build/main/types/v2/factories/IUniswapV2Pair__factory.js +671 -0
- package/build/main/types/v3/commons.d.ts +16 -0
- package/build/main/types/v3/commons.js +6 -0
- package/build/main/types/v3/factories/IERC20Metadata__factory.d.ts +35 -0
- package/build/main/types/v3/factories/IERC20Metadata__factory.js +242 -0
- package/build/main/types/v3/factories/IQuoterV2__factory.d.ts +41 -0
- package/build/main/types/v3/factories/IQuoterV2__factory.js +220 -0
- package/build/main/types/v3/factories/IUniswapV3PoolState__factory.d.ts +22 -0
- package/build/main/types/v3/factories/IUniswapV3PoolState__factory.js +266 -0
- package/build/main/types/v3/factories/UniswapInterfaceMulticall__factory.d.ts +61 -0
- package/build/main/types/v3/factories/UniswapInterfaceMulticall__factory.js +127 -0
- package/build/main/util/addresses.d.ts +26 -0
- package/build/main/util/addresses.js +73 -0
- package/build/main/util/amounts.d.ts +8 -0
- package/build/main/util/amounts.js +51 -0
- package/build/main/util/callData.d.ts +1 -0
- package/build/main/util/callData.js +6 -0
- package/build/main/util/chains.d.ts +77 -0
- package/build/main/util/chains.js +564 -0
- package/build/main/util/gas-factory-helpers.d.ts +24 -0
- package/build/main/util/gas-factory-helpers.js +308 -0
- package/build/main/util/index.d.ts +7 -0
- package/build/main/util/index.js +24 -0
- package/build/main/util/log.d.ts +3 -0
- package/build/main/util/log.js +97 -0
- package/build/main/util/methodParameters.d.ts +5 -0
- package/build/main/util/methodParameters.js +108 -0
- package/build/main/util/metric.d.ts +48 -0
- package/build/main/util/metric.js +59 -0
- package/build/main/util/protocols.d.ts +2 -0
- package/build/main/util/protocols.js +18 -0
- package/build/main/util/routes.d.ts +8 -0
- package/build/main/util/routes.js +60 -0
- package/build/main/util/unsupported-tokens.d.ts +37 -0
- package/build/main/util/unsupported-tokens.js +1119 -0
- package/build/module/index.d.ts +3 -0
- package/build/module/index.js +4 -0
- package/build/module/providers/cache-node.d.ts +9 -0
- package/build/module/providers/cache-node.js +15 -0
- package/build/module/providers/cache.d.ts +13 -0
- package/build/module/providers/cache.js +2 -0
- package/build/module/providers/caching/route/index.d.ts +2 -0
- package/build/module/providers/caching/route/index.js +3 -0
- package/build/module/providers/caching/route/model/cache-mode.d.ts +16 -0
- package/build/module/providers/caching/route/model/cache-mode.js +18 -0
- package/build/module/providers/caching/route/model/cached-route.d.ts +26 -0
- package/build/module/providers/caching/route/model/cached-route.js +26 -0
- package/build/module/providers/caching/route/model/cached-routes.d.ts +63 -0
- package/build/module/providers/caching/route/model/cached-routes.js +66 -0
- package/build/module/providers/caching/route/model/index.d.ts +3 -0
- package/build/module/providers/caching/route/model/index.js +4 -0
- package/build/module/providers/caching/route/route-caching-provider.d.ts +91 -0
- package/build/module/providers/caching/route/route-caching-provider.js +61 -0
- package/build/module/providers/caching-gas-provider.d.ts +23 -0
- package/build/module/providers/caching-gas-provider.js +33 -0
- package/build/module/providers/caching-token-list-provider.d.ts +40 -0
- package/build/module/providers/caching-token-list-provider.js +116 -0
- package/build/module/providers/caching-token-provider.d.ts +25 -0
- package/build/module/providers/caching-token-provider.js +195 -0
- package/build/module/providers/eip-1559-gas-price-provider.d.ts +31 -0
- package/build/module/providers/eip-1559-gas-price-provider.js +59 -0
- package/build/module/providers/eth-estimate-gas-provider.d.ts +16 -0
- package/build/module/providers/eth-estimate-gas-provider.js +82 -0
- package/build/module/providers/eth-gas-station-info-gas-price-provider.d.ts +19 -0
- package/build/module/providers/eth-gas-station-info-gas-price-provider.js +30 -0
- package/build/module/providers/gas-price-provider.d.ts +10 -0
- package/build/module/providers/gas-price-provider.js +6 -0
- package/build/module/providers/index.d.ts +37 -0
- package/build/module/providers/index.js +38 -0
- package/build/module/providers/legacy-gas-price-provider.d.ts +7 -0
- package/build/module/providers/legacy-gas-price-provider.js +16 -0
- package/build/module/providers/multicall-provider.d.ts +82 -0
- package/build/module/providers/multicall-provider.js +11 -0
- package/build/module/providers/multicall-uniswap-provider.d.ts +37 -0
- package/build/module/providers/multicall-uniswap-provider.js +156 -0
- package/build/module/providers/on-chain-gas-price-provider.d.ts +19 -0
- package/build/module/providers/on-chain-gas-price-provider.js +34 -0
- package/build/module/providers/on-chain-quote-provider.d.ts +221 -0
- package/build/module/providers/on-chain-quote-provider.js +517 -0
- package/build/module/providers/provider.d.ts +10 -0
- package/build/module/providers/provider.js +2 -0
- package/build/module/providers/simulation-provider.d.ts +42 -0
- package/build/module/providers/simulation-provider.js +132 -0
- package/build/module/providers/static-gas-price-provider.d.ts +7 -0
- package/build/module/providers/static-gas-price-provider.js +9 -0
- package/build/module/providers/swap-router-provider.d.ts +31 -0
- package/build/module/providers/swap-router-provider.js +38 -0
- package/build/module/providers/tenderly-simulation-provider.d.ts +45 -0
- package/build/module/providers/tenderly-simulation-provider.js +249 -0
- package/build/module/providers/token-provider.d.ts +114 -0
- package/build/module/providers/token-provider.js +285 -0
- package/build/module/providers/token-validator-provider.d.ts +42 -0
- package/build/module/providers/token-validator-provider.js +88 -0
- package/build/module/providers/uri-subgraph-provider.d.ts +20 -0
- package/build/module/providers/uri-subgraph-provider.js +58 -0
- package/build/module/providers/v2/caching-pool-provider.d.ts +34 -0
- package/build/module/providers/v2/caching-pool-provider.js +81 -0
- package/build/module/providers/v2/caching-subgraph-provider.d.ts +23 -0
- package/build/module/providers/v2/caching-subgraph-provider.js +30 -0
- package/build/module/providers/v2/pool-provider.d.ts +60 -0
- package/build/module/providers/v2/pool-provider.js +103 -0
- package/build/module/providers/v2/quote-provider.d.ts +33 -0
- package/build/module/providers/v2/quote-provider.js +87 -0
- package/build/module/providers/v2/static-subgraph-provider.d.ts +20 -0
- package/build/module/providers/v2/static-subgraph-provider.js +96 -0
- package/build/module/providers/v2/subgraph-provider-with-fallback.d.ts +19 -0
- package/build/module/providers/v2/subgraph-provider-with-fallback.js +31 -0
- package/build/module/providers/v2/subgraph-provider.d.ts +34 -0
- package/build/module/providers/v2/subgraph-provider.js +136 -0
- package/build/module/providers/v2/uri-subgraph-provider.d.ts +4 -0
- package/build/module/providers/v2/uri-subgraph-provider.js +4 -0
- package/build/module/providers/v3/caching-pool-provider.d.ts +33 -0
- package/build/module/providers/v3/caching-pool-provider.js +70 -0
- package/build/module/providers/v3/caching-subgraph-provider.d.ts +23 -0
- package/build/module/providers/v3/caching-subgraph-provider.js +30 -0
- package/build/module/providers/v3/gas-data-provider.d.ts +57 -0
- package/build/module/providers/v3/gas-data-provider.js +61 -0
- package/build/module/providers/v3/pool-provider.d.ts +61 -0
- package/build/module/providers/v3/pool-provider.js +116 -0
- package/build/module/providers/v3/static-subgraph-provider.d.ts +21 -0
- package/build/module/providers/v3/static-subgraph-provider.js +200 -0
- package/build/module/providers/v3/subgraph-provider-with-fallback.d.ts +15 -0
- package/build/module/providers/v3/subgraph-provider-with-fallback.js +27 -0
- package/build/module/providers/v3/subgraph-provider.d.ts +37 -0
- package/build/module/providers/v3/subgraph-provider.js +132 -0
- package/build/module/providers/v3/uri-subgraph-provider.d.ts +4 -0
- package/build/module/providers/v3/uri-subgraph-provider.js +4 -0
- package/build/module/routers/alpha-router/alpha-router.d.ts +267 -0
- package/build/module/routers/alpha-router/alpha-router.js +823 -0
- package/build/module/routers/alpha-router/config.d.ts +4 -0
- package/build/module/routers/alpha-router/config.js +89 -0
- package/build/module/routers/alpha-router/entities/index.d.ts +1 -0
- package/build/module/routers/alpha-router/entities/index.js +2 -0
- package/build/module/routers/alpha-router/entities/route-with-valid-quote.d.ts +163 -0
- package/build/module/routers/alpha-router/entities/route-with-valid-quote.js +134 -0
- package/build/module/routers/alpha-router/functions/best-swap-route.d.ts +19 -0
- package/build/module/routers/alpha-router/functions/best-swap-route.js +356 -0
- package/build/module/routers/alpha-router/functions/calculate-ratio-amount-in.d.ts +3 -0
- package/build/module/routers/alpha-router/functions/calculate-ratio-amount-in.js +14 -0
- package/build/module/routers/alpha-router/functions/compute-all-routes.d.ts +8 -0
- package/build/module/routers/alpha-router/functions/compute-all-routes.js +65 -0
- package/build/module/routers/alpha-router/functions/get-candidate-pools.d.ts +78 -0
- package/build/module/routers/alpha-router/functions/get-candidate-pools.js +776 -0
- package/build/module/routers/alpha-router/gas-models/gas-model.d.ts +83 -0
- package/build/module/routers/alpha-router/gas-models/gas-model.js +67 -0
- package/build/module/routers/alpha-router/gas-models/index.d.ts +2 -0
- package/build/module/routers/alpha-router/gas-models/index.js +3 -0
- package/build/module/routers/alpha-router/gas-models/mixedRoute/mixed-route-heuristic-gas-model.d.ts +25 -0
- package/build/module/routers/alpha-router/gas-models/mixedRoute/mixed-route-heuristic-gas-model.js +168 -0
- package/build/module/routers/alpha-router/gas-models/v2/v2-heuristic-gas-model.d.ts +29 -0
- package/build/module/routers/alpha-router/gas-models/v2/v2-heuristic-gas-model.js +160 -0
- package/build/module/routers/alpha-router/gas-models/v3/gas-costs.d.ts +6 -0
- package/build/module/routers/alpha-router/gas-models/v3/gas-costs.js +104 -0
- package/build/module/routers/alpha-router/gas-models/v3/v3-heuristic-gas-model.d.ts +31 -0
- package/build/module/routers/alpha-router/gas-models/v3/v3-heuristic-gas-model.js +281 -0
- package/build/module/routers/alpha-router/index.d.ts +4 -0
- package/build/module/routers/alpha-router/index.js +5 -0
- package/build/module/routers/alpha-router/quoters/base-quoter.d.ts +68 -0
- package/build/module/routers/alpha-router/quoters/base-quoter.js +54 -0
- package/build/module/routers/alpha-router/quoters/index.d.ts +5 -0
- package/build/module/routers/alpha-router/quoters/index.js +6 -0
- package/build/module/routers/alpha-router/quoters/mixed-quoter.d.ts +20 -0
- package/build/module/routers/alpha-router/quoters/mixed-quoter.js +123 -0
- package/build/module/routers/alpha-router/quoters/model/index.d.ts +1 -0
- package/build/module/routers/alpha-router/quoters/model/index.js +2 -0
- package/build/module/routers/alpha-router/quoters/model/results/get-quotes-result.d.ts +6 -0
- package/build/module/routers/alpha-router/quoters/model/results/get-quotes-result.js +2 -0
- package/build/module/routers/alpha-router/quoters/model/results/get-routes-result.d.ts +6 -0
- package/build/module/routers/alpha-router/quoters/model/results/get-routes-result.js +2 -0
- package/build/module/routers/alpha-router/quoters/model/results/index.d.ts +2 -0
- package/build/module/routers/alpha-router/quoters/model/results/index.js +3 -0
- package/build/module/routers/alpha-router/quoters/v2-quoter.d.ts +21 -0
- package/build/module/routers/alpha-router/quoters/v2-quoter.js +115 -0
- package/build/module/routers/alpha-router/quoters/v3-quoter.d.ts +19 -0
- package/build/module/routers/alpha-router/quoters/v3-quoter.js +118 -0
- package/build/module/routers/index.d.ts +4 -0
- package/build/module/routers/index.js +5 -0
- package/build/module/routers/legacy-router/bases.d.ts +136 -0
- package/build/module/routers/legacy-router/bases.js +93 -0
- package/build/module/routers/legacy-router/index.d.ts +1 -0
- package/build/module/routers/legacy-router/index.js +2 -0
- package/build/module/routers/legacy-router/legacy-router.d.ts +42 -0
- package/build/module/routers/legacy-router/legacy-router.js +290 -0
- package/build/module/routers/router.d.ts +165 -0
- package/build/module/routers/router.js +44 -0
- package/build/module/tsconfig.module.tsbuildinfo +1 -0
- package/build/module/types/other/commons.d.ts +16 -0
- package/build/module/types/other/commons.js +5 -0
- package/build/module/types/other/factories/Erc20__factory.d.ts +45 -0
- package/build/module/types/other/factories/Erc20__factory.js +236 -0
- package/build/module/types/other/factories/GasDataArbitrum__factory.d.ts +18 -0
- package/build/module/types/other/factories/GasDataArbitrum__factory.js +54 -0
- package/build/module/types/other/factories/GasPriceOracle__factory.d.ts +46 -0
- package/build/module/types/other/factories/GasPriceOracle__factory.js +312 -0
- package/build/module/types/other/factories/IMixedRouteQuoterV1__factory.d.ts +41 -0
- package/build/module/types/other/factories/IMixedRouteQuoterV1__factory.js +152 -0
- package/build/module/types/other/factories/ITokenValidator__factory.d.ts +22 -0
- package/build/module/types/other/factories/ITokenValidator__factory.js +74 -0
- package/build/module/types/other/factories/Permit2__factory.d.ts +87 -0
- package/build/module/types/other/factories/Permit2__factory.js +932 -0
- package/build/module/types/other/factories/SwapRouter02__factory.d.ts +67 -0
- package/build/module/types/other/factories/SwapRouter02__factory.js +1094 -0
- package/build/module/types/v2/commons.d.ts +16 -0
- package/build/module/types/v2/commons.js +5 -0
- package/build/module/types/v2/factories/IUniswapV2Pair__factory.d.ts +35 -0
- package/build/module/types/v2/factories/IUniswapV2Pair__factory.js +667 -0
- package/build/module/types/v3/commons.d.ts +16 -0
- package/build/module/types/v3/commons.js +5 -0
- package/build/module/types/v3/factories/IERC20Metadata__factory.d.ts +35 -0
- package/build/module/types/v3/factories/IERC20Metadata__factory.js +238 -0
- package/build/module/types/v3/factories/IQuoterV2__factory.d.ts +41 -0
- package/build/module/types/v3/factories/IQuoterV2__factory.js +216 -0
- package/build/module/types/v3/factories/IUniswapV3PoolState__factory.d.ts +22 -0
- package/build/module/types/v3/factories/IUniswapV3PoolState__factory.js +262 -0
- package/build/module/types/v3/factories/UniswapInterfaceMulticall__factory.d.ts +61 -0
- package/build/module/types/v3/factories/UniswapInterfaceMulticall__factory.js +123 -0
- package/build/module/util/addresses.d.ts +26 -0
- package/build/module/util/addresses.js +98 -0
- package/build/module/util/amounts.d.ts +8 -0
- package/build/module/util/amounts.js +41 -0
- package/build/module/util/callData.d.ts +1 -0
- package/build/module/util/callData.js +3 -0
- package/build/module/util/chains.d.ts +77 -0
- package/build/module/util/chains.js +556 -0
- package/build/module/util/gas-factory-helpers.d.ts +24 -0
- package/build/module/util/gas-factory-helpers.js +291 -0
- package/build/module/util/index.d.ts +7 -0
- package/build/module/util/index.js +8 -0
- package/build/module/util/log.d.ts +3 -0
- package/build/module/util/log.js +93 -0
- package/build/module/util/methodParameters.d.ts +5 -0
- package/build/module/util/methodParameters.js +106 -0
- package/build/module/util/metric.d.ts +48 -0
- package/build/module/util/metric.js +53 -0
- package/build/module/util/protocols.d.ts +2 -0
- package/build/module/util/protocols.js +14 -0
- package/build/module/util/routes.d.ts +8 -0
- package/build/module/util/routes.js +50 -0
- package/build/module/util/unsupported-tokens.d.ts +37 -0
- package/build/module/util/unsupported-tokens.js +1116 -0
- package/package.json +119 -0
|
@@ -0,0 +1,103 @@
|
|
|
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.StaticV2SubgraphProvider = void 0;
|
|
7
|
+
const v2_sdk_1 = require("@uniswap/v2-sdk");
|
|
8
|
+
const lodash_1 = __importDefault(require("lodash"));
|
|
9
|
+
const chains_1 = require("../../util/chains");
|
|
10
|
+
const log_1 = require("../../util/log");
|
|
11
|
+
const token_provider_1 = require("../token-provider");
|
|
12
|
+
const BASES_TO_CHECK_TRADES_AGAINST = {
|
|
13
|
+
[chains_1.ChainId.MAINNET]: [
|
|
14
|
+
chains_1.WRAPPED_NATIVE_CURRENCY[chains_1.ChainId.MAINNET],
|
|
15
|
+
token_provider_1.DAI_MAINNET,
|
|
16
|
+
token_provider_1.USDC_MAINNET,
|
|
17
|
+
token_provider_1.USDT_MAINNET,
|
|
18
|
+
token_provider_1.WBTC_MAINNET,
|
|
19
|
+
],
|
|
20
|
+
[chains_1.ChainId.ROPSTEN]: [chains_1.WRAPPED_NATIVE_CURRENCY[chains_1.ChainId.ROPSTEN]],
|
|
21
|
+
[chains_1.ChainId.RINKEBY]: [
|
|
22
|
+
chains_1.WRAPPED_NATIVE_CURRENCY[chains_1.ChainId.RINKEBY],
|
|
23
|
+
token_provider_1.DAI_RINKEBY_1,
|
|
24
|
+
token_provider_1.DAI_RINKEBY_2,
|
|
25
|
+
],
|
|
26
|
+
[chains_1.ChainId.GÖRLI]: [chains_1.WRAPPED_NATIVE_CURRENCY[chains_1.ChainId.GÖRLI]],
|
|
27
|
+
[chains_1.ChainId.KOVAN]: [chains_1.WRAPPED_NATIVE_CURRENCY[chains_1.ChainId.KOVAN]],
|
|
28
|
+
//v2 not deployed on [optimism, arbitrum, polygon, celo, gnosis, moonbeam] and their testnets
|
|
29
|
+
[chains_1.ChainId.OPTIMISM]: [],
|
|
30
|
+
[chains_1.ChainId.ARBITRUM_ONE]: [],
|
|
31
|
+
[chains_1.ChainId.ARBITRUM_RINKEBY]: [],
|
|
32
|
+
[chains_1.ChainId.ARBITRUM_GOERLI]: [],
|
|
33
|
+
[chains_1.ChainId.OPTIMISM_GOERLI]: [],
|
|
34
|
+
[chains_1.ChainId.OPTIMISTIC_KOVAN]: [],
|
|
35
|
+
[chains_1.ChainId.POLYGON]: [],
|
|
36
|
+
[chains_1.ChainId.POLYGON_MUMBAI]: [],
|
|
37
|
+
[chains_1.ChainId.CELO]: [],
|
|
38
|
+
[chains_1.ChainId.CELO_ALFAJORES]: [],
|
|
39
|
+
[chains_1.ChainId.GNOSIS]: [],
|
|
40
|
+
[chains_1.ChainId.MOONBEAM]: [],
|
|
41
|
+
[chains_1.ChainId.BSC]: [],
|
|
42
|
+
[chains_1.ChainId.CFX]: [],
|
|
43
|
+
[chains_1.ChainId.CFX_TEST]: [],
|
|
44
|
+
};
|
|
45
|
+
/**
|
|
46
|
+
* Provider that does not get data from an external source and instead returns
|
|
47
|
+
* a hardcoded list of Subgraph pools.
|
|
48
|
+
*
|
|
49
|
+
* Since the pools are hardcoded, the liquidity/price values are dummys and should not
|
|
50
|
+
* be depended on.
|
|
51
|
+
*
|
|
52
|
+
* Useful for instances where other data sources are unavailable. E.g. subgraph not available.
|
|
53
|
+
*
|
|
54
|
+
* @export
|
|
55
|
+
* @class StaticV2SubgraphProvider
|
|
56
|
+
*/
|
|
57
|
+
class StaticV2SubgraphProvider {
|
|
58
|
+
constructor(chainId) {
|
|
59
|
+
this.chainId = chainId;
|
|
60
|
+
}
|
|
61
|
+
async getPools(tokenIn, tokenOut) {
|
|
62
|
+
log_1.log.info('In static subgraph provider for V2');
|
|
63
|
+
const bases = BASES_TO_CHECK_TRADES_AGAINST[this.chainId];
|
|
64
|
+
const basePairs = lodash_1.default.flatMap(bases, (base) => bases.map((otherBase) => [base, otherBase]));
|
|
65
|
+
if (tokenIn && tokenOut) {
|
|
66
|
+
basePairs.push([tokenIn, tokenOut], ...bases.map((base) => [tokenIn, base]), ...bases.map((base) => [tokenOut, base]));
|
|
67
|
+
}
|
|
68
|
+
const pairs = (0, lodash_1.default)(basePairs)
|
|
69
|
+
.filter((tokens) => Boolean(tokens[0] && tokens[1]))
|
|
70
|
+
.filter(([tokenA, tokenB]) => tokenA.address !== tokenB.address && !tokenA.equals(tokenB))
|
|
71
|
+
.value();
|
|
72
|
+
const poolAddressSet = new Set();
|
|
73
|
+
const subgraphPools = (0, lodash_1.default)(pairs)
|
|
74
|
+
.map(([tokenA, tokenB]) => {
|
|
75
|
+
const poolAddress = v2_sdk_1.Pair.getAddress(tokenA, tokenB);
|
|
76
|
+
if (poolAddressSet.has(poolAddress)) {
|
|
77
|
+
return undefined;
|
|
78
|
+
}
|
|
79
|
+
poolAddressSet.add(poolAddress);
|
|
80
|
+
const [token0, token1] = tokenA.sortsBefore(tokenB)
|
|
81
|
+
? [tokenA, tokenB]
|
|
82
|
+
: [tokenB, tokenA];
|
|
83
|
+
return {
|
|
84
|
+
id: poolAddress,
|
|
85
|
+
liquidity: '100',
|
|
86
|
+
token0: {
|
|
87
|
+
id: token0.address,
|
|
88
|
+
},
|
|
89
|
+
token1: {
|
|
90
|
+
id: token1.address,
|
|
91
|
+
},
|
|
92
|
+
supply: 100,
|
|
93
|
+
reserve: 100,
|
|
94
|
+
reserveUSD: 100,
|
|
95
|
+
};
|
|
96
|
+
})
|
|
97
|
+
.compact()
|
|
98
|
+
.value();
|
|
99
|
+
return subgraphPools;
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
exports.StaticV2SubgraphProvider = StaticV2SubgraphProvider;
|
|
103
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RhdGljLXN1YmdyYXBoLXByb3ZpZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3Byb3ZpZGVycy92Mi9zdGF0aWMtc3ViZ3JhcGgtcHJvdmlkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQ0EsNENBQXVDO0FBQ3ZDLG9EQUF1QjtBQUV2Qiw4Q0FBcUU7QUFDckUsd0NBQXFDO0FBQ3JDLHNEQU8yQjtBQVEzQixNQUFNLDZCQUE2QixHQUFtQjtJQUNwRCxDQUFDLGdCQUFPLENBQUMsT0FBTyxDQUFDLEVBQUU7UUFDakIsZ0NBQXVCLENBQUMsZ0JBQU8sQ0FBQyxPQUFPLENBQUU7UUFDekMsNEJBQVc7UUFDWCw2QkFBWTtRQUNaLDZCQUFZO1FBQ1osNkJBQVk7S0FDYjtJQUNELENBQUMsZ0JBQU8sQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLGdDQUF1QixDQUFDLGdCQUFPLENBQUMsT0FBTyxDQUFFLENBQUM7SUFDOUQsQ0FBQyxnQkFBTyxDQUFDLE9BQU8sQ0FBQyxFQUFFO1FBQ2pCLGdDQUF1QixDQUFDLGdCQUFPLENBQUMsT0FBTyxDQUFFO1FBQ3pDLDhCQUFhO1FBQ2IsOEJBQWE7S0FDZDtJQUNELENBQUMsZ0JBQU8sQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLGdDQUF1QixDQUFDLGdCQUFPLENBQUMsS0FBSyxDQUFFLENBQUM7SUFDMUQsQ0FBQyxnQkFBTyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsZ0NBQXVCLENBQUMsZ0JBQU8sQ0FBQyxLQUFLLENBQUUsQ0FBQztJQUMxRCw2RkFBNkY7SUFDN0YsQ0FBQyxnQkFBTyxDQUFDLFFBQVEsQ0FBQyxFQUFFLEVBQUU7SUFDdEIsQ0FBQyxnQkFBTyxDQUFDLFlBQVksQ0FBQyxFQUFFLEVBQUU7SUFDMUIsQ0FBQyxnQkFBTyxDQUFDLGdCQUFnQixDQUFDLEVBQUUsRUFBRTtJQUM5QixDQUFDLGdCQUFPLENBQUMsZUFBZSxDQUFDLEVBQUUsRUFBRTtJQUM3QixDQUFDLGdCQUFPLENBQUMsZUFBZSxDQUFDLEVBQUUsRUFBRTtJQUM3QixDQUFDLGdCQUFPLENBQUMsZ0JBQWdCLENBQUMsRUFBRSxFQUFFO0lBQzlCLENBQUMsZ0JBQU8sQ0FBQyxPQUFPLENBQUMsRUFBRSxFQUFFO0lBQ3JCLENBQUMsZ0JBQU8sQ0FBQyxjQUFjLENBQUMsRUFBRSxFQUFFO0lBQzVCLENBQUMsZ0JBQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxFQUFFO0lBQ2xCLENBQUMsZ0JBQU8sQ0FBQyxjQUFjLENBQUMsRUFBRSxFQUFFO0lBQzVCLENBQUMsZ0JBQU8sQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFO0lBQ3BCLENBQUMsZ0JBQU8sQ0FBQyxRQUFRLENBQUMsRUFBRSxFQUFFO0lBQ3RCLENBQUMsZ0JBQU8sQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFO0lBQ2pCLENBQUMsZ0JBQU8sQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFO0lBQ2pCLENBQUMsZ0JBQU8sQ0FBQyxRQUFRLENBQUMsRUFBRSxFQUFFO0NBQ3ZCLENBQUM7QUFFRjs7Ozs7Ozs7Ozs7R0FXRztBQUNILE1BQWEsd0JBQXdCO0lBQ25DLFlBQW9CLE9BQWdCO1FBQWhCLFlBQU8sR0FBUCxPQUFPLENBQVM7SUFBRyxDQUFDO0lBRWpDLEtBQUssQ0FBQyxRQUFRLENBQ25CLE9BQWUsRUFDZixRQUFnQjtRQUVoQixTQUFHLENBQUMsSUFBSSxDQUFDLG9DQUFvQyxDQUFDLENBQUM7UUFDL0MsTUFBTSxLQUFLLEdBQUcsNkJBQTZCLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBRTFELE1BQU0sU0FBUyxHQUFxQixnQkFBQyxDQUFDLE9BQU8sQ0FDM0MsS0FBSyxFQUNMLENBQUMsSUFBSSxFQUFvQixFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLFNBQVMsRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDLENBQUMsQ0FDeEUsQ0FBQztRQUVGLElBQUksT0FBTyxJQUFJLFFBQVEsRUFBRTtZQUN2QixTQUFTLENBQUMsSUFBSSxDQUNaLENBQUMsT0FBTyxFQUFFLFFBQVEsQ0FBQyxFQUNuQixHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQWtCLEVBQUUsQ0FBQyxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsQ0FBQyxFQUN2RCxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQWtCLEVBQUUsQ0FBQyxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUN6RCxDQUFDO1NBQ0g7UUFFRCxNQUFNLEtBQUssR0FBcUIsSUFBQSxnQkFBQyxFQUFDLFNBQVMsQ0FBQzthQUN6QyxNQUFNLENBQUMsQ0FBQyxNQUFNLEVBQTRCLEVBQUUsQ0FDM0MsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FDaEM7YUFDQSxNQUFNLENBQ0wsQ0FBQyxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsRUFBRSxFQUFFLENBQ25CLE1BQU0sQ0FBQyxPQUFPLEtBQUssTUFBTSxDQUFDLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQzlEO2FBQ0EsS0FBSyxFQUFFLENBQUM7UUFFWCxNQUFNLGNBQWMsR0FBRyxJQUFJLEdBQUcsRUFBVSxDQUFDO1FBRXpDLE1BQU0sYUFBYSxHQUFxQixJQUFBLGdCQUFDLEVBQUMsS0FBSyxDQUFDO2FBQzdDLEdBQUcsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxFQUFFLEVBQUU7WUFDeEIsTUFBTSxXQUFXLEdBQUcsYUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUM7WUFFcEQsSUFBSSxjQUFjLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxFQUFFO2dCQUNuQyxPQUFPLFNBQVMsQ0FBQzthQUNsQjtZQUNELGNBQWMsQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLENBQUM7WUFFaEMsTUFBTSxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsR0FBRyxNQUFNLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQztnQkFDakQsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQztnQkFDbEIsQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1lBRXJCLE9BQU87Z0JBQ0wsRUFBRSxFQUFFLFdBQVc7Z0JBQ2YsU0FBUyxFQUFFLEtBQUs7Z0JBQ2hCLE1BQU0sRUFBRTtvQkFDTixFQUFFLEVBQUUsTUFBTSxDQUFDLE9BQU87aUJBQ25CO2dCQUNELE1BQU0sRUFBRTtvQkFDTixFQUFFLEVBQUUsTUFBTSxDQUFDLE9BQU87aUJBQ25CO2dCQUNELE1BQU0sRUFBRSxHQUFHO2dCQUNYLE9BQU8sRUFBRSxHQUFHO2dCQUNaLFVBQVUsRUFBRSxHQUFHO2FBQ2hCLENBQUM7UUFDSixDQUFDLENBQUM7YUFDRCxPQUFPLEVBQUU7YUFDVCxLQUFLLEVBQUUsQ0FBQztRQUVYLE9BQU8sYUFBYSxDQUFDO0lBQ3ZCLENBQUM7Q0FDRjtBQW5FRCw0REFtRUMifQ==
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { Token } from '@uniswap/sdk-core';
|
|
2
|
+
import { ProviderConfig } from '../provider';
|
|
3
|
+
import { IV2SubgraphProvider, V2SubgraphPool } from './subgraph-provider';
|
|
4
|
+
/**
|
|
5
|
+
* Provider for getting V2 subgraph pools that falls back to a different provider
|
|
6
|
+
* in the event of failure.
|
|
7
|
+
*
|
|
8
|
+
* @export
|
|
9
|
+
* @class V2SubgraphProviderWithFallBacks
|
|
10
|
+
*/
|
|
11
|
+
export declare class V2SubgraphProviderWithFallBacks implements IV2SubgraphProvider {
|
|
12
|
+
private fallbacks;
|
|
13
|
+
/**
|
|
14
|
+
* Creates an instance of V2SubgraphProviderWithFallBacks.
|
|
15
|
+
* @param fallbacks Ordered list of `IV2SubgraphProvider` to try to get pools from.
|
|
16
|
+
*/
|
|
17
|
+
constructor(fallbacks: IV2SubgraphProvider[]);
|
|
18
|
+
getPools(tokenIn?: Token, tokenOut?: Token, providerConfig?: ProviderConfig): Promise<V2SubgraphPool[]>;
|
|
19
|
+
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.V2SubgraphProviderWithFallBacks = void 0;
|
|
4
|
+
const util_1 = require("../../util");
|
|
5
|
+
/**
|
|
6
|
+
* Provider for getting V2 subgraph pools that falls back to a different provider
|
|
7
|
+
* in the event of failure.
|
|
8
|
+
*
|
|
9
|
+
* @export
|
|
10
|
+
* @class V2SubgraphProviderWithFallBacks
|
|
11
|
+
*/
|
|
12
|
+
class V2SubgraphProviderWithFallBacks {
|
|
13
|
+
/**
|
|
14
|
+
* Creates an instance of V2SubgraphProviderWithFallBacks.
|
|
15
|
+
* @param fallbacks Ordered list of `IV2SubgraphProvider` to try to get pools from.
|
|
16
|
+
*/
|
|
17
|
+
constructor(fallbacks) {
|
|
18
|
+
this.fallbacks = fallbacks;
|
|
19
|
+
}
|
|
20
|
+
async getPools(tokenIn, tokenOut, providerConfig) {
|
|
21
|
+
for (let i = 0; i < this.fallbacks.length; i++) {
|
|
22
|
+
const provider = this.fallbacks[i];
|
|
23
|
+
try {
|
|
24
|
+
const pools = await provider.getPools(tokenIn, tokenOut, providerConfig);
|
|
25
|
+
return pools;
|
|
26
|
+
}
|
|
27
|
+
catch (err) {
|
|
28
|
+
util_1.log.info(`Failed to get subgraph pools for V2 from fallback #${i}`);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
throw new Error('Failed to get subgraph pools from any providers');
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
exports.V2SubgraphProviderWithFallBacks = V2SubgraphProviderWithFallBacks;
|
|
35
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3ViZ3JhcGgtcHJvdmlkZXItd2l0aC1mYWxsYmFjay5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9wcm92aWRlcnMvdjIvc3ViZ3JhcGgtcHJvdmlkZXItd2l0aC1mYWxsYmFjay50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFFQSxxQ0FBaUM7QUFLakM7Ozs7OztHQU1HO0FBQ0gsTUFBYSwrQkFBK0I7SUFDMUM7OztPQUdHO0lBQ0gsWUFBb0IsU0FBZ0M7UUFBaEMsY0FBUyxHQUFULFNBQVMsQ0FBdUI7SUFBRyxDQUFDO0lBRWpELEtBQUssQ0FBQyxRQUFRLENBQ25CLE9BQWUsRUFDZixRQUFnQixFQUNoQixjQUErQjtRQUUvQixLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7WUFDOUMsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUUsQ0FBQztZQUNwQyxJQUFJO2dCQUNGLE1BQU0sS0FBSyxHQUFHLE1BQU0sUUFBUSxDQUFDLFFBQVEsQ0FDbkMsT0FBTyxFQUNQLFFBQVEsRUFDUixjQUFjLENBQ2YsQ0FBQztnQkFDRixPQUFPLEtBQUssQ0FBQzthQUNkO1lBQUMsT0FBTyxHQUFHLEVBQUU7Z0JBQ1osVUFBRyxDQUFDLElBQUksQ0FBQyxzREFBc0QsQ0FBQyxFQUFFLENBQUMsQ0FBQzthQUNyRTtTQUNGO1FBRUQsTUFBTSxJQUFJLEtBQUssQ0FBQyxpREFBaUQsQ0FBQyxDQUFDO0lBQ3JFLENBQUM7Q0FDRjtBQTVCRCwwRUE0QkMifQ==
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { Token } from '@uniswap/sdk-core';
|
|
2
|
+
import { ChainId } from '../../util/chains';
|
|
3
|
+
import { ProviderConfig } from '../provider';
|
|
4
|
+
export interface V2SubgraphPool {
|
|
5
|
+
id: string;
|
|
6
|
+
token0: {
|
|
7
|
+
id: string;
|
|
8
|
+
};
|
|
9
|
+
token1: {
|
|
10
|
+
id: string;
|
|
11
|
+
};
|
|
12
|
+
supply: number;
|
|
13
|
+
reserve: number;
|
|
14
|
+
reserveUSD: number;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Provider for getting V2 pools from the Subgraph
|
|
18
|
+
*
|
|
19
|
+
* @export
|
|
20
|
+
* @interface IV2SubgraphProvider
|
|
21
|
+
*/
|
|
22
|
+
export interface IV2SubgraphProvider {
|
|
23
|
+
getPools(tokenIn?: Token, tokenOut?: Token, providerConfig?: ProviderConfig): Promise<V2SubgraphPool[]>;
|
|
24
|
+
}
|
|
25
|
+
export declare class V2SubgraphProvider implements IV2SubgraphProvider {
|
|
26
|
+
private chainId;
|
|
27
|
+
private retries;
|
|
28
|
+
private timeout;
|
|
29
|
+
private rollback;
|
|
30
|
+
private pageSize;
|
|
31
|
+
private client;
|
|
32
|
+
constructor(chainId: ChainId, retries?: number, timeout?: number, rollback?: boolean, pageSize?: number);
|
|
33
|
+
getPools(_tokenIn?: Token, _tokenOut?: Token, providerConfig?: ProviderConfig): Promise<V2SubgraphPool[]>;
|
|
34
|
+
}
|
|
@@ -0,0 +1,135 @@
|
|
|
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.V2SubgraphProvider = void 0;
|
|
7
|
+
const async_retry_1 = __importDefault(require("async-retry"));
|
|
8
|
+
const await_timeout_1 = __importDefault(require("await-timeout"));
|
|
9
|
+
const graphql_request_1 = require("graphql-request");
|
|
10
|
+
const lodash_1 = __importDefault(require("lodash"));
|
|
11
|
+
const chains_1 = require("../../util/chains");
|
|
12
|
+
const log_1 = require("../../util/log");
|
|
13
|
+
const SUBGRAPH_URL_BY_CHAIN = {
|
|
14
|
+
[chains_1.ChainId.MAINNET]: 'https://api.thegraph.com/subgraphs/name/ianlapham/uniswapv2',
|
|
15
|
+
[chains_1.ChainId.RINKEBY]: 'https://api.thegraph.com/subgraphs/name/ianlapham/uniswap-v2-rinkeby',
|
|
16
|
+
};
|
|
17
|
+
const threshold = 0.025;
|
|
18
|
+
const PAGE_SIZE = 1000; // 1k is max possible query size from subgraph.
|
|
19
|
+
class V2SubgraphProvider {
|
|
20
|
+
constructor(chainId, retries = 2, timeout = 360000, rollback = true, pageSize = PAGE_SIZE) {
|
|
21
|
+
this.chainId = chainId;
|
|
22
|
+
this.retries = retries;
|
|
23
|
+
this.timeout = timeout;
|
|
24
|
+
this.rollback = rollback;
|
|
25
|
+
this.pageSize = pageSize;
|
|
26
|
+
const subgraphUrl = SUBGRAPH_URL_BY_CHAIN[this.chainId];
|
|
27
|
+
if (!subgraphUrl) {
|
|
28
|
+
throw new Error(`No subgraph url for chain id: ${this.chainId}`);
|
|
29
|
+
}
|
|
30
|
+
this.client = new graphql_request_1.GraphQLClient(subgraphUrl);
|
|
31
|
+
}
|
|
32
|
+
async getPools(_tokenIn, _tokenOut, providerConfig) {
|
|
33
|
+
let blockNumber = (providerConfig === null || providerConfig === void 0 ? void 0 : providerConfig.blockNumber)
|
|
34
|
+
? await providerConfig.blockNumber
|
|
35
|
+
: undefined;
|
|
36
|
+
// Due to limitations with the Subgraph API this is the only way to parameterize the query.
|
|
37
|
+
const query2 = (0, graphql_request_1.gql) `
|
|
38
|
+
query getPools($pageSize: Int!, $id: String) {
|
|
39
|
+
pairs(
|
|
40
|
+
first: $pageSize
|
|
41
|
+
${blockNumber ? `block: { number: ${blockNumber} }` : ``}
|
|
42
|
+
where: { id_gt: $id }
|
|
43
|
+
) {
|
|
44
|
+
id
|
|
45
|
+
token0 { id, symbol }
|
|
46
|
+
token1 { id, symbol }
|
|
47
|
+
totalSupply
|
|
48
|
+
trackedReserveETH
|
|
49
|
+
reserveUSD
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
`;
|
|
53
|
+
let pools = [];
|
|
54
|
+
log_1.log.info(`Getting V2 pools from the subgraph with page size ${this.pageSize}${(providerConfig === null || providerConfig === void 0 ? void 0 : providerConfig.blockNumber)
|
|
55
|
+
? ` as of block ${providerConfig === null || providerConfig === void 0 ? void 0 : providerConfig.blockNumber}`
|
|
56
|
+
: ''}.`);
|
|
57
|
+
await (0, async_retry_1.default)(async () => {
|
|
58
|
+
const timeout = new await_timeout_1.default();
|
|
59
|
+
const getPools = async () => {
|
|
60
|
+
let lastId = '';
|
|
61
|
+
let pairs = [];
|
|
62
|
+
let pairsPage = [];
|
|
63
|
+
do {
|
|
64
|
+
await (0, async_retry_1.default)(async () => {
|
|
65
|
+
const poolsResult = await this.client.request(query2, {
|
|
66
|
+
pageSize: this.pageSize,
|
|
67
|
+
id: lastId,
|
|
68
|
+
});
|
|
69
|
+
pairsPage = poolsResult.pairs;
|
|
70
|
+
pairs = pairs.concat(pairsPage);
|
|
71
|
+
lastId = pairs[pairs.length - 1].id;
|
|
72
|
+
}, {
|
|
73
|
+
retries: this.retries,
|
|
74
|
+
onRetry: (err, retry) => {
|
|
75
|
+
pools = [];
|
|
76
|
+
log_1.log.info({ err }, `Failed request for page of pools from subgraph. Retry attempt: ${retry}`);
|
|
77
|
+
},
|
|
78
|
+
});
|
|
79
|
+
} while (pairsPage.length > 0);
|
|
80
|
+
return pairs;
|
|
81
|
+
};
|
|
82
|
+
/* eslint-disable no-useless-catch */
|
|
83
|
+
try {
|
|
84
|
+
const getPoolsPromise = getPools();
|
|
85
|
+
const timerPromise = timeout.set(this.timeout).then(() => {
|
|
86
|
+
throw new Error(`Timed out getting pools from subgraph: ${this.timeout}`);
|
|
87
|
+
});
|
|
88
|
+
pools = await Promise.race([getPoolsPromise, timerPromise]);
|
|
89
|
+
return;
|
|
90
|
+
}
|
|
91
|
+
catch (err) {
|
|
92
|
+
throw err;
|
|
93
|
+
}
|
|
94
|
+
finally {
|
|
95
|
+
timeout.clear();
|
|
96
|
+
}
|
|
97
|
+
/* eslint-enable no-useless-catch */
|
|
98
|
+
}, {
|
|
99
|
+
retries: this.retries,
|
|
100
|
+
onRetry: (err, retry) => {
|
|
101
|
+
if (this.rollback &&
|
|
102
|
+
blockNumber &&
|
|
103
|
+
lodash_1.default.includes(err.message, 'indexed up to')) {
|
|
104
|
+
blockNumber = blockNumber - 10;
|
|
105
|
+
log_1.log.info(`Detected subgraph indexing error. Rolled back block number to: ${blockNumber}`);
|
|
106
|
+
}
|
|
107
|
+
pools = [];
|
|
108
|
+
log_1.log.info({ err }, `Failed to get pools from subgraph. Retry attempt: ${retry}`);
|
|
109
|
+
},
|
|
110
|
+
});
|
|
111
|
+
// Filter pools that have tracked reserve ETH less than threshold.
|
|
112
|
+
// trackedReserveETH filters pools that do not involve a pool from this allowlist:
|
|
113
|
+
// https://github.com/Uniswap/v2-subgraph/blob/7c82235cad7aee4cfce8ea82f0030af3d224833e/src/mappings/pricing.ts#L43
|
|
114
|
+
// Which helps filter pools with manipulated prices/liquidity.
|
|
115
|
+
// TODO: Remove. Temporary fix to ensure tokens without trackedReserveETH are in the list.
|
|
116
|
+
const FEI = '0x956f47f50a910163d8bf957cf5846d573e7f87ca';
|
|
117
|
+
const poolsSanitized = pools
|
|
118
|
+
.filter((pool) => {
|
|
119
|
+
return (pool.token0.id == FEI ||
|
|
120
|
+
pool.token1.id == FEI ||
|
|
121
|
+
parseFloat(pool.trackedReserveETH) > threshold);
|
|
122
|
+
})
|
|
123
|
+
.map((pool) => {
|
|
124
|
+
return Object.assign(Object.assign({}, pool), { id: pool.id.toLowerCase(), token0: {
|
|
125
|
+
id: pool.token0.id.toLowerCase(),
|
|
126
|
+
}, token1: {
|
|
127
|
+
id: pool.token1.id.toLowerCase(),
|
|
128
|
+
}, supply: parseFloat(pool.totalSupply), reserve: parseFloat(pool.trackedReserveETH), reserveUSD: parseFloat(pool.reserveUSD) });
|
|
129
|
+
});
|
|
130
|
+
log_1.log.info(`Got ${pools.length} V2 pools from the subgraph. ${poolsSanitized.length} after filtering`);
|
|
131
|
+
return poolsSanitized;
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
exports.V2SubgraphProvider = V2SubgraphProvider;
|
|
135
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3ViZ3JhcGgtcHJvdmlkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvcHJvdmlkZXJzL3YyL3N1YmdyYXBoLXByb3ZpZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUNBLDhEQUFnQztBQUNoQyxrRUFBb0M7QUFDcEMscURBQXFEO0FBQ3JELG9EQUF1QjtBQUV2Qiw4Q0FBNEM7QUFDNUMsd0NBQXFDO0FBK0JyQyxNQUFNLHFCQUFxQixHQUFzQztJQUMvRCxDQUFDLGdCQUFPLENBQUMsT0FBTyxDQUFDLEVBQ2YsNkRBQTZEO0lBQy9ELENBQUMsZ0JBQU8sQ0FBQyxPQUFPLENBQUMsRUFDZixzRUFBc0U7Q0FDekUsQ0FBQztBQUVGLE1BQU0sU0FBUyxHQUFHLEtBQUssQ0FBQztBQUV4QixNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsQ0FBQywrQ0FBK0M7QUFnQnZFLE1BQWEsa0JBQWtCO0lBRzdCLFlBQ1UsT0FBZ0IsRUFDaEIsVUFBVSxDQUFDLEVBQ1gsVUFBVSxNQUFNLEVBQ2hCLFdBQVcsSUFBSSxFQUNmLFdBQVcsU0FBUztRQUpwQixZQUFPLEdBQVAsT0FBTyxDQUFTO1FBQ2hCLFlBQU8sR0FBUCxPQUFPLENBQUk7UUFDWCxZQUFPLEdBQVAsT0FBTyxDQUFTO1FBQ2hCLGFBQVEsR0FBUixRQUFRLENBQU87UUFDZixhQUFRLEdBQVIsUUFBUSxDQUFZO1FBRTVCLE1BQU0sV0FBVyxHQUFHLHFCQUFxQixDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN4RCxJQUFJLENBQUMsV0FBVyxFQUFFO1lBQ2hCLE1BQU0sSUFBSSxLQUFLLENBQUMsaUNBQWlDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO1NBQ2xFO1FBQ0QsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLCtCQUFhLENBQUMsV0FBVyxDQUFDLENBQUM7SUFDL0MsQ0FBQztJQUVNLEtBQUssQ0FBQyxRQUFRLENBQ25CLFFB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
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.V2URISubgraphProvider = void 0;
|
|
4
|
+
const uri_subgraph_provider_1 = require("../uri-subgraph-provider");
|
|
5
|
+
class V2URISubgraphProvider extends uri_subgraph_provider_1.URISubgraphProvider {
|
|
6
|
+
}
|
|
7
|
+
exports.V2URISubgraphProvider = V2URISubgraphProvider;
|
|
8
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXJpLXN1YmdyYXBoLXByb3ZpZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3Byb3ZpZGVycy92Mi91cmktc3ViZ3JhcGgtcHJvdmlkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsb0VBQStEO0FBSS9ELE1BQWEscUJBQ1gsU0FBUSwyQ0FBbUM7Q0FDVjtBQUZuQyxzREFFbUMifQ==
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { Token } from '@uniswap/sdk-core';
|
|
2
|
+
import { FeeAmount, Pool } from '@uniswap/v3-sdk';
|
|
3
|
+
import { ChainId } from '../../util/chains';
|
|
4
|
+
import { ICache } from './../cache';
|
|
5
|
+
import { ProviderConfig } from './../provider';
|
|
6
|
+
import { IV3PoolProvider, V3PoolAccessor } from './pool-provider';
|
|
7
|
+
/**
|
|
8
|
+
* Provider for getting V3 pools, with functionality for caching the results.
|
|
9
|
+
* Does not cache by block because we compute quotes using the on-chain quoter
|
|
10
|
+
* so do not mind if the liquidity values are out of date.
|
|
11
|
+
*
|
|
12
|
+
* @export
|
|
13
|
+
* @class CachingV3PoolProvider
|
|
14
|
+
*/
|
|
15
|
+
export declare class CachingV3PoolProvider implements IV3PoolProvider {
|
|
16
|
+
protected chainId: ChainId;
|
|
17
|
+
protected poolProvider: IV3PoolProvider;
|
|
18
|
+
private cache;
|
|
19
|
+
private POOL_KEY;
|
|
20
|
+
/**
|
|
21
|
+
* Creates an instance of CachingV3PoolProvider.
|
|
22
|
+
* @param chainId The chain id to use.
|
|
23
|
+
* @param poolProvider The provider to use to get the pools when not in the cache.
|
|
24
|
+
* @param cache Cache instance to hold cached pools.
|
|
25
|
+
*/
|
|
26
|
+
constructor(chainId: ChainId, poolProvider: IV3PoolProvider, cache: ICache<Pool>);
|
|
27
|
+
getPools(tokenPairs: [Token, Token, FeeAmount][], providerConfig?: ProviderConfig): Promise<V3PoolAccessor>;
|
|
28
|
+
getPoolAddress(tokenA: Token, tokenB: Token, feeAmount: FeeAmount): {
|
|
29
|
+
poolAddress: string;
|
|
30
|
+
token0: Token;
|
|
31
|
+
token1: Token;
|
|
32
|
+
};
|
|
33
|
+
}
|
|
@@ -0,0 +1,77 @@
|
|
|
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.CachingV3PoolProvider = void 0;
|
|
7
|
+
const lodash_1 = __importDefault(require("lodash"));
|
|
8
|
+
const log_1 = require("../../util/log");
|
|
9
|
+
/**
|
|
10
|
+
* Provider for getting V3 pools, with functionality for caching the results.
|
|
11
|
+
* Does not cache by block because we compute quotes using the on-chain quoter
|
|
12
|
+
* so do not mind if the liquidity values are out of date.
|
|
13
|
+
*
|
|
14
|
+
* @export
|
|
15
|
+
* @class CachingV3PoolProvider
|
|
16
|
+
*/
|
|
17
|
+
class CachingV3PoolProvider {
|
|
18
|
+
/**
|
|
19
|
+
* Creates an instance of CachingV3PoolProvider.
|
|
20
|
+
* @param chainId The chain id to use.
|
|
21
|
+
* @param poolProvider The provider to use to get the pools when not in the cache.
|
|
22
|
+
* @param cache Cache instance to hold cached pools.
|
|
23
|
+
*/
|
|
24
|
+
constructor(chainId, poolProvider, cache) {
|
|
25
|
+
this.chainId = chainId;
|
|
26
|
+
this.poolProvider = poolProvider;
|
|
27
|
+
this.cache = cache;
|
|
28
|
+
this.POOL_KEY = (chainId, address) => `pool-${chainId}-${address}`;
|
|
29
|
+
}
|
|
30
|
+
async getPools(tokenPairs, providerConfig) {
|
|
31
|
+
const poolAddressSet = new Set();
|
|
32
|
+
const poolsToGetTokenPairs = [];
|
|
33
|
+
const poolsToGetAddresses = [];
|
|
34
|
+
const poolAddressToPool = {};
|
|
35
|
+
for (const [tokenA, tokenB, feeAmount] of tokenPairs) {
|
|
36
|
+
const { poolAddress, token0, token1 } = this.getPoolAddress(tokenA, tokenB, feeAmount);
|
|
37
|
+
if (poolAddressSet.has(poolAddress)) {
|
|
38
|
+
continue;
|
|
39
|
+
}
|
|
40
|
+
poolAddressSet.add(poolAddress);
|
|
41
|
+
const cachedPool = await this.cache.get(this.POOL_KEY(this.chainId, poolAddress));
|
|
42
|
+
if (cachedPool) {
|
|
43
|
+
poolAddressToPool[poolAddress] = cachedPool;
|
|
44
|
+
continue;
|
|
45
|
+
}
|
|
46
|
+
poolsToGetTokenPairs.push([token0, token1, feeAmount]);
|
|
47
|
+
poolsToGetAddresses.push(poolAddress);
|
|
48
|
+
}
|
|
49
|
+
log_1.log.info({
|
|
50
|
+
poolsFound: lodash_1.default.map(Object.values(poolAddressToPool), (p) => `${p.token0.symbol} ${p.token1.symbol} ${p.fee}`),
|
|
51
|
+
poolsToGetTokenPairs: lodash_1.default.map(poolsToGetTokenPairs, (t) => `${t[0].symbol} ${t[1].symbol} ${t[2]}`),
|
|
52
|
+
}, `Found ${Object.keys(poolAddressToPool).length} V3 pools already in local cache. About to get liquidity and slot0s for ${poolsToGetTokenPairs.length} pools.`);
|
|
53
|
+
if (poolsToGetAddresses.length > 0) {
|
|
54
|
+
const poolAccessor = await this.poolProvider.getPools(poolsToGetTokenPairs, providerConfig);
|
|
55
|
+
for (const address of poolsToGetAddresses) {
|
|
56
|
+
const pool = poolAccessor.getPoolByAddress(address);
|
|
57
|
+
if (pool) {
|
|
58
|
+
poolAddressToPool[address] = pool;
|
|
59
|
+
await this.cache.set(this.POOL_KEY(this.chainId, address), pool);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
return {
|
|
64
|
+
getPool: (tokenA, tokenB, feeAmount) => {
|
|
65
|
+
const { poolAddress } = this.getPoolAddress(tokenA, tokenB, feeAmount);
|
|
66
|
+
return poolAddressToPool[poolAddress];
|
|
67
|
+
},
|
|
68
|
+
getPoolByAddress: (address) => poolAddressToPool[address],
|
|
69
|
+
getAllPools: () => Object.values(poolAddressToPool),
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
getPoolAddress(tokenA, tokenB, feeAmount) {
|
|
73
|
+
return this.poolProvider.getPoolAddress(tokenA, tokenB, feeAmount);
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
exports.CachingV3PoolProvider = CachingV3PoolProvider;
|
|
77
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FjaGluZy1wb29sLXByb3ZpZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3Byb3ZpZGVycy92My9jYWNoaW5nLXBvb2wtcHJvdmlkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBRUEsb0RBQXVCO0FBR3ZCLHdDQUFxQztBQU1yQzs7Ozs7OztHQU9HO0FBQ0gsTUFBYSxxQkFBcUI7SUFJaEM7Ozs7O09BS0c7SUFDSCxZQUNZLE9BQWdCLEVBQ2hCLFlBQTZCLEVBQy9CLEtBQW1CO1FBRmpCLFlBQU8sR0FBUCxPQUFPLENBQVM7UUFDaEIsaUJBQVksR0FBWixZQUFZLENBQWlCO1FBQy9CLFVBQUssR0FBTCxLQUFLLENBQWM7UUFackIsYUFBUSxHQUFHLENBQUMsT0FBZ0IsRUFBRSxPQUFlLEVBQUUsRUFBRSxDQUN2RCxRQUFRLE9BQU8sSUFBSSxPQUFPLEVBQUUsQ0FBQztJQVk1QixDQUFDO0lBRUcsS0FBSyxDQUFDLFFBQVEsQ0FDbkIsVUFBdUMsRUFDdkMsY0FBK0I7UUFFL0IsTUFBTSxjQUFjLEdBQWdCLElBQUksR0FBRyxFQUFVLENBQUM7UUFDdEQsTUFBTSxvQkFBb0IsR0FBcUMsRUFBRSxDQUFDO1FBQ2xFLE1BQU0sbUJBQW1CLEdBQWEsRUFBRSxDQUFDO1FBQ3pDLE1BQU0saUJBQWlCLEdBQW9DLEVBQUUsQ0FBQztRQUU5RCxLQUFLLE1BQU0sQ0FBQyxNQUFNLEVBQUUsTUFBTSxFQUFFLFNBQVMsQ0FBQyxJQUFJLFVBQVUsRUFBRTtZQUNwRCxNQUFNLEVBQUUsV0FBVyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsR0FBRyxJQUFJLENBQUMsY0FBYyxDQUN6RCxNQUFNLEVBQ04sTUFBTSxFQUNOLFNBQVMsQ0FDVixDQUFDO1lBRUYsSUFBSSxjQUFjLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxFQUFFO2dCQUNuQyxTQUFTO2FBQ1Y7WUFFRCxjQUFjLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxDQUFDO1lBRWhDLE1BQU0sVUFBVSxHQUFHLE1BQU0sSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQ3JDLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxXQUFXLENBQUMsQ0FDekMsQ0FBQztZQUNGLElBQUksVUFBVSxFQUFFO2dCQUNkLGlCQUFpQixDQUFDLFdBQVcsQ0FBQyxHQUFHLFVBQVUsQ0FBQztnQkFDNUMsU0FBUzthQUNWO1lBRUQsb0JBQW9CLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxTQUFTLENBQUMsQ0FBQyxDQUFDO1lBQ3ZELG1CQUFtQixDQUFDLElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQztTQUN2QztRQUVELFNBQUcsQ0FBQyxJQUFJLENBQ047WUFDRSxVQUFVLEVBQUUsZ0JBQUMsQ0FBQyxHQUFHLENBQ2YsTUFBTSxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsQ0FBQyxFQUNoQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sSUFBSSxDQUFDLENBQUMsR0FBRyxFQUFFLENBQ3hEO1lBQ0Qsb0JBQW9CLEVBQUUsZ0JBQUMsQ0FBQyxHQUFHLENBQ3pCLG9CQUFvQixFQUNwQixDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQy9DO1NBQ0YsRUFDRCxTQUNFLE1BQU0sQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxNQUNqQywyRUFDRSxvQkFBb0IsQ0FBQyxNQUN2QixTQUFTLENBQ1YsQ0FBQztRQUVGLElBQUksbUJBQW1CLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtZQUNsQyxNQUFNLFlBQVksR0FBRyxNQUFNLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUNuRCxvQkFBb0IsRUFDcEIsY0FBYyxDQUNmLENBQUM7WUFDRixLQUFLLE1BQU0sT0FBTyxJQUFJLG1CQUFtQixFQUFFO2dCQUN6QyxNQUFNLElBQUksR0FBRyxZQUFZLENBQUMsZ0JBQWdCLENBQUMsT0FBTyxDQUFDLENBQUM7Z0JBQ3BELElBQUksSUFBSSxFQUFFO29CQUNSLGlCQUFpQixDQUFDLE9BQU8sQ0FBQyxHQUFHLElBQUksQ0FBQztvQkFDbEMsTUFBTSxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7aUJBQ2xFO2FBQ0Y7U0FDRjtRQUVELE9BQU87WUFDTCxPQUFPLEVBQUUsQ0FDUCxNQUFhLEVBQ2IsTUFBYSxFQUNiLFNBQW9CLEVBQ0YsRUFBRTtnQkFDcEIsTUFBTSxFQUFFLFdBQVcsRUFBRSxHQUFHLElBQUksQ0FBQyxjQUFjLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxTQUFTLENBQUMsQ0FBQztnQkFDdkUsT0FBTyxpQkFBaUIsQ0FBQyxXQUFXLENBQUMsQ0FBQztZQUN4QyxDQUFDO1lBQ0QsZ0JBQWdCLEVBQUUsQ0FBQyxPQUFlLEVBQW9CLEVBQUUsQ0FDdEQsaUJBQWlCLENBQUMsT0FBTyxDQUFDO1lBQzVCLFdBQVcsRUFBRSxHQUFXLEVBQUUsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLGlCQUFpQixDQUFDO1NBQzVELENBQUM7SUFDSixDQUFDO0lBRU0sY0FBYyxDQUNuQixNQUFhLEVBQ2IsTUFBYSxFQUNiLFNBQW9CO1FBRXBCLE9BQU8sSUFBSSxDQUFDLFlBQVksQ0FBQyxjQUFjLENBQUMsTUFBTSxFQUFFLE1BQU0sRUFBRSxTQUFTLENBQUMsQ0FBQztJQUNyRSxDQUFDO0NBQ0Y7QUF4R0Qsc0RBd0dDIn0=
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { ChainId } from '../../util/chains';
|
|
2
|
+
import { ICache } from './../cache';
|
|
3
|
+
import { IV3SubgraphProvider, V3SubgraphPool } from './subgraph-provider';
|
|
4
|
+
/**
|
|
5
|
+
* Provider for getting V3 pools, with functionality for caching the results.
|
|
6
|
+
*
|
|
7
|
+
* @export
|
|
8
|
+
* @class CachingV3SubgraphProvider
|
|
9
|
+
*/
|
|
10
|
+
export declare class CachingV3SubgraphProvider implements IV3SubgraphProvider {
|
|
11
|
+
private chainId;
|
|
12
|
+
protected subgraphProvider: IV3SubgraphProvider;
|
|
13
|
+
private cache;
|
|
14
|
+
private SUBGRAPH_KEY;
|
|
15
|
+
/**
|
|
16
|
+
* Creates an instance of CachingV3SubgraphProvider.
|
|
17
|
+
* @param chainId The chain id to use.
|
|
18
|
+
* @param subgraphProvider The provider to use to get the subgraph pools when not in the cache.
|
|
19
|
+
* @param cache Cache instance to hold cached pools.
|
|
20
|
+
*/
|
|
21
|
+
constructor(chainId: ChainId, subgraphProvider: IV3SubgraphProvider, cache: ICache<V3SubgraphPool[]>);
|
|
22
|
+
getPools(): Promise<V3SubgraphPool[]>;
|
|
23
|
+
}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CachingV3SubgraphProvider = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Provider for getting V3 pools, with functionality for caching the results.
|
|
6
|
+
*
|
|
7
|
+
* @export
|
|
8
|
+
* @class CachingV3SubgraphProvider
|
|
9
|
+
*/
|
|
10
|
+
class CachingV3SubgraphProvider {
|
|
11
|
+
/**
|
|
12
|
+
* Creates an instance of CachingV3SubgraphProvider.
|
|
13
|
+
* @param chainId The chain id to use.
|
|
14
|
+
* @param subgraphProvider The provider to use to get the subgraph pools when not in the cache.
|
|
15
|
+
* @param cache Cache instance to hold cached pools.
|
|
16
|
+
*/
|
|
17
|
+
constructor(chainId, subgraphProvider, cache) {
|
|
18
|
+
this.chainId = chainId;
|
|
19
|
+
this.subgraphProvider = subgraphProvider;
|
|
20
|
+
this.cache = cache;
|
|
21
|
+
this.SUBGRAPH_KEY = (chainId) => `subgraph-pools-${chainId}`;
|
|
22
|
+
}
|
|
23
|
+
async getPools() {
|
|
24
|
+
const cachedPools = await this.cache.get(this.SUBGRAPH_KEY(this.chainId));
|
|
25
|
+
if (cachedPools) {
|
|
26
|
+
return cachedPools;
|
|
27
|
+
}
|
|
28
|
+
const pools = await this.subgraphProvider.getPools();
|
|
29
|
+
await this.cache.set(this.SUBGRAPH_KEY(this.chainId), pools);
|
|
30
|
+
return pools;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
exports.CachingV3SubgraphProvider = CachingV3SubgraphProvider;
|
|
34
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FjaGluZy1zdWJncmFwaC1wcm92aWRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9wcm92aWRlcnMvdjMvY2FjaGluZy1zdWJncmFwaC1wcm92aWRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFLQTs7Ozs7R0FLRztBQUNILE1BQWEseUJBQXlCO0lBR3BDOzs7OztPQUtHO0lBQ0gsWUFDVSxPQUFnQixFQUNkLGdCQUFxQyxFQUN2QyxLQUErQjtRQUYvQixZQUFPLEdBQVAsT0FBTyxDQUFTO1FBQ2QscUJBQWdCLEdBQWhCLGdCQUFnQixDQUFxQjtRQUN2QyxVQUFLLEdBQUwsS0FBSyxDQUEwQjtRQVhqQyxpQkFBWSxHQUFHLENBQUMsT0FBZ0IsRUFBRSxFQUFFLENBQUMsa0JBQWtCLE9BQU8sRUFBRSxDQUFDO0lBWXRFLENBQUM7SUFFRyxLQUFLLENBQUMsUUFBUTtRQUNuQixNQUFNLFdBQVcsR0FBRyxNQUFNLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7UUFFMUUsSUFBSSxXQUFXLEVBQUU7WUFDZixPQUFPLFdBQVcsQ0FBQztTQUNwQjtRQUVELE1BQU0sS0FBSyxHQUFHLE1BQU0sSUFBSSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsRUFBRSxDQUFDO1FBRXJELE1BQU0sSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFFN0QsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0NBQ0Y7QUE1QkQsOERBNEJDIn0=
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { BigNumber } from '@ethersproject/bignumber';
|
|
2
|
+
import { BaseProvider } from '@ethersproject/providers';
|
|
3
|
+
import { ChainId } from '../../util';
|
|
4
|
+
import { IMulticallProvider } from '../multicall-provider';
|
|
5
|
+
/**
|
|
6
|
+
* Provider for getting gas constants on L2s.
|
|
7
|
+
*
|
|
8
|
+
* @export
|
|
9
|
+
* @interface IL2GasDataProvider
|
|
10
|
+
*/
|
|
11
|
+
export interface IL2GasDataProvider<T> {
|
|
12
|
+
/**
|
|
13
|
+
* Gets the data constants needed to calculate the l1 security fee on L2s like arbitrum and optimism.
|
|
14
|
+
* @returns An object that includes the data necessary for the off chain estimations.
|
|
15
|
+
*/
|
|
16
|
+
getGasData(): Promise<T>;
|
|
17
|
+
}
|
|
18
|
+
export declare type OptimismGasData = {
|
|
19
|
+
l1BaseFee: BigNumber;
|
|
20
|
+
scalar: BigNumber;
|
|
21
|
+
decimals: BigNumber;
|
|
22
|
+
overhead: BigNumber;
|
|
23
|
+
};
|
|
24
|
+
export declare class OptimismGasDataProvider implements IL2GasDataProvider<OptimismGasData> {
|
|
25
|
+
protected chainId: ChainId;
|
|
26
|
+
protected multicall2Provider: IMulticallProvider;
|
|
27
|
+
protected gasOracleAddress: string;
|
|
28
|
+
constructor(chainId: ChainId, multicall2Provider: IMulticallProvider, gasPriceAddress?: string);
|
|
29
|
+
/**
|
|
30
|
+
* Gets the data constants needed to calculate the l1 security fee on Optimism.
|
|
31
|
+
* @returns An OptimismGasData object that includes the l1BaseFee,
|
|
32
|
+
* scalar, decimals, and overhead values.
|
|
33
|
+
*/
|
|
34
|
+
getGasData(): Promise<OptimismGasData>;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* perL2TxFee is the base fee in wei for an l2 transaction.
|
|
38
|
+
* perL2CalldataFee is the fee in wei per byte of calldata the swap uses. Multiply by the total bytes of the calldata.
|
|
39
|
+
* perArbGasTotal is the fee in wei per unit of arbgas. Multiply this by the estimate we calculate based on ticks/hops in the gasModel.
|
|
40
|
+
*/
|
|
41
|
+
export declare type ArbitrumGasData = {
|
|
42
|
+
perL2TxFee: BigNumber;
|
|
43
|
+
perL1CalldataFee: BigNumber;
|
|
44
|
+
perArbGasTotal: BigNumber;
|
|
45
|
+
};
|
|
46
|
+
export declare class ArbitrumGasDataProvider implements IL2GasDataProvider<ArbitrumGasData> {
|
|
47
|
+
protected chainId: ChainId;
|
|
48
|
+
protected provider: BaseProvider;
|
|
49
|
+
protected gasFeesAddress: string;
|
|
50
|
+
protected blockNumberOverride: number | Promise<number> | undefined;
|
|
51
|
+
constructor(chainId: ChainId, provider: BaseProvider, gasDataAddress?: string);
|
|
52
|
+
getGasData(): Promise<{
|
|
53
|
+
perL2TxFee: BigNumber;
|
|
54
|
+
perL1CalldataFee: BigNumber;
|
|
55
|
+
perArbGasTotal: BigNumber;
|
|
56
|
+
}>;
|
|
57
|
+
}
|