@@ -5,57 +5,37 @@ import { updateActiveJurors, getDelta, updateStakedPNK } from "../datapoint";
5
5
import { ensureUser } from "./User" ;
6
6
import { ONE , ZERO } from "../utils" ;
7
7
8
- export function ensureJurorTokensPerCourt (
9
- jurorAddress : string ,
10
- courtID : string
11
- ) : JurorTokensPerCourt {
8
+ export function ensureJurorTokensPerCourt ( jurorAddress : string , courtID : string ) : JurorTokensPerCourt {
12
9
const id = `${ jurorAddress } -${ courtID } ` ;
13
- let jurorTokens = JurorTokensPerCourt . load ( id ) ;
10
+ const jurorTokens = JurorTokensPerCourt . load ( id ) ;
14
11
15
12
if ( jurorTokens ) {
16
13
return jurorTokens ;
17
14
}
18
15
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 ) ;
27
17
}
28
18
29
- export function createJurorTokensPerCourt (
30
- jurorAddress : string ,
31
- courtID : string
32
- ) : JurorTokensPerCourt {
19
+ export function createJurorTokensPerCourt ( jurorAddress : string , courtID : string ) : JurorTokensPerCourt {
33
20
const id = `${ jurorAddress } -${ courtID } ` ;
34
21
35
22
const jurorTokens = new JurorTokensPerCourt ( id ) ;
36
23
jurorTokens . juror = jurorAddress ;
37
24
jurorTokens . court = courtID ;
38
25
jurorTokens . staked = ZERO ;
39
26
jurorTokens . locked = ZERO ;
27
+ jurorTokens . delayed = ZERO ;
40
28
jurorTokens . save ( ) ;
41
29
42
30
return jurorTokens ;
43
31
}
44
32
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 {
51
34
const juror = ensureUser ( jurorAddress ) ;
52
35
const court = Court . load ( courtID ) ;
53
36
if ( ! court ) return ;
54
37
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 ) ) ;
59
39
const previousStake = jurorTokens . staked ;
60
40
const previousTotalStake = juror . totalStake ;
61
41
jurorTokens . staked = jurorBalance . value0 ;
@@ -67,16 +47,26 @@ export function updateJurorStake(
67
47
court . stake = court . stake . plus ( stakeDelta ) ;
68
48
updateStakedPNK ( stakeDelta , timestamp ) ;
69
49
const activeJurorsDelta = getActivityDelta ( previousTotalStake , newTotalStake ) ;
70
- const stakedJurorsDelta = getActivityDelta (
71
- previousStake ,
72
- jurorBalance . value0
73
- ) ;
50
+ const stakedJurorsDelta = getActivityDelta ( previousStake , jurorBalance . value0 ) ;
74
51
court . numberStakedJurors = court . numberStakedJurors . plus ( stakedJurorsDelta ) ;
75
52
updateActiveJurors ( activeJurorsDelta , timestamp ) ;
76
53
juror . save ( ) ;
77
54
court . save ( ) ;
78
55
}
79
56
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
+
80
70
function getActivityDelta ( previousStake : BigInt , newStake : BigInt ) : BigInt {
81
71
if ( previousStake . gt ( ZERO ) ) {
82
72
return newStake . gt ( ZERO ) ? ZERO : BigInt . fromI32 ( - 1 ) ;
0 commit comments