1
- const { staking } = require ( " ../helper/staking" ) ;
1
+ const wildCreditABI = require ( ' ../wildcredit/abi.json' ) ;
2
2
3
- // Abacus contracts
4
- // arbitrum
5
- const abcRAM = '0x9EfCFc5b49390FC3fb9B58607D2e89445Bb380BF' ;
6
- const abcRAMStake = '0xBD8a830f4Ae6B2355E12E9714FeDB5aE9d71c81D' ;
3
+ const config = {
4
+ arbitrum : { strategy : '0xB4E291f443f51D80186dd3EE0Af7F4a4E6e90804' , veToken : '0xAAA343032aA79eE9a6897Dab03bef967c3289a06' , token : '0xAAA6C1E32C55A7Bfa8066A6FAE9b42650F262418' } ,
5
+ avax : { strategy : '0xedEd6a22bf714d4B19b7e7bC1CA0BCF88956751c' , veToken : '0xAAAEa1fB9f3DE3F70E89f37B69Ab11B47eb9Ce6F' , token : '0xaaab9d12a30504559b0c5a9a5977fee4a6081c6b' } ,
6
+ bsc : { strategy : '0x37e46C030e0d843b39F692c9108E54945F4CCCf7' , veToken : '0xfBBF371C9B0B994EebFcC977CEf603F7f31c070D' , token : '0xF4C8E32EaDEC4BFe97E0F595AdD0f4450a863a11' } ,
7
+ polygon : { strategy : '0x32dAc1B8AD93b53F549D6555e01c35dCC50b6229' , veToken : '0xB419cE2ea99f356BaE0caC47282B9409E38200fa' , token : '0xBFA35599c7AEbb0dAcE9b5aa3ca5f2a79624D8Eb' } ,
8
+ mantle : { strategy : '0xCaAF554900E33ae5DBc66ae9f8ADc3049B7D31dB' , veToken : '0xAAAEa1fB9f3DE3F70E89f37B69Ab11B47eb9Ce6F' , token : '0xC1E0C8C30F251A07a894609616580ad2CEb547F2' } ,
9
+ }
7
10
8
- // avalanche
9
- const abcPHAR = '0xd5d0A9b3f2C264b955Ae7161cfA6D38A7aEa60a7' ;
10
- const abcPHARStake = '0x541AdD99620d1294900851dCa2eca06a5c797c3e' ;
11
-
12
- // mantle
13
- const abcCLEO = '0xCffbE0E73c750731EdB38C14Bc81A39dAc91819d' ;
14
- const abcCLEOStake = '0x498126eDEA7FBb4626585ebc98a8230B8fFa1cC9' ;
15
-
16
- // bsc
17
- const liveTHE = '0xCdC3A010A3473c0C4b2cB03D8489D6BA387B83CD' ;
18
- const liveTHEStake = '0xD8C61EDe8CD9EE7B93855c3f110191e95eDF2979' ;
19
-
20
- // polygon
21
- const liveRETRO = '0xCaAF554900E33ae5DBc66ae9f8ADc3049B7D31dB' ;
22
- const liveRETROStake = '0x1de28CB80428C265e7f40A05066B68c31e8d7D0e' ;
23
-
24
- module . exports = {
25
- misrepresentedTokens : true ,
26
- arbitrum : {
27
- tvl : staking ( abcRAMStake , abcRAM , "arbitrum" ) ,
28
- } ,
29
- avax : {
30
- tvl : staking ( abcPHARStake , abcPHAR , "avax" ) ,
31
- } ,
32
- mantle : {
33
- tvl : staking ( abcCLEOStake , abcCLEO , "mantle" ) ,
34
- } ,
35
- bsc : {
36
- tvl : staking ( liveTHEStake , liveTHE , "bsc" ) ,
37
- } ,
38
- polygon : {
39
- tvl : staking ( liveRETROStake , liveRETRO , "polygon" ) ,
40
- } ,
41
- methodology : "Counts tokens staked in the Abacus staking contracts across multiple chains" ,
42
- } ;
11
+ Object . keys ( config ) . forEach ( chain => {
12
+ const { strategy, veToken, token, } = config [ chain ]
13
+ module . exports [ chain ] = {
14
+ tvl : async ( api ) => {
15
+ const nftPositions = await api . call ( { abi : 'erc20:balanceOf' , target : veToken , params : strategy } )
16
+ const positionIds = await api . multiCall ( {
17
+ abi : wildCreditABI . tokenOfOwnerByIndex , target : veToken ,
18
+ calls : Array ( Number ( nftPositions ) ) . fill ( 0 ) . map ( ( _ , index ) => ( { params : [ strategy , index ] } ) )
19
+ } )
20
+ const locked = await api . multiCall ( { abi : 'function locked(uint256) view returns (uint256 amount, uint256 end)' , calls : positionIds , target : veToken } )
21
+ locked . forEach ( i => api . add ( token , i . amount ) )
22
+ }
23
+ }
24
+ } )
0 commit comments