1- const sdk = require ( "@defillama/sdk" ) ;
21const { staking } = require ( "../helper/staking.js" ) ;
3- const { pool2, pool2s } = require ( "../helper/pool2" ) ;
4- const yieldyakAbi = require ( "./yieldyakAbi.json" ) ;
5- const alpacaFinanceAbi = require ( "../alpaca-finance/abi.json" ) ;
6- const BigNumber = require ( "bignumber.js" ) ;
2+ const { pool2, } = require ( "../helper/pool2" ) ;
73const { sumTokens2 } = require ( '../helper/unwrapLPs' )
8- const { getSymbols } = require ( '../helper/utils' )
94
105const stakingContractHeco = "0xF0979F9692966D110E39d82a44655c9934F5cC73" ;
116const COOK_heco = "0x74189862b069e2be5f7c8e6ff08ea8e1b1948519" ;
@@ -37,110 +32,27 @@ const ethIndexes = [
3732const getComponentsABI = "address[]:getComponents"
3833const getCKsABI = "address[]:getCKs"
3934
40- async function getTvl ( { chain, block, indices } ) {
41- const indexCalls = indices . map ( i => ( { target : i } ) )
42- const { output : components } = await sdk . api . abi . multiCall ( {
43- abi : getComponentsABI ,
44- calls : indexCalls ,
45- block, chain,
46- } )
47-
48- const tokensAndOwners = [ ]
49- components . forEach ( ( { output } , i ) => {
50- output . forEach ( t => tokensAndOwners . push ( [ t , indices [ i ] ] ) )
51- } )
52-
53- return sumTokens2 ( { tokensAndOwners, block, chain, } )
35+ async function getTvl ( { api, indices } ) {
36+ const components = await api . multiCall ( { abi : getComponentsABI , calls : indices , } )
37+ const ownerTokens = indices . map ( ( v , i ) => [ components [ i ] , v ] )
38+ return sumTokens2 ( { ownerTokens, api, } )
5439
5540}
5641
57- async function ethTvl ( timestamp , block ) {
58- return getTvl ( { indices : ethIndexes } )
42+ async function ethTvl ( api ) {
43+ return getTvl ( { indices : ethIndexes , api } )
5944}
6045
61- async function avaTvl ( timestamp , ethBlock , chainBlocks ) {
62- const block = chainBlocks . avax ;
63- const chain = 'avax'
46+ async function avaTvl ( api ) {
6447 const CONTROLLER_ADDRESS = "0xE565711e7a59800e110c959E156121988E6F4704" ;
65- let { output : avaIndexes } = await sdk . api . abi . call ( {
66- target : CONTROLLER_ADDRESS ,
67- abi : getCKsABI ,
68- chain, block,
69- } ) ;
70- const balances = await getTvl ( { indices : avaIndexes , chain, block, } )
71- Object . entries ( balances ) . forEach ( ( [ token , balance ] ) => {
72- delete balances [ token ]
73- balances [ token . toLowerCase ( ) ] = balance
74- } )
75-
76- const symbols = await getSymbols ( chain , Object . keys ( balances ) )
77- const calls = [ ]
78- const balanceCalls = [ ]
79- Object . entries ( symbols ) . forEach ( ( [ token , symbol ] ) => {
80- if ( symbol && symbol . startsWith ( 'YRT' ) ) {
81- calls . push ( { target : token } )
82- balanceCalls . push ( { target : token , params : [ balances [ 'avax:' + token ] ] } )
83- }
84- } )
85- const [
86- { output : token } ,
87- { output : newBalance } ,
88- ] = await Promise . all ( [
89- sdk . api . abi . multiCall ( { abi : yieldyakAbi . depositToken , calls, chain, block, } ) ,
90- sdk . api . abi . multiCall ( { abi : yieldyakAbi . getDepositTokensForShares , calls : balanceCalls , chain, block, } ) ,
91- ] )
92-
93- token . forEach ( ( { output, input } , i ) => {
94- const origToken = `avax:${ input . target } `
95- const balance = newBalance [ i ] . output
96- delete balances [ origToken ]
97- sdk . util . sumSingleBalance ( balances , 'avax:' + output , balance )
98- } )
99-
100- return balances
48+ let avaIndexes = await api . call ( { target : CONTROLLER_ADDRESS , abi : getCKsABI , } ) ;
49+ return getTvl ( { indices : avaIndexes , api } )
10150}
10251
103- async function bscTvl ( timestamp , ethBlock , chainBlocks ) {
104- const block = chainBlocks . bsc ;
105- const chain = 'bsc'
52+ async function bscTvl ( api ) {
10653 const CONTROLLER_ADDRESS = "0x822aeB433A4Ea7A97b76287cB513C3985034a2Bd" ;
107- let { output : bscIndexes } = await sdk . api . abi . call ( {
108- target : CONTROLLER_ADDRESS ,
109- abi : getCKsABI ,
110- chain : "bsc" ,
111- block,
112- } ) ;
113-
114- const balances = await getTvl ( { indices : bscIndexes , chain, block, } )
115- // const symbols = await getSymbols(chain, Object.keys(balances))
116- const calls = [ ]
117- // Object.entries(symbols).forEach(([token, symbol]) => {
118- // if (symbol.startsWith('ib')) calls.push({ target: token })
119- // })
120- const [
121- { output : token } ,
122- { output : totalToken } ,
123- { output : totalSupply } ,
124- ] = await Promise . all ( [
125- sdk . api . abi . multiCall ( { abi : alpacaFinanceAbi . token , calls, chain, block, } ) ,
126- sdk . api . abi . multiCall ( { abi : alpacaFinanceAbi . totalToken , calls, chain, block, } ) ,
127- sdk . api . abi . multiCall ( { abi : alpacaFinanceAbi . totalSupply , calls, chain, block, } ) ,
128- ] )
129-
130- token . forEach ( ( { output, input } , i ) => {
131- const origToken = `bsc:${ input . target } `
132- const origBalance = balances [ origToken ]
133- if ( ! origBalance ) {
134- return ;
135- }
136- const totalT = totalToken [ i ] . output
137- const totalS = totalSupply [ i ] . output
138- const balance = BigNumber ( origBalance ) . times ( totalT ) . idiv ( totalS ) . toFixed ( 0 )
139- delete balances [ origToken ]
140- sdk . util . sumSingleBalance ( balances , 'bsc:' + output , balance )
141- } )
142-
143- return balances
54+ let bscIndexes = await api . call ( { target : CONTROLLER_ADDRESS , abi : getCKsABI , } ) ;
55+ return getTvl ( { indices : bscIndexes , api } )
14456}
14557
14658module . exports = {
@@ -151,7 +63,6 @@ module.exports = {
15163 pool2 : staking (
15264 [ "0x4b21da40dd8d9f4363e69a9a1620d7cdb49123be" ] ,
15365 ethPool2LPs ,
154- "ethereum"
15566 ) ,
15667 staking : staking ( stakingPool , cookToken ) ,
15768 } ,
@@ -161,20 +72,16 @@ module.exports = {
16172 staking : staking (
16273 "0x35bE7982bC5E40A8C9aF39A639bDDcE32081102e" ,
16374 "0x637afeff75ca669ff92e4570b14d6399a658902f" ,
164- "avax" ,
165- //"avax:0x637afeff75ca669ff92e4570b14d6399a658902f"
16675 ) ,
16776 } ,
16877 bsc : {
16978 pool2 : staking (
17079 [ "0x47b517061841e6bFaaeB6336C939724F47e5E263" ] ,
17180 bscPool2LPs ,
172- "bsc"
17381 ) ,
17482 staking : staking (
17583 "0x1Abeaa9D633162586a4c80389160c33327C9Aff5" ,
17684 "0x965b0df5bda0e7a0649324d78f03d5f7f2de086a" ,
177- "bsc"
17885 ) ,
17986 tvl : bscTvl ,
18087 } ,
0 commit comments