@@ -12,9 +12,9 @@ import { weiToDecimal } from './utils/generic'
12
12
import {
13
13
calcSpotPrice ,
14
14
getPool ,
15
- getPoolToken ,
16
15
getPoolTransaction ,
17
- getPoolShares
16
+ getPoolShares ,
17
+ getPoolSnapshot
18
18
} from './utils/poolUtils'
19
19
import { getToken } from './utils/tokenUtils'
20
20
import { getUser } from './utils/userUtils'
@@ -28,7 +28,8 @@ export function handleJoin(event: LOG_JOIN): void {
28
28
pool . transactionCount = pool . transactionCount . plus ( integer . ONE )
29
29
pool . joinCount = pool . joinCount . plus ( integer . ONE )
30
30
31
- // get token, update pool transaction and update pool user liquidity
31
+ // get token, update pool transaction, poolSnapshot
32
+ const poolSnapshot = getPoolSnapshot ( pool . id , event . block . timestamp . toI32 ( ) )
32
33
const token = getToken ( event . params . tokenIn . toHex ( ) )
33
34
const ammount = weiToDecimal (
34
35
event . params . tokenAmountIn . toBigDecimal ( ) ,
@@ -37,16 +38,22 @@ export function handleJoin(event: LOG_JOIN): void {
37
38
if ( token . isDatatoken ) {
38
39
poolTx . datatoken = token . id
39
40
poolTx . datatokenValue = ammount
41
+
42
+ poolSnapshot . datatokenLiquidity =
43
+ poolSnapshot . datatokenLiquidity . plus ( ammount )
44
+
45
+ pool . datatokenLiquidity . plus ( ammount )
40
46
} else {
41
47
poolTx . baseToken = token . id
42
48
poolTx . baseTokenValue = ammount
43
- }
44
49
45
- // update pool token
46
- const poolToken = getPoolToken ( pool . id , token . id )
47
- poolToken . balance . plus ( ammount )
50
+ poolSnapshot . baseTokenLiquidity =
51
+ poolSnapshot . baseTokenLiquidity . plus ( ammount )
52
+
53
+ pool . baseTokenLiquidity . plus ( ammount )
54
+ }
48
55
49
- poolToken . save ( )
56
+ poolSnapshot . save ( )
50
57
poolTx . save ( )
51
58
pool . save ( )
52
59
}
@@ -61,22 +68,30 @@ export function handleExit(event: LOG_EXIT): void {
61
68
62
69
// get token and update pool transaction, value is negative because this is an exit event.
63
70
const token = getToken ( event . params . tokenOut . toHex ( ) )
71
+ const poolSnapshot = getPoolSnapshot ( pool . id , event . block . timestamp . toI32 ( ) )
64
72
const ammount = weiToDecimal (
65
73
event . params . tokenAmountOut . toBigDecimal ( ) ,
66
74
token . decimals
67
75
)
68
76
if ( token . isDatatoken ) {
69
77
poolTx . datatoken = token . id
70
78
poolTx . datatokenValue = ammount . neg ( )
79
+
80
+ poolSnapshot . datatokenLiquidity =
81
+ poolSnapshot . datatokenLiquidity . minus ( ammount )
82
+
83
+ pool . datatokenLiquidity . minus ( ammount )
71
84
} else {
72
85
poolTx . baseToken = token . id
73
86
poolTx . baseTokenValue = ammount . neg ( )
74
- }
75
87
76
- const poolToken = getPoolToken ( pool . id , token . id )
77
- poolToken . balance . minus ( ammount )
88
+ poolSnapshot . baseTokenLiquidity =
89
+ poolSnapshot . baseTokenLiquidity . minus ( ammount )
90
+
91
+ pool . baseTokenLiquidity . minus ( ammount )
92
+ }
78
93
79
- poolToken . save ( )
94
+ poolSnapshot . save ( )
80
95
poolTx . save ( )
81
96
pool . save ( )
82
97
}
@@ -89,6 +104,7 @@ export function handleSwap(event: LOG_SWAP): void {
89
104
pool . transactionCount = pool . transactionCount . plus ( integer . ONE )
90
105
pool . joinCount = pool . joinCount . plus ( integer . ONE )
91
106
107
+ const poolSnapshot = getPoolSnapshot ( pool . id , event . block . timestamp . toI32 ( ) )
92
108
// get token out and update pool transaction, value is negative
93
109
const tokenOut = getToken ( event . params . tokenOut . toHex ( ) )
94
110
const ammountOut = weiToDecimal (
@@ -98,12 +114,20 @@ export function handleSwap(event: LOG_SWAP): void {
98
114
if ( tokenOut . isDatatoken ) {
99
115
poolTx . datatoken = tokenOut . id
100
116
poolTx . datatokenValue = ammountOut . neg ( )
117
+
118
+ pool . datatokenLiquidity = pool . datatokenLiquidity . minus ( ammountOut )
119
+
120
+ poolSnapshot . datatokenLiquidity =
121
+ poolSnapshot . datatokenLiquidity . minus ( ammountOut )
101
122
} else {
102
123
poolTx . baseToken = tokenOut . id
103
124
poolTx . baseTokenValue = ammountOut . neg ( )
125
+
126
+ pool . baseTokenLiquidity = pool . baseTokenLiquidity . minus ( ammountOut )
127
+
128
+ poolSnapshot . baseTokenLiquidity =
129
+ poolSnapshot . baseTokenLiquidity . minus ( ammountOut )
104
130
}
105
- const poolTokenOut = getPoolToken ( pool . id , tokenOut . id )
106
- poolTokenOut . balance . minus ( ammountOut )
107
131
108
132
// update pool token in
109
133
const tokenIn = getToken ( event . params . tokenIn . toHex ( ) )
@@ -114,12 +138,20 @@ export function handleSwap(event: LOG_SWAP): void {
114
138
if ( tokenIn . isDatatoken ) {
115
139
poolTx . datatoken = tokenIn . id
116
140
poolTx . datatokenValue = ammountIn
141
+
142
+ pool . datatokenLiquidity = pool . datatokenLiquidity . plus ( ammountIn )
143
+
144
+ poolSnapshot . datatokenLiquidity =
145
+ poolSnapshot . datatokenLiquidity . plus ( ammountIn )
117
146
} else {
118
147
poolTx . baseToken = tokenIn . id
119
148
poolTx . baseTokenValue = ammountIn
149
+
150
+ pool . baseTokenLiquidity = pool . baseTokenLiquidity . plus ( ammountIn )
151
+
152
+ poolSnapshot . baseTokenLiquidity =
153
+ poolSnapshot . baseTokenLiquidity . plus ( ammountIn )
120
154
}
121
- const poolTokenIn = getPoolToken ( pool . id , tokenIn . id )
122
- poolTokenIn . balance . plus ( ammountIn )
123
155
124
156
// update spot price
125
157
const isTokenInDatatoken = tokenIn . isDatatoken
@@ -130,28 +162,28 @@ export function handleSwap(event: LOG_SWAP): void {
130
162
isTokenInDatatoken ? tokenIn . decimals : tokenOut . decimals
131
163
)
132
164
pool . spotPrice = spotPrice
165
+ poolSnapshot . spotPrice = spotPrice
133
166
134
- poolTokenIn . save ( )
135
- poolTokenOut . save ( )
167
+ poolSnapshot . save ( )
136
168
poolTx . save ( )
137
169
pool . save ( )
138
170
}
139
171
140
- // setup is just to set token weight and spotPrice , it will mostly be 50:50
172
+ // setup is just to set token weight( it will mostly be 50:50) and spotPrice
141
173
export function handleSetup ( event : LOG_SETUP ) : void {
142
174
const pool = getPool ( event . address . toHex ( ) )
143
175
144
176
const token = getToken ( event . params . baseToken . toHex ( ) )
145
- const baseToken = getPoolToken ( pool . id , event . params . baseToken . toHex ( ) )
146
- baseToken . denormWeight = weiToDecimal (
177
+ pool . baseToken = token . id
178
+ pool . baseTokenWeight = weiToDecimal (
147
179
event . params . baseTokenWeight . toBigDecimal ( ) ,
148
180
token . decimals
149
181
)
150
- baseToken . save ( )
151
182
152
183
// decimals hardcoded because datatokens have 18 decimals
153
- const datatoken = getPoolToken ( pool . id , event . params . dataToken . toHex ( ) )
154
- datatoken . denormWeight = weiToDecimal (
184
+ const datatoken = getToken ( event . params . dataToken . toHex ( ) )
185
+ pool . datatoken = datatoken . id
186
+ pool . datatokenWeight = weiToDecimal (
155
187
event . params . dataTokenWeight . toBigDecimal ( ) ,
156
188
18
157
189
)
0 commit comments