@uniswap/smart-order-router
Version:
Uniswap Smart Order Router
112 lines • 10.1 kB
JavaScript
import { ChainId, } from '@uniswap/sdk-core';
import { CUSD_CELO, CUSD_CELO_ALFAJORES, DAI_ARBITRUM, DAI_AVAX, DAI_BNB, DAI_GOERLI, DAI_MAINNET, DAI_OPTIMISM, DAI_OPTIMISM_GOERLI, DAI_OPTIMISM_SEPOLIA, DAI_POLYGON_MUMBAI, DAI_SEPOLIA, DAI_UNICHAIN, DAI_ZKSYNC, USDB_BLAST, USDCE_ZKSYNC, USDC_ARBITRUM, USDC_ARBITRUM_GOERLI, USDC_ARBITRUM_SEPOLIA, USDC_AVAX, USDC_BASE, USDC_BASE_SEPOLIA, USDC_BNB, USDC_BRIDGED_AVAX, USDC_CELO, USDC_ETHEREUM_GNOSIS, USDC_GOERLI, USDC_MAINNET, USDC_MONAD, USDC_MOONBEAM, USDC_NATIVE_ARBITRUM, USDC_NATIVE_AVAX, USDC_NATIVE_BASE, USDC_NATIVE_CELO, USDC_NATIVE_OPTIMISM, USDC_NATIVE_POLYGON, USDC_OPTIMISM, USDC_OPTIMISM_GOERLI, USDC_OPTIMISM_SEPOLIA, USDC_POLYGON, USDC_SEPOLIA, USDC_SONEIUM, USDC_UNICHAIN, USDC_UNICHAIN_SEPOLIA, USDC_WORLDCHAIN, USDC_WORMHOLE_CELO, USDC_XLAYER, USDC_ZKSYNC, USDC_ZORA, USDT_ARBITRUM, USDT_BNB, USDT_GOERLI, USDT_MAINNET, USDT_MONAD_TESTNET, USDT_OPTIMISM, USDT_OPTIMISM_GOERLI, USDT_OPTIMISM_SEPOLIA, WBTC_GOERLI, } from '../../../providers/token-provider';
import { WRAPPED_NATIVE_CURRENCY } from '../../../util';
// When adding new usd gas tokens, ensure the tokens are ordered
// from tokens with highest decimals to lowest decimals. For example,
// DAI_AVAX has 18 decimals and comes before USDC_AVAX which has 6 decimals.
export const usdGasTokensByChain = {
[]: [DAI_MAINNET, USDC_MAINNET, USDT_MAINNET],
[]: [
DAI_ARBITRUM,
USDC_ARBITRUM,
USDC_NATIVE_ARBITRUM,
USDT_ARBITRUM,
],
[]: [
DAI_OPTIMISM,
USDC_OPTIMISM,
USDC_NATIVE_OPTIMISM,
USDT_OPTIMISM,
],
[]: [
DAI_OPTIMISM_GOERLI,
USDC_OPTIMISM_GOERLI,
USDT_OPTIMISM_GOERLI,
],
[]: [
DAI_OPTIMISM_SEPOLIA,
USDC_OPTIMISM_SEPOLIA,
USDT_OPTIMISM_SEPOLIA,
],
[]: [USDC_ARBITRUM_GOERLI],
[]: [USDC_ARBITRUM_SEPOLIA],
[]: [DAI_GOERLI, USDC_GOERLI, USDT_GOERLI, WBTC_GOERLI],
[]: [USDC_SEPOLIA, DAI_SEPOLIA],
[]: [USDC_POLYGON, USDC_NATIVE_POLYGON],
[]: [DAI_POLYGON_MUMBAI],
[]: [CUSD_CELO, USDC_CELO, USDC_NATIVE_CELO, USDC_WORMHOLE_CELO],
[]: [CUSD_CELO_ALFAJORES],
[]: [USDC_ETHEREUM_GNOSIS],
[]: [USDC_MOONBEAM],
[]: [USDT_BNB, USDC_BNB, DAI_BNB],
[]: [
DAI_AVAX,
USDC_AVAX,
USDC_NATIVE_AVAX,
USDC_BRIDGED_AVAX,
],
[]: [USDC_BASE, USDC_NATIVE_BASE],
[]: [USDB_BLAST],
[]: [USDC_ZORA],
[]: [DAI_ZKSYNC, USDCE_ZKSYNC, USDC_ZKSYNC],
[]: [USDC_WORLDCHAIN],
[]: [USDC_UNICHAIN_SEPOLIA],
[]: [USDT_MONAD_TESTNET],
[]: [USDC_MONAD],
[]: [USDC_BASE_SEPOLIA],
[]: [DAI_UNICHAIN, USDC_UNICHAIN],
[]: [USDC_SONEIUM],
[]: [USDC_XLAYER],
};
/**
* Factory for building gas models that can be used with any route to generate
* gas estimates.
*
* Factory model is used so that any supporting data can be fetched once and
* returned as part of the model.
*
* @export
* @abstract
* @class IV2GasModelFactory
*/
export class IV2GasModelFactory {
}
/**
* Factory for building gas models that can be used with any route to generate
* gas estimates.
*
* Factory model is used so that any supporting data can be fetched once and
* returned as part of the model.
*
* @export
* @abstract
* @class IOnChainGasModelFactory
*/
export class IOnChainGasModelFactory {
totalInitializedTicksCrossed(initializedTicksCrossedList) {
let ticksCrossed = 0;
for (let i = 0; i < initializedTicksCrossedList.length; i++) {
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
if (initializedTicksCrossedList[i] > 0) {
// Quoter returns Array<number of calls to crossTick + 1>, so we need to subtract 1 here.
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
ticksCrossed += initializedTicksCrossedList[i] - 1;
}
}
return ticksCrossed;
}
}
// Determines if native currency is token0
// Gets the native price of the pool, dependent on 0 or 1
// quotes across the pool
export const getQuoteThroughNativePool = (chainId, nativeTokenAmount, nativeTokenPool) => {
const nativeCurrency = WRAPPED_NATIVE_CURRENCY[chainId];
const isToken0 = nativeTokenPool.token0.equals(nativeCurrency);
// returns mid price in terms of the native currency (the ratio of token/nativeToken)
const nativeTokenPrice = isToken0
? nativeTokenPool.token0Price
: nativeTokenPool.token1Price;
// return gas cost in terms of the non native currency
return nativeTokenPrice.quote(nativeTokenAmount);
};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ2FzLW1vZGVsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vc3JjL3JvdXRlcnMvYWxwaGEtcm91dGVyL2dhcy1tb2RlbHMvZ2FzLW1vZGVsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFDTCxPQUFPLEdBR1IsTUFBTSxtQkFBbUIsQ0FBQztBQUszQixPQUFPLEVBQ0wsU0FBUyxFQUNULG1CQUFtQixFQUNuQixZQUFZLEVBQ1osUUFBUSxFQUNSLE9BQU8sRUFDUCxVQUFVLEVBQ1YsV0FBVyxFQUNYLFlBQVksRUFDWixtQkFBbUIsRUFDbkIsb0JBQW9CLEVBQ3BCLGtCQUFrQixFQUNsQixXQUFXLEVBQ1gsWUFBWSxFQUNaLFVBQVUsRUFDVixVQUFVLEVBQ1YsWUFBWSxFQUNaLGFBQWEsRUFDYixvQkFBb0IsRUFDcEIscUJBQXFCLEVBQ3JCLFNBQVMsRUFDVCxTQUFTLEVBQ1QsaUJBQWlCLEVBQ2pCLFFBQVEsRUFDUixpQkFBaUIsRUFDakIsU0FBUyxFQUNULG9CQUFvQixFQUNwQixXQUFXLEVBQ1gsWUFBWSxFQUNaLFVBQVUsRUFDVixhQUFhLEVBQ2Isb0JBQW9CLEVBQ3BCLGdCQUFnQixFQUNoQixnQkFBZ0IsRUFDaEIsZ0JBQWdCLEVBQ2hCLG9CQUFvQixFQUNwQixtQkFBbUIsRUFDbkIsYUFBYSxFQUNiLG9CQUFvQixFQUNwQixxQkFBcUIsRUFDckIsWUFBWSxFQUNaLFlBQVksRUFDWixZQUFZLEVBQ1osYUFBYSxFQUNiLHFCQUFxQixFQUNyQixlQUFlLEVBQ2Ysa0JBQWtCLEVBQ2xCLFdBQVcsRUFDWCxXQUFXLEVBQ1gsU0FBUyxFQUNULGFBQWEsRUFDYixRQUFRLEVBQ1IsV0FBVyxFQUNYLFlBQVksRUFDWixrQkFBa0IsRUFDbEIsYUFBYSxFQUNiLG9CQUFvQixFQUNwQixxQkFBcUIsRUFDckIsV0FBVyxHQUNaLE1BQU0sbUNBQW1DLENBQUM7QUFNM0MsT0FBTyxFQUFFLHVCQUF1QixFQUFF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