diff --git a/src/external-api.ts b/src/external-api.ts index 7e910d0..17ad43a 100644 --- a/src/external-api.ts +++ b/src/external-api.ts @@ -23,6 +23,7 @@ export const _getAllPoolsFromApi = async (network: INetworkName): Promise { export type INetworkName = "ethereum" | "bsc" | "optimism" | "xdai" | "polygon" | "fantom" | "zksync" | "moonbeam" | "kava" | "base" | "arbitrum" | "celo" | "avalanche" | "aurora"; export type IChainId = 1 | 10 | 56 | 100 | 137 | 250 | 324 | 1284 | 2222 | 8453 | 42161 | 42220 | 43114 | 1313161554; -export type IPoolFactory = "main" | "crypto" | "factory" | "factory-crvusd" | "factory-crypto" | "factory-tricrypto" | "factory-stable-ng"; +export type IPoolFactory = "main" | "crypto" | "factory" | "factory-crvusd" | "factory-crypto" | "factory-twocrypto" | "factory-tricrypto" | "factory-stable-ng"; export interface ICurveContract { contract: Contract, multicallContract: MulticallContract, diff --git a/src/markets/OneWayMarketTemplate.ts b/src/markets/OneWayMarketTemplate.ts index 18f5386..5954fdd 100644 --- a/src/markets/OneWayMarketTemplate.ts +++ b/src/markets/OneWayMarketTemplate.ts @@ -758,10 +758,10 @@ export class OneWayMarketTemplate { } const tokenInfo = await lending.multicallProvider.all(tokenInfoCalls); for (let i = 0; i < tokens.length; i++) { - lending.constants.DECIMALS[tokens[i]] = tokenInfo[(i * 2) + 1] as number; + lending.constants.DECIMALS[tokens[i]] = Number(tokenInfo[(i * 2) + 1]); } - return tokens.map((token, i) => ({ token, symbol: tokenInfo[i * 2] as string, decimals: tokenInfo[(i * 2) + 1] as number })); + return tokens.map((token, i) => ({ token, symbol: tokenInfo[i * 2] as string, decimals: Number(tokenInfo[(i * 2) + 1]) })); }, { promise: true, diff --git a/src/utils.ts b/src/utils.ts index 040648f..f1da679 100644 --- a/src/utils.ts +++ b/src/utils.ts @@ -455,10 +455,38 @@ export const getUsdRate = async (coin: string): Promise => { return await _getUsdRate(coinAddress); } -export const getGasPriceFromL2 = (): number => { +export const getBaseFeeByLastBlock = async () => { + const provider = lending.provider; + + try { + const block = await provider.getBlock('latest'); + if(!block) { + return 0.01 + } + + return Number(block.baseFeePerGas) / (10**9); + } catch (error: any) { + throw new Error(error) + } +} + +export const getGasPriceFromL2 = async (): Promise => { if(lending.chainId === 42161) { - return 0.01 * 1e9; // constant 0.1 gwei + return await getBaseFeeByLastBlock() + } else { + throw Error("This method exists only for ARBITRUM network"); + } +} + +export const getGasInfoForL2 = async (): Promise> => { + if(lending.chainId === 42161) { + const baseFee = await getBaseFeeByLastBlock() + + return { + maxFeePerGas: Number(((baseFee * 1.1) + 0.01).toFixed(2)), + maxPriorityFeePerGas: 0.01, + } } else { - throw Error("This method exists only for L2 networks"); + throw Error("This method exists only for ARBITRUM network"); } }