@@ -6,21 +6,26 @@ import { Interface } from '@ethersproject/abi';
6
6
import Web3 from 'web3' ;
7
7
import { MultiCallParams , MultiWrapper } from '../../lib/multi-wrapper' ;
8
8
import { stringDecode , uint8ToNumber , addressDecode } from '../../lib/decoders' ;
9
- import { StataToken } from './types' ;
9
+ import { StataToken , DexParams } from './types' ;
10
10
import FactoryABI from '../../abi/aavev3statav2/Factory.json' ;
11
11
import TokenABI from '../../abi/aavev3statav2/Token.json' ;
12
12
import { AbiItem } from 'web3-utils' ;
13
13
14
+ type PoolAndToken = {
15
+ token : string ;
16
+ pool : string ;
17
+ } ;
18
+
14
19
// const stataInterface = new Interface(IStaticATokenLM_ABI);
15
20
const statav2Interface = new Interface ( TokenABI ) ;
16
21
17
22
async function getTokenMetaData (
18
- stataTokens : string [ ] ,
23
+ stataTokens : PoolAndToken [ ] ,
19
24
multiWrapper : MultiWrapper ,
20
25
blockNumber ?: number ,
21
26
) : Promise < StataToken [ ] > {
22
27
const calls : MultiCallParams < any > [ ] = stataTokens
23
- . map ( token => {
28
+ . map ( ( { token } ) => {
24
29
return [
25
30
{
26
31
target : token ,
@@ -54,7 +59,8 @@ async function getTokenMetaData(
54
59
let tokenList : StataToken [ ] = [ ] ;
55
60
for ( let i = 0 , x = 0 ; i < stataTokens . length ; ++ i , x += 4 ) {
56
61
tokenList . push ( {
57
- address : stataTokens [ i ] . toLowerCase ( ) ,
62
+ address : stataTokens [ i ] . token . toLowerCase ( ) ,
63
+ pool : stataTokens [ i ] . pool . toLowerCase ( ) ,
58
64
stataSymbol : results [ x ] as string ,
59
65
decimals : results [ x + 1 ] as number ,
60
66
underlying : ( results [ x + 2 ] as string ) . toLowerCase ( ) ,
@@ -66,22 +72,24 @@ async function getTokenMetaData(
66
72
67
73
export const fetchTokenList = async (
68
74
web3Provider : Web3 ,
69
- factoryAddresses : string [ ] ,
75
+ config : DexParams ,
70
76
multiWrapper : MultiWrapper ,
71
77
blockNumber ?: number ,
72
78
) : Promise < StataToken [ ] > => {
73
- let stataList : string [ ] = (
79
+ let stataList : PoolAndToken [ ] = (
74
80
( await Promise . all (
75
- factoryAddresses . map ( async factoryAddress => {
81
+ config . map ( async ( { factory , pool } ) => {
76
82
let factoryContract = new web3Provider . eth . Contract (
77
83
FactoryABI as AbiItem [ ] ,
78
84
// IStaticATokenFactory_ABI as any,
79
- factoryAddress ,
85
+ factory ,
80
86
) ;
81
87
82
- return await factoryContract . methods . getStataTokens ( ) . call ( ) ;
88
+ return (
89
+ ( await factoryContract . methods . getStataTokens ( ) . call ( ) ) as string [ ]
90
+ ) . map ( address => ( { token : address , pool } ) ) ;
83
91
} ) ,
84
- ) ) as string [ ] [ ]
92
+ ) ) as PoolAndToken [ ] [ ]
85
93
) . flat ( ) ;
86
94
87
95
return getTokenMetaData ( stataList , multiWrapper , blockNumber ) ;
0 commit comments