@@ -305,14 +305,19 @@ export const createOriginARMProcessors = ({
305305 )
306306 const assets0 = assetBalancesBig [ 0 ] ?? 0n // idle liquidity asset (WETH / USDe)
307307 const assets1 = assetBalancesBig [ 1 ] ?? 0n // legacy primary base asset
308- let outstandingAssets1 : bigint
308+ // Per-asset protocol redemptions in-flight (adapter withdrawal queues), aligned to
309+ // armEntity.assets. [0] = liquidity asset (never redeems into itself) = 0; [i>0] =
310+ // liquidity-denominated amount pending for base asset i. Multiple base assets can be
311+ // redeeming at once post-upgrade. Legacy scalar outstandingAssets1 == sum of [1+].
312+ let outstandingAssetsBig : bigint [ ]
309313 if ( upgraded ) {
310314 // Post-upgrade: pending protocol redemptions live per base asset in liquidity terms.
311315 const multibase = new originMultibaseArmAbi . Contract ( ctx , block . header , armAddress )
312316 const configs = await Promise . all ( armEntity . assets . slice ( 1 ) . map ( ( a ) => multibase . baseAssetConfigs ( a ) ) )
313- outstandingAssets1 = configs . reduce ( ( acc , c ) => acc + c . pendingRedeemAssets , 0n )
317+ outstandingAssetsBig = [ 0n , ... configs . map ( ( c ) => c . pendingRedeemAssets ) ]
314318 } else {
315- outstandingAssets1 = await {
319+ // Pre-upgrade: single base asset, one chain-specific withdrawal-queue call.
320+ const single = await {
316321 lido : lidoArmContract . lidoWithdrawalQueueAmount . bind ( lidoArmContract ) ,
317322 os : osArmContract . vaultWithdrawalAmount . bind ( osArmContract ) ,
318323 etherfi : etherfiArmContract . etherfiWithdrawalQueueAmount . bind ( etherfiArmContract ) ,
@@ -321,7 +326,9 @@ export const createOriginARMProcessors = ({
321326 return await ethenaArmContract . liquidityAmountInCooldown ( )
322327 } ,
323328 } [ armType ] ( )
329+ outstandingAssetsBig = [ 0n , single ]
324330 }
331+ const outstandingAssets1 = outstandingAssetsBig . reduce ( ( acc , b ) => acc + b , 0n )
325332 const [ feesAccrued , totalAssets , totalAssetsCap , totalSupply , assetsPerShare , activeMarket , claimable ] =
326333 await Promise . all ( [
327334 armContract . feesAccrued ( ) ,
@@ -376,6 +383,8 @@ export const createOriginARMProcessors = ({
376383 ( assets0 + outstandingAssets1 + marketAssets ) . toString ( ) ,
377384 ...assetBalancesBig . slice ( 1 ) . map ( ( b ) => b . toString ( ) ) ,
378385 ] ,
386+ // Per-asset redemptions in-flight, aligned to assets. [0] = 0; sum of [1+] == outstandingAssets1.
387+ outstandingAssets : outstandingAssetsBig . map ( ( b ) => b . toString ( ) ) ,
379388 } )
380389 armStateEntity . totalYield = calculateTotalYield ( armStateEntity )
381390 states . push ( armStateEntity )
@@ -754,6 +763,7 @@ export const createOriginARMProcessors = ({
754763 assetBalances : state . assetBalances ,
755764 assetTotals : state . assetTotals ,
756765 assetRates,
766+ outstandingAssets : state . outstandingAssets ,
757767 } )
758768 dailyStatsMap . set ( currentDayId , armDailyStatEntity )
759769 }
0 commit comments