@@ -118,7 +118,13 @@ async function getBalance({ token, owner, block, chain } = {}) {
118
118
return Number ( data . balance ) ;
119
119
}
120
120
121
- async function sumCW20Tokens ( { balances = { } , tokens, owner, block, chain } = { } ) {
121
+ async function sumCW20Tokens ( { balances, tokens, owner, block, chain, api, } = { } ) {
122
+ if ( api ) {
123
+ if ( ! chain ) chain = api . chain ;
124
+ if ( ! balances ) balances = api . getBalances ( ) ;
125
+ } else {
126
+ if ( ! balances ) balances = { } ;
127
+ }
122
128
await Promise . all (
123
129
tokens . map ( async ( token ) => {
124
130
const balance = await getBalance ( { token, owner, block, chain, } ) ;
@@ -139,7 +145,7 @@ async function getDenomBalance({ denom, owner, block, chain } = {}) {
139
145
return balance ? Number ( balance . amount ) : 0 ;
140
146
}
141
147
142
- async function getBalance2 ( { balances = { } , owner, block, chain, tokens, blacklistedTokens, } = { } ) {
148
+ async function getBalance2 ( { balances = { } , owner, block, chain, tokens, blacklistedTokens, api , } = { } ) {
143
149
const subpath = "cosmos" ;
144
150
let endpoint = `${ getEndpoint (
145
151
chain
@@ -153,7 +159,9 @@ async function getBalance2({ balances = {}, owner, block, chain, tokens, blackli
153
159
for ( const { denom, amount } of data ) {
154
160
if ( blacklistedTokens ?. includes ( denom ) ) continue ;
155
161
if ( tokens && ! tokens . includes ( denom ) ) continue ;
156
- sdk . util . sumSingleBalance ( balances , denom . replaceAll ( '/' , ':' ) , amount ) ;
162
+ if ( api ) api . add ( denom , amount ) ;
163
+ else
164
+ sdk . util . sumSingleBalance ( balances , denom . replaceAll ( '/' , ':' ) , amount ) ;
157
165
}
158
166
return balances ;
159
167
}
@@ -195,7 +203,7 @@ const multipleEndpoints = {
195
203
"https://sei-m.api.n0ok.net" ,
196
204
"https://sei-api.lavenderfive.com" ,
197
205
"https://api-sei.stingray.plus"
198
- ]
206
+ ] ,
199
207
}
200
208
201
209
async function queryContractWithRetries ( { contract, chain, data } ) {
@@ -220,7 +228,7 @@ async function queryContractWithRetries({ contract, chain, data }) {
220
228
}
221
229
}
222
230
223
- async function queryManyContracts ( { contracts = [ ] , chain, data, permitFailure = false } ) {
231
+ async function queryManyContracts ( { contracts = [ ] , chain, data, permitFailure = false } ) {
224
232
const parallelLimit = 25
225
233
const { results, errors } = await PromisePool
226
234
. withConcurrency ( parallelLimit )
@@ -280,15 +288,21 @@ async function queryContractStore({
280
288
return query ( url , block , chain ) ;
281
289
}
282
290
283
- async function sumTokens ( { balances = { } , owners = [ ] , chain, owner, tokens, blacklistedTokens, } ) {
291
+ async function sumTokens ( { balances, owners = [ ] , chain, owner, tokens, blacklistedTokens, api, } ) {
292
+ if ( api ) {
293
+ if ( ! chain ) chain = api . chain ;
294
+ if ( ! balances ) balances = api . getBalances ( ) ;
295
+ } else {
296
+ if ( ! balances ) balances = { } ;
297
+ }
284
298
if ( ! tokens ?. length || ( tokens ?. length === 1 && tokens [ 0 ] === ADDRESSES . null ) ) tokens = undefined ;
285
299
if ( owner ) owners = [ owner ]
286
300
log ( chain , "fetching balances for " , owners . length ) ;
287
301
let parallelLimit = 25 ;
288
302
289
303
const { errors } = await PromisePool . withConcurrency ( parallelLimit )
290
304
. for ( owners )
291
- . process ( async ( owner ) => getBalance2 ( { balances, owner, chain, tokens, blacklistedTokens, } ) ) ;
305
+ . process ( async ( owner ) => getBalance2 ( { balances, owner, chain, tokens, blacklistedTokens, api , } ) ) ;
292
306
293
307
if ( errors && errors . length ) throw errors [ 0 ] ;
294
308
return transformBalances ( chain , balances ) ;
@@ -311,5 +325,5 @@ module.exports = {
311
325
getTokenBalance,
312
326
getToken,
313
327
sumCW20Tokens,
314
- queryContractWithRetries
328
+ queryContractWithRetries,
315
329
} ;
0 commit comments