1
- const sdk = require ( "@defillama/sdk" )
2
- const abi = require ( './abi.json' )
3
- const { getChainTransform } = require ( '../helper/portedTokens' )
4
1
const { getConfig } = require ( "../helper/cache" )
2
+ const { sumTokensExport } = require ( "../helper/unwrapLPs" )
5
3
6
4
const chainConfig = {
7
5
ethereum : {
8
6
stakingPool : '0xbA4cFE5741b357FA371b506e5db0774aBFeCf8Fc' ,
9
7
VSP : '0x1b40183efb4dd766f11bda7a7c3ad8982e998421' ,
10
- api : [ 'https://api.vesper.finance/pools?stages=prod' , 'https://api.vesper.finance/pools?stages=orbit' ] ,
8
+ endpoints : [ 'https://api.vesper.finance/pools?stages=prod' , 'https://api.vesper.finance/pools?stages=orbit' ] ,
11
9
} ,
12
10
avax : {
13
- api : [ 'https://api-avalanche.vesper.finance/pools?stages=prod' ] ,
11
+ endpoints : [ 'https://api-avalanche.vesper.finance/pools?stages=prod' ] ,
14
12
} ,
15
13
polygon : {
16
- api : [ 'https://api-polygon.vesper.finance/pools?stages=prod' ] ,
14
+ endpoints : [ 'https://api-polygon.vesper.finance/pools?stages=prod' ] ,
17
15
} ,
18
16
optimism : {
19
- api : [ 'https://api-optimism.vesper.finance/pools' ]
17
+ endpoints : [ 'https://api-optimism.vesper.finance/pools' ]
18
+ } ,
19
+ base : {
20
+ endpoints : [ 'https://api-base.vesper.finance/pools' ]
20
21
} ,
21
22
}
22
23
23
24
function getChainExports ( chain ) {
24
- const { stakingPool, VSP , api } = chainConfig [ chain ] || { }
25
-
26
- async function tvl ( timestamp , _block , chainBlocks ) {
27
- const block = chainBlocks [ chain ]
28
- const transformAddress = await getChainTransform ( chain )
29
- const balances = { }
30
- let network = chain === 'ethereum' ? 'mainnet' : chain
31
- if ( network === 'avax' ) network = 'avalanche'
25
+ const { stakingPool, VSP , endpoints } = chainConfig [ chain ] || { }
32
26
27
+ async function tvl ( api ) {
33
28
const poolSet = new Set ( )
34
29
35
- for ( let i = 0 ; i < api . length ; i ++ ) {
30
+ for ( let i = 0 ; i < endpoints . length ; i ++ ) {
36
31
const key = [ 'vesper' , chain , i ] . join ( '/' )
37
- const data = await getConfig ( key , api [ i ] )
32
+ const data = await getConfig ( key , endpoints [ i ] )
38
33
data . forEach ( pool => poolSet . add ( pool . address ) ) // add pools from our contracts list
39
34
}
40
- if ( stakingPool ) poolSet . delete ( stakingPool )
35
+ if ( stakingPool ) poolSet . delete ( stakingPool )
41
36
const poolList = [ ...poolSet ]
42
37
43
- if ( ! poolList . length ) return balances
38
+ if ( ! poolList . length ) return ;
44
39
45
40
// Get collateral token
46
- const calls = poolList . map ( target => ( { target } ) )
47
- const { output : tokens } = await sdk . api . abi . multiCall ( { calls, abi : abi . token , chain, block, } )
48
- const { output : totalValue } = await sdk . api . abi . multiCall ( { calls, abi : abi . totalValue , chain, block, } )
49
- tokens . forEach ( ( token , index ) => sdk . util . sumSingleBalance ( balances , transformAddress ( token . output ) , totalValue [ index ] . output ) )
50
- return balances
41
+ const tokens = await api . multiCall ( { abi : 'address:token' , calls : poolList } )
42
+ const bals = await api . multiCall ( { abi : 'uint256:totalValue' , calls : poolList } )
43
+ api . add ( tokens , bals )
51
44
}
52
45
53
46
let staking
54
47
55
- if ( stakingPool )
56
- staking = async ( timestamp , _block , chainBlocks ) => {
57
- const block = chainBlocks [ chain ]
58
- const transformAddress = await getChainTransform ( chain )
59
- const balances = { }
60
- const vspBalance = ( await sdk . api . erc20 . balanceOf ( {
61
- block, chain,
62
- target : VSP ,
63
- owner : stakingPool
64
- } ) ) . output ;
65
- sdk . util . sumSingleBalance ( balances , transformAddress ( VSP ) , vspBalance )
66
- return balances
67
- }
48
+ if ( stakingPool && VSP )
49
+ staking = sumTokensExport ( { owner : stakingPool , token : VSP } )
68
50
69
51
return {
70
52
[ chain ] : { tvl, staking }
@@ -73,5 +55,5 @@ function getChainExports(chain) {
73
55
74
56
module . exports = {
75
57
start : 1608667205 , // December 22 2020 at 8:00 PM UTC
76
- ...[ 'ethereum' , 'avax' , 'polygon' , 'optimism' ] . reduce ( ( acc , chain ) => ( { ...acc , ...getChainExports ( chain ) } ) , { } )
58
+ ...[ 'ethereum' , 'avax' , 'polygon' , 'optimism' , 'base '] . reduce ( ( acc , chain ) => ( { ...acc , ...getChainExports ( chain ) } ) , { } )
77
59
} ;
0 commit comments