1
1
const sdk = require ( "@defillama/sdk" ) ;
2
- const { default : BigNumber } = require ( "bignumber.js" ) ;
3
2
const { getResources, getTableData, } = require ( "../helper/chain/aptos" ) ;
4
3
const { transformBalances } = require ( "../helper/portedTokens" ) ;
5
4
const toHex = ( str ) => Buffer . from ( str , 'utf-8' ) . toString ( 'hex' ) ;
@@ -11,7 +10,8 @@ async function _getResources() {
11
10
return resourcesCache
12
11
}
13
12
const extractCoinAddress = ( str ) => str . slice ( str . indexOf ( "<" ) + 1 , str . lastIndexOf ( ">" ) ) ;
14
- const reserveContrainerFilter = ( i ) => i . type . includes ( "0x9770fa9c725cbd97eb50b2be5f7416efdfd1f1554beb0750d4dae4c64e860da3::reserve::ReserveCoinContainer" )
13
+ const reserveContrainerFilter = ( i ) => i . type . includes ( "0x9770fa9c725cbd97eb50b2be5f7416efdfd1f1554beb0750d4dae4c64e860da3::reserve::ReserveCoinContainer" ) ;
14
+ const faWrapperFilter = ( i ) => i . type . includes ( "0x9770fa9c725cbd97eb50b2be5f7416efdfd1f1554beb0750d4dae4c64e860da3::fa_to_coin_wrapper::WrapperCoinInfo" ) ;
15
15
16
16
module . exports = {
17
17
timetravel : false ,
@@ -26,11 +26,20 @@ module.exports = {
26
26
lamports : i . data . underlying_coin . value ,
27
27
tokenAddress : extractCoinAddress ( i . type ) ,
28
28
} ) ) ;
29
+ const faWrappers = data . filter ( faWrapperFilter )
30
+ . map ( ( i ) => ( {
31
+ lamports : i . data . fa_amount ,
32
+ faAddress : i . data . metadata . inner ,
33
+ } ) ) ;
29
34
30
35
coinContainers . forEach ( ( { lamports, tokenAddress } ) => {
31
36
sdk . util . sumSingleBalance ( balances , tokenAddress , lamports ) ;
32
37
} ) ;
33
38
39
+ faWrappers . forEach ( ( { lamports, faAddress } ) => {
40
+ sdk . util . sumSingleBalance ( balances , faAddress , lamports ) ;
41
+ } ) ;
42
+
34
43
return transformBalances ( "aptos" , balances ) ;
35
44
} ,
36
45
borrowed : async ( ) => {
@@ -59,10 +68,13 @@ module.exports = {
59
68
} ) ;
60
69
61
70
const total_borrowed = BigInt ( reserveStatus . total_borrowed . val ) / BigInt ( 10 ** 18 ) ;
71
+
72
+ const faInfo = data . filter ( faWrapperFilter ) . filter ( ( i ) => i . type . includes ( coin_type ) ) ;
73
+ const normalizedAddress = faInfo . length == 0 ? coin_type : faInfo [ 0 ] . data . metadata . inner ;
62
74
63
75
return {
64
76
lamports : total_borrowed . toString ( ) ,
65
- tokenAddress : coin_type ,
77
+ tokenAddress : normalizedAddress ,
66
78
} ;
67
79
} )
68
80
) ;
0 commit comments