Skip to content

Commit

Permalink
Sushiswap and camelot refactor
Browse files Browse the repository at this point in the history
  • Loading branch information
mantasfam committed Jul 3, 2024
1 parent abc17e1 commit 8adb82d
Show file tree
Hide file tree
Showing 4 changed files with 30 additions and 63 deletions.
24 changes: 13 additions & 11 deletions src/factory/providers/arbitrum/camelot/index.ts
Original file line number Diff line number Diff line change
@@ -1,20 +1,21 @@
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<Partial<ITvlReturn>> {
const { block, chain, provider, web3 } = params;
if (block < START_BLOCK) {
return { balances: {} };
}

let balances = {};

const v2 = await uniswapV2.getTvl(
V2_FACTORY_ADDRESS,
block,
Expand All @@ -23,20 +24,21 @@ async function tvl(params: ITvlParams): Promise<Partial<ITvlReturn>> {
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 };
58 changes: 12 additions & 46 deletions src/factory/providers/arbitrum/sushiswap/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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<Partial<ITvlReturn>> {
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) {
Expand Down
7 changes: 3 additions & 4 deletions src/factory/providers/ethereum/sushiswap/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -24,14 +24,13 @@ async function tvl(params: ITvlParams): Promise<Partial<ITvlReturn>> {
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)) {
Expand Down
4 changes: 2 additions & 2 deletions src/factory/providers/fantom/sushiswap/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -25,9 +25,9 @@ async function tvl(params: ITvlParams): Promise<Partial<ITvlReturn>> {
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)) {
Expand Down

0 comments on commit 8adb82d

Please sign in to comment.