Skip to content

Commit 2ff9c68

Browse files
committed
feat: added QueryFeesCollected handler with latest contract changes
1 parent b8295e4 commit 2ff9c68

File tree

4 files changed

+48
-9
lines changed

4 files changed

+48
-9
lines changed

schema.graphql

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -575,11 +575,12 @@ type SubgraphDeployment @entity {
575575
indexingDelegatorRewardAmount: BigInt!
576576
"Total query fees earned by this Subgraph Deployment, without curator query fees"
577577
queryFeesAmount: BigInt!
578-
"Total query fee rebates earned from the protocol, through the rebates formula. Does not include delegation fees"
578+
"Total query fee rebates earned from the protocol, through the rebates formula. Does not include delegation query fees"
579579
queryFeeRebates: BigInt!
580580
"Total curator rewards from fees"
581581
curatorFeeRewards: BigInt!
582-
# TODO - We can add a field here for delegation fees earned when calling claim()
582+
"Total query fee rebates earned from the protocol, through the rebates formula. Does not include indexer query fees"
583+
delegatorsQueryFeeRebates: BigInt!
583584

584585
# Subgraph deployment curation bonding curve
585586
"CURRENT signalled tokens in the bonding curve"
@@ -911,6 +912,10 @@ type Provision @entity {
911912
# Query fees
912913
"Total query fees collected. Includes the portion given to delegators"
913914
queryFeesCollected: BigInt!
915+
"Query fee amount collected from the protocol. Does not include portion given to delegators"
916+
providerQueryFees: BigInt!
917+
"Query fee amount collected from the protocol for Delegators. Does not include portion taken by the provider"
918+
delegatorQueryFees: BigInt!
914919

915920
# Delegation
916921
"Tokens delegated to the provision"

src/mappings/helpers/helpers.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,7 @@ export function createOrLoadSubgraphDeployment(
102102
deployment.indexingDelegatorRewardAmount = BigInt.fromI32(0)
103103
deployment.queryFeesAmount = BigInt.fromI32(0)
104104
deployment.queryFeeRebates = BigInt.fromI32(0)
105+
deployment.delegatorsQueryFeeRebates = BigInt.fromI32(0)
105106
deployment.curatorFeeRewards = BigInt.fromI32(0)
106107
deployment.signalledTokensReceivedOnL2 = BigInt.fromI32(0)
107108
deployment.signalledTokensSentToL2 = BigInt.fromI32(0)

src/mappings/staking.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -673,6 +673,7 @@ export function handleRebateClaimed(event: RebateClaimed): void {
673673
// update subgraph deployment
674674
let subgraphDeployment = SubgraphDeployment.load(subgraphDeploymentID)!
675675
subgraphDeployment.queryFeeRebates = subgraphDeployment.queryFeeRebates.plus(event.params.tokens)
676+
subgraphDeployment.delegatorsQueryFeeRebates = subgraphDeployment.delegatorsQueryFeeRebates.plus(event.params.delegationFees)
676677
subgraphDeployment.save()
677678

678679
// update graph network
@@ -751,6 +752,7 @@ export function handleRebateCollected(event: RebateCollected): void {
751752
deployment.curatorFeeRewards = deployment.curatorFeeRewards.plus(event.params.curationFees)
752753
deployment.pricePerShare = calculatePricePerShare(deployment as SubgraphDeployment)
753754
deployment.queryFeeRebates = deployment.queryFeeRebates.plus(event.params.queryRebates)
755+
deployment.delegatorsQueryFeeRebates = deployment.delegatorsQueryFeeRebates.plus(event.params.delegationRewards)
754756
deployment.save()
755757

756758
batchUpdateSubgraphSignalledTokens(deployment as SubgraphDeployment)

src/mappings/subgraphService.ts

Lines changed: 38 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -241,33 +241,49 @@ export function handleIndexingRewardsCollected(event: IndexingRewardsCollected):
241241
}
242242

243243
export 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

Comments
 (0)