@@ -262,6 +262,13 @@ export function handleThawRequestCreated(event: ThawRequestCreated): void {
262262 request . thawingUntil = event . params . thawingUntil
263263 request . fulfilled = false
264264 request . fulfilledAsValid = false
265+ if ( event . params . requestType == 0 ) {
266+ request . type = "Provision"
267+ } else if ( event . params . requestType == 1 ) {
268+ request . type = "Delegation"
269+ } else {
270+ throw new Error ( "Invalid thaw request type" )
271+ }
265272 request . save ( )
266273}
267274
@@ -274,23 +281,29 @@ export function handleThawRequestFulfilled(event: ThawRequestFulfilled): void {
274281}
275282
276283export function handleTokensToDelegationPoolAdded ( event : TokensToDelegationPoolAdded ) : void {
277- let graphNetwork = createOrLoadGraphNetwork ( event . block . number , event . address )
278- let indexer = Indexer . load ( event . params . serviceProvider . toHexString ( ) ) !
279284 let provision = createOrLoadProvision ( event . params . serviceProvider , event . params . verifier , event . block . timestamp )
280285 provision . delegatedTokens = provision . delegatedTokens . plus ( event . params . tokens )
281286 if ( provision . delegatorShares != BigInt . fromI32 ( 0 ) ) {
282287 provision = updateDelegationExchangeRateForProvision ( provision as Provision )
283288 }
289+ provision = updateAdvancedProvisionMetrics ( provision as Provision )
284290 provision . save ( )
285291
292+ let indexer = Indexer . load ( event . params . serviceProvider . toHexString ( ) ) !
286293 indexer . delegatedTokens = indexer . delegatedTokens . plus ( event . params . tokens ) // this only serves as a general tracker, but the real deal is per provision
287294 if ( indexer . delegatorShares != BigInt . fromI32 ( 0 ) ) {
288295 indexer = updateDelegationExchangeRate ( indexer as Indexer )
289296 }
297+ indexer = updateAdvancedIndexerMetrics ( indexer as Indexer )
290298 indexer . save ( )
291299
300+ let graphNetwork = createOrLoadGraphNetwork ( event . block . number , event . address )
292301 graphNetwork . totalDelegatedTokens = graphNetwork . totalDelegatedTokens . plus ( event . params . tokens )
293302 graphNetwork . save ( )
303+
304+ let dataService = createOrLoadDataService ( event . params . verifier )
305+ dataService . totalTokensDelegated = dataService . totalTokensDelegated . plus ( event . params . tokens )
306+ dataService . save ( )
294307}
295308
296309// Delegation
@@ -299,7 +312,7 @@ export function handleTokensDelegated(event: TokensDelegated): void {
299312 let zeroShares = event . params . shares . equals ( BigInt . fromI32 ( 0 ) )
300313
301314 let dataService = createOrLoadDataService ( event . params . verifier )
302- // Might want to track some stuff here in the future
315+ dataService . totalTokensDelegated = dataService . totalTokensDelegated . plus ( event . params . tokens )
303316 dataService . save ( )
304317
305318 let provision = createOrLoadProvision ( event . params . serviceProvider , event . params . verifier , event . block . timestamp )
@@ -315,6 +328,10 @@ export function handleTokensDelegated(event: TokensDelegated): void {
315328 let indexer = createOrLoadIndexer ( event . params . serviceProvider , event . block . timestamp )
316329 indexer . delegatedTokens = indexer . delegatedTokens . plus ( event . params . tokens )
317330 indexer . delegatorShares = indexer . delegatorShares . plus ( event . params . shares )
331+ if ( indexer . delegatorShares != BigInt . fromI32 ( 0 ) ) {
332+ indexer = updateDelegationExchangeRate ( indexer as Indexer )
333+ }
334+ indexer = updateAdvancedIndexerMetrics ( indexer as Indexer )
318335 indexer . save ( )
319336
320337 // update delegator
@@ -416,6 +433,10 @@ export function handleTokensUndelegated(event: TokensUndelegated): void {
416433 let indexer = Indexer . load ( indexerID ) !
417434 indexer . delegatedTokens = indexer . delegatedTokens . minus ( event . params . tokens )
418435 indexer . delegatorShares = indexer . delegatorShares . minus ( event . params . shares )
436+ if ( indexer . delegatorShares != BigInt . fromI32 ( 0 ) ) {
437+ indexer = updateDelegationExchangeRate ( indexer as Indexer )
438+ }
439+ indexer = updateAdvancedIndexerMetrics ( indexer as Indexer )
419440 indexer . save ( )
420441
421442 // update delegated stake
@@ -459,6 +480,10 @@ export function handleTokensUndelegated(event: TokensUndelegated): void {
459480
460481 graphNetwork . save ( )
461482 delegator . save ( )
483+
484+ let dataService = createOrLoadDataService ( event . params . verifier )
485+ dataService . totalTokensDelegated = dataService . totalTokensDelegated . minus ( event . params . tokens )
486+ dataService . save ( )
462487}
463488
464489export function handleDelegatedTokensWithdrawn ( event : DelegatedTokensWithdrawn ) : void {
0 commit comments