Skip to content

Commit

Permalink
code refactor
Browse files Browse the repository at this point in the history
  • Loading branch information
g1nt0ki committed Aug 19, 2024
1 parent 083abf0 commit 1a6598d
Show file tree
Hide file tree
Showing 2 changed files with 36 additions and 78 deletions.
9 changes: 2 additions & 7 deletions projects/double2win/config.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,27 +2,22 @@ module.exports = {
arbitrum: {
uniswapV2Vault: {
doubleContract: '0xBf212dEE0aea6531dEb0B02be6E70b527dDF8246',
fromBlock: 217487403,
type: 'v2-vault'
},
uniswapV2Migration: {
doubleContract: '0x1c6E7CE03ae7a9A252BcE0C9F871654dBB0C7ca5',
fromBlock: 217487754,
type: 'v2-lp'
type: 'v2-vault'
},
uniswapV3Vault: {
doubleContract: '0x07116C5ED5cBb49464f64926Ba152B8985fe3AFf',
fromBlock: 217488144,
type: 'v3-vault'
},
uniswapV3Migration: {
doubleContract: '0x99F980fa0b1939A0A1033092EF2a668df8D8b70D',
fromBlock: 217488619,
type: 'v3-lp'
type: 'v3-vault'
},
assetVault: {
doubleContract: '0x7C09A9c30736F17043Fe6D0C0A3D03a7Cf6e78FD',
fromBlock: 217484114,
type: 'asset-vault'
},
}
Expand Down
105 changes: 34 additions & 71 deletions projects/double2win/index.js
Original file line number Diff line number Diff line change
@@ -1,11 +1,6 @@
const config = require("./config");
const config = require("./config")
const { sumTokens2 } = require('../helper/unwrapLPs')
const { cachedGraphQuery } = require('../helper/cache');
const { getTokenPrices } = require('../helper/unknownTokens');
const { stripTokenHeader } = require('../helper/utils');
const sdk = require('@defillama/sdk');
const { getChainTransform, getFixBalances } = require("../helper/portedTokens");
const { default: BigNumber } = require("bignumber.js");
const { cachedGraphQuery } = require('../helper/cache')

const subgraphs = {
"arbitrum": "https://api.studio.thegraph.com/query/16975/double-arbitrum/version/latest",
Expand All @@ -26,75 +21,43 @@ async function getTokens(chain) {
ammType
}
}
`;
`

const { assetTokens, migrations, liquidities } = await cachedGraphQuery(`double2win/${chain}`, subgraphs[chain], graphQuery);
const { assetTokens, migrations, liquidities } = await cachedGraphQuery(`double2win/${chain}`, subgraphs[chain], graphQuery)

return { assetTokens, migrations, liquidities };
return { assets: assetTokens.map(i => i.tokenAddress), v2Tokens: migrations.concat(liquidities).filter(i => i.ammType === 'UniswapV2').map(i => i.pair) }
}

module.exports = {}
module.exports = {
doublecounted: true,
}

Object.keys(config).forEach((network) => {
const networkConfig = config[network];
Object.keys(config).forEach((chain) => {
const configs = Object.values(config[chain])

module.exports[network] = {
module.exports[chain] = {
tvl: async (api) => {
// Initialize an empty map to store TVL per token
const block = api.block;
const tokenBalances = {};
const tokenData = await getTokens(network);
const pairAddresses = [];
tokenData.migrations.forEach(migration => {
pairAddresses.push(migration.pair.toLowerCase());
});
tokenData.liquidities.forEach(liquidity => {
pairAddresses.push(liquidity.pair.toLowerCase());
});
const assetAddresses = [];
tokenData.assetTokens.forEach(assetToken => {
assetAddresses.push(assetToken.tokenAddress.toLowerCase());
});
// Iterate over each contract type within the network
await Promise.all(
Object.keys(networkConfig).map(async (contractType) => {
const tokensAndOwners = [];
const { doubleContract, fromBlock, type } = networkConfig[contractType];
if (type.startsWith("v3")) {
await sumTokens2({ api, balances: tokenBalances, owner: doubleContract, resolveUniV3: true, chain: network, sumChunkSize: 50 })
} else {
if (type.startsWith("v2")) {
pairAddresses.forEach(pairAddress => {
tokensAndOwners.push([pairAddress, doubleContract]);
});
await sumTokens2({ api, balances: tokenBalances, tokensAndOwners: tokensAndOwners, chain: network, resolveLP: true, sumChunkSize: 50})
} else {
assetAddresses.forEach(asset => {
tokensAndOwners.push([asset, doubleContract]);
});
await sumTokens2({ api, balances: tokenBalances, tokensAndOwners: tokensAndOwners, chain: network, sumChunkSize: 50})
}
}
})
);
const balances = Object.fromEntries(
Object.entries(tokenBalances).filter(([_, value]) => !Number.isNaN(value))
);
const finalBalances = balances;
const transformAddress = await getChainTransform(network);
const { prices} = await getTokenPrices({ chain: network, block, lps: ["0x27D336a834775988b1305df42569E27128932bDD"], useDefaultCoreAssets: true})
Object.entries(balances).forEach(([address, amount = 0]) => {
const token = stripTokenHeader(address)
const price = prices[token];
if (!price) return;
let tokenAmount = price[1] * +amount
const coreAsset = price[2]
sdk.util.sumSingleBalance(balances, transformAddress(coreAsset), BigNumber(tokenAmount).toFixed(0))
delete balances[address]
const v2Vaults = []
const v3Vaults = []
const assetVaults = []
configs.forEach((config) => {
switch (config.type) {
case 'v2-vault':
v2Vaults.push(config.doubleContract)
break
case 'v3-vault':
v3Vaults.push(config.doubleContract)
break
case 'asset-vault':
assetVaults.push(config.doubleContract)
break
}
})
const fixBalances = await getFixBalances(network)
fixBalances(finalBalances)
return finalBalances
},
};
});
const { assets, v2Tokens } = await getTokens(chain)
await sumTokens2({ resolveUniV3: true, api, owners: v3Vaults })
await sumTokens2({ owners: assetVaults, tokens: assets, api })
return sumTokens2({ owners: v2Vaults, tokens: v2Tokens, resolveLP: true, api })
}
}

})

0 comments on commit 1a6598d

Please sign in to comment.