@@ -241,33 +241,49 @@ export function handleIndexingRewardsCollected(event: IndexingRewardsCollected):
241241}
242242
243243export function handleQueryFeesCollected ( event : QueryFeesCollected ) : void {
244- // To Do
245-
246244 let graphNetwork = createOrLoadGraphNetwork ( event . block . number , event . address )
247245 let subgraphDeploymentID = event . params . subgraphDeploymentId . toHexString ( )
248246 let indexerID = event . params . serviceProvider . toHexString ( )
249247 let allocationID = event . params . allocationId . toHexString ( )
250248 let paymentAddress = event . params . payer
251249
252- // update indexer
253- let indexer = Indexer . load ( indexerID ) !
254- indexer . queryFeesCollected = indexer . queryFeesCollected . plus ( event . params . tokensCollected )
255- indexer . save ( )
256-
257250 // update provision
258251 let provision = createOrLoadProvision ( event . params . serviceProvider , event . address , event . block . timestamp )
252+
253+ let delegationPoolQueryFees =
254+ provision . delegatedTokens == BigInt . fromI32 ( 0 )
255+ ? event . params . tokensCollected
256+ : event . params . tokensCollected
257+ . times ( provision . queryFeeCut )
258+ . div ( BigInt . fromI32 ( 1000000 ) )
259+ let indexerQueryFees = event . params . tokensCollected . minus ( delegationPoolQueryFees )
260+
259261 provision . queryFeesCollected = provision . queryFeesCollected . plus ( event . params . tokensCollected )
262+ provision . providerQueryFees = provision . providerQueryFees . plus ( indexerQueryFees )
263+ provision . delegatorQueryFees = provision . delegatorQueryFees . plus ( delegationPoolQueryFees )
260264 provision . save ( )
261265
266+ // update indexer
267+ let indexer = Indexer . load ( indexerID ) !
268+ indexer . queryFeesCollected = indexer . queryFeesCollected . plus ( event . params . tokensCollected )
269+ indexer . queryFeeRebates = indexer . queryFeeRebates . plus ( indexerQueryFees )
270+ indexer . delegatorQueryFees = indexer . delegatorQueryFees . plus ( delegationPoolQueryFees )
271+ indexer . save ( )
272+
262273 // Replicate for payment source specific aggregation
263274 let paymentAggregation = createOrLoadIndexerQueryFeePaymentAggregation ( paymentAddress , event . params . serviceProvider )
264275 paymentAggregation . queryFeesCollected = paymentAggregation . queryFeesCollected . plus ( event . params . tokensCollected )
276+ paymentAggregation . queryFeeRebates = paymentAggregation . queryFeeRebates . plus ( indexerQueryFees )
277+ paymentAggregation . delegatorQueryFees = paymentAggregation . delegatorQueryFees . plus ( delegationPoolQueryFees )
265278 paymentAggregation . save ( )
266279
267280 // update allocation
268281 let allocation = Allocation . load ( allocationID ) !
269282 allocation . queryFeesCollected = allocation . queryFeesCollected . plus ( event . params . tokensCollected )
270283 allocation . curatorRewards = allocation . curatorRewards . plus ( event . params . tokensCurators )
284+ allocation . queryFeeRebates = allocation . queryFeeRebates . plus ( indexerQueryFees )
285+ allocation . distributedRebates = allocation . distributedRebates . plus ( event . params . tokensCollected )
286+ allocation . delegationFees = allocation . delegationFees . plus ( delegationPoolQueryFees )
271287 allocation . save ( )
272288
273289 // Update epoch
@@ -277,6 +293,7 @@ export function handleQueryFeesCollected(event: QueryFeesCollected): void {
277293 epoch . totalQueryFees = epoch . totalQueryFees . plus ( event . params . tokensCollected ) . plus ( event . params . tokensCurators )
278294 epoch . queryFeesCollected = epoch . queryFeesCollected . plus ( event . params . tokensCollected )
279295 epoch . curatorQueryFees = epoch . curatorQueryFees . plus ( event . params . tokensCurators )
296+ epoch . queryFeeRebates = epoch . queryFeeRebates . plus ( event . params . tokensCollected )
280297 epoch . save ( )
281298
282299 // update subgraph deployment
@@ -285,6 +302,8 @@ export function handleQueryFeesCollected(event: QueryFeesCollected): void {
285302 deployment . signalledTokens = deployment . signalledTokens . plus ( event . params . tokensCurators )
286303 deployment . curatorFeeRewards = deployment . curatorFeeRewards . plus ( event . params . tokensCurators )
287304 deployment . pricePerShare = calculatePricePerShare ( deployment as SubgraphDeployment )
305+ deployment . queryFeeRebates = deployment . queryFeeRebates . plus ( indexerQueryFees )
306+ deployment . delegatorsQueryFeeRebates = deployment . delegatorsQueryFeeRebates . plus ( delegationPoolQueryFees )
288307 deployment . save ( )
289308
290309 batchUpdateSubgraphSignalledTokens ( deployment as SubgraphDeployment )
@@ -297,6 +316,12 @@ export function handleQueryFeesCollected(event: QueryFeesCollected): void {
297316 graphNetwork . totalCuratorQueryFees = graphNetwork . totalCuratorQueryFees . plus (
298317 event . params . tokensCurators ,
299318 )
319+ graphNetwork . totalIndexerQueryFeeRebates = graphNetwork . totalIndexerQueryFeeRebates . plus (
320+ indexerQueryFees ,
321+ )
322+ graphNetwork . totalDelegatorQueryFeeRebates = graphNetwork . totalDelegatorQueryFeeRebates . plus (
323+ delegationPoolQueryFees ,
324+ )
300325 graphNetwork . save ( )
301326
302327 // Replicate for payment source specific data
@@ -308,5 +333,11 @@ export function handleQueryFeesCollected(event: QueryFeesCollected): void {
308333 paymentSource . totalCuratorQueryFees = paymentSource . totalCuratorQueryFees . plus (
309334 event . params . tokensCurators ,
310335 )
336+ paymentSource . totalIndexerQueryFeeRebates = paymentSource . totalIndexerQueryFeeRebates . plus (
337+ indexerQueryFees ,
338+ )
339+ paymentSource . totalDelegatorQueryFeeRebates = paymentSource . totalDelegatorQueryFeeRebates . plus (
340+ delegationPoolQueryFees ,
341+ )
311342 paymentSource . save ( )
312343}
0 commit comments