1
- const BigNumber = require ( 'bignumber.js' )
2
1
const Abis = require ( "./abi.json" ) ;
3
- const sdk = require ( "@defillama/sdk" ) ;
4
2
5
3
const Contracts = {
6
4
cronos : {
@@ -11,128 +9,25 @@ const Contracts = {
11
9
bankMusd : "0xa23608087908F3812219886bCec68c4FA77A9eE5" ,
12
10
multiFeeDistribution : "0xE6F7ADf2F2aCd219Ca68136cd47C2C826a3Ba1A9" ,
13
11
chef : "0x6F132536069F8E35ED029CEd563710CF68fE8E54" ,
14
- mmfLps : [
15
- {
16
- address : "0xa7bE5cB8Be6484c06aBb8942fe682797bb9A76Ec" , // MNG_MMF_LP
17
- isToken0 : true
18
- } ,
19
- {
20
- address : "0x80fdDa345e707dd9e518094b9B50027D9AF148F4" , // MMFX_MMF_LP
21
- isToken0 : true
22
- }
23
- ] ,
24
- musdLps : [
25
- {
26
- address : "0x6b4D24758a65c5bB2fC377B3b45e8b020ba6A4c1" , // MNG_MUSD_LP
27
- isToken0 : true
28
- } ,
29
- {
30
- address : "0xE516830c6dE6E1b653230370CD236c78DB9F66bf" , // MMUSD_MUSD_LP
31
- isToken0 : true
32
- }
33
- ]
34
12
} ,
35
13
} ;
36
14
37
- async function calcTvl ( timestamp , ethBlock , chainBlocks ) {
38
- const block = chainBlocks . cronos ;
39
- const chain = "cronos" ;
40
-
41
- const bankBalance = await sdk . api . abi . call ( {
42
- target : Contracts . cronos . bank ,
43
- abi : Abis . bank . usableCollateralBalance ,
44
- chain : chain ,
45
- block,
46
- } ) ;
47
-
48
- const bankBalanceMusd = await sdk . api . abi . call ( {
49
- target : Contracts . cronos . bankMusd ,
50
- abi : Abis . bank . usableCollateralBalance ,
51
- chain : chain ,
52
- block,
53
- } ) ;
54
-
55
- return {
56
- [ `cronos:${ Contracts . cronos . mmf } ` ] : bankBalance . output ,
57
- [ `cronos:${ Contracts . cronos . musd } ` ] : bankBalanceMusd . output ,
58
- } ;
59
- }
60
-
61
- async function calcStaking ( timestamp , ethBlock , chainBlocks ) {
62
- const block = chainBlocks . cronos ;
63
- const chain = "cronos" ;
64
-
65
- const stakingData = await sdk . api . abi . call ( {
66
- target : Contracts . cronos . multiFeeDistribution ,
67
- abi : Abis . multiFeeDistribution . totalSupply ,
68
- chain : chain ,
69
- block,
70
- } ) ;
71
-
72
- return {
73
- [ `cronos:${ Contracts . cronos . mng } ` ] : stakingData . output
74
- } ;
75
- }
76
-
77
- async function calcLp ( lps , block , chain , baseToken ) {
78
- const reserves = (
79
- await sdk . api . abi . multiCall ( {
80
- calls : lps . map ( ( lp ) => ( {
81
- target : lp . address ,
82
- params : [ ] ,
83
- } ) ) ,
84
- abi : Abis . pair . getReserves ,
85
- block,
86
- chain,
87
- } )
88
- ) . output ;
89
- const totalSupplies = (
90
- await sdk . api . abi . multiCall ( {
91
- calls : lps . map ( ( lp ) => ( {
92
- target : lp . address ,
93
- params : [ ] ,
94
- } ) ) ,
95
- abi : "erc20:totalSupply" ,
96
- block,
97
- chain,
98
- } )
99
- ) . output ;
100
- const balances = (
101
- await sdk . api . abi . multiCall ( {
102
- calls : lps . map ( ( lp ) => ( {
103
- target : lp . address ,
104
- params : [ Contracts . cronos . chef ] ,
105
- } ) ) ,
106
- abi : "erc20:balanceOf" ,
107
- block,
108
- chain,
109
- } )
110
- ) . output ;
111
-
112
- const results = lps . map ( ( lp , index ) => (
113
- new BigNumber ( reserves [ index ] . output [ lp . isToken0 ? "_reserve0" : "_reserve1" ] )
114
- . times ( 2 )
115
- . times ( new BigNumber ( balances [ index ] . output ) )
116
- . idiv ( new BigNumber ( totalSupplies [ index ] . output ) )
117
- ) ) ;
118
- const total = results . reduce ( ( total , num ) => total . plus ( num ) , new BigNumber ( 0 ) ) ;
119
-
120
- return {
121
- [ `cronos:${ baseToken } ` ] : total . toString ( 10 ) ,
122
- } ;
15
+ async function calcTvl ( api ) {
16
+ const bankBalance = await api . call ( { target : Contracts . cronos . bank , abi : Abis . bank . usableCollateralBalance , } ) ;
17
+ const bankBalanceMusd = await api . call ( { target : Contracts . cronos . bankMusd , abi : Abis . bank . usableCollateralBalance , } ) ;
18
+ api . add ( Contracts . cronos . mmf , bankBalance ) ;
19
+ api . add ( Contracts . cronos . musd , bankBalanceMusd ) ;
123
20
}
124
21
125
- async function calcChef ( timestamp , block , chainBlocks ) {
126
- const farm = await calcLp ( Contracts . cronos . mmfLps , chainBlocks . cronos , "cronos" , Contracts . cronos . mmf ) ;
127
- const farmMusd = await calcLp ( Contracts . cronos . musdLps , chainBlocks . cronos , "cronos" , Contracts . cronos . musd ) ;
128
-
129
- return { ...farm , ...farmMusd } ;
22
+ async function calcStaking ( api ) {
23
+ const stakingData = await api . call ( { target : Contracts . cronos . multiFeeDistribution , abi : Abis . multiFeeDistribution . totalSupply , } ) ;
24
+ api . add ( Contracts . cronos . mng , stakingData ) ;
130
25
}
131
26
132
27
module . exports = {
133
28
cronos : {
134
29
tvl : calcTvl ,
135
- pool2 : calcChef ,
30
+ pool2 : ( ) => ( { } ) ,
136
31
staking : calcStaking ,
137
32
} ,
138
33
} ;
0 commit comments