diff --git a/projects/enclabs/index.js b/projects/enclabs/index.js index 69f501b8b..010ad9c76 100644 --- a/projects/enclabs/index.js +++ b/projects/enclabs/index.js @@ -1,32 +1,43 @@ const sdk = require("@defillama/sdk"); -const { cachedGraphQuery } = require('../helper/cache') -const { compoundExports2 } = require('../helper/compound') -const config = { +const { compoundExports2 } = require('../helper/compound'); + + +const sonicComptrollers = [ + { name: 'Core Sonic Pool', comptroller: '0xccAdFCFaa71407707fb3dC93D7d83950171aA2c9' }, + { name: 'Liquid Staked S Pool', comptroller: '0x1db5134ee31278809b2d85fab2796141dbe0d041' }, + { name: 'Spectra PT scETH Pool', comptroller: '0x62c627e08f996d7d7563e135e527f422fee34786' }, + { name: 'Spectra PT scUSD Pool', comptroller: '0x26190C71c27e089533186338d16abB2ba9528969' }, + { name: 'Sonic Ecosystem Pool', comptroller: '0x0c9425eCFbd64a96D306f36e8281EE5308446d31' }, +]; + + +const plasmaComptrollers = [ + { name: 'Core Plasma Pool', comptroller: '0xA3F48548562A30A33257A752d396A20B4413E8E3' }, +]; + +async function getPoolsData(comptrollers, chain) { + return Promise.all( + comptrollers.map(cfg => compoundExports2({ comptroller: cfg.comptroller, chain })) + ); +} + +async function tvl(chainComptrollers, chain, ...args) { + const poolsData = await getPoolsData(chainComptrollers, chain); + return sdk.util.sumChainTvls(poolsData.map(p => p.tvl))(...args); +} + +async function borrowed(chainComptrollers, chain, ...args) { + const poolsData = await getPoolsData(chainComptrollers, chain); + return sdk.util.sumChainTvls(poolsData.map(p => p.borrowed))(...args); +} + +module.exports = { sonic: { - endpoint: sdk.graph.modifyEndpoint('Ha7WNTEk2U1MvMUVMmmv8e7uZxJUYY4n8r57iJHYyYcJ'), - }, -} - -Object.keys(config).forEach(chain => { - module.exports[chain] = { tvl, borrowed, } -}) - -async function getPools(api) { - const { endpoint } = config[api.chain] - const { pools } = await cachedGraphQuery('enclabs/'+api.chain, endpoint, `{ pools { id }}`) - return pools.map(i => i.id) -} - -async function tvl(...args) { - const [api] = args - const pools = await getPools(api) - const tvls = pools.map(i => compoundExports2({ comptroller: i})) - return sdk.util.sumChainTvls(tvls.map(i => i.tvl))(...args) -} - -async function borrowed(...args) { - const [api] = args - const pools = await getPools(api) - const tvls = pools.map(i => compoundExports2({ comptroller: i})) - return sdk.util.sumChainTvls(tvls.map(i => i.borrowed))(...args) + tvl: (...args) => tvl(sonicComptrollers, 'sonic', ...args), + borrowed: (...args) => borrowed(sonicComptrollers, 'sonic', ...args), + }, + plasma: { + tvl: (...args) => tvl(plasmaComptrollers, 'plasma', ...args), + borrowed: (...args) => borrowed(plasmaComptrollers, 'plasma', ...args), + }, }