@@ -10,6 +10,7 @@ import {
1010 NewPeriod ,
1111 StakeSet ,
1212 TokenAndETHShift as TokenAndETHShiftEvent ,
13+ Ruling ,
1314} from "../generated/KlerosCore/KlerosCore" ;
1415import { ZERO , ONE } from "./utils" ;
1516import { createCourtFromEvent , getFeeForJuror } from "./entities/Court" ;
@@ -24,6 +25,8 @@ import {
2425 updatePaidETH ,
2526 updateStakedPNK ,
2627 updateRedistributedPNK ,
28+ updateCasesRuled ,
29+ updateCasesVoting ,
2730 getDelta ,
2831} from "./datapoint" ;
2932import { ensureUser } from "./entities/User" ;
@@ -35,6 +38,7 @@ import { createDrawFromEvent } from "./entities/Draw";
3538import { createTokenAndEthShiftFromEvent } from "./entities/TokenAndEthShift" ;
3639import { updateArbitrableCases } from "./entities/Arbitrable" ;
3740import { Court , Dispute } from "../generated/schema" ;
41+ import { BigInt } from "@graphprotocol/graph-ts" ;
3842
3943function getPeriodName ( index : i32 ) : string {
4044 const periodArray = [ "evidence" , "commit" , "vote" , "appeal" , "execution" ] ;
@@ -95,11 +99,25 @@ export function handleNewPeriod(event: NewPeriod): void {
9599 const disputeID = event . params . _disputeID . toString ( ) ;
96100 const dispute = Dispute . load ( disputeID ) ;
97101 if ( ! dispute ) return ;
98- dispute . period = getPeriodName ( event . params . _period ) ;
102+ const newPeriod = getPeriodName ( event . params . _period ) ;
103+ if ( dispute . period === "vote" ) {
104+ updateCasesVoting ( BigInt . fromI32 ( - 1 ) , event . block . timestamp ) ;
105+ } else if ( newPeriod === "vote" ) {
106+ updateCasesVoting ( ONE , event . block . timestamp ) ;
107+ }
108+ dispute . period = newPeriod ;
99109 dispute . lastPeriodChange = event . block . timestamp ;
100110 dispute . save ( ) ;
101111}
102112
113+ export function handleRuling ( event : Ruling ) : void {
114+ const disputeID = event . params . _disputeID . toString ( ) ;
115+ const dispute = Dispute . load ( disputeID ) ;
116+ if ( ! dispute ) return ;
117+ dispute . ruled = true ;
118+ updateCasesRuled ( ONE , event . block . timestamp ) ;
119+ }
120+
103121export function handleAppealDecision ( event : AppealDecision ) : void {
104122 const contract = KlerosCore . bind ( event . address ) ;
105123 const disputeID = event . params . _disputeID ;
0 commit comments