@maxosllc/smart-order-router
Version:
BlockDAG Smart Order Router
159 lines • 11.9 kB
JavaScript
import { ChainId } from '../../src/util/chains';
import { nativeOnChain, WRAPPED_NATIVE_CURRENCY } from '../util';
import { ARB_ARBITRUM, BTC_BNB, BUSD_BNB, CELO, CEUR_CELO, CUSD_CELO, DAI_ARBITRUM, DAI_AVAX, DAI_BNB, DAI_CELO, DAI_MAINNET, DAI_MOONBEAM, DAI_OPTIMISM, DAI_UNICHAIN, ETH_BNB, OP_OPTIMISM, USDB_BLAST, USDCE_ZKSYNC, USDC_ARBITRUM, USDC_AVAX, USDC_BASE, USDC_BASE_SEPOLIA, USDC_BNB, USDC_MAINNET, USDC_MOONBEAM, USDC_NATIVE_ARBITRUM, USDC_OPTIMISM, USDC_POLYGON, USDC_SONEIUM, USDC_UNICHAIN, USDC_UNICHAIN_SEPOLIA, USDC_WORLDCHAIN, USDC_ZKSYNC, USDT_ARBITRUM, USDT_BNB, USDT_MAINNET, USDT_MONAD_TESTNET, USDT_OPTIMISM, WBTC_ARBITRUM, WBTC_MAINNET, WBTC_MOONBEAM, WBTC_OPTIMISM, WBTC_WORLDCHAIN, WETH_POLYGON, WLD_WORLDCHAIN, WMATIC_POLYGON, WSTETH_MAINNET, } from './token-provider';
export const BASES_TO_CHECK_TRADES_AGAINST = {
[]: [
nativeOnChain(ChainId.MAINNET),
WRAPPED_NATIVE_CURRENCY[ChainId.MAINNET],
DAI_MAINNET,
USDC_MAINNET,
USDT_MAINNET,
WBTC_MAINNET,
WSTETH_MAINNET,
],
[]: [WRAPPED_NATIVE_CURRENCY[ChainId.GOERLI]],
[]: [
nativeOnChain(ChainId.SEPOLIA),
WRAPPED_NATIVE_CURRENCY[ChainId.SEPOLIA],
],
//v2 not deployed on [arbitrum, polygon, celo, gnosis, moonbeam, bnb, avalanche] and their testnets
[]: [
nativeOnChain(ChainId.OPTIMISM),
WRAPPED_NATIVE_CURRENCY[ChainId.OPTIMISM],
USDC_OPTIMISM,
DAI_OPTIMISM,
USDT_OPTIMISM,
WBTC_OPTIMISM,
OP_OPTIMISM,
],
[]: [
nativeOnChain(ChainId.ARBITRUM_ONE),
WRAPPED_NATIVE_CURRENCY[ChainId.ARBITRUM_ONE],
WBTC_ARBITRUM,
DAI_ARBITRUM,
USDC_ARBITRUM,
USDC_NATIVE_ARBITRUM,
USDT_ARBITRUM,
ARB_ARBITRUM,
],
[]: [],
[]: [],
[]: [],
[]: [],
[]: [
nativeOnChain(ChainId.POLYGON),
USDC_POLYGON,
WETH_POLYGON,
WMATIC_POLYGON,
],
[]: [],
[]: [CELO, CUSD_CELO, CEUR_CELO, DAI_CELO],
[]: [],
[]: [],
[]: [
WRAPPED_NATIVE_CURRENCY[ChainId.MOONBEAM],
DAI_MOONBEAM,
USDC_MOONBEAM,
WBTC_MOONBEAM,
],
[]: [
nativeOnChain(ChainId.BNB),
WRAPPED_NATIVE_CURRENCY[ChainId.BNB],
BUSD_BNB,
DAI_BNB,
USDC_BNB,
USDT_BNB,
BTC_BNB,
ETH_BNB,
],
[]: [
WRAPPED_NATIVE_CURRENCY[ChainId.AVALANCHE],
USDC_AVAX,
DAI_AVAX,
],
[]: [],
[]: [
nativeOnChain(ChainId.BASE),
WRAPPED_NATIVE_CURRENCY[ChainId.BASE],
USDC_BASE,
],
[]: [
nativeOnChain(ChainId.ZORA),
WRAPPED_NATIVE_CURRENCY[ChainId.ZORA],
],
[]: [WRAPPED_NATIVE_CURRENCY[ChainId.ZORA_SEPOLIA]],
[]: [WRAPPED_NATIVE_CURRENCY[ChainId.ROOTSTOCK]],
[]: [
nativeOnChain(ChainId.BLAST),
WRAPPED_NATIVE_CURRENCY[ChainId.BLAST],
USDB_BLAST,
],
[]: [
WRAPPED_NATIVE_CURRENCY[ChainId.ZKSYNC],
USDCE_ZKSYNC,
USDC_ZKSYNC,
],
[]: [
nativeOnChain(ChainId.WORLDCHAIN),
WRAPPED_NATIVE_CURRENCY[ChainId.WORLDCHAIN],
USDC_WORLDCHAIN,
WLD_WORLDCHAIN,
WBTC_WORLDCHAIN,
],
[]: [
nativeOnChain(ChainId.UNICHAIN_SEPOLIA),
WRAPPED_NATIVE_CURRENCY[ChainId.UNICHAIN_SEPOLIA],
USDC_UNICHAIN_SEPOLIA,
],
[]: [
nativeOnChain(ChainId.UNICHAIN),
WRAPPED_NATIVE_CURRENCY[ChainId.UNICHAIN],
DAI_UNICHAIN,
USDC_UNICHAIN,
],
[]: [
nativeOnChain(ChainId.BASE_SEPOLIA),
WRAPPED_NATIVE_CURRENCY[ChainId.BASE_SEPOLIA],
USDC_BASE_SEPOLIA,
],
[]: [
nativeOnChain(ChainId.MONAD_TESTNET),
WRAPPED_NATIVE_CURRENCY[ChainId.MONAD_TESTNET],
USDT_MONAD_TESTNET,
],
[]: [
nativeOnChain(ChainId.SONEIUM),
WRAPPED_NATIVE_CURRENCY[ChainId.SONEIUM],
USDC_SONEIUM,
],
[]: [
nativeOnChain(ChainId.BLOCKDAG_TESTNET),
WRAPPED_NATIVE_CURRENCY[ChainId.BLOCKDAG_TESTNET],
],
};
export class CachingSubgraphProvider {
/**
* Creates an instance of CachingV3SubgraphProvider.
* @param chainId The chain id to use.
* @param subgraphProvider The provider to use to get the subgraph pools when not in the cache.
* @param cache Cache instance to hold cached pools.
* @param protocol Subgraph protocol version
*/
constructor(chainId, subgraphProvider, cache, protocol) {
this.chainId = chainId;
this.subgraphProvider = subgraphProvider;
this.cache = cache;
this.protocol = protocol;
this.SUBGRAPH_KEY = (chainId) => `subgraph-pools-${this.protocol}-${chainId}`;
}
async getPools() {
const cachedPools = await this.cache.get(this.SUBGRAPH_KEY(this.chainId));
if (cachedPools) {
return cachedPools;
}
const pools = await this.subgraphProvider.getPools();
await this.cache.set(this.SUBGRAPH_KEY(this.chainId), pools);
return pools;
}
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2FjaGluZy1zdWJncmFwaC1wcm92aWRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9wcm92aWRlcnMvY2FjaGluZy1zdWJncmFwaC1wcm92aWRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFJaEQsT0FBTyxFQUFFLGFBQWEsRUFBRSx1QkFBdUIsRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUlqRSxPQUFPLEVBQ0wsWUFBWSxFQUNaLE9BQU8sRUFDUCxRQUFRLEVBQ1IsSUFBSSxFQUNKLFNBQVMsRUFDVCxTQUFTLEVBQ1QsWUFBWSxFQUNaLFFBQVEsRUFDUixPQUFPLEVBQ1AsUUFBUSxFQUNSLFdBQVcsRUFDWCxZQUFZLEVBQ1osWUFBWSxFQUNaLFlBQVksRUFDWixPQUFPLEVBQ1AsV0FBVyxFQUNYLFVBQVUsRUFDVixZQUFZLEVBQ1osYUFBYSxFQUNiLFNBQVMsRUFDVCxTQUFTLEVBQ1QsaUJBQWlCLEVBQ2pCLFFBQVEsRUFDUixZQUFZLEVBQ1osYUFBYSxFQUNiLG9CQUFvQixFQUNwQixhQUFhLEVBQ2IsWUFBWSxFQUNaLFlBQVksRUFDWixhQUFhLEVBQ2IscUJBQXFCLEVBQ3JCLGVBQWUsRUFDZixXQUFXLEVBQ1gsYUFBYSxFQUNiLFFBQVEsRUFDUixZQUFZLEVBQ1osa0JBQWtCLEVBQ2xCLGFBQWEsRUFDYixhQUFhLEVBQ2IsWUFBWSxFQUNaLGFBQWEsRUFDYixhQUFhLEVBQ2IsZUFBZSxFQUNmLFlBQVksRUFDWixjQUFjLEVBQ2QsY0FBYyxFQUNkLGNBQWMsR0FDZixNQUFNLGtCQUFrQixDQUFDO0FBTzFCLE1BQU0sQ0FBQyxNQUFNLDZCQUE2QixHQUFtQjtJQUMzRCxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRTtRQUNqQixhQUFhLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQztRQUM5Qix1QkFBdUIsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFFO1FBQ3pDLFdBQVc7UUFDWCxZQUFZO1FBQ1osWUFBWTtRQUNaLFlBQVk7UUFDWixjQUFjO0tBQ2Y7SUFDRCxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLHVCQUF1QixDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUUsQ0FBQztJQUM1RCxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRTtRQUNqQixhQUFhLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQztRQUM5Qix1QkFBdUIsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFFO0tBQzFDO0lBQ0QsbUdBQW1HO0lBQ25HLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxFQUFFO1FBQ2xCLGFBQWEsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDO1FBQy9CLHVCQUF1QixDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUU7UUFDMUMsYUFBYTtRQUNiLFlBQVk7UUFDWixhQUFhO1FBQ2IsYUFBYTtRQUNiLFdBQVc7S0FDWjtJQUNELENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxFQUFFO1FBQ3RCLGFBQWEsQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDO1FBQ25DLHVCQUF1QixDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUU7UUFDOUMsYUFBYTtRQUNiLFlBQVk7UUFDWixhQUFhO1FBQ2Isb0JBQW9CO1FBQ3BCLGFBQWE7UUFDYixZQUFZO0tBQ2I7SUFDRCxDQUFDLE9BQU8sQ0FBQyxlQUFlLENBQUMsRUFBRSxFQUFFO0lBQzdCLENBQUMsT0FBTyxDQUFDLGdCQUFnQixDQUFDLEVBQUUsRUFBRTtJQUM5QixDQUFDLE9BQU8sQ0FBQyxlQUFlLENBQUMsRUFBRSxFQUFFO0lBQzdCLENBQUMsT0FBTyxDQUFDLGdCQUFnQixDQUFDLEVBQUUsRUFBRTtJQUM5QixDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRTtRQUNqQixhQUFhLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQztRQUM5QixZQUFZO1FBQ1osWUFBWTtRQUNaLGNBQWM7S0FDZjtJQUNELENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxFQUFFLEVBQUU7SUFDNUIsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxRQUFRLENBQUM7SUFDdEQsQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFDLEVBQUUsRUFBRTtJQUM1QixDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsRUFBRSxFQUFFO0lBQ3BCLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxFQUFFO1FBQ2xCLHVCQUF1QixDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUM7UUFDekMsWUFBWTtRQUNaLGFBQWE7UUFDYixhQUFhO0tBQ2Q7SUFDRCxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRTtRQUNiLGFBQWEsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDO1FBQzFCLHVCQUF1QixDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUM7UUFDcEMsUUFBUTtRQUNSLE9BQU87UUFDUCxRQUFRO1FBQ1IsUUFBUTtRQUNSLE9BQU87UUFDUCxPQUFPO0tBQ1I7SUFDRCxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsRUFBRTtRQUNuQix1QkFBdUIsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDO1FBQzFDLFNBQVM7UUFDVCxRQUFRO0tBQ1Q7SUFDRCxDQUFDLE9BQU8sQ0FBQyxXQUFXLENBQUMsRUFBRSxFQUFFO0lBQ3pCLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFO1FBQ2QsYUFBYSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUM7UUFDM0IsdUJBQXVCLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQztRQUNyQyxTQUFTO0tBQ1Y7SUFDRCxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRTtRQUNkLGFBQWEsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDO1FBQzNCLHVCQUF1QixDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUU7S0FDdkM7SUFDRCxDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLHVCQUF1QixDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUUsQ0FBQztJQUN4RSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLHVCQUF1QixDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUUsQ0FBQztJQUNsRSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsRUFBRTtRQUNmLGFBQWEsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDO1FBQzVCLHVCQUF1QixDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUU7UUFDdkMsVUFBVTtLQUNYO0lBQ0QsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUU7UUFDaEIsdUJBQXVCLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBRTtRQUN4QyxZQUFZO1FBQ1osV0FBVztLQUNaO0lBQ0QsQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLEVBQUU7UUFDcEIsYUFBYSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUM7UUFDakMsdUJBQXVCLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBRTtRQUM1QyxlQUFlO1FBQ2YsY0FBYztRQUNkLGVBQWU7S0FDaEI7SUFDRCxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxFQUFFO1FBQzFCLGFBQWEsQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLENBQUM7UUFDdkMsdUJBQXVCLENBQUMsT0FBTyxDQUFDLGdCQUFnQixDQUFFO1FBQ2xELHFCQUFxQjtLQUN0QjtJQUNELENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxFQUFFO1FBQ2xCLGFBQWEsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDO1FBQy9CLHVCQUF1QixDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUU7UUFDMUMsWUFBWTtRQUNaLGFBQWE7S0FDZDtJQUNELENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxFQUFFO1FBQ3RCLGFBQWEsQ0FBQyxPQUFPLENBQUMsWUFBWSxDQUFDO1FBQ25DLHVCQUF1QixDQUFDLE9BQU8sQ0FBQyxZQUFZLENBQUU7UUFDOUMsaUJBQWlCO0tBQ2xCO0lBQ0QsQ0FBQyxPQUFPLENBQUMsYUFBYSxDQUFDLEVBQUU7UUFDdkIsYUFBYSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUM7UUFDcEMsdUJBQXVCLENBQUMsT0FBTyxDQUFDLGFBQWEsQ0FBRTtRQUMvQyxrQkFBa0I7S0FDbkI7SUFDRCxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRTtRQUNqQixhQUFhLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQztRQUM5Qix1QkFBdUIsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFFO1FBQ3pDLFlBQVk7S0FDYjtJQUNELENBQUMsT0FBTyxDQUFDLGdCQUFnQixDQUFDLEVBQUU7UUFDMUIsYUFBYSxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQztRQUN2Qyx1QkFBdUIsQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLENBQUU7S0FDbkQ7Q0FDRixDQUFDO0FBa0JGLE1BQU0sT0FBZ0IsdUJBQXVCO0lBTTNDOzs7Ozs7T0FNRztJQUNILFlBQ1UsT0FBZ0IsRUFDZCxnQkFBa0QsRUFDcEQsS0FBOEIsRUFDOUIsUUFBa0I7UUFIbEIsWUFBTyxHQUFQLE9BQU8sQ0FBUztRQUNkLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0M7UUFDcEQsVUFBSyxHQUFMLEtBQUssQ0FBeUI7UUFDOUIsYUFBUSxHQUFSLFFBQVEsQ0FBVTtRQWRwQixpQkFBWSxHQUFHLENBQUMsT0FBZ0IsRUFBRSxFQUFFLENBQzFDLGtCQUFrQixJQUFJLENBQUMsUUFBUSxJQUFJLE9BQU8sRUFBRSxDQUFDO0lBYzNDLENBQUM7SUFFRSxLQUFLLENBQUMsUUFBUTtRQUNuQixNQUFNLFdBQVcsR0FBRyxNQUFNLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7UUFFMUUsSUFBSSxXQUFXLEVBQUU7WUFDZixPQUFPLFdBQVcsQ0FBQztTQUNwQjtRQUVELE1BQU0sS0FBSyxHQUFHLE1BQU0sSUFBSSxDQUFDLGdCQUFnQixDQUFDLFFBQVEsRUFBRSxDQUFDO1FBRXJELE1BQU0sSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFFN0QsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0NBQ0YifQ==