@xspswap/smart-order-router 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +255 -0
- package/LICENSE +674 -0
- package/README.md +189 -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 +23 -0
- package/build/main/providers/caching/route/model/cached-route.js +24 -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 +113 -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 +14 -0
- package/build/main/providers/eth-estimate-gas-provider.js +72 -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 +33 -0
- package/build/main/providers/on-chain-quote-provider.d.ts +221 -0
- package/build/main/providers/on-chain-quote-provider.js +511 -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 +43 -0
- package/build/main/providers/tenderly-simulation-provider.js +244 -0
- package/build/main/providers/token-provider.d.ts +45 -0
- package/build/main/providers/token-provider.js +121 -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 +73 -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 +30 -0
- package/build/main/providers/v3/gas-data-provider.js +3 -0
- package/build/main/providers/v3/pool-provider.d.ts +61 -0
- package/build/main/providers/v3/pool-provider.js +125 -0
- package/build/main/providers/v3/static-subgraph-provider.d.ts +21 -0
- package/build/main/providers/v3/static-subgraph-provider.js +100 -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 +137 -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 +762 -0
- package/build/main/routers/alpha-router/config.d.ts +4 -0
- package/build/main/routers/alpha-router/config.js +61 -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 +344 -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 +704 -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 +39 -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 +171 -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 +43 -0
- package/build/main/routers/alpha-router/gas-models/v3/v3-heuristic-gas-model.d.ts +25 -0
- package/build/main/routers/alpha-router/gas-models/v3/v3-heuristic-gas-model.js +223 -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 +28 -0
- package/build/main/routers/legacy-router/bases.js +58 -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/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 +941 -0
- package/build/main/types/other/factories/SwapRouter02__factory.d.ts +67 -0
- package/build/main/types/other/factories/SwapRouter02__factory.js +1103 -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/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 +132 -0
- package/build/main/util/addresses.d.ts +25 -0
- package/build/main/util/addresses.js +59 -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 +34 -0
- package/build/main/util/chains.js +128 -0
- package/build/main/util/gas-factory-helpers.d.ts +24 -0
- package/build/main/util/gas-factory-helpers.js +294 -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 +23 -0
- package/build/module/providers/caching/route/model/cached-route.js +20 -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 +106 -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 +14 -0
- package/build/module/providers/eth-estimate-gas-provider.js +80 -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 +29 -0
- package/build/module/providers/on-chain-quote-provider.d.ts +221 -0
- package/build/module/providers/on-chain-quote-provider.js +505 -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 +43 -0
- package/build/module/providers/tenderly-simulation-provider.js +239 -0
- package/build/module/providers/token-provider.d.ts +45 -0
- package/build/module/providers/token-provider.js +110 -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 +66 -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 +30 -0
- package/build/module/providers/v3/gas-data-provider.js +2 -0
- package/build/module/providers/v3/pool-provider.d.ts +61 -0
- package/build/module/providers/v3/pool-provider.js +118 -0
- package/build/module/providers/v3/static-subgraph-provider.d.ts +21 -0
- package/build/module/providers/v3/static-subgraph-provider.js +93 -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 +124 -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 +760 -0
- package/build/module/routers/alpha-router/config.d.ts +4 -0
- package/build/module/routers/alpha-router/config.js +57 -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 +336 -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 +715 -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 +34 -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 +164 -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 +37 -0
- package/build/module/routers/alpha-router/gas-models/v3/v3-heuristic-gas-model.d.ts +25 -0
- package/build/module/routers/alpha-router/gas-models/v3/v3-heuristic-gas-model.js +216 -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 +28 -0
- package/build/module/routers/legacy-router/bases.js +54 -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/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 +937 -0
- package/build/module/types/other/factories/SwapRouter02__factory.d.ts +67 -0
- package/build/module/types/other/factories/SwapRouter02__factory.js +1099 -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/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 +128 -0
- package/build/module/util/addresses.d.ts +25 -0
- package/build/module/util/addresses.js +70 -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 +34 -0
- package/build/module/util/chains.js +120 -0
- package/build/module/util/gas-factory-helpers.d.ts +24 -0
- package/build/module/util/gas-factory-helpers.js +277 -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 +133 -0
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.IRouteCachingProvider = void 0;
|
|
4
|
+
const sdk_core_1 = require("@uniswap/sdk-core");
|
|
5
|
+
const model_1 = require("./model");
|
|
6
|
+
/**
|
|
7
|
+
* Abstract class for a RouteCachingProvider.
|
|
8
|
+
* Defines the base methods of how to interact with this interface, but not the implementation of how to cache.
|
|
9
|
+
*/
|
|
10
|
+
class IRouteCachingProvider {
|
|
11
|
+
constructor() {
|
|
12
|
+
/**
|
|
13
|
+
* Final implementation of the public `getCachedRoute` method, this is how code will interact with the implementation
|
|
14
|
+
*
|
|
15
|
+
* @public
|
|
16
|
+
* @readonly
|
|
17
|
+
* @param chainId
|
|
18
|
+
* @param amount
|
|
19
|
+
* @param quoteToken
|
|
20
|
+
* @param tradeType
|
|
21
|
+
* @param protocols
|
|
22
|
+
* @param blockNumber
|
|
23
|
+
*/
|
|
24
|
+
this.getCachedRoute = async (// Defined as a readonly member instead of a regular function to make it final.
|
|
25
|
+
chainId, amount, quoteToken, tradeType, protocols, blockNumber) => {
|
|
26
|
+
if (await this.getCacheMode(chainId, amount, quoteToken, tradeType, protocols) == model_1.CacheMode.Darkmode) {
|
|
27
|
+
return undefined;
|
|
28
|
+
}
|
|
29
|
+
const cachedRoute = await this._getCachedRoute(chainId, amount, quoteToken, tradeType, protocols);
|
|
30
|
+
return this.filterExpiredCachedRoutes(cachedRoute, blockNumber);
|
|
31
|
+
};
|
|
32
|
+
/**
|
|
33
|
+
* Final implementation of the public `setCachedRoute` method.
|
|
34
|
+
* This method will set the blockToLive in the CachedRoutes object before calling the internal method to insert in cache.
|
|
35
|
+
*
|
|
36
|
+
* @public
|
|
37
|
+
* @readonly
|
|
38
|
+
* @param cachedRoutes The route to cache.
|
|
39
|
+
* @returns Promise<boolean> Indicates if the route was inserted into cache.
|
|
40
|
+
*/
|
|
41
|
+
this.setCachedRoute = async (// Defined as a readonly member instead of a regular function to make it final.
|
|
42
|
+
cachedRoutes, amount) => {
|
|
43
|
+
if (await this.getCacheModeFromCachedRoutes(cachedRoutes, amount) == model_1.CacheMode.Darkmode) {
|
|
44
|
+
return false;
|
|
45
|
+
}
|
|
46
|
+
cachedRoutes.blocksToLive = await this._getBlocksToLive(cachedRoutes, amount);
|
|
47
|
+
return this._setCachedRoute(cachedRoutes, amount);
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Returns the CacheMode for the given cachedRoutes and amount
|
|
52
|
+
*
|
|
53
|
+
* @param cachedRoutes
|
|
54
|
+
* @param amount
|
|
55
|
+
*/
|
|
56
|
+
getCacheModeFromCachedRoutes(cachedRoutes, amount) {
|
|
57
|
+
const quoteToken = cachedRoutes.tradeType == sdk_core_1.TradeType.EXACT_INPUT ? cachedRoutes.tokenOut : cachedRoutes.tokenIn;
|
|
58
|
+
return this.getCacheMode(cachedRoutes.chainId, amount, quoteToken, cachedRoutes.tradeType, cachedRoutes.protocolsCovered);
|
|
59
|
+
}
|
|
60
|
+
filterExpiredCachedRoutes(cachedRoutes, blockNumber) {
|
|
61
|
+
return (cachedRoutes === null || cachedRoutes === void 0 ? void 0 : cachedRoutes.notExpired(blockNumber)) ? cachedRoutes : undefined;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
exports.IRouteCachingProvider = IRouteCachingProvider;
|
|
65
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUtY2FjaGluZy1wcm92aWRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9wcm92aWRlcnMvY2FjaGluZy9yb3V0ZS9yb3V0ZS1jYWNoaW5nLXByb3ZpZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQU9BLGdEQUErRTtBQUkvRSxtQ0FBb0M7QUFHcEM7OztHQUdHO0FBQ0gsTUFBc0IscUJBQXFCO0lBQTNDO1FBQ0U7Ozs7Ozs7Ozs7O1dBV0c7UUFDYSxtQkFBYyxHQUFHLEtBQUssRUFBRywrRUFBK0U7UUFDdEgsT0FBZSxFQUNmLE1BQWdDLEVBQ2hDLFVBQWlCLEVBQ2pCLFNBQW9CLEVBQ3BCLFNBQXFCLEVBQ3JCLFdBQW1CLEVBQ2dCLEVBQUU7WUFDckMsSUFBSSxNQUFNLElBQUksQ0FBQyxZQUFZLENBQUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLFNBQVMsQ0FBQyxJQUFJLGlCQUFTLENBQUMsUUFBUSxFQUFFO2dCQUNwRyxPQUFPLFNBQVMsQ0FBQzthQUNsQjtZQUVELE1BQU0sV0FBVyxHQUFHLE1BQU0sSUFBSSxDQUFDLGVBQWUsQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsU0FBUyxDQUFDLENBQUM7WUFFbEcsT0FBTyxJQUFJLENBQUMseUJBQXlCLENBQUMsV0FBVyxFQUFFLFdBQVcsQ0FBQyxDQUFDO1FBQ2xFLENBQUMsQ0FBQztRQUVGOzs7Ozs7OztXQVFHO1FBQ2EsbUJBQWMsR0FBRyxLQUFLLEVBQUcsK0VBQStFO1FBQ3RILFlBQTBCLEVBQzFCLE1BQWdDLEVBQ2QsRUFBRTtZQUNwQixJQUFJLE1BQU0sSUFBSSxDQUFDLDRCQUE0QixDQUFDLFlBQVksRUFBRSxNQUFNLENBQUMsSUFBSSxpQkFBUyxDQUFDLFFBQVEsRUFBRTtnQkFDdkYsT0FBTyxLQUFLLENBQUM7YUFDZDtZQUVELFlBQVksQ0FBQyxZQUFZLEdBQUcsTUFBTSxJQUFJLENBQUMsZ0JBQWdCLENBQUMsWUFBWSxFQUFFLE1BQU0sQ0FBQyxDQUFDO1lBRTlFLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxZQUFZLEVBQUUsTUFBTSxDQUFDLENBQUM7UUFDcEQsQ0FBQyxDQUFDO0lBd0ZKLENBQUM7SUF0RkM7Ozs7O09BS0c7SUFDSSw0QkFBNEIsQ0FDakMsWUFBMEIsRUFDMUIsTUFBZ0M7UUFFaEMsTUFBTSxVQUFVLEdBQUcsWUFBWSxDQUFDLFNBQVMsSUFBSSxvQkFBUyxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLE9BQU8sQ0FBQztRQUVsSCxPQUFPLElBQUksQ0FBQyxZQUFZLENBQ3RCLFlBQVksQ0FBQyxPQUFPLEVBQ3BCLE1BQU0sRUFDTixVQUFVLEVBQ1YsWUFBWSxDQUFDLFNBQVMsRUFDdEIsWUFBWSxDQUFDLGdCQUFnQixDQUM5QixDQUFDO0lBQ0osQ0FBQztJQXFCTyx5QkFBeUIsQ0FDL0IsWUFBc0MsRUFDdEMsV0FBbUI7UUFFbkIsT0FBTyxDQUFBLFlBQVksYUFBWixZQUFZLHVCQUFaLFlBQVksQ0FBRSxVQUFVLENBQUMsV0FBVyxDQUFDLEVBQUMsQ0FBQyxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO0lBQzFFLENBQUM7Q0F5Q0Y7QUExSUQsc0RBMElDIn0=
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { ChainId } from '../util/chains';
|
|
2
|
+
import { ICache } from './cache';
|
|
3
|
+
import { GasPrice, IGasPriceProvider } from './gas-price-provider';
|
|
4
|
+
/**
|
|
5
|
+
* Provider for getting gas price, with functionality for caching the results.
|
|
6
|
+
*
|
|
7
|
+
* @export
|
|
8
|
+
* @class CachingV3SubgraphProvider
|
|
9
|
+
*/
|
|
10
|
+
export declare class CachingGasStationProvider implements IGasPriceProvider {
|
|
11
|
+
protected chainId: ChainId;
|
|
12
|
+
private gasPriceProvider;
|
|
13
|
+
private cache;
|
|
14
|
+
private GAS_KEY;
|
|
15
|
+
/**
|
|
16
|
+
* Creates an instance of CachingGasStationProvider.
|
|
17
|
+
* @param chainId The chain id to use.
|
|
18
|
+
* @param gasPriceProvider The provider to use to get the gas price when not in the cache.
|
|
19
|
+
* @param cache Cache instance to hold cached pools.
|
|
20
|
+
*/
|
|
21
|
+
constructor(chainId: ChainId, gasPriceProvider: IGasPriceProvider, cache: ICache<GasPrice>);
|
|
22
|
+
getGasPrice(): Promise<GasPrice>;
|
|
23
|
+
}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CachingGasStationProvider = void 0;
|
|
4
|
+
const log_1 = require("../util/log");
|
|
5
|
+
/**
|
|
6
|
+
* Provider for getting gas price, with functionality for caching the results.
|
|
7
|
+
*
|
|
8
|
+
* @export
|
|
9
|
+
* @class CachingV3SubgraphProvider
|
|
10
|
+
*/
|
|
11
|
+
class CachingGasStationProvider {
|
|
12
|
+
/**
|
|
13
|
+
* Creates an instance of CachingGasStationProvider.
|
|
14
|
+
* @param chainId The chain id to use.
|
|
15
|
+
* @param gasPriceProvider The provider to use to get the gas price when not in the cache.
|
|
16
|
+
* @param cache Cache instance to hold cached pools.
|
|
17
|
+
*/
|
|
18
|
+
constructor(chainId, gasPriceProvider, cache) {
|
|
19
|
+
this.chainId = chainId;
|
|
20
|
+
this.gasPriceProvider = gasPriceProvider;
|
|
21
|
+
this.cache = cache;
|
|
22
|
+
this.GAS_KEY = (chainId) => `gasPrice-${chainId}`;
|
|
23
|
+
}
|
|
24
|
+
async getGasPrice() {
|
|
25
|
+
const cachedGasPrice = await this.cache.get(this.GAS_KEY(this.chainId));
|
|
26
|
+
if (cachedGasPrice) {
|
|
27
|
+
log_1.log.info({ cachedGasPrice }, `Got gas station price from local cache: ${cachedGasPrice.gasPriceWei}.`);
|
|
28
|
+
return cachedGasPrice;
|
|
29
|
+
}
|
|
30
|
+
log_1.log.info('Gas station price local cache miss.');
|
|
31
|
+
const gasPrice = await this.gasPriceProvider.getGasPrice();
|
|
32
|
+
await this.cache.set(this.GAS_KEY(this.chainId), gasPrice);
|
|
33
|
+
return gasPrice;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
exports.CachingGasStationProvider = CachingGasStationProvider;
|
|
37
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FjaGluZy1nYXMtcHJvdmlkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcHJvdmlkZXJzL2NhY2hpbmctZ2FzLXByb3ZpZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUNBLHFDQUFrQztBQUtsQzs7Ozs7R0FLRztBQUNILE1BQWEseUJBQXlCO0lBR3BDOzs7OztPQUtHO0lBQ0gsWUFDWSxPQUFnQixFQUNsQixnQkFBbUMsRUFDbkMsS0FBdUI7UUFGckIsWUFBTyxHQUFQLE9BQU8sQ0FBUztRQUNsQixxQkFBZ0IsR0FBaEIsZ0JBQWdCLENBQW1CO1FBQ25DLFVBQUssR0FBTCxLQUFLLENBQWtCO1FBWHpCLFlBQU8sR0FBRyxDQUFDLE9BQWdCLEVBQUUsRUFBRSxDQUFDLFlBQVksT0FBTyxFQUFFLENBQUM7SUFZM0QsQ0FBQztJQUVHLEtBQUssQ0FBQyxXQUFXO1FBQ3RCLE1BQU0sY0FBYyxHQUFHLE1BQU0sSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztRQUV4RSxJQUFJLGNBQWMsRUFBRTtZQUNsQixTQUFHLENBQUMsSUFBSSxDQUNOLEVBQUUsY0FBYyxFQUFFLEVBQ2xCLDJDQUEyQyxjQUFjLENBQUMsV0FBVyxHQUFHLENBQ3pFLENBQUM7WUFFRixPQUFPLGNBQWMsQ0FBQztTQUN2QjtRQUVELFNBQUcsQ0FBQyxJQUFJLENBQUMscUNBQXFDLENBQUMsQ0FBQztRQUNoRCxNQUFNLFFBQVEsR0FBRyxNQUFNLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUMzRCxNQUFNLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBRTNELE9BQU8sUUFBUSxDQUFDO0lBQ2xCLENBQUM7Q0FDRjtBQWpDRCw4REFpQ0MifQ==
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { Token } from '@uniswap/sdk-core';
|
|
2
|
+
import { TokenList } from '@uniswap/token-lists';
|
|
3
|
+
import { ChainId } from '../util/chains';
|
|
4
|
+
import { ICache } from './cache';
|
|
5
|
+
import { ITokenProvider, TokenAccessor } from './token-provider';
|
|
6
|
+
/**
|
|
7
|
+
* Provider for getting token data from a Token List.
|
|
8
|
+
*
|
|
9
|
+
* @export
|
|
10
|
+
* @interface ITokenListProvider
|
|
11
|
+
*/
|
|
12
|
+
export interface ITokenListProvider {
|
|
13
|
+
getTokenBySymbol(_symbol: string): Promise<Token | undefined>;
|
|
14
|
+
getTokenByAddress(address: string): Promise<Token | undefined>;
|
|
15
|
+
}
|
|
16
|
+
export declare class CachingTokenListProvider implements ITokenProvider, ITokenListProvider {
|
|
17
|
+
private tokenCache;
|
|
18
|
+
private CACHE_KEY;
|
|
19
|
+
private chainId;
|
|
20
|
+
private chainToTokenInfos;
|
|
21
|
+
private chainSymbolToTokenInfo;
|
|
22
|
+
private chainAddressToTokenInfo;
|
|
23
|
+
private tokenList;
|
|
24
|
+
/**
|
|
25
|
+
* Creates an instance of CachingTokenListProvider.
|
|
26
|
+
* Token metadata (e.g. symbol and decimals) generally don't change so can be cached indefinitely.
|
|
27
|
+
*
|
|
28
|
+
* @param chainId The chain id to use.
|
|
29
|
+
* @param tokenList The token list to get the tokens from.
|
|
30
|
+
* @param tokenCache Cache instance to hold cached tokens.
|
|
31
|
+
*/
|
|
32
|
+
constructor(chainId: ChainId | number, tokenList: TokenList, tokenCache: ICache<Token>);
|
|
33
|
+
static fromTokenListURI(chainId: ChainId | number, tokenListURI: string, tokenCache: ICache<Token>): Promise<CachingTokenListProvider>;
|
|
34
|
+
private static buildTokenList;
|
|
35
|
+
static fromTokenList(chainId: ChainId | number, tokenList: TokenList, tokenCache: ICache<Token>): Promise<CachingTokenListProvider>;
|
|
36
|
+
getTokens(_addresses: string[]): Promise<TokenAccessor>;
|
|
37
|
+
getTokenBySymbol(_symbol: string): Promise<Token | undefined>;
|
|
38
|
+
getTokenByAddress(address: string): Promise<Token | undefined>;
|
|
39
|
+
private buildToken;
|
|
40
|
+
}
|
|
@@ -0,0 +1,123 @@
|
|
|
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.CachingTokenListProvider = void 0;
|
|
7
|
+
/* eslint-disable @typescript-eslint/no-non-null-assertion */
|
|
8
|
+
const sdk_core_1 = require("@uniswap/sdk-core");
|
|
9
|
+
const axios_1 = __importDefault(require("axios"));
|
|
10
|
+
const lodash_1 = __importDefault(require("lodash"));
|
|
11
|
+
const log_1 = require("../util/log");
|
|
12
|
+
const metric_1 = require("../util/metric");
|
|
13
|
+
class CachingTokenListProvider {
|
|
14
|
+
/**
|
|
15
|
+
* Creates an instance of CachingTokenListProvider.
|
|
16
|
+
* Token metadata (e.g. symbol and decimals) generally don't change so can be cached indefinitely.
|
|
17
|
+
*
|
|
18
|
+
* @param chainId The chain id to use.
|
|
19
|
+
* @param tokenList The token list to get the tokens from.
|
|
20
|
+
* @param tokenCache Cache instance to hold cached tokens.
|
|
21
|
+
*/
|
|
22
|
+
constructor(chainId, tokenList, tokenCache) {
|
|
23
|
+
this.tokenCache = tokenCache;
|
|
24
|
+
this.CACHE_KEY = (tokenInfo) => `token-list-token-${this.chainId}/${this.tokenList.name}/${this.tokenList.timestamp}/${this.tokenList.version}/${tokenInfo.address.toLowerCase()}/${tokenInfo.decimals}/${tokenInfo.symbol}/${tokenInfo.name}`;
|
|
25
|
+
this.chainId = chainId;
|
|
26
|
+
this.tokenList = tokenList;
|
|
27
|
+
this.chainToTokenInfos = lodash_1.default.reduce(this.tokenList.tokens, (result, tokenInfo) => {
|
|
28
|
+
const chainId = tokenInfo.chainId.toString();
|
|
29
|
+
if (!result[chainId]) {
|
|
30
|
+
result[chainId] = [];
|
|
31
|
+
}
|
|
32
|
+
result[chainId].push(tokenInfo);
|
|
33
|
+
return result;
|
|
34
|
+
}, {});
|
|
35
|
+
this.chainSymbolToTokenInfo = lodash_1.default.mapValues(this.chainToTokenInfos, (tokenInfos) => lodash_1.default.keyBy(tokenInfos, 'symbol'));
|
|
36
|
+
this.chainAddressToTokenInfo = lodash_1.default.mapValues(this.chainToTokenInfos, (tokenInfos) => lodash_1.default.keyBy(tokenInfos, (tokenInfo) => tokenInfo.address.toLowerCase()));
|
|
37
|
+
}
|
|
38
|
+
static async fromTokenListURI(chainId, tokenListURI, tokenCache) {
|
|
39
|
+
const now = Date.now();
|
|
40
|
+
const tokenList = await this.buildTokenList(tokenListURI);
|
|
41
|
+
metric_1.metric.putMetric('TokenListLoad', Date.now() - now, metric_1.MetricLoggerUnit.Milliseconds);
|
|
42
|
+
return new CachingTokenListProvider(chainId, tokenList, tokenCache);
|
|
43
|
+
}
|
|
44
|
+
static async buildTokenList(tokenListURI) {
|
|
45
|
+
log_1.log.info(`Getting tokenList from ${tokenListURI}.`);
|
|
46
|
+
const response = await axios_1.default.get(tokenListURI);
|
|
47
|
+
log_1.log.info(`Got tokenList from ${tokenListURI}.`);
|
|
48
|
+
const { data: tokenList, status } = response;
|
|
49
|
+
if (status != 200) {
|
|
50
|
+
log_1.log.error({ response }, `Unabled to get token list from ${tokenListURI}.`);
|
|
51
|
+
throw new Error(`Unable to get token list from ${tokenListURI}`);
|
|
52
|
+
}
|
|
53
|
+
return tokenList;
|
|
54
|
+
}
|
|
55
|
+
static async fromTokenList(chainId, tokenList, tokenCache) {
|
|
56
|
+
const now = Date.now();
|
|
57
|
+
const tokenProvider = new CachingTokenListProvider(chainId, tokenList, tokenCache);
|
|
58
|
+
metric_1.metric.putMetric('TokenListLoad', Date.now() - now, metric_1.MetricLoggerUnit.Milliseconds);
|
|
59
|
+
return tokenProvider;
|
|
60
|
+
}
|
|
61
|
+
async getTokens(_addresses) {
|
|
62
|
+
const addressToToken = {};
|
|
63
|
+
const symbolToToken = {};
|
|
64
|
+
for (const address of _addresses) {
|
|
65
|
+
const token = await this.getTokenByAddress(address);
|
|
66
|
+
if (!token) {
|
|
67
|
+
continue;
|
|
68
|
+
}
|
|
69
|
+
addressToToken[address.toLowerCase()] = token;
|
|
70
|
+
if (!token.symbol) {
|
|
71
|
+
continue;
|
|
72
|
+
}
|
|
73
|
+
symbolToToken[token.symbol.toLowerCase()] = token;
|
|
74
|
+
}
|
|
75
|
+
return {
|
|
76
|
+
getTokenByAddress: (address) => addressToToken[address.toLowerCase()],
|
|
77
|
+
getTokenBySymbol: (symbol) => symbolToToken[symbol.toLowerCase()],
|
|
78
|
+
getAllTokens: () => {
|
|
79
|
+
return Object.values(addressToToken);
|
|
80
|
+
},
|
|
81
|
+
};
|
|
82
|
+
}
|
|
83
|
+
async getTokenBySymbol(_symbol) {
|
|
84
|
+
let symbol = _symbol;
|
|
85
|
+
// We consider ETH as a regular ERC20 Token throughout this package. We don't use the NativeCurrency object from the sdk.
|
|
86
|
+
// When we build the calldata for swapping we insert wrapping/unwrapping as needed.
|
|
87
|
+
if (_symbol == 'ETH') {
|
|
88
|
+
symbol = 'WETH';
|
|
89
|
+
}
|
|
90
|
+
if (!this.chainSymbolToTokenInfo[this.chainId.toString()]) {
|
|
91
|
+
return undefined;
|
|
92
|
+
}
|
|
93
|
+
const tokenInfo = this.chainSymbolToTokenInfo[this.chainId.toString()][symbol];
|
|
94
|
+
if (!tokenInfo) {
|
|
95
|
+
return undefined;
|
|
96
|
+
}
|
|
97
|
+
const token = await this.buildToken(tokenInfo);
|
|
98
|
+
return token;
|
|
99
|
+
}
|
|
100
|
+
async getTokenByAddress(address) {
|
|
101
|
+
if (!this.chainAddressToTokenInfo[this.chainId.toString()]) {
|
|
102
|
+
return undefined;
|
|
103
|
+
}
|
|
104
|
+
const tokenInfo = this.chainAddressToTokenInfo[this.chainId.toString()][address.toLowerCase()];
|
|
105
|
+
if (!tokenInfo) {
|
|
106
|
+
return undefined;
|
|
107
|
+
}
|
|
108
|
+
const token = await this.buildToken(tokenInfo);
|
|
109
|
+
return token;
|
|
110
|
+
}
|
|
111
|
+
async buildToken(tokenInfo) {
|
|
112
|
+
const cacheKey = this.CACHE_KEY(tokenInfo);
|
|
113
|
+
const cachedToken = await this.tokenCache.get(cacheKey);
|
|
114
|
+
if (cachedToken) {
|
|
115
|
+
return cachedToken;
|
|
116
|
+
}
|
|
117
|
+
const token = new sdk_core_1.Token(this.chainId, tokenInfo.address, tokenInfo.decimals, tokenInfo.symbol, tokenInfo.name);
|
|
118
|
+
await this.tokenCache.set(cacheKey, token);
|
|
119
|
+
return token;
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
exports.CachingTokenListProvider = CachingTokenListProvider;
|
|
123
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FjaGluZy10b2tlbi1saXN0LXByb3ZpZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3Byb3ZpZGVycy9jYWNoaW5nLXRva2VuLWxpc3QtcHJvdmlkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsNkRBQTZEO0FBQzdELGdEQUEwQztBQUUxQyxrREFBMEI7QUFDMUIsb0RBQXVCO0FBR3ZCLHFDQUFrQztBQUNsQywyQ0FBMEQ7QUFzQjFELE1BQWEsd0JBQXdCO0lBZ0JuQzs7Ozs7OztPQU9HO0lBQ0gsWUFDRSxPQUF5QixFQUN6QixTQUFvQixFQUNaLFVBQXlCO1FBQXpCLGVBQVUsR0FBVixVQUFVLENBQWU7UUF4QjNCLGNBQVMsR0FBRyxDQUFDLFNBQW9CLEVBQUUsRUFBRSxDQUMzQyxvQkFBb0IsSUFBSSxDQUFDLE9BQU8sSUFBSSxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksSUFDckQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxTQUNqQixJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxJQUFJLFNBQVMsQ0FBQyxPQUFPLENBQUMsV0FBVyxFQUFFLElBQzNELFNBQVMsQ0FBQyxRQUNaLElBQUksU0FBUyxDQUFDLE1BQU0sSUFBSSxTQUFTLENBQUMsSUFBSSxFQUFFLENBQUM7UUFxQnpDLElBQUksQ0FBQyxPQUFPLEdBQUcsT0FBTyxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFDO1FBRTNCLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxnQkFBQyxDQUFDLE1BQU0sQ0FDL0IsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQ3JCLENBQUMsTUFBNEIsRUFBRSxTQUFvQixFQUFFLEVBQUU7WUFDckQsTUFBTSxPQUFPLEdBQUcsU0FBUyxDQUFDLE9BQU8sQ0FBQyxRQUFRLEVBQUUsQ0FBQztZQUM3QyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxFQUFFO2dCQUNwQixN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
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { Token } from '@uniswap/sdk-core';
|
|
2
|
+
import { ChainId } from '../util';
|
|
3
|
+
import { ICache } from './cache';
|
|
4
|
+
import { ITokenProvider, TokenAccessor } from './token-provider';
|
|
5
|
+
export declare const CACHE_SEED_TOKENS: {
|
|
6
|
+
[chainId in ChainId]?: {
|
|
7
|
+
[symbol: string]: Token;
|
|
8
|
+
};
|
|
9
|
+
};
|
|
10
|
+
/**
|
|
11
|
+
* Provider for getting token metadata that falls back to a different provider
|
|
12
|
+
* in the event of failure.
|
|
13
|
+
*
|
|
14
|
+
* @export
|
|
15
|
+
* @class CachingTokenProviderWithFallback
|
|
16
|
+
*/
|
|
17
|
+
export declare class CachingTokenProviderWithFallback implements ITokenProvider {
|
|
18
|
+
protected chainId: ChainId;
|
|
19
|
+
private tokenCache;
|
|
20
|
+
protected primaryTokenProvider: ITokenProvider;
|
|
21
|
+
protected fallbackTokenProvider?: ITokenProvider | undefined;
|
|
22
|
+
private CACHE_KEY;
|
|
23
|
+
constructor(chainId: ChainId, tokenCache: ICache<Token>, primaryTokenProvider: ITokenProvider, fallbackTokenProvider?: ITokenProvider | undefined);
|
|
24
|
+
getTokens(_addresses: string[]): Promise<TokenAccessor>;
|
|
25
|
+
}
|
|
@@ -0,0 +1,113 @@
|
|
|
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.CachingTokenProviderWithFallback = exports.CACHE_SEED_TOKENS = void 0;
|
|
7
|
+
const lodash_1 = __importDefault(require("lodash"));
|
|
8
|
+
const util_1 = require("../util");
|
|
9
|
+
const token_provider_1 = require("./token-provider");
|
|
10
|
+
// These tokens will added to the Token cache on initialization.
|
|
11
|
+
exports.CACHE_SEED_TOKENS = {
|
|
12
|
+
[util_1.ChainId.XDC_APOTHEM]: {
|
|
13
|
+
USDC: token_provider_1.USDC_XDC_APOTHEM,
|
|
14
|
+
USDT: token_provider_1.USDT_XDC_APOTHEM,
|
|
15
|
+
DAI: token_provider_1.DAI_XDC_APOTHEM,
|
|
16
|
+
WXDC: util_1.WRAPPED_NATIVE_CURRENCY[util_1.ChainId.XDC_APOTHEM],
|
|
17
|
+
},
|
|
18
|
+
[util_1.ChainId.XDC]: {
|
|
19
|
+
USDT: token_provider_1.USDT_XDC,
|
|
20
|
+
WXDC: util_1.WRAPPED_NATIVE_CURRENCY[util_1.ChainId.XDC],
|
|
21
|
+
},
|
|
22
|
+
// Currently we do not have providers for Moonbeam mainnet or Gnosis testnet
|
|
23
|
+
};
|
|
24
|
+
/**
|
|
25
|
+
* Provider for getting token metadata that falls back to a different provider
|
|
26
|
+
* in the event of failure.
|
|
27
|
+
*
|
|
28
|
+
* @export
|
|
29
|
+
* @class CachingTokenProviderWithFallback
|
|
30
|
+
*/
|
|
31
|
+
class CachingTokenProviderWithFallback {
|
|
32
|
+
constructor(chainId,
|
|
33
|
+
// Token metadata (e.g. symbol and decimals) don't change so can be cached indefinitely.
|
|
34
|
+
// Constructing a new token object is slow as sdk-core does checksumming.
|
|
35
|
+
tokenCache, primaryTokenProvider, fallbackTokenProvider) {
|
|
36
|
+
this.chainId = chainId;
|
|
37
|
+
this.tokenCache = tokenCache;
|
|
38
|
+
this.primaryTokenProvider = primaryTokenProvider;
|
|
39
|
+
this.fallbackTokenProvider = fallbackTokenProvider;
|
|
40
|
+
this.CACHE_KEY = (chainId, address) => `token-${chainId}-${address}`;
|
|
41
|
+
}
|
|
42
|
+
async getTokens(_addresses) {
|
|
43
|
+
const seedTokens = exports.CACHE_SEED_TOKENS[this.chainId];
|
|
44
|
+
if (seedTokens) {
|
|
45
|
+
for (const token of Object.values(seedTokens)) {
|
|
46
|
+
await this.tokenCache.set(this.CACHE_KEY(this.chainId, token.address.toLowerCase()), token);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
const addressToToken = {};
|
|
50
|
+
const symbolToToken = {};
|
|
51
|
+
const addresses = (0, lodash_1.default)(_addresses)
|
|
52
|
+
.map((address) => address.toLowerCase())
|
|
53
|
+
.uniq()
|
|
54
|
+
.value();
|
|
55
|
+
const addressesToFindInPrimary = [];
|
|
56
|
+
const addressesToFindInSecondary = [];
|
|
57
|
+
for (const address of addresses) {
|
|
58
|
+
if (await this.tokenCache.has(this.CACHE_KEY(this.chainId, address))) {
|
|
59
|
+
addressToToken[address.toLowerCase()] = (await this.tokenCache.get(this.CACHE_KEY(this.chainId, address)));
|
|
60
|
+
symbolToToken[addressToToken[address].symbol] =
|
|
61
|
+
(await this.tokenCache.get(this.CACHE_KEY(this.chainId, address)));
|
|
62
|
+
}
|
|
63
|
+
else {
|
|
64
|
+
addressesToFindInPrimary.push(address);
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
util_1.log.info({ addressesToFindInPrimary }, `Found ${addresses.length - addressesToFindInPrimary.length} out of ${addresses.length} tokens in local cache. ${addressesToFindInPrimary.length > 0
|
|
68
|
+
? `Checking primary token provider for ${addressesToFindInPrimary.length} tokens`
|
|
69
|
+
: ``}
|
|
70
|
+
`);
|
|
71
|
+
if (addressesToFindInPrimary.length > 0) {
|
|
72
|
+
const primaryTokenAccessor = await this.primaryTokenProvider.getTokens(addressesToFindInPrimary);
|
|
73
|
+
for (const address of addressesToFindInPrimary) {
|
|
74
|
+
const token = primaryTokenAccessor.getTokenByAddress(address);
|
|
75
|
+
if (token) {
|
|
76
|
+
addressToToken[address.toLowerCase()] = token;
|
|
77
|
+
symbolToToken[addressToToken[address].symbol] = token;
|
|
78
|
+
await this.tokenCache.set(this.CACHE_KEY(this.chainId, address.toLowerCase()), addressToToken[address]);
|
|
79
|
+
}
|
|
80
|
+
else {
|
|
81
|
+
addressesToFindInSecondary.push(address);
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
util_1.log.info({ addressesToFindInSecondary }, `Found ${addressesToFindInPrimary.length - addressesToFindInSecondary.length} tokens in primary. ${this.fallbackTokenProvider
|
|
85
|
+
? `Checking secondary token provider for ${addressesToFindInSecondary.length} tokens`
|
|
86
|
+
: `No fallback token provider specified. About to return.`}`);
|
|
87
|
+
}
|
|
88
|
+
if (this.fallbackTokenProvider && addressesToFindInSecondary.length > 0) {
|
|
89
|
+
const secondaryTokenAccessor = await this.fallbackTokenProvider.getTokens(addressesToFindInSecondary);
|
|
90
|
+
for (const address of addressesToFindInSecondary) {
|
|
91
|
+
const token = secondaryTokenAccessor.getTokenByAddress(address);
|
|
92
|
+
if (token) {
|
|
93
|
+
addressToToken[address.toLowerCase()] = token;
|
|
94
|
+
symbolToToken[addressToToken[address].symbol] = token;
|
|
95
|
+
await this.tokenCache.set(this.CACHE_KEY(this.chainId, address.toLowerCase()), addressToToken[address]);
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
return {
|
|
100
|
+
getTokenByAddress: (address) => {
|
|
101
|
+
return addressToToken[address.toLowerCase()];
|
|
102
|
+
},
|
|
103
|
+
getTokenBySymbol: (symbol) => {
|
|
104
|
+
return symbolToToken[symbol.toLowerCase()];
|
|
105
|
+
},
|
|
106
|
+
getAllTokens: () => {
|
|
107
|
+
return Object.values(addressToToken);
|
|
108
|
+
},
|
|
109
|
+
};
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
exports.CachingTokenProviderWithFallback = CachingTokenProviderWithFallback;
|
|
113
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FjaGluZy10b2tlbi1wcm92aWRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9wcm92aWRlcnMvY2FjaGluZy10b2tlbi1wcm92aWRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7QUFDQSxvREFBdUI7QUFFdkIsa0NBQWdFO0FBR2hFLHFEQU8wQjtBQUUxQixnRUFBZ0U7QUFDbkQsUUFBQSxpQkFBaUIsR0FFMUI7SUFDRixDQUFDLGNBQU8sQ0FBQyxXQUFXLENBQUMsRUFBRTtRQUNyQixJQUFJLEVBQUUsaUNBQWdCO1FBQ3RCLElBQUksRUFBRSxpQ0FBZ0I7UUFDdEIsR0FBRyxFQUFFLGdDQUFlO1FBQ3BCLElBQUksRUFBRSw4QkFBdUIsQ0FBQyxjQUFPLENBQUMsV0FBVyxDQUFDO0tBQ25EO0lBQ0QsQ0FBQyxjQUFPLENBQUMsR0FBRyxDQUFDLEVBQUU7UUFDYixJQUFJLEVBQUUseUJBQVE7UUFDZCxJQUFJLEVBQUUsOEJBQXVCLENBQUMsY0FBTyxDQUFDLEdBQUcsQ0FBQztLQUMzQztJQUVELDRFQUE0RTtDQUM3RSxDQUFDO0FBRUY7Ozs7OztHQU1HO0FBQ0gsTUFBYSxnQ0FBZ0M7SUFJM0MsWUFDWSxPQUFnQjtJQUMxQix3RkFBd0Y7SUFDeEYseUVBQXlFO0lBQ2pFLFVBQXlCLEVBQ3ZCLG9CQUFvQyxFQUNwQyxxQkFBc0M7UUFMdEMsWUFBTyxHQUFQLE9BQU8sQ0FBUztRQUdsQixlQUFVLEdBQVYsVUFBVSxDQUFlO1FBQ3ZCLHlCQUFvQixHQUFwQixvQkFBb0IsQ0FBZ0I7UUFDcEMsMEJBQXFCLEdBQXJCLHFCQUFxQixDQUFpQjtRQVQxQyxjQUFTLEdBQUcsQ0FBQyxPQUFnQixFQUFFLE9BQWUsRUFBRSxFQUFFLENBQ3hELFNBQVMsT0FBTyxJQUFJLE9BQU8sRUFBRSxDQUFDO0lBUzVCLENBQUM7SUFFRSxLQUFLLENBQUMsU0FBUyxDQUFDLFVBQW9CO1FBQ3pDLE1BQU0sVUFBVSxHQUFHLHlCQUFpQixDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUVuRCxJQUFJLFVBQVUsRUFBRTtZQUNkLEtBQUssTUFBTSxLQUFLLElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsRUFBRTtnQkFDN0MsTUFBTSxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FDdkIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLEtBQUssQ0FBQyxPQUFPLENBQUMsV0FBVyxFQUFFLENBQUMsRUFDekQsS0FBSyxDQUNOLENBQUM7YUFDSDtTQUNGO1FBRUQsTUFBTSxjQUFjLEdBQWlDLEVBQUUsQ0FBQztRQUN4RCxNQUFNLGFBQWEsR0FBZ0MsRUFBRSxDQUFDO1FBRXRELE1BQU0sU0FBUyxHQUFHLElBQUEsZ0JBQUMsRUFBQyxVQUFVLENBQUM7YUFDNUIsR0FBRyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsV0FBVyxFQUFFLENBQUM7YUFDdkMsSUFBSSxFQUFFO2FBQ04sS0FBSyxFQUFFLENBQUM7UUFFWCxNQUFNLHdCQUF3QixHQUFHLEVBQUUsQ0FBQztRQUNwQyxNQUFNLDBCQUEwQixHQUFHLEVBQUUsQ0FBQztRQUV0QyxLQUFLLE1BQU0sT0FBTyxJQUFJLFNBQVMsRUFBRTtZQUMvQixJQUFJLE1BQU0sSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDLEVBQUU7Z0JBQ3BFLGNBQWMsQ0FBQyxPQUFPLENBQUMsV0FBVyxFQUFFLENBQUMsR0FBRyxDQUFDLE1BQU0sSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQ2hFLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FDdEMsQ0FBRSxDQUFDO2dCQUNKLGFBQWEsQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFFLENBQUMsTUFBTyxDQUFDO29CQUM3QyxDQUFDLE1BQU0sSUFBSSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUUsQ0FBQzthQUN2RTtpQkFBTTtnQkFDTCx3QkFBd0IsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7YUFDeEM7U0FDRjtRQUVELFVBQUcsQ0FBQyxJQUFJLENBQ04sRUFBRSx3QkFBd0IsRUFBRSxFQUM1QixTQUFTLFNBQVMsQ0FBQyxNQUFNLEdBQUcsd0JBQXdCLENBQUMsTUFBTSxXQUFXLFNBQVMsQ0FBQyxNQUNoRiwyQkFBMkIsd0JBQXdCLENBQUMsTUFBTSxHQUFHLENBQUM7WUFDNUQsQ0FBQyxDQUFDLHVDQUF1Qyx3QkFBd0IsQ0FBQyxNQUFNLFNBQVM7WUFDakYsQ0FBQyxDQUFDLEVBQ0o7T0FDQyxDQUNGLENBQUM7UUFFRixJQUFJLHdCQUF3QixDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDdkMsTUFBTSxvQkFBb0IsR0FBRyxNQUFNLElBQUksQ0FBQyxvQkFBb0IsQ0FBQyxTQUFTLENBQ3BFLHdCQUF3QixDQUN6QixDQUFDO1lBRUYsS0FBSyxNQUFNLE9BQU8sSUFBSSx3QkFBd0IsRUFBRTtnQkFDOUMsTUFBTSxLQUFLLEdBQUcsb0JBQW9CLENBQUMsaUJBQWlCLENBQUMsT0FBTyxDQUFDLENBQUM7Z0JBRTlELElBQUksS0FBSyxFQUFFO29CQUNULGNBQWMsQ0FBQyxPQUFPLENBQUMsV0FBVyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUM7b0JBQzlDLGFBQWEsQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFFLENBQUMsTUFBTyxDQUFDLEdBQUcsS0FBSyxDQUFDO29CQUN4RCxNQUFNLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUN2QixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLFdBQVcsRUFBRSxDQUFDLEVBQ25ELGNBQWMsQ0FBQyxPQUFPLENBQUUsQ0FDekIsQ0FBQztpQkFDSDtxQkFBTTtvQkFDTCwwQkFBMEIsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7aUJBQzFDO2FBQ0Y7WUFFRCxVQUFHLENBQUMsSUFBSSxDQUNOLEVBQUUsMEJBQTBCLEVBQUUsRUFDOUIsU0FBUyx3QkFBd0IsQ0FBQyxNQUFNLEdBQUcsMEJBQTBCLENBQUMsTUFDdEUsdUJBQXVCLElBQUksQ0FBQyxxQkFBcUI7Z0JBQy9DLENBQUMsQ0FBQyx5Q0FBeUMsMEJBQTBCLENBQUMsTUFBTSxTQUFTO2dCQUNyRixDQUFDLENBQUMsd0RBQ0osRUFBRSxDQUNILENBQUM7U0FDSDtRQUVELElBQUksSUFBSSxDQUFDLHFCQUFxQixJQUFJLDBCQUEwQixDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7WUFDdkUsTUFBTSxzQkFBc0IsR0FBRyxNQUFNLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxTQUFTLENBQ3ZFLDBCQUEwQixDQUMzQixDQUFDO1lBRUYsS0FBSyxNQUFNLE9BQU8sSUFBSSwwQkFBMEIsRUFBRTtnQkFDaEQsTUFBTSxLQUFLLEdBQUcsc0JBQXNCLENBQUMsaUJBQWlCLENBQUMsT0FBTyxDQUFDLENBQUM7Z0JBQ2hFLElBQUksS0FBSyxFQUFFO29CQUNULGNBQWMsQ0FBQyxPQUFPLENBQUMsV0FBVyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUM7b0JBQzlDLGFBQWEsQ0FBQyxjQUFjLENBQUMsT0FBTyxDQUFFLENBQUMsTUFBTyxDQUFDLEdBQUcsS0FBSyxDQUFDO29CQUN4RCxNQUFNLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUN2QixJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLFdBQVcsRUFBRSxDQUFDLEVBQ25ELGNBQWMsQ0FBQyxPQUFPLENBQUUsQ0FDekIsQ0FBQztpQkFDSDthQUNGO1NBQ0Y7UUFFRCxPQUFPO1lBQ0wsaUJBQWlCLEVBQUUsQ0FBQyxPQUFlLEVBQXFCLEVBQUU7Z0JBQ3hELE9BQU8sY0FBYyxDQUFDLE9BQU8sQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO1lBQy9DLENBQUM7WUFDRCxnQkFBZ0IsRUFBRSxDQUFDLE1BQWMsRUFBcUIsRUFBRTtnQkFDdEQsT0FBTyxhQUFhLENBQUMsTUFBTSxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7WUFDN0MsQ0FBQztZQUNELFlBQVksRUFBRSxHQUFZLEVBQUU7Z0JBQzFCLE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQztZQUN2QyxDQUFDO1NBQ0YsQ0FBQztJQUNKLENBQUM7Q0FDRjtBQXRIRCw0RUFzSEMifQ==
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { BigNumber } from '@ethersproject/bignumber';
|
|
2
|
+
import { JsonRpcProvider } from '@ethersproject/providers';
|
|
3
|
+
import { GasPrice, IGasPriceProvider } from './gas-price-provider';
|
|
4
|
+
export type RawFeeHistoryResponse = {
|
|
5
|
+
baseFeePerGas: string[];
|
|
6
|
+
gasUsedRatio: number[];
|
|
7
|
+
oldestBlock: string;
|
|
8
|
+
reward: string[];
|
|
9
|
+
};
|
|
10
|
+
export type FeeHistoryResponse = {
|
|
11
|
+
baseFeePerGas: BigNumber[];
|
|
12
|
+
gasUsedRatio: number[];
|
|
13
|
+
oldestBlock: BigNumber;
|
|
14
|
+
reward: BigNumber[];
|
|
15
|
+
};
|
|
16
|
+
/**
|
|
17
|
+
* Computes a gas estimate using on-chain data from the eth_feeHistory RPC endpoint.
|
|
18
|
+
*
|
|
19
|
+
* Takes the average priority fee from the past `blocksToConsider` blocks, and adds it
|
|
20
|
+
* to the current base fee.
|
|
21
|
+
*
|
|
22
|
+
* @export
|
|
23
|
+
* @class EIP1559GasPriceProvider
|
|
24
|
+
*/
|
|
25
|
+
export declare class EIP1559GasPriceProvider extends IGasPriceProvider {
|
|
26
|
+
protected provider: JsonRpcProvider;
|
|
27
|
+
private priorityFeePercentile;
|
|
28
|
+
private blocksToConsider;
|
|
29
|
+
constructor(provider: JsonRpcProvider, priorityFeePercentile?: number, blocksToConsider?: number);
|
|
30
|
+
getGasPrice(): Promise<GasPrice>;
|
|
31
|
+
}
|
|
@@ -0,0 +1,66 @@
|
|
|
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.EIP1559GasPriceProvider = void 0;
|
|
7
|
+
const bignumber_1 = require("@ethersproject/bignumber");
|
|
8
|
+
const lodash_1 = __importDefault(require("lodash"));
|
|
9
|
+
const log_1 = require("../util/log");
|
|
10
|
+
const gas_price_provider_1 = require("./gas-price-provider");
|
|
11
|
+
// We get the Xth percentile of priority fees for transactions successfully included in previous blocks.
|
|
12
|
+
const DEFAULT_PRIORITY_FEE_PERCENTILE = 50;
|
|
13
|
+
// Infura docs say only past 4 blocks guaranteed to be available: https://infura.io/docs/ethereum#operation/eth_feeHistory
|
|
14
|
+
const DEFAULT_BLOCKS_TO_LOOK_BACK = 4;
|
|
15
|
+
/**
|
|
16
|
+
* Computes a gas estimate using on-chain data from the eth_feeHistory RPC endpoint.
|
|
17
|
+
*
|
|
18
|
+
* Takes the average priority fee from the past `blocksToConsider` blocks, and adds it
|
|
19
|
+
* to the current base fee.
|
|
20
|
+
*
|
|
21
|
+
* @export
|
|
22
|
+
* @class EIP1559GasPriceProvider
|
|
23
|
+
*/
|
|
24
|
+
class EIP1559GasPriceProvider extends gas_price_provider_1.IGasPriceProvider {
|
|
25
|
+
constructor(provider, priorityFeePercentile = DEFAULT_PRIORITY_FEE_PERCENTILE, blocksToConsider = DEFAULT_BLOCKS_TO_LOOK_BACK) {
|
|
26
|
+
super();
|
|
27
|
+
this.provider = provider;
|
|
28
|
+
this.priorityFeePercentile = priorityFeePercentile;
|
|
29
|
+
this.blocksToConsider = blocksToConsider;
|
|
30
|
+
}
|
|
31
|
+
async getGasPrice() {
|
|
32
|
+
const feeHistoryRaw = (await this.provider.send('eth_feeHistory', [
|
|
33
|
+
/**
|
|
34
|
+
* @fix Use BigNumber.from(this.blocksToConsider).toHexString() after hardhat adds support
|
|
35
|
+
* @see https://github.com/NomicFoundation/hardhat/issues/1585 .___.
|
|
36
|
+
*/
|
|
37
|
+
bignumber_1.BigNumber.from(this.blocksToConsider).toHexString().replace('0x0', '0x'),
|
|
38
|
+
'latest',
|
|
39
|
+
[this.priorityFeePercentile],
|
|
40
|
+
]));
|
|
41
|
+
const feeHistory = {
|
|
42
|
+
baseFeePerGas: lodash_1.default.map(feeHistoryRaw.baseFeePerGas, (b) => bignumber_1.BigNumber.from(b)),
|
|
43
|
+
gasUsedRatio: feeHistoryRaw.gasUsedRatio,
|
|
44
|
+
oldestBlock: bignumber_1.BigNumber.from(feeHistoryRaw.oldestBlock),
|
|
45
|
+
reward: lodash_1.default.map(feeHistoryRaw.reward, (b) => bignumber_1.BigNumber.from(b[0])),
|
|
46
|
+
};
|
|
47
|
+
const nextBlockBaseFeePerGas = feeHistory.baseFeePerGas[feeHistory.baseFeePerGas.length - 1];
|
|
48
|
+
const averagePriorityFeePerGas = lodash_1.default.reduce(feeHistory.reward, (sum, cur) => sum.add(cur), bignumber_1.BigNumber.from(0)).div(feeHistory.reward.length);
|
|
49
|
+
log_1.log.info({
|
|
50
|
+
feeHistory,
|
|
51
|
+
feeHistoryReadable: {
|
|
52
|
+
baseFeePerGas: lodash_1.default.map(feeHistory.baseFeePerGas, (f) => f.toString()),
|
|
53
|
+
oldestBlock: feeHistory.oldestBlock.toString(),
|
|
54
|
+
reward: lodash_1.default.map(feeHistory.reward, (r) => r.toString()),
|
|
55
|
+
},
|
|
56
|
+
nextBlockBaseFeePerGas: nextBlockBaseFeePerGas.toString(),
|
|
57
|
+
averagePriorityFeePerGas: averagePriorityFeePerGas.toString(),
|
|
58
|
+
}, 'Got fee history from provider and computed gas estimate');
|
|
59
|
+
const gasPriceWei = nextBlockBaseFeePerGas.add(averagePriorityFeePerGas);
|
|
60
|
+
const blockNumber = feeHistory.oldestBlock.add(this.blocksToConsider);
|
|
61
|
+
log_1.log.info(`Estimated gas price in wei: ${gasPriceWei} as of block ${blockNumber.toString()}`);
|
|
62
|
+
return { gasPriceWei: gasPriceWei };
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
exports.EIP1559GasPriceProvider = EIP1559GasPriceProvider;
|
|
66
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWlwLTE1NTktZ2FzLXByaWNlLXByb3ZpZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3Byb3ZpZGVycy9laXAtMTU1OS1nYXMtcHJpY2UtcHJvdmlkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsd0RBQXFEO0FBRXJELG9EQUF1QjtBQUV2QixxQ0FBa0M7QUFFbEMsNkRBQW1FO0FBZ0JuRSx3R0FBd0c7QUFDeEcsTUFBTSwrQkFBK0IsR0FBRyxFQUFFLENBQUM7QUFDM0MsMEhBQTBIO0FBQzFILE1BQU0sMkJBQTJCLEdBQUcsQ0FBQyxDQUFDO0FBRXRDOzs7Ozs7OztHQVFHO0FBQ0gsTUFBYSx1QkFBd0IsU0FBUSxzQ0FBaUI7SUFDNUQsWUFDWSxRQUF5QixFQUMzQix3QkFBZ0MsK0JBQStCLEVBQy9ELG1CQUEyQiwyQkFBMkI7UUFFOUQsS0FBSyxFQUFFLENBQUM7UUFKRSxhQUFRLEdBQVIsUUFBUSxDQUFpQjtRQUMzQiwwQkFBcUIsR0FBckIscUJBQXFCLENBQTBDO1FBQy9ELHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBc0M7SUFHaEUsQ0FBQztJQUVNLEtBQUssQ0FBQyxXQUFXO1FBQ3RCLE1BQU0sYUFBYSxHQUFHLENBQUMsTUFBTSxJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsRUFBRTtZQUNoRTs7O2VBR0c7WUFDSCxxQkFBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxPQUFPLENBQUMsS0FBSyxFQUFFLElBQUksQ0FBQztZQUN4RSxRQUFRO1lBQ1IsQ0FBQyxJQUFJLENBQUMscUJBQXFCLENBQUM7U0FDN0IsQ0FBQyxDQUEwQixDQUFDO1FBRTdCLE1BQU0sVUFBVSxHQUF1QjtZQUNyQyxhQUFhLEVBQUUsZ0JBQUMsQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLGFBQWEsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQ3RELHFCQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUNsQjtZQUNELFlBQVksRUFBRSxhQUFhLENBQUMsWUFBWTtZQUN4QyxXQUFXLEVBQUUscUJBQVMsQ0FBQyxJQUFJLENBQUMsYUFBYSxDQUFDLFdBQVcsQ0FBQztZQUN0RCxNQUFNLEVBQUUsZ0JBQUMsQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLE1BQU0sRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMscUJBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7U0FDakUsQ0FBQztRQUVGLE1BQU0sc0JBQXNCLEdBQzFCLFVBQVUsQ0FBQyxhQUFhLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFFLENBQUM7UUFFakUsTUFBTSx3QkFBd0IsR0FBRyxnQkFBQyxDQUFDLE1BQU0sQ0FDdkMsVUFBVSxDQUFDLE1BQU0sRUFDakIsQ0FBQyxHQUFjLEVBQUUsR0FBYyxFQUFFLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUNoRCxxQkFBUyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FDbEIsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUVoQyxTQUFHLENBQUMsSUFBSSxDQUNOO1lBQ0UsVUFBVTtZQUNWLGtCQUFrQixFQUFFO2dCQUNsQixhQUFhLEVBQUUsZ0JBQUMsQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLGFBQWEsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRSxDQUFDO2dCQUNuRSxXQUFXLEVBQUUsVUFBVSxDQUFDLFdBQVcsQ0FBQyxRQUFRLEVBQUU7Z0JBQzlDLE1BQU0sRUFBRSxnQkFBQyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUM7YUFDdEQ7WUFDRCxzQkFBc0IsRUFBRSxzQkFBc0IsQ0FBQyxRQUFRLEVBQUU7WUFDekQsd0JBQXdCLEVBQUUsd0JBQXdCLENBQUMsUUFBUSxFQUFFO1NBQzlELEVBQ0QseURBQXlELENBQzFELENBQUM7UUFFRixNQUFNLFdBQVcsR0FBRyxzQkFBc0IsQ0FBQyxHQUFHLENBQUMsd0JBQXdCLENBQUMsQ0FBQztRQUV6RSxNQUFNLFdBQVcsR0FBRyxVQUFVLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztRQUV0RSxTQUFHLENBQUMsSUFBSSxDQUNOLCtCQUErQixXQUFXLGdCQUFnQixXQUFXLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FDbkYsQ0FBQztRQUVGLE9BQU8sRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLENBQUM7SUFDdEMsQ0FBQztDQUNGO0FBOURELDBEQThEQyJ9
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { JsonRpcProvider } from '@ethersproject/providers';
|
|
2
|
+
import { SwapOptions, SwapRoute } from '../routers';
|
|
3
|
+
import { ChainId } from '../util';
|
|
4
|
+
import { Simulator } from './simulation-provider';
|
|
5
|
+
import { IV2PoolProvider } from './v2/pool-provider';
|
|
6
|
+
import { IV3PoolProvider } from './v3/pool-provider';
|
|
7
|
+
export declare class EthEstimateGasSimulator extends Simulator {
|
|
8
|
+
v2PoolProvider: IV2PoolProvider;
|
|
9
|
+
v3PoolProvider: IV3PoolProvider;
|
|
10
|
+
constructor(chainId: ChainId, provider: JsonRpcProvider, v2PoolProvider: IV2PoolProvider, v3PoolProvider: IV3PoolProvider);
|
|
11
|
+
ethEstimateGas(fromAddress: string, swapOptions: SwapOptions, route: SwapRoute): Promise<SwapRoute>;
|
|
12
|
+
private inflateGasLimit;
|
|
13
|
+
protected simulateTransaction(fromAddress: string, swapOptions: any, swapRoute: SwapRoute): Promise<SwapRoute>;
|
|
14
|
+
}
|