@@ -3,20 +3,29 @@ const { transformDexBalances } = require('../helper/portedTokens')
3
3
const sdk = require ( '@defillama/sdk' )
4
4
5
5
async function tvl ( timestamp , ethBlock , chainBlocks , { api } ) {
6
- const { fromBlock, stableFactory, classicFactory, } = config [ api . chain ]
7
- const stableLogs = await getFactoryLogs ( api , stableFactory )
8
- const classicLogs = await getFactoryLogs ( api , classicFactory )
6
+ const { fromBlock, classicFactorys, stableFactorys, aquaFactorys = [ ] } = config [ api . chain ]
7
+
8
+ const logs = await Promise . all ( [ ...classicFactorys , ...stableFactorys , ...aquaFactorys ] . map ( factory => ( getFactoryLogs ( api , factory ) ) ) ) ;
9
+
9
10
const balances = { }
10
11
const data = [ ]
11
- const stableReserves = await api . multiCall ( { abi : 'function getReserves() external view returns (uint, uint)' , calls : stableLogs . map ( i => i . pool ) } )
12
- const classicReserves = await api . multiCall ( { abi : 'function getReserves() external view returns (uint, uint)' , calls : classicLogs . map ( i => i . pool ) } )
13
- stableReserves . forEach ( ( [ reserve0 , reserve1 ] , i ) => {
14
- sdk . util . sumSingleBalance ( balances , stableLogs [ i ] . token0 , reserve0 )
15
- sdk . util . sumSingleBalance ( balances , stableLogs [ i ] . token1 , reserve1 )
16
- } )
17
- classicReserves . forEach ( ( [ token0Bal , token1Bal ] , i ) => {
18
- data . push ( { token0Bal, token1Bal, token0 : classicLogs [ i ] . token0 , token1 : classicLogs [ i ] . token1 , } )
19
- } )
12
+
13
+ const reserves = await Promise . all ( logs . map ( log => ( api . multiCall ( { abi : 'function getReserves() external view returns (uint, uint)' , calls : log . map ( i => i . pool ) } ) ) ) )
14
+
15
+ for ( let i = 0 ; i < logs . length ; i ++ ) {
16
+ if ( i < classicFactorys . length ) {
17
+ reserves [ i ] . forEach ( ( [ token0Bal , token1Bal ] , j ) => {
18
+ data . push ( { token0Bal, token1Bal, token0 : logs [ i ] [ j ] . token0 , token1 : logs [ i ] [ j ] . token1 , } )
19
+ } )
20
+ } else {
21
+ reserves [ i ] . forEach ( ( [ reserve0 , reserve1 ] , j ) => {
22
+ sdk . util . sumSingleBalance ( balances , logs [ i ] [ j ] . token0 , reserve0 )
23
+ sdk . util . sumSingleBalance ( balances , logs [ i ] [ j ] . token1 , reserve1 )
24
+ } )
25
+ }
26
+ }
27
+
28
+
20
29
return transformDexBalances ( { balances, data, chain : api . chain } )
21
30
22
31
async function getFactoryLogs ( api , factory ) {
@@ -32,13 +41,26 @@ async function tvl(timestamp, ethBlock, chainBlocks, { api }) {
32
41
}
33
42
34
43
const config = {
35
- era : { fromBlock : 9775 , stableFactory : '0x5b9f21d407F35b10CbfDDca17D5D84b129356ea3' , classicFactory : '0xf2DAd89f2788a8CD54625C60b55cD3d2D0ACa7Cb' , } ,
36
- linea : { fromBlock : 716 , stableFactory : '0xE4CF807E351b56720B17A59094179e7Ed9dD3727' , classicFactory : '0x37BAc764494c8db4e54BDE72f6965beA9fa0AC2d' , } ,
37
- scroll : { fromBlock : 80875 , stableFactory : '0xE4CF807E351b56720B17A59094179e7Ed9dD3727' , classicFactory : '0x37BAc764494c8db4e54BDE72f6965beA9fa0AC2d' , } ,
44
+ era : {
45
+ fromBlock : 9775 ,
46
+ stableFactorys : [ '0x5b9f21d407F35b10CbfDDca17D5D84b129356ea3' ] ,
47
+ classicFactorys : [ '0xf2DAd89f2788a8CD54625C60b55cD3d2D0ACa7Cb' ] ,
48
+ aquaFactorys : [ '0x20b28B1e4665FFf290650586ad76E977EAb90c5D' ]
49
+ } ,
50
+ linea : {
51
+ fromBlock : 716 ,
52
+ stableFactorys : [ '0xE4CF807E351b56720B17A59094179e7Ed9dD3727' ] ,
53
+ classicFactorys : [ '0x37BAc764494c8db4e54BDE72f6965beA9fa0AC2d' ] ,
54
+ } ,
55
+ scroll : {
56
+ fromBlock : 80875 ,
57
+ stableFactorys : [ '0xE4CF807E351b56720B17A59094179e7Ed9dD3727' ] ,
58
+ classicFactorys : [ '0x37BAc764494c8db4e54BDE72f6965beA9fa0AC2d' ] ,
59
+ } ,
38
60
}
39
61
40
62
module . exports = {
41
63
misrepresentedTokens : true ,
42
64
}
43
65
44
- Object . keys ( config ) . forEach ( chain => { module . exports [ chain ] = { tvl } } )
66
+ Object . keys ( config ) . forEach ( chain => { module . exports [ chain ] = { tvl } } )
0 commit comments