From c16274574d0348fde37aa2e427d6d69fe5c1f5f0 Mon Sep 17 00:00:00 2001 From: JD Date: Fri, 24 May 2024 12:27:24 +0200 Subject: [PATCH] refactor: leveraged token data util function --- src/quote/leveraged-extended/provider.ts | 2 +- src/quote/leveraged/provider.ts | 44 +++---------------- .../data.ts => utils/leveraged-token-data.ts} | 8 +++- 3 files changed, 15 insertions(+), 39 deletions(-) rename src/{quote/leveraged-extended/utils/data.ts => utils/leveraged-token-data.ts} (84%) diff --git a/src/quote/leveraged-extended/provider.ts b/src/quote/leveraged-extended/provider.ts index 01389547..34376859 100644 --- a/src/quote/leveraged-extended/provider.ts +++ b/src/quote/leveraged-extended/provider.ts @@ -3,6 +3,7 @@ import { JsonRpcProvider } from '@ethersproject/providers' import { ETH, InterestCompoundingETHIndex } from 'constants/tokens' import { ZeroExApi } from 'utils/0x' +import { getLeveragedTokenData } from 'utils/leveraged-token-data' import { slippageAdjustedTokenAmount } from 'utils/slippage' import { Exchange, @@ -15,7 +16,6 @@ import { import { QuoteProvider } from '../quoteProvider' import { QuoteToken } from '../quoteToken' -import { getLeveragedTokenData } from './utils/data' import { getIncludedSources } from './utils/zeroex' export interface FlashMintLeveragedExtendedQuoteRequest { diff --git a/src/quote/leveraged/provider.ts b/src/quote/leveraged/provider.ts index 4a872a54..09a1498b 100644 --- a/src/quote/leveraged/provider.ts +++ b/src/quote/leveraged/provider.ts @@ -14,12 +14,16 @@ import { MATIC, stETH, } from 'constants/tokens' -import { getFlashMintLeveragedContractForToken } from 'utils/contracts' +import { SwapQuoteProvider, SwapQuoteRequest } from 'quote/swap' +import { + getLeveragedTokenData, + LeveragedTokenData, +} from 'utils/leveraged-token-data' import { slippageAdjustedTokenAmount } from 'utils/slippage' import { Exchange, SwapData } from 'utils/swapData' + import { QuoteProvider } from '../quoteProvider' import { QuoteToken } from '../quoteToken' -import { SwapQuoteProvider, SwapQuoteRequest } from 'quote/swap' export interface FlashMintLeveragedQuoteRequest { isMinting: boolean @@ -36,14 +40,6 @@ export interface FlashMintLeveragedQuote { swapDataPaymentToken: SwapData } -export interface LeveragedTokenData { - collateralAToken: string - collateralToken: string - debtToken: string - collateralAmount: BigNumber - debtAmount: BigNumber -} - export class LeveragedQuoteProvider implements QuoteProvider @@ -65,7 +61,7 @@ export class LeveragedQuoteProvider const sources = getSourcesToInclude(isIcEth) const network = await provider.getNetwork() const chainId = network.chainId - const leveragedTokenData = await getLevTokenData( + const leveragedTokenData = await getLeveragedTokenData( indexToken.address, indexTokenAmount, indexTokenSymbol, @@ -269,32 +265,6 @@ function getSourcesToInclude(isIcEth: boolean): Exchange[] { : [Exchange.Quickswap, Exchange.Sushiswap, Exchange.UniV3] } -async function getLevTokenData( - setTokenAddress: string, - setTokenAmount: BigNumber, - setTokenSymbol: string, - isIssuance: boolean, - chainId: number, - provider: JsonRpcProvider -): Promise { - try { - const contract = getFlashMintLeveragedContractForToken( - setTokenSymbol, - provider, - chainId - ) - return await contract.getLeveragedTokenData( - setTokenAddress, - setTokenAmount, - isIssuance - ) - } catch (error) { - // TODO: should this just always fail cause it means there is something wrongly configured? - console.error('Error getting leveraged token data', error) - return null - } -} - function getPaymentTokenAddress( paymentToken: QuoteToken, isMinting: boolean, diff --git a/src/quote/leveraged-extended/utils/data.ts b/src/utils/leveraged-token-data.ts similarity index 84% rename from src/quote/leveraged-extended/utils/data.ts rename to src/utils/leveraged-token-data.ts index 25a6407f..69573f1a 100644 --- a/src/quote/leveraged-extended/utils/data.ts +++ b/src/utils/leveraged-token-data.ts @@ -3,7 +3,13 @@ import { JsonRpcProvider } from '@ethersproject/providers' import { getFlashMintLeveragedContractForToken } from 'utils/contracts' -import { LeveragedTokenData } from '../provider' +export interface LeveragedTokenData { + collateralAToken: string + collateralToken: string + debtToken: string + collateralAmount: BigNumber + debtAmount: BigNumber +} export async function getLeveragedTokenData( indexTokenAddress: string,