UNPKG

@maxosllc/smart-order-router

Version:
122 lines 13.8 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.CUSTOM_BASES = exports.ADDITIONAL_BASES = exports.BASES_TO_CHECK_TRADES_AGAINST = void 0; /* eslint-disable @typescript-eslint/no-non-null-assertion */ const chains_1 = require("../../../src/util/chains"); const token_provider_1 = require("../../providers/token-provider"); const chains_2 = require("../../util/chains"); const BASES_TO_CHECK_TRADES_AGAINST = (_tokenProvider) => { return { [chains_1.ChainId.MAINNET]: [ chains_2.WRAPPED_NATIVE_CURRENCY[chains_1.ChainId.MAINNET], token_provider_1.DAI_MAINNET, token_provider_1.USDC_MAINNET, token_provider_1.USDT_MAINNET, token_provider_1.WBTC_MAINNET, ], [chains_1.ChainId.GOERLI]: [chains_2.WRAPPED_NATIVE_CURRENCY[chains_1.ChainId.GOERLI]], [chains_1.ChainId.SEPOLIA]: [chains_2.WRAPPED_NATIVE_CURRENCY[chains_1.ChainId.SEPOLIA]], [chains_1.ChainId.OPTIMISM]: [chains_2.WRAPPED_NATIVE_CURRENCY[chains_1.ChainId.OPTIMISM]], [chains_1.ChainId.OPTIMISM_GOERLI]: [ chains_2.WRAPPED_NATIVE_CURRENCY[chains_1.ChainId.OPTIMISM_GOERLI], ], [chains_1.ChainId.OPTIMISM_SEPOLIA]: [ chains_2.WRAPPED_NATIVE_CURRENCY[chains_1.ChainId.OPTIMISM_SEPOLIA], ], [chains_1.ChainId.ARBITRUM_ONE]: [chains_2.WRAPPED_NATIVE_CURRENCY[chains_1.ChainId.ARBITRUM_ONE]], [chains_1.ChainId.ARBITRUM_GOERLI]: [ chains_2.WRAPPED_NATIVE_CURRENCY[chains_1.ChainId.ARBITRUM_GOERLI], ], [chains_1.ChainId.ARBITRUM_SEPOLIA]: [ chains_2.WRAPPED_NATIVE_CURRENCY[chains_1.ChainId.ARBITRUM_SEPOLIA], ], [chains_1.ChainId.POLYGON]: [token_provider_1.WMATIC_POLYGON], [chains_1.ChainId.POLYGON_MUMBAI]: [token_provider_1.WMATIC_POLYGON_MUMBAI], [chains_1.ChainId.CELO]: [chains_2.WRAPPED_NATIVE_CURRENCY[chains_1.ChainId.CELO]], [chains_1.ChainId.CELO_ALFAJORES]: [chains_2.WRAPPED_NATIVE_CURRENCY[chains_1.ChainId.CELO_ALFAJORES]], [chains_1.ChainId.GNOSIS]: [chains_2.WRAPPED_NATIVE_CURRENCY[chains_1.ChainId.GNOSIS]], [chains_1.ChainId.MOONBEAM]: [chains_2.WRAPPED_NATIVE_CURRENCY[chains_1.ChainId.MOONBEAM]], [chains_1.ChainId.BNB]: [ chains_2.WRAPPED_NATIVE_CURRENCY[chains_1.ChainId.BNB], token_provider_1.BUSD_BNB, token_provider_1.DAI_BNB, token_provider_1.USDC_BNB, token_provider_1.USDT_BNB, token_provider_1.BTC_BNB, ], [chains_1.ChainId.AVALANCHE]: [ chains_2.WRAPPED_NATIVE_CURRENCY[chains_1.ChainId.AVALANCHE], token_provider_1.USDC_AVAX, token_provider_1.DAI_AVAX, ], [chains_1.ChainId.BASE]: [chains_2.WRAPPED_NATIVE_CURRENCY[chains_1.ChainId.BASE], token_provider_1.USDC_BASE], [chains_1.ChainId.BASE_GOERLI]: [chains_2.WRAPPED_NATIVE_CURRENCY[chains_1.ChainId.BASE_GOERLI]], [chains_1.ChainId.ZORA]: [chains_2.WRAPPED_NATIVE_CURRENCY[chains_1.ChainId.ZORA]], [chains_1.ChainId.ZORA_SEPOLIA]: [chains_2.WRAPPED_NATIVE_CURRENCY[chains_1.ChainId.ZORA_SEPOLIA]], [chains_1.ChainId.ROOTSTOCK]: [chains_2.WRAPPED_NATIVE_CURRENCY[chains_1.ChainId.ROOTSTOCK]], [chains_1.ChainId.BLAST]: [chains_2.WRAPPED_NATIVE_CURRENCY[chains_1.ChainId.BLAST], token_provider_1.USDB_BLAST], [chains_1.ChainId.ZKSYNC]: [ chains_2.WRAPPED_NATIVE_CURRENCY[chains_1.ChainId.ZKSYNC], token_provider_1.USDCE_ZKSYNC, token_provider_1.USDC_ZKSYNC, ], [chains_1.ChainId.WORLDCHAIN]: [ chains_2.WRAPPED_NATIVE_CURRENCY[chains_1.ChainId.WORLDCHAIN], token_provider_1.USDC_WORLDCHAIN, token_provider_1.WLD_WORLDCHAIN, token_provider_1.WBTC_WORLDCHAIN, ], [chains_1.ChainId.UNICHAIN_SEPOLIA]: [ chains_2.WRAPPED_NATIVE_CURRENCY[chains_1.ChainId.UNICHAIN_SEPOLIA], token_provider_1.USDC_UNICHAIN_SEPOLIA, ], [chains_1.ChainId.UNICHAIN]: [ chains_2.WRAPPED_NATIVE_CURRENCY[chains_1.ChainId.UNICHAIN], token_provider_1.DAI_UNICHAIN, token_provider_1.USDC_UNICHAIN, ], [chains_1.ChainId.MONAD_TESTNET]: [ chains_2.WRAPPED_NATIVE_CURRENCY[chains_1.ChainId.MONAD_TESTNET], token_provider_1.USDT_MONAD_TESTNET, ], [chains_1.ChainId.BASE_SEPOLIA]: [ chains_2.WRAPPED_NATIVE_CURRENCY[chains_1.ChainId.BASE_SEPOLIA], token_provider_1.USDC_BASE_SEPOLIA, ], [chains_1.ChainId.SONEIUM]: [ chains_2.WRAPPED_NATIVE_CURRENCY[chains_1.ChainId.SONEIUM], token_provider_1.USDC_SONEIUM, ], [chains_1.ChainId.BLOCKDAG_TESTNET]: [ chains_2.WRAPPED_NATIVE_CURRENCY[chains_1.ChainId.BLOCKDAG_TESTNET], token_provider_1.USDT_BLOCKDAG_TESTNET, ], }; }; exports.BASES_TO_CHECK_TRADES_AGAINST = BASES_TO_CHECK_TRADES_AGAINST; const getBasePairByAddress = async (tokenProvider, _chainId, fromAddress, toAddress) => { const accessor = await tokenProvider.getTokens([toAddress]); const toToken = accessor.getTokenByAddress(toAddress); if (!toToken) return {}; return { [fromAddress]: [toToken], }; }; const ADDITIONAL_BASES = async (tokenProvider) => { return { [chains_1.ChainId.MAINNET]: Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({}, (await getBasePairByAddress(tokenProvider, chains_1.ChainId.MAINNET, '0xA948E86885e12Fb09AfEF8C52142EBDbDf73cD18', '0x1f9840a85d5af5bf1d1762f925bdaddc4201f984'))), (await getBasePairByAddress(tokenProvider, chains_1.ChainId.MAINNET, '0x561a4717537ff4AF5c687328c0f7E90a319705C0', '0x1f9840a85d5af5bf1d1762f925bdaddc4201f984'))), (await getBasePairByAddress(tokenProvider, chains_1.ChainId.MAINNET, '0x956F47F50A910163D8BF957Cf5846D573E7f87CA', '0xc7283b66Eb1EB5FB86327f08e1B5816b0720212B'))), (await getBasePairByAddress(tokenProvider, chains_1.ChainId.MAINNET, '0xc7283b66Eb1EB5FB86327f08e1B5816b0720212B', '0x956F47F50A910163D8BF957Cf5846D573E7f87CA'))), (await getBasePairByAddress(tokenProvider, chains_1.ChainId.MAINNET, '0x853d955acef822db058eb8505911ed77f175b99e', '0x3432b6a60d23ca0dfca7761b7ab56459d9c964d0'))), (await getBasePairByAddress(tokenProvider, chains_1.ChainId.MAINNET, '0x3432b6a60d23ca0dfca7761b7ab56459d9c964d0', '0x853d955acef822db058eb8505911ed77f175b99e'))), (await getBasePairByAddress(tokenProvider, chains_1.ChainId.MAINNET, '0x2260fac5e5542a773aa44fbcfedf7c193bc2c599', '0xeb4c2781e4eba804ce9a9803c67d0893436bb27d'))), (await getBasePairByAddress(tokenProvider, chains_1.ChainId.MAINNET, '0xeb4c2781e4eba804ce9a9803c67d0893436bb27d', '0x2260fac5e5542a773aa44fbcfedf7c193bc2c599'))), }; }; exports.ADDITIONAL_BASES = ADDITIONAL_BASES; /** * Some tokens can only be swapped via certain pairs, so we override the list of bases that are considered for these * tokens. */ const CUSTOM_BASES = async (tokenProvider) => { return { [chains_1.ChainId.MAINNET]: Object.assign(Object.assign({}, (await getBasePairByAddress(tokenProvider, chains_1.ChainId.MAINNET, '0xd46ba6d942050d489dbd938a2c909a5d5039a161', token_provider_1.DAI_MAINNET.address))), (await getBasePairByAddress(tokenProvider, chains_1.ChainId.MAINNET, '0xd46ba6d942050d489dbd938a2c909a5d5039a161', chains_2.WRAPPED_NATIVE_CURRENCY[1].address))), }; }; exports.CUSTOM_BASES = CUSTOM_BASES; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvcm91dGVycy9sZWdhY3ktcm91dGVyL2Jhc2VzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLDZEQUE2RDtBQUM3RCxxREFBbUQ7QUFHbkQsbUVBNkJ3QztBQUN4Qyw4Q0FBNEQ7QUFNckQsTUFBTSw2QkFBNkIsR0FBRyxDQUMzQyxjQUE4QixFQUNkLEVBQUU7SUFDbEIsT0FBTztRQUNMLENBQUMsZ0JBQU8sQ0FBQyxPQUFPLENBQUMsRUFBRTtZQUNqQixnQ0FBdUIsQ0FBQyxnQkFBTyxDQUFDLE9BQU8sQ0FBRTtZQUN6Qyw0QkFBVztZQUNYLDZCQUFZO1lBQ1osNkJBQVk7WUFDWiw2QkFBWTtTQUNiO1FBQ0QsQ0FBQyxnQkFBTyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsZ0NBQXVCLENBQUMsZ0JBQU8sQ0FBQyxNQUFNLENBQUUsQ0FBQztRQUM1RCxDQUFDLGdCQUFPLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxnQ0FBdUIsQ0FBQyxnQkFBTyxDQUFDLE9BQU8sQ0FBRSxDQUFDO1FBQzlELENBQUMsZ0JBQU8sQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLGdDQUF1QixDQUFDLGdCQUFPLENBQUMsUUFBUSxDQUFFLENBQUM7UUFDaEUsQ0FBQyxnQkFBTyxDQUFDLGVBQWUsQ0FBQyxFQUFFO1lBQ3pCLGdDQUF1QixDQUFDLGdCQUFPLENBQUMsZUFBZSxDQUFFO1NBQ2xEO1FBQ0QsQ0FBQyxnQkFBTyxDQUFDLGdCQUFnQixDQUFDLEVBQUU7WUFDMUIsZ0NBQXVCLENBQUMsZ0JBQU8sQ0FBQyxnQkFBZ0IsQ0FBRTtTQUNuRDtRQUNELENBQUMsZ0JBQU8sQ0FBQyxZQUFZLENBQUMsRUFBRSxDQUFDLGdDQUF1QixDQUFDLGdCQUFPLENBQUMsWUFBWSxDQUFFLENBQUM7UUFDeEUsQ0FBQyxnQkFBTyxDQUFDLGVBQWUsQ0FBQyxFQUFFO1lBQ3pCLGdDQUF1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