@@ -5,57 +5,37 @@ import { updateActiveJurors, getDelta, updateStakedPNK } from "../datapoint";
55import { ensureUser } from "./User" ;
66import { ONE , ZERO } from "../utils" ;
77
8- export function ensureJurorTokensPerCourt (
9- jurorAddress : string ,
10- courtID : string
11- ) : JurorTokensPerCourt {
8+ export function ensureJurorTokensPerCourt ( jurorAddress : string , courtID : string ) : JurorTokensPerCourt {
129 const id = `${ jurorAddress } -${ courtID } ` ;
13- let jurorTokens = JurorTokensPerCourt . load ( id ) ;
10+ const jurorTokens = JurorTokensPerCourt . load ( id ) ;
1411
1512 if ( jurorTokens ) {
1613 return jurorTokens ;
1714 }
1815
19- jurorTokens = new JurorTokensPerCourt ( id ) ;
20- jurorTokens . juror = jurorAddress ;
21- jurorTokens . court = courtID ;
22- jurorTokens . staked = ZERO ;
23- jurorTokens . locked = ZERO ;
24- jurorTokens . save ( ) ;
25-
26- return jurorTokens ;
16+ return createJurorTokensPerCourt ( jurorAddress , courtID ) ;
2717}
2818
29- export function createJurorTokensPerCourt (
30- jurorAddress : string ,
31- courtID : string
32- ) : JurorTokensPerCourt {
19+ export function createJurorTokensPerCourt ( jurorAddress : string , courtID : string ) : JurorTokensPerCourt {
3320 const id = `${ jurorAddress } -${ courtID } ` ;
3421
3522 const jurorTokens = new JurorTokensPerCourt ( id ) ;
3623 jurorTokens . juror = jurorAddress ;
3724 jurorTokens . court = courtID ;
3825 jurorTokens . staked = ZERO ;
3926 jurorTokens . locked = ZERO ;
27+ jurorTokens . delayed = ZERO ;
4028 jurorTokens . save ( ) ;
4129
4230 return jurorTokens ;
4331}
4432
45- export function updateJurorStake (
46- jurorAddress : string ,
47- courtID : string ,
48- contract : KlerosCore ,
49- timestamp : BigInt
50- ) : void {
33+ export function updateJurorStake ( jurorAddress : string , courtID : string , contract : KlerosCore , timestamp : BigInt ) : void {
5134 const juror = ensureUser ( jurorAddress ) ;
5235 const court = Court . load ( courtID ) ;
5336 if ( ! court ) return ;
5437 const jurorTokens = ensureJurorTokensPerCourt ( jurorAddress , courtID ) ;
55- const jurorBalance = contract . getJurorBalance (
56- Address . fromString ( jurorAddress ) ,
57- BigInt . fromString ( courtID )
58- ) ;
38+ const jurorBalance = contract . getJurorBalance ( Address . fromString ( jurorAddress ) , BigInt . fromString ( courtID ) ) ;
5939 const previousStake = jurorTokens . staked ;
6040 const previousTotalStake = juror . totalStake ;
6141 jurorTokens . staked = jurorBalance . value0 ;
@@ -67,16 +47,26 @@ export function updateJurorStake(
6747 court . stake = court . stake . plus ( stakeDelta ) ;
6848 updateStakedPNK ( stakeDelta , timestamp ) ;
6949 const activeJurorsDelta = getActivityDelta ( previousTotalStake , newTotalStake ) ;
70- const stakedJurorsDelta = getActivityDelta (
71- previousStake ,
72- jurorBalance . value0
73- ) ;
50+ const stakedJurorsDelta = getActivityDelta ( previousStake , jurorBalance . value0 ) ;
7451 court . numberStakedJurors = court . numberStakedJurors . plus ( stakedJurorsDelta ) ;
7552 updateActiveJurors ( activeJurorsDelta , timestamp ) ;
7653 juror . save ( ) ;
7754 court . save ( ) ;
7855}
7956
57+ export function updateJurorDelayedStake ( jurorAddress : string , courtID : string , amount : BigInt ) : void {
58+ const juror = ensureUser ( jurorAddress ) ;
59+ const court = Court . load ( courtID ) ;
60+ if ( ! court ) return ;
61+ const jurorTokens = ensureJurorTokensPerCourt ( jurorAddress , courtID ) ;
62+ jurorTokens . delayed = jurorTokens . delayed . plus ( amount ) ;
63+ juror . totalDelayed = juror . totalDelayed . plus ( amount ) ;
64+ court . delayedStake = court . stake . plus ( amount ) ;
65+ jurorTokens . save ( ) ;
66+ juror . save ( ) ;
67+ court . save ( ) ;
68+ }
69+
8070function getActivityDelta ( previousStake : BigInt , newStake : BigInt ) : BigInt {
8171 if ( previousStake . gt ( ZERO ) ) {
8272 return newStake . gt ( ZERO ) ? ZERO : BigInt . fromI32 ( - 1 ) ;
0 commit comments