From 8adb82d0a9eecdca728cdfa75cee53cca4091fab Mon Sep 17 00:00:00 2001 From: Mantas S Date: Wed, 3 Jul 2024 13:41:39 +0300 Subject: [PATCH] Sushiswap and camelot refactor --- .../providers/arbitrum/camelot/index.ts | 24 ++++---- .../providers/arbitrum/sushiswap/index.ts | 58 ++++--------------- .../providers/ethereum/sushiswap/index.ts | 7 +-- .../providers/fantom/sushiswap/index.ts | 4 +- 4 files changed, 30 insertions(+), 63 deletions(-) diff --git a/src/factory/providers/arbitrum/camelot/index.ts b/src/factory/providers/arbitrum/camelot/index.ts index 297d2b3c..61849141 100644 --- a/src/factory/providers/arbitrum/camelot/index.ts +++ b/src/factory/providers/arbitrum/camelot/index.ts @@ -1,13 +1,12 @@ import formatter from '../../../../util/formatter'; import uniswapV2 from '../../../../util/calculators/uniswapV2'; -import uniswapV3 from '../../../../util/calculators/uniswapV3'; +import uniswapV3 from '../../../../util/calculators/uniswapV3chain'; import { ITvlParams, ITvlReturn } from '../../../../interfaces/ITvl'; const START_BLOCK = 11700000; -const V3_START_BLOCK = 73691955; +const V3_START_BLOCK = 101163738; const V2_FACTORY_ADDRESS = '0x6EcCab422D763aC031210895C81787E87B43A652'; -const V3_THEGRAPTH_ENDPOINT = - 'https://api.thegraph.com/subgraphs/name/camelotlabs/camelot-amm-v3'; +const V3_FACTORY_ADDRESS = '0x1a3c9B1d2F0529D97f2afC5136Cc23e58f1FD35B'; async function tvl(params: ITvlParams): Promise> { const { block, chain, provider, web3 } = params; @@ -15,6 +14,8 @@ async function tvl(params: ITvlParams): Promise> { return { balances: {} }; } + let balances = {}; + const v2 = await uniswapV2.getTvl( V2_FACTORY_ADDRESS, block, @@ -23,20 +24,21 @@ async function tvl(params: ITvlParams): Promise> { web3, ); - let v3 = { balances: {}, poolBalances: {} }; - if (block > V3_START_BLOCK) { - v3 = await uniswapV3.getTvlFromSubgraph( - V3_THEGRAPTH_ENDPOINT, + if (block >= V3_START_BLOCK) { + balances = await uniswapV3.getTvl( + V3_FACTORY_ADDRESS, + V3_START_BLOCK, block, chain, provider, + web3, + true, ); } - const balances = formatter.sum([v2.balances, v3.balances]); - const poolBalances = { ...v2.poolBalances, ...v3.poolBalances }; + balances = formatter.sum([v2.balances, balances]); - return { balances, poolBalances }; + return { balances }; } export { tvl }; diff --git a/src/factory/providers/arbitrum/sushiswap/index.ts b/src/factory/providers/arbitrum/sushiswap/index.ts index 3c1a9fab..f260a6b0 100644 --- a/src/factory/providers/arbitrum/sushiswap/index.ts +++ b/src/factory/providers/arbitrum/sushiswap/index.ts @@ -2,68 +2,34 @@ import { ITvlParams, ITvlReturn } from '../../../../interfaces/ITvl'; import uniswapV2 from '../../../../util/calculators/uniswapV2'; import { trident } from './trident'; import BigNumber from 'bignumber.js'; -import { gql, request } from 'graphql-request'; import formatter from '../../../../util/formatter'; +const FACTORY_ADDRESS = '0xc35DADB65012eC5796536bD9864eD8773aBc74C4'; const GRAPHQL_API = 'https://api.thegraph.com/subgraphs/name/sushi-labs/kashi-arbitrum'; -const GRAPHQL_API_FACTORY = - 'https://api.thegraph.com/subgraphs/name/sushi-v2/sushiswap-arbitrum'; const QUERY_SIZE = 500; -const PAIR = gql` - query getPairs($block: Int!) { - pairs( - block: { number: $block } - orderBy: liquidityUSD - orderDirection: desc - first: ${QUERY_SIZE} - ) { - token0 { - id - } - token1 { - id - } - reserve0 - reserve1 - } - } -`; + async function tvl(params: ITvlParams): Promise> { const { block, chain, provider, web3 } = params; - const requestResult = await request(GRAPHQL_API_FACTORY, PAIR, { - block: block, - }); - const dexBalances = {}; - requestResult.pairs.forEach((pair) => { - if (dexBalances[pair.token0.id]) { - dexBalances[pair.token0.id] = BigNumber(pair.reserve0) - .plus(dexBalances[pair.token0.id]) - .toFixed(); - } else { - dexBalances[pair.token0.id] = BigNumber(pair.reserve0).toFixed(); - } - if (dexBalances[pair.token1.id]) { - dexBalances[pair.token1.id] = BigNumber(pair.reserve1) - .plus(dexBalances[pair.token1.id]) - .toFixed(); - } else { - dexBalances[pair.token1.id] = BigNumber(pair.reserve1).toFixed(); - } - }); + const { balances: dexBalances, poolBalances } = await uniswapV2.getTvl( + FACTORY_ADDRESS, + block, + chain, + provider, + web3, + ); - const { balances: tridentBalance } = await trident(params); + //const { balances: tridentBalance } = await trident(params); - const balances = formatter.sum([dexBalances, tridentBalance]); + const balances = formatter.sum([dexBalances /*, tridentBalance*/]); for (const token in balances) { if (BigNumber(balances[token] || 0).isLessThan(100000)) { delete balances[token]; } } - // const { balances: kashib } = await kashi(params); - return { balances }; + return { balances, poolBalances }; } async function getPoolVolumes(pools, priorBlockNumber) { diff --git a/src/factory/providers/ethereum/sushiswap/index.ts b/src/factory/providers/ethereum/sushiswap/index.ts index d4e61be6..0517c0e2 100644 --- a/src/factory/providers/ethereum/sushiswap/index.ts +++ b/src/factory/providers/ethereum/sushiswap/index.ts @@ -24,14 +24,13 @@ async function tvl(params: ITvlParams): Promise> { web3, ); - const kashiBalances = await kashiLending({ + /*const kashiBalances = await kashiLending({ block, chain, provider, web3, - } as ITvlParams); - - const balances = formatter.sum([dexBalances, kashiBalances.balances]); + } as ITvlParams);*/ + const balances = formatter.sum([dexBalances /*, kashiBalances.balances*/]); for (const token in balances) { if (BigNumber(balances[token] || 0).isLessThan(100000)) { diff --git a/src/factory/providers/fantom/sushiswap/index.ts b/src/factory/providers/fantom/sushiswap/index.ts index 9c0ff2c5..dcb94509 100644 --- a/src/factory/providers/fantom/sushiswap/index.ts +++ b/src/factory/providers/fantom/sushiswap/index.ts @@ -25,9 +25,9 @@ async function tvl(params: ITvlParams): Promise> { web3, ); - const kashiBalances = await kashiLending(block, chain, web3); + //const kashiBalances = await kashiLending(block, chain, web3); - const balances = formatter.sum([dexBalances, kashiBalances]); + const balances = formatter.sum([dexBalances /*, kashiBalances*/]); for (const token in balances) { if (BigNumber(balances[token] || 0).isLessThan(100000)) {