1- import { BigInt } from '@graphprotocol/graph-ts' ;
1+ import { BigInt , log } from '@graphprotocol/graph-ts' ;
22import {
33 Borrow ,
44 Supply ,
@@ -22,6 +22,7 @@ import {
2222 getOrInitReserve ,
2323 getOrInitUser ,
2424 getOrInitUserReserve ,
25+ getPoolByContract ,
2526} from '../../helpers/v3/initializers' ;
2627import {
2728 Borrow as BorrowAction ,
@@ -38,6 +39,7 @@ import {
3839 UserEModeSet as UserEModeSetAction ,
3940 MintedToTreasury as MintedToTreasuryAction ,
4041 IsolationModeTotalDebtUpdated as IsolationModeTotalDebtUpdatedAction ,
42+ Pool ,
4143} from '../../../generated/schema' ;
4244import { getHistoryEntityId } from '../../utils/id-generation' ;
4345import { calculateGrowth } from '../../helpers/math' ;
@@ -212,13 +214,28 @@ export function handleLiquidationCall(event: LiquidationCall): void {
212214export function handleFlashLoan ( event : FlashLoan ) : void {
213215 let initiator = getOrInitUser ( event . params . initiator ) ;
214216 let poolReserve = getOrInitReserve ( event . params . asset , event ) ;
217+ let poolId = getPoolByContract ( event ) ;
218+ let pool = Pool . load ( poolId ) as Pool ;
215219
216220 let premium = event . params . premium ;
217-
221+ let premiumToProtocol = premium
222+ . times ( pool . flashloanPremiumToProtocol as BigInt )
223+ . plus ( BigInt . fromI32 ( 5000 ) )
224+ . div ( BigInt . fromI32 ( 10000 ) ) ;
225+ let premiumToLP = premium . minus ( premiumToProtocol ) ;
226+ log . error ( 'premium {},{},{}' , [
227+ premium . toString ( ) ,
228+ premiumToProtocol . toString ( ) ,
229+ premiumToLP . toString ( ) ,
230+ ] ) ;
218231 poolReserve . availableLiquidity = poolReserve . availableLiquidity . plus ( premium ) ;
219232
220233 poolReserve . lifetimeFlashLoans = poolReserve . lifetimeFlashLoans . plus ( event . params . amount ) ;
221234 poolReserve . lifetimeFlashLoanPremium = poolReserve . lifetimeFlashLoanPremium . plus ( premium ) ;
235+ poolReserve . lifetimeFlashLoanLPPremium = poolReserve . lifetimeFlashLoanLPPremium . plus ( premiumToLP ) ;
236+ poolReserve . lifetimeFlashLoanProtocolPremium = poolReserve . lifetimeFlashLoanProtocolPremium . plus (
237+ premiumToProtocol
238+ ) ;
222239 poolReserve . totalATokenSupply = poolReserve . totalATokenSupply . plus ( premium ) ;
223240
224241 poolReserve . save ( ) ;
@@ -229,6 +246,8 @@ export function handleFlashLoan(event: FlashLoan): void {
229246 flashLoan . target = event . params . target ;
230247 flashLoan . initiator = initiator . id ;
231248 flashLoan . totalFee = premium ;
249+ flashLoan . lpFee = premiumToLP ;
250+ flashLoan . protocolFee = premiumToProtocol ;
232251 flashLoan . amount = event . params . amount ;
233252 flashLoan . timestamp = event . block . timestamp . toI32 ( ) ;
234253 flashLoan . save ( ) ;
@@ -326,6 +345,21 @@ export function handleBackUnbacked(event: BackUnbacked): void {
326345 let userReserve = getOrInitUserReserve ( backer , event . params . reserve , event ) ;
327346 let amount = event . params . amount ;
328347
348+ let poolId = getPoolByContract ( event ) ;
349+ let pool = Pool . load ( poolId ) as Pool ;
350+
351+ let premium = event . params . fee ;
352+ let premiumToProtocol = premium
353+ . times ( pool . bridgeProtocolFee as BigInt )
354+ . plus ( BigInt . fromI32 ( 5000 ) )
355+ . div ( BigInt . fromI32 ( 10000 ) ) ;
356+ let premiumToLP = premium . minus ( premiumToProtocol ) ;
357+ poolReserve . lifetimePortalLPFee = poolReserve . lifetimePortalLPFee . plus ( premiumToLP ) ;
358+ poolReserve . lifetimePortalProtocolFee = poolReserve . lifetimePortalProtocolFee . plus (
359+ premiumToProtocol
360+ ) ;
361+ poolReserve . save ( ) ;
362+
329363 let backUnbacked = new BackUnbackedAction ( getHistoryEntityId ( event ) ) ;
330364 backUnbacked . pool = poolReserve . pool ;
331365 backUnbacked . backer = userReserve . user ;
@@ -334,6 +368,8 @@ export function handleBackUnbacked(event: BackUnbacked): void {
334368 backUnbacked . amount = amount ;
335369 backUnbacked . timestamp = event . block . timestamp . toI32 ( ) ;
336370 backUnbacked . fee = event . params . fee ;
371+ backUnbacked . lpFee = premiumToLP ;
372+ backUnbacked . protocolFee = premiumToProtocol ;
337373
338374 backUnbacked . save ( ) ;
339375}
0 commit comments