Add Plasma TVL adapter (#16822)

This commit is contained in:
NuM
2025-10-24 14:07:34 +02:00
committed by GitHub
parent 9e9ed56314
commit ae02c7a18f

View File

@@ -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),
},
}