@@ -172,15 +172,22 @@ export function handleLiquidityAdded(event: LiquidityAdded): void {
172172 let poolTokens = pool . tokens . load ( ) ;
173173 let joinAmounts = new Array < BigDecimal > ( amountsAddedRaw . length ) ;
174174
175+ let vault = VaultExtension . bind ( event . address ) ;
176+ let poolTokensInfo = vault . getPoolTokenInfo ( poolAddress ) ;
177+
175178 for ( let i : i32 = 0 ; i < poolTokens . length ; i ++ ) {
176179 let poolToken = poolTokens [ i ] ;
177180 let joinAmount = scaleDown (
178181 event . params . amountsAddedRaw [ i ] ,
179182 poolToken . decimals
180183 ) ;
181- poolToken . balance = poolToken . balance . plus ( joinAmount ) ;
182184 joinAmounts [ i ] = joinAmount ;
183185
186+ poolToken . balance = scaleDown (
187+ poolTokensInfo . getBalancesRaw ( ) [ i ] ,
188+ poolToken . decimals
189+ ) ;
190+
184191 let aggregateSwapFeeAmount = scaleDown (
185192 computeAggregateSwapFee (
186193 event . params . swapFeeAmountsRaw [ i ] ,
@@ -235,15 +242,22 @@ export function handleLiquidityRemoved(event: LiquidityRemoved): void {
235242 let poolTokens = pool . tokens . load ( ) ;
236243 let exitAmounts = new Array < BigDecimal > ( amounts . length ) ;
237244
245+ let vault = VaultExtension . bind ( event . address ) ;
246+ let poolTokensInfo = vault . getPoolTokenInfo ( poolAddress ) ;
247+
238248 for ( let i : i32 = 0 ; i < poolTokens . length ; i ++ ) {
239249 let poolToken = poolTokens [ i ] ;
240250 let exitAmount = scaleDown (
241251 event . params . amountsRemovedRaw [ i ] ,
242252 poolToken . decimals
243253 ) ;
244- poolToken . balance = poolToken . balance . minus ( exitAmount ) ;
245254 exitAmounts [ i ] = exitAmount ;
246255
256+ poolToken . balance = scaleDown (
257+ poolTokensInfo . getBalancesRaw ( ) [ i ] ,
258+ poolToken . decimals
259+ ) ;
260+
247261 let aggregateSwapFeeAmount = scaleDown (
248262 computeAggregateSwapFee (
249263 event . params . swapFeeAmountsRaw [ i ] ,
@@ -359,8 +373,13 @@ export function handleSwap(event: SwapEvent): void {
359373 poolTokenIn . decimals
360374 ) ;
361375
362- let newInAmount = poolTokenIn . balance . plus ( tokenAmountIn ) ;
363- poolTokenIn . balance = newInAmount ;
376+ let vault = VaultExtension . bind ( event . address ) ;
377+ let poolTokensInfo = vault . getPoolTokenInfo ( poolAddress ) ;
378+
379+ poolTokenIn . balance = scaleDown (
380+ poolTokensInfo . getBalancesRaw ( ) [ poolTokenIn . index ] ,
381+ poolTokenIn . decimals
382+ ) ;
364383 poolTokenIn . volume = poolTokenIn . volume . plus ( tokenAmountIn ) ;
365384 poolTokenIn . totalSwapFee = poolTokenIn . totalSwapFee . plus ( swapFeeAmount ) ;
366385 poolTokenIn . vaultProtocolSwapFeeBalance =
@@ -383,8 +402,10 @@ export function handleSwap(event: SwapEvent): void {
383402
384403 poolTokenIn . save ( ) ;
385404
386- let newOutAmount = poolTokenOut . balance . minus ( tokenAmountOut ) ;
387- poolTokenOut . balance = newOutAmount ;
405+ poolTokenOut . balance = scaleDown (
406+ poolTokensInfo . getBalancesRaw ( ) [ poolTokenOut . index ] ,
407+ poolTokenOut . decimals
408+ ) ;
388409 poolTokenOut . volume = poolTokenOut . volume . plus ( tokenAmountOut ) ;
389410 poolTokenOut . save ( ) ;
390411
0 commit comments