@steerprotocol/data-connector-loader 5.0.0-next.1 → 5.0.0-next.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +102 -0
- package/lib/bundle/bundleBase.d.ts +11 -14
- package/lib/bundle/bundleBase.js +56 -88
- package/lib/bundle/bundleDataConnector.d.ts +2 -6
- package/lib/bundle/bundleDataConnector.js +22 -47
- package/lib/esm/bundle/bundleBase.d.ts +11 -14
- package/lib/esm/bundle/bundleBase.js +77 -91
- package/lib/esm/bundle/bundleDataConnector.d.ts +2 -6
- package/lib/esm/bundle/bundleDataConnector.js +26 -49
- package/lib/esm/execution/executionApp.d.ts +16 -15
- package/lib/esm/execution/executionApp.js +364 -321
- package/lib/esm/execution/executionBase.d.ts +7 -7
- package/lib/esm/execution/executionBase.js +27 -13
- package/lib/esm/execution/executionDataConnector.d.ts +6 -3
- package/lib/esm/execution/executionDataConnector.js +128 -69
- package/lib/esm/index.d.ts +7 -7
- package/lib/esm/index.js +4 -4
- package/lib/esm/types.d.ts +20 -24
- package/lib/esm/types.js +5 -5
- package/lib/esm/utils/blockFinder.d.ts +2 -2
- package/lib/esm/utils/blockFinder.js +3 -3
- package/lib/esm/utils/consts.js +39 -39
- package/lib/esm/utils/pluginManager.d.ts +1 -1
- package/lib/esm/utils/pluginManager.js +6 -5
- package/lib/esm/utils/replace-old-subgraphs.js +79 -61
- package/lib/esm/utils/rpc.d.ts +4 -0
- package/lib/esm/utils/rpc.js +32 -0
- package/lib/esm/utils/utils.d.ts +8 -11
- package/lib/esm/utils/utils.js +61 -55
- package/lib/execution/executionApp.d.ts +16 -15
- package/lib/execution/executionApp.js +353 -315
- package/lib/execution/executionBase.d.ts +7 -7
- package/lib/execution/executionBase.js +27 -13
- package/lib/execution/executionDataConnector.d.ts +6 -3
- package/lib/execution/executionDataConnector.js +130 -64
- package/lib/index.d.ts +7 -7
- package/lib/index.js +1 -1
- package/lib/types.d.ts +20 -24
- package/lib/types.js +5 -5
- package/lib/utils/blockFinder.d.ts +2 -2
- package/lib/utils/blockFinder.js +3 -3
- package/lib/utils/consts.js +39 -39
- package/lib/utils/pluginManager.d.ts +1 -1
- package/lib/utils/pluginManager.js +5 -4
- package/lib/utils/replace-old-subgraphs.js +79 -61
- package/lib/utils/rpc.d.ts +4 -0
- package/lib/utils/rpc.js +47 -0
- package/lib/utils/utils.d.ts +8 -11
- package/lib/utils/utils.js +55 -60
- package/package.json +15 -15
|
@@ -16,42 +16,40 @@ const utils_js_1 = require("../utils/utils.js");
|
|
|
16
16
|
const executionBase_js_1 = require("./executionBase.js");
|
|
17
17
|
class ExecutionApp extends executionBase_js_1.ExecutionBase {
|
|
18
18
|
constructor(config) {
|
|
19
|
-
var _a;
|
|
19
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p;
|
|
20
20
|
super((_a = config.maxRetries) !== null && _a !== void 0 ? _a : 3);
|
|
21
|
-
this.getSlot0 = (pool, currentExecutionContext, provider
|
|
21
|
+
this.getSlot0 = (pool, currentExecutionContext, provider) => __awaiter(this, void 0, void 0, function* () {
|
|
22
22
|
const slot0Abi = [
|
|
23
23
|
{
|
|
24
24
|
inputs: [],
|
|
25
|
-
name:
|
|
25
|
+
name: "slot0",
|
|
26
26
|
outputs: [
|
|
27
|
-
{ internalType:
|
|
28
|
-
{ internalType:
|
|
29
|
-
{ internalType:
|
|
27
|
+
{ internalType: "uint160", name: "sqrtPriceX96", type: "uint160" },
|
|
28
|
+
{ internalType: "int24", name: "tick", type: "int24" },
|
|
29
|
+
{ internalType: "uint16", name: "observationIndex", type: "uint16" },
|
|
30
30
|
{
|
|
31
|
-
internalType:
|
|
32
|
-
name:
|
|
33
|
-
type:
|
|
31
|
+
internalType: "uint16",
|
|
32
|
+
name: "observationCardinality",
|
|
33
|
+
type: "uint16",
|
|
34
34
|
},
|
|
35
35
|
{
|
|
36
|
-
internalType:
|
|
37
|
-
name:
|
|
38
|
-
type:
|
|
36
|
+
internalType: "uint16",
|
|
37
|
+
name: "observationCardinalityNext",
|
|
38
|
+
type: "uint16",
|
|
39
39
|
},
|
|
40
|
-
{ internalType:
|
|
41
|
-
{ internalType:
|
|
40
|
+
{ internalType: "uint8", name: "feeProtocol", type: "uint8" },
|
|
41
|
+
{ internalType: "bool", name: "unlocked", type: "bool" },
|
|
42
42
|
],
|
|
43
|
-
stateMutability:
|
|
44
|
-
type:
|
|
43
|
+
stateMutability: "view",
|
|
44
|
+
type: "function",
|
|
45
45
|
},
|
|
46
46
|
];
|
|
47
47
|
const slot0 = yield (0, utils_js_1.readContract)({
|
|
48
48
|
address: pool,
|
|
49
49
|
abi: slot0Abi,
|
|
50
50
|
currentExecutionContext,
|
|
51
|
-
functionName:
|
|
51
|
+
functionName: "slot0",
|
|
52
52
|
provider,
|
|
53
|
-
rpc,
|
|
54
|
-
chainId: this.chainId,
|
|
55
53
|
});
|
|
56
54
|
return {
|
|
57
55
|
sqrtPriceX96: slot0[0],
|
|
@@ -63,55 +61,53 @@ class ExecutionApp extends executionBase_js_1.ExecutionBase {
|
|
|
63
61
|
unlocked: slot0[6],
|
|
64
62
|
};
|
|
65
63
|
});
|
|
66
|
-
this.getSlot0Aerodrome = (pool, currentExecutionContext, provider
|
|
64
|
+
this.getSlot0Aerodrome = (pool, currentExecutionContext, provider) => __awaiter(this, void 0, void 0, function* () {
|
|
67
65
|
const slot0Abi = [
|
|
68
66
|
{
|
|
69
67
|
inputs: [],
|
|
70
|
-
name:
|
|
68
|
+
name: "slot0",
|
|
71
69
|
outputs: [
|
|
72
70
|
{
|
|
73
|
-
internalType:
|
|
74
|
-
name:
|
|
75
|
-
type:
|
|
71
|
+
internalType: "uint160",
|
|
72
|
+
name: "sqrtPriceX96",
|
|
73
|
+
type: "uint160",
|
|
76
74
|
},
|
|
77
75
|
{
|
|
78
|
-
internalType:
|
|
79
|
-
name:
|
|
80
|
-
type:
|
|
76
|
+
internalType: "int24",
|
|
77
|
+
name: "tick",
|
|
78
|
+
type: "int24",
|
|
81
79
|
},
|
|
82
80
|
{
|
|
83
|
-
internalType:
|
|
84
|
-
name:
|
|
85
|
-
type:
|
|
81
|
+
internalType: "uint16",
|
|
82
|
+
name: "observationIndex",
|
|
83
|
+
type: "uint16",
|
|
86
84
|
},
|
|
87
85
|
{
|
|
88
|
-
internalType:
|
|
89
|
-
name:
|
|
90
|
-
type:
|
|
86
|
+
internalType: "uint16",
|
|
87
|
+
name: "observationCardinality",
|
|
88
|
+
type: "uint16",
|
|
91
89
|
},
|
|
92
90
|
{
|
|
93
|
-
internalType:
|
|
94
|
-
name:
|
|
95
|
-
type:
|
|
91
|
+
internalType: "uint16",
|
|
92
|
+
name: "observationCardinalityNext",
|
|
93
|
+
type: "uint16",
|
|
96
94
|
},
|
|
97
95
|
{
|
|
98
|
-
internalType:
|
|
99
|
-
name:
|
|
100
|
-
type:
|
|
96
|
+
internalType: "bool",
|
|
97
|
+
name: "unlocked",
|
|
98
|
+
type: "bool",
|
|
101
99
|
},
|
|
102
100
|
],
|
|
103
|
-
stateMutability:
|
|
104
|
-
type:
|
|
101
|
+
stateMutability: "view",
|
|
102
|
+
type: "function",
|
|
105
103
|
},
|
|
106
104
|
];
|
|
107
105
|
const slot0 = yield (0, utils_js_1.readContract)({
|
|
108
106
|
address: pool,
|
|
109
107
|
abi: slot0Abi,
|
|
110
108
|
currentExecutionContext,
|
|
111
|
-
functionName:
|
|
109
|
+
functionName: "slot0",
|
|
112
110
|
provider,
|
|
113
|
-
rpc,
|
|
114
|
-
chainId: this.chainId,
|
|
115
111
|
});
|
|
116
112
|
return {
|
|
117
113
|
sqrtPriceX96: slot0[0],
|
|
@@ -126,317 +122,315 @@ class ExecutionApp extends executionBase_js_1.ExecutionBase {
|
|
|
126
122
|
if (this.isAlgebraIntegralPool) {
|
|
127
123
|
return {
|
|
128
124
|
inputs: [],
|
|
129
|
-
name:
|
|
125
|
+
name: "globalState",
|
|
130
126
|
outputs: [
|
|
131
127
|
{
|
|
132
|
-
internalType:
|
|
133
|
-
name:
|
|
134
|
-
type:
|
|
128
|
+
internalType: "uint160",
|
|
129
|
+
name: "price",
|
|
130
|
+
type: "uint160",
|
|
135
131
|
},
|
|
136
132
|
{
|
|
137
|
-
internalType:
|
|
138
|
-
name:
|
|
139
|
-
type:
|
|
133
|
+
internalType: "int24",
|
|
134
|
+
name: "tick",
|
|
135
|
+
type: "int24",
|
|
140
136
|
},
|
|
141
137
|
{
|
|
142
|
-
internalType:
|
|
143
|
-
name:
|
|
144
|
-
type:
|
|
138
|
+
internalType: "uint16",
|
|
139
|
+
name: "lastFee",
|
|
140
|
+
type: "uint16",
|
|
145
141
|
},
|
|
146
142
|
{
|
|
147
|
-
internalType:
|
|
148
|
-
name:
|
|
149
|
-
type:
|
|
143
|
+
internalType: "uint8",
|
|
144
|
+
name: "pluginConfig",
|
|
145
|
+
type: "uint8",
|
|
150
146
|
},
|
|
151
147
|
{
|
|
152
|
-
internalType:
|
|
153
|
-
name:
|
|
154
|
-
type:
|
|
148
|
+
internalType: "uint16",
|
|
149
|
+
name: "communityFee",
|
|
150
|
+
type: "uint16",
|
|
155
151
|
},
|
|
156
152
|
{
|
|
157
|
-
internalType:
|
|
158
|
-
name:
|
|
159
|
-
type:
|
|
153
|
+
internalType: "bool",
|
|
154
|
+
name: "unlocked",
|
|
155
|
+
type: "bool",
|
|
160
156
|
},
|
|
161
157
|
],
|
|
162
|
-
stateMutability:
|
|
163
|
-
type:
|
|
158
|
+
stateMutability: "view",
|
|
159
|
+
type: "function",
|
|
164
160
|
};
|
|
165
161
|
}
|
|
166
162
|
else if (this.isDirectionalPool) {
|
|
167
163
|
return {
|
|
168
164
|
inputs: [],
|
|
169
|
-
name:
|
|
165
|
+
name: "globalState",
|
|
170
166
|
outputs: [
|
|
171
167
|
{
|
|
172
|
-
internalType:
|
|
173
|
-
name:
|
|
174
|
-
type:
|
|
168
|
+
internalType: "uint160",
|
|
169
|
+
name: "price",
|
|
170
|
+
type: "uint160",
|
|
175
171
|
},
|
|
176
172
|
{
|
|
177
|
-
internalType:
|
|
178
|
-
name:
|
|
179
|
-
type:
|
|
173
|
+
internalType: "int24",
|
|
174
|
+
name: "tick",
|
|
175
|
+
type: "int24",
|
|
180
176
|
},
|
|
181
177
|
{
|
|
182
|
-
internalType:
|
|
183
|
-
name:
|
|
184
|
-
type:
|
|
178
|
+
internalType: "uint16",
|
|
179
|
+
name: "feeZto",
|
|
180
|
+
type: "uint16",
|
|
185
181
|
},
|
|
186
182
|
{
|
|
187
|
-
internalType:
|
|
188
|
-
name:
|
|
189
|
-
type:
|
|
183
|
+
internalType: "uint16",
|
|
184
|
+
name: "feeOtz",
|
|
185
|
+
type: "uint16",
|
|
190
186
|
},
|
|
191
187
|
{
|
|
192
|
-
internalType:
|
|
193
|
-
name:
|
|
194
|
-
type:
|
|
188
|
+
internalType: "uint16",
|
|
189
|
+
name: "timepointIndex",
|
|
190
|
+
type: "uint16",
|
|
195
191
|
},
|
|
196
192
|
{
|
|
197
|
-
internalType:
|
|
198
|
-
name:
|
|
199
|
-
type:
|
|
193
|
+
internalType: "uint8",
|
|
194
|
+
name: "communityFeeToken0",
|
|
195
|
+
type: "uint8",
|
|
200
196
|
},
|
|
201
197
|
{
|
|
202
|
-
internalType:
|
|
203
|
-
name:
|
|
204
|
-
type:
|
|
198
|
+
internalType: "uint8",
|
|
199
|
+
name: "communityFeeToken1",
|
|
200
|
+
type: "uint8",
|
|
205
201
|
},
|
|
206
202
|
{
|
|
207
|
-
internalType:
|
|
208
|
-
name:
|
|
209
|
-
type:
|
|
203
|
+
internalType: "bool",
|
|
204
|
+
name: "unlocked",
|
|
205
|
+
type: "bool",
|
|
210
206
|
},
|
|
211
207
|
],
|
|
212
|
-
stateMutability:
|
|
213
|
-
type:
|
|
208
|
+
stateMutability: "view",
|
|
209
|
+
type: "function",
|
|
214
210
|
};
|
|
215
211
|
}
|
|
216
212
|
else if (this.isPoolSharkPool) {
|
|
217
213
|
return {
|
|
218
214
|
inputs: [],
|
|
219
|
-
name:
|
|
215
|
+
name: "globalState",
|
|
220
216
|
outputs: [
|
|
221
217
|
{
|
|
222
218
|
components: [
|
|
223
219
|
{
|
|
224
220
|
components: [
|
|
225
221
|
{
|
|
226
|
-
internalType:
|
|
227
|
-
name:
|
|
228
|
-
type:
|
|
222
|
+
internalType: "uint16",
|
|
223
|
+
name: "index",
|
|
224
|
+
type: "uint16",
|
|
229
225
|
},
|
|
230
226
|
{
|
|
231
|
-
internalType:
|
|
232
|
-
name:
|
|
233
|
-
type:
|
|
227
|
+
internalType: "uint16",
|
|
228
|
+
name: "count",
|
|
229
|
+
type: "uint16",
|
|
234
230
|
},
|
|
235
231
|
{
|
|
236
|
-
internalType:
|
|
237
|
-
name:
|
|
238
|
-
type:
|
|
232
|
+
internalType: "uint16",
|
|
233
|
+
name: "countMax",
|
|
234
|
+
type: "uint16",
|
|
239
235
|
},
|
|
240
236
|
],
|
|
241
|
-
internalType:
|
|
242
|
-
name:
|
|
243
|
-
type:
|
|
237
|
+
internalType: "struct PoolsharkStructs.SampleState",
|
|
238
|
+
name: "samples",
|
|
239
|
+
type: "tuple",
|
|
244
240
|
},
|
|
245
241
|
{
|
|
246
|
-
internalType:
|
|
247
|
-
name:
|
|
248
|
-
type:
|
|
242
|
+
internalType: "uint200",
|
|
243
|
+
name: "feeGrowthGlobal0",
|
|
244
|
+
type: "uint200",
|
|
249
245
|
},
|
|
250
246
|
{
|
|
251
|
-
internalType:
|
|
252
|
-
name:
|
|
253
|
-
type:
|
|
247
|
+
internalType: "uint200",
|
|
248
|
+
name: "feeGrowthGlobal1",
|
|
249
|
+
type: "uint200",
|
|
254
250
|
},
|
|
255
251
|
{
|
|
256
|
-
internalType:
|
|
257
|
-
name:
|
|
258
|
-
type:
|
|
252
|
+
internalType: "uint160",
|
|
253
|
+
name: "secondsPerLiquidityAccum",
|
|
254
|
+
type: "uint160",
|
|
259
255
|
},
|
|
260
256
|
{
|
|
261
|
-
internalType:
|
|
262
|
-
name:
|
|
263
|
-
type:
|
|
257
|
+
internalType: "uint160",
|
|
258
|
+
name: "price",
|
|
259
|
+
type: "uint160",
|
|
264
260
|
},
|
|
265
261
|
{
|
|
266
|
-
internalType:
|
|
267
|
-
name:
|
|
268
|
-
type:
|
|
262
|
+
internalType: "uint128",
|
|
263
|
+
name: "liquidity",
|
|
264
|
+
type: "uint128",
|
|
269
265
|
},
|
|
270
266
|
{
|
|
271
|
-
internalType:
|
|
272
|
-
name:
|
|
273
|
-
type:
|
|
267
|
+
internalType: "int56",
|
|
268
|
+
name: "tickSecondsAccum",
|
|
269
|
+
type: "int56",
|
|
274
270
|
},
|
|
275
271
|
{
|
|
276
|
-
internalType:
|
|
277
|
-
name:
|
|
278
|
-
type:
|
|
272
|
+
internalType: "int24",
|
|
273
|
+
name: "tickAtPrice",
|
|
274
|
+
type: "int24",
|
|
279
275
|
},
|
|
280
276
|
{
|
|
281
|
-
internalType:
|
|
282
|
-
name:
|
|
283
|
-
type:
|
|
277
|
+
internalType: "uint16",
|
|
278
|
+
name: "protocolSwapFee0",
|
|
279
|
+
type: "uint16",
|
|
284
280
|
},
|
|
285
281
|
{
|
|
286
|
-
internalType:
|
|
287
|
-
name:
|
|
288
|
-
type:
|
|
282
|
+
internalType: "uint16",
|
|
283
|
+
name: "protocolSwapFee1",
|
|
284
|
+
type: "uint16",
|
|
289
285
|
},
|
|
290
286
|
],
|
|
291
|
-
internalType:
|
|
292
|
-
name:
|
|
293
|
-
type:
|
|
287
|
+
internalType: "struct PoolsharkStructs.RangePoolState",
|
|
288
|
+
name: "pool",
|
|
289
|
+
type: "tuple",
|
|
294
290
|
},
|
|
295
291
|
{
|
|
296
292
|
components: [
|
|
297
293
|
{
|
|
298
|
-
internalType:
|
|
299
|
-
name:
|
|
300
|
-
type:
|
|
294
|
+
internalType: "uint160",
|
|
295
|
+
name: "price",
|
|
296
|
+
type: "uint160",
|
|
301
297
|
},
|
|
302
298
|
{
|
|
303
|
-
internalType:
|
|
304
|
-
name:
|
|
305
|
-
type:
|
|
299
|
+
internalType: "uint128",
|
|
300
|
+
name: "liquidity",
|
|
301
|
+
type: "uint128",
|
|
306
302
|
},
|
|
307
303
|
{
|
|
308
|
-
internalType:
|
|
309
|
-
name:
|
|
310
|
-
type:
|
|
304
|
+
internalType: "uint128",
|
|
305
|
+
name: "protocolFees",
|
|
306
|
+
type: "uint128",
|
|
311
307
|
},
|
|
312
308
|
{
|
|
313
|
-
internalType:
|
|
314
|
-
name:
|
|
315
|
-
type:
|
|
309
|
+
internalType: "uint16",
|
|
310
|
+
name: "protocolFillFee",
|
|
311
|
+
type: "uint16",
|
|
316
312
|
},
|
|
317
313
|
{
|
|
318
|
-
internalType:
|
|
319
|
-
name:
|
|
320
|
-
type:
|
|
314
|
+
internalType: "int24",
|
|
315
|
+
name: "tickAtPrice",
|
|
316
|
+
type: "int24",
|
|
321
317
|
},
|
|
322
318
|
],
|
|
323
|
-
internalType:
|
|
324
|
-
name:
|
|
325
|
-
type:
|
|
319
|
+
internalType: "struct PoolsharkStructs.LimitPoolState",
|
|
320
|
+
name: "pool0",
|
|
321
|
+
type: "tuple",
|
|
326
322
|
},
|
|
327
323
|
{
|
|
328
324
|
components: [
|
|
329
325
|
{
|
|
330
|
-
internalType:
|
|
331
|
-
name:
|
|
332
|
-
type:
|
|
326
|
+
internalType: "uint160",
|
|
327
|
+
name: "price",
|
|
328
|
+
type: "uint160",
|
|
333
329
|
},
|
|
334
330
|
{
|
|
335
|
-
internalType:
|
|
336
|
-
name:
|
|
337
|
-
type:
|
|
331
|
+
internalType: "uint128",
|
|
332
|
+
name: "liquidity",
|
|
333
|
+
type: "uint128",
|
|
338
334
|
},
|
|
339
335
|
{
|
|
340
|
-
internalType:
|
|
341
|
-
name:
|
|
342
|
-
type:
|
|
336
|
+
internalType: "uint128",
|
|
337
|
+
name: "protocolFees",
|
|
338
|
+
type: "uint128",
|
|
343
339
|
},
|
|
344
340
|
{
|
|
345
|
-
internalType:
|
|
346
|
-
name:
|
|
347
|
-
type:
|
|
341
|
+
internalType: "uint16",
|
|
342
|
+
name: "protocolFillFee",
|
|
343
|
+
type: "uint16",
|
|
348
344
|
},
|
|
349
345
|
{
|
|
350
|
-
internalType:
|
|
351
|
-
name:
|
|
352
|
-
type:
|
|
346
|
+
internalType: "int24",
|
|
347
|
+
name: "tickAtPrice",
|
|
348
|
+
type: "int24",
|
|
353
349
|
},
|
|
354
350
|
],
|
|
355
|
-
internalType:
|
|
356
|
-
name:
|
|
357
|
-
type:
|
|
351
|
+
internalType: "struct PoolsharkStructs.LimitPoolState",
|
|
352
|
+
name: "pool1",
|
|
353
|
+
type: "tuple",
|
|
358
354
|
},
|
|
359
355
|
{
|
|
360
|
-
internalType:
|
|
361
|
-
name:
|
|
362
|
-
type:
|
|
356
|
+
internalType: "uint128",
|
|
357
|
+
name: "liquidityGlobal",
|
|
358
|
+
type: "uint128",
|
|
363
359
|
},
|
|
364
360
|
{
|
|
365
|
-
internalType:
|
|
366
|
-
name:
|
|
367
|
-
type:
|
|
361
|
+
internalType: "uint32",
|
|
362
|
+
name: "positionIdNext",
|
|
363
|
+
type: "uint32",
|
|
368
364
|
},
|
|
369
365
|
{
|
|
370
|
-
internalType:
|
|
371
|
-
name:
|
|
372
|
-
type:
|
|
366
|
+
internalType: "uint32",
|
|
367
|
+
name: "epoch",
|
|
368
|
+
type: "uint32",
|
|
373
369
|
},
|
|
374
370
|
{
|
|
375
|
-
internalType:
|
|
376
|
-
name:
|
|
377
|
-
type:
|
|
371
|
+
internalType: "uint8",
|
|
372
|
+
name: "unlocked",
|
|
373
|
+
type: "uint8",
|
|
378
374
|
},
|
|
379
375
|
],
|
|
380
|
-
stateMutability:
|
|
381
|
-
type:
|
|
376
|
+
stateMutability: "view",
|
|
377
|
+
type: "function",
|
|
382
378
|
};
|
|
383
379
|
}
|
|
384
380
|
else {
|
|
385
381
|
return {
|
|
386
382
|
inputs: [],
|
|
387
|
-
name:
|
|
383
|
+
name: "globalState",
|
|
388
384
|
outputs: [
|
|
389
385
|
{
|
|
390
|
-
internalType:
|
|
391
|
-
name:
|
|
392
|
-
type:
|
|
386
|
+
internalType: "uint160",
|
|
387
|
+
name: "price",
|
|
388
|
+
type: "uint160",
|
|
393
389
|
},
|
|
394
390
|
{
|
|
395
|
-
internalType:
|
|
396
|
-
name:
|
|
397
|
-
type:
|
|
391
|
+
internalType: "int24",
|
|
392
|
+
name: "tick",
|
|
393
|
+
type: "int24",
|
|
398
394
|
},
|
|
399
395
|
{
|
|
400
|
-
internalType:
|
|
401
|
-
name:
|
|
402
|
-
type:
|
|
396
|
+
internalType: "int24",
|
|
397
|
+
name: "prevInitializedTick",
|
|
398
|
+
type: "int24",
|
|
403
399
|
},
|
|
404
400
|
{
|
|
405
|
-
internalType:
|
|
406
|
-
name:
|
|
407
|
-
type:
|
|
401
|
+
internalType: "uint16",
|
|
402
|
+
name: "fee",
|
|
403
|
+
type: "uint16",
|
|
408
404
|
},
|
|
409
405
|
{
|
|
410
|
-
internalType:
|
|
411
|
-
name:
|
|
412
|
-
type:
|
|
406
|
+
internalType: "uint16",
|
|
407
|
+
name: "timepointIndex",
|
|
408
|
+
type: "uint16",
|
|
413
409
|
},
|
|
414
410
|
{
|
|
415
|
-
internalType:
|
|
416
|
-
name:
|
|
417
|
-
type:
|
|
411
|
+
internalType: "uint8",
|
|
412
|
+
name: "communityFee",
|
|
413
|
+
type: "uint8",
|
|
418
414
|
},
|
|
419
415
|
{
|
|
420
|
-
internalType:
|
|
421
|
-
name:
|
|
422
|
-
type:
|
|
416
|
+
internalType: "bool",
|
|
417
|
+
name: "unlocked",
|
|
418
|
+
type: "bool",
|
|
423
419
|
},
|
|
424
420
|
],
|
|
425
|
-
stateMutability:
|
|
426
|
-
type:
|
|
421
|
+
stateMutability: "view",
|
|
422
|
+
type: "function",
|
|
427
423
|
};
|
|
428
424
|
}
|
|
429
425
|
};
|
|
430
|
-
this.getGlobalState = (pool, currentExecutionContext, provider
|
|
426
|
+
this.getGlobalState = (pool, currentExecutionContext, provider) => __awaiter(this, void 0, void 0, function* () {
|
|
431
427
|
const slot0Abi = [this.getGlobalStateAbi()];
|
|
432
428
|
const slot0 = yield (0, utils_js_1.readContract)({
|
|
433
429
|
address: pool,
|
|
434
430
|
abi: slot0Abi,
|
|
435
431
|
currentExecutionContext,
|
|
436
|
-
functionName:
|
|
432
|
+
functionName: "globalState",
|
|
437
433
|
provider,
|
|
438
|
-
rpc,
|
|
439
|
-
chainId: this.chainId,
|
|
440
434
|
});
|
|
441
435
|
if (this.isPoolSharkPool) {
|
|
442
436
|
return {
|
|
@@ -470,31 +464,38 @@ class ExecutionApp extends executionBase_js_1.ExecutionBase {
|
|
|
470
464
|
};
|
|
471
465
|
});
|
|
472
466
|
this.vault = config.vault;
|
|
473
|
-
this.steerSubgraph = config.steerSubgraph;
|
|
467
|
+
this.steerSubgraph = (_b = config.steerSubgraph) !== null && _b !== void 0 ? _b : "";
|
|
474
468
|
this.chainId = config.chainId;
|
|
475
|
-
this.isAlgebraPool = config.poolType.isAlgebraPool;
|
|
476
|
-
this.isAlgebraIntegralPool =
|
|
477
|
-
|
|
478
|
-
this.
|
|
479
|
-
this.
|
|
480
|
-
this.
|
|
481
|
-
this.sentioApiKey = config.apiKeys.sentioApiKey;
|
|
469
|
+
this.isAlgebraPool = (_d = (_c = config.poolType) === null || _c === void 0 ? void 0 : _c.isAlgebraPool) !== null && _d !== void 0 ? _d : false;
|
|
470
|
+
this.isAlgebraIntegralPool =
|
|
471
|
+
(_f = (_e = config.poolType) === null || _e === void 0 ? void 0 : _e.isAlgebraIntegralPool) !== null && _f !== void 0 ? _f : false;
|
|
472
|
+
this.isDirectionalPool = (_h = (_g = config.poolType) === null || _g === void 0 ? void 0 : _g.isDirectionalPool) !== null && _h !== void 0 ? _h : false;
|
|
473
|
+
this.isPoolSharkPool = (_k = (_j = config.poolType) === null || _j === void 0 ? void 0 : _j.isPoolSharkPool) !== null && _k !== void 0 ? _k : false;
|
|
474
|
+
this.isAerodromePool = (_m = (_l = config.poolType) === null || _l === void 0 ? void 0 : _l.isAerodromePool) !== null && _m !== void 0 ? _m : false;
|
|
475
|
+
this.sentioApiKey = (_p = (_o = config.apiKeys) === null || _o === void 0 ? void 0 : _o.sentioApiKey) !== null && _p !== void 0 ? _p : "";
|
|
482
476
|
this.config = config;
|
|
483
477
|
}
|
|
484
|
-
execute(_wasmFile, _vaultConfig, _data,
|
|
478
|
+
execute(_wasmFile, _vaultConfig, _data, rpc, forceDeposit) {
|
|
485
479
|
return __awaiter(this, void 0, void 0, function* () {
|
|
486
|
-
|
|
480
|
+
if (!this.config.poolType) {
|
|
481
|
+
throw new Error("poolType is required by execute() for pool discovery.");
|
|
482
|
+
}
|
|
483
|
+
if (!this.steerSubgraph.trim()) {
|
|
484
|
+
throw new Error("steerSubgraph is required by execute() for pool discovery.");
|
|
485
|
+
}
|
|
486
|
+
const dataConnector = new bundleDataConnector_js_1.DataConnector({
|
|
487
|
+
wasmFile: _wasmFile,
|
|
488
|
+
config: _vaultConfig,
|
|
489
|
+
executionConfig: this.config,
|
|
490
|
+
rpc,
|
|
491
|
+
});
|
|
487
492
|
yield dataConnector.loadSync();
|
|
488
493
|
const executionContext = yield this.getExecutionContext(dataConnector, JSON.parse(_vaultConfig));
|
|
489
|
-
|
|
490
|
-
if (_etherRpcConfig) {
|
|
491
|
-
rpc = _etherRpcConfig[this.chainId.toString()].url;
|
|
492
|
-
}
|
|
493
|
-
const smartPoolExecutionContext = yield this.getSmartPoolExecutionContext(executionContext, dataConnector, JSON.parse(_vaultConfig), rpc);
|
|
494
|
+
const smartPoolExecutionContext = yield this.getSmartPoolExecutionContext(executionContext, dataConnector, JSON.parse(_vaultConfig));
|
|
494
495
|
dataConnector.setExecutionContextStrategyExecution(Object.assign(Object.assign({}, executionContext), smartPoolExecutionContext), forceDeposit);
|
|
495
496
|
_data = _data.map((element) => JSON.stringify(element));
|
|
496
497
|
const result = yield dataConnector.executeBundle(_data);
|
|
497
|
-
return
|
|
498
|
+
return this.parseStrategyResult(result);
|
|
498
499
|
});
|
|
499
500
|
}
|
|
500
501
|
/**
|
|
@@ -505,14 +506,18 @@ class ExecutionApp extends executionBase_js_1.ExecutionBase {
|
|
|
505
506
|
executeWithContext(options) {
|
|
506
507
|
return __awaiter(this, void 0, void 0, function* () {
|
|
507
508
|
const vaultConfig = this.parseVaultConfig(options.vaultConfig);
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
const dataConnector = new bundleDataConnector_js_1.DataConnector(
|
|
509
|
+
this.validateExecutionContext(options.executionContext, vaultConfig);
|
|
510
|
+
const executionContext = Object.assign(Object.assign({}, options.executionContext), { positions: options.executionContext.positions.map((position) => (Object.assign({}, position))) });
|
|
511
|
+
const dataConnector = new bundleDataConnector_js_1.DataConnector({
|
|
512
|
+
wasmFile: options.wasmFile,
|
|
513
|
+
config: options.vaultConfig,
|
|
514
|
+
executionConfig: this.config,
|
|
515
|
+
});
|
|
511
516
|
try {
|
|
512
517
|
yield dataConnector.loadSync();
|
|
513
518
|
dataConnector.initializeStrategyWithContext(executionContext, options.forceDeposit);
|
|
514
519
|
const result = yield dataConnector.executeBundle(options.data.map((item) => JSON.stringify(item)));
|
|
515
|
-
return
|
|
520
|
+
return this.parseStrategyResult(result);
|
|
516
521
|
}
|
|
517
522
|
catch (error) {
|
|
518
523
|
if (error instanceof types_js_1.ExecutionContextError)
|
|
@@ -521,18 +526,29 @@ class ExecutionApp extends executionBase_js_1.ExecutionBase {
|
|
|
521
526
|
}
|
|
522
527
|
});
|
|
523
528
|
}
|
|
529
|
+
/** T is the complete decoded JSON result. Only the exact sentinel skips JSON decoding. */
|
|
530
|
+
parseStrategyResult(result) {
|
|
531
|
+
if (result === "continue")
|
|
532
|
+
return result;
|
|
533
|
+
try {
|
|
534
|
+
return JSON.parse(result);
|
|
535
|
+
}
|
|
536
|
+
catch (error) {
|
|
537
|
+
throw new types_js_1.StrategyExecutionError(this.redactError(error));
|
|
538
|
+
}
|
|
539
|
+
}
|
|
524
540
|
parseVaultConfig(vaultConfig) {
|
|
525
541
|
try {
|
|
526
542
|
return JSON.parse(vaultConfig);
|
|
527
543
|
}
|
|
528
544
|
catch (_a) {
|
|
529
|
-
throw new types_js_1.ExecutionContextError(
|
|
545
|
+
throw new types_js_1.ExecutionContextError("INVALID_EXECUTION_CONTEXT", "vaultConfig must be valid JSON.");
|
|
530
546
|
}
|
|
531
547
|
}
|
|
532
548
|
validateExecutionContext(context, vaultConfig) {
|
|
533
549
|
var _a;
|
|
534
|
-
if (!context || typeof context !==
|
|
535
|
-
throw new types_js_1.ExecutionContextError(
|
|
550
|
+
if (!context || typeof context !== "object") {
|
|
551
|
+
throw new types_js_1.ExecutionContextError("INVALID_EXECUTION_CONTEXT", "An execution context is required.");
|
|
536
552
|
}
|
|
537
553
|
if (!Number.isSafeInteger(context.chainId) ||
|
|
538
554
|
!Number.isSafeInteger(context.blockNumber) ||
|
|
@@ -546,68 +562,80 @@ class ExecutionApp extends executionBase_js_1.ExecutionBase {
|
|
|
546
562
|
!Number.isFinite(context.blockTime) ||
|
|
547
563
|
!Number.isInteger(context.currentTick) ||
|
|
548
564
|
!Number.isInteger(context.tickSpacing) ||
|
|
549
|
-
typeof context.vaultAddress !==
|
|
565
|
+
typeof context.vaultAddress !== "string" ||
|
|
550
566
|
context.vaultAddress.length === 0 ||
|
|
551
|
-
typeof context.totalAmount0 !==
|
|
567
|
+
typeof context.totalAmount0 !== "string" ||
|
|
552
568
|
!/^\d+$/.test(context.totalAmount0) ||
|
|
553
|
-
typeof context.totalAmount1 !==
|
|
569
|
+
typeof context.totalAmount1 !== "string" ||
|
|
554
570
|
!/^\d+$/.test(context.totalAmount1) ||
|
|
555
571
|
!Array.isArray(context.positions) ||
|
|
556
572
|
!Number.isFinite(context.lastExecutionTime) ||
|
|
557
573
|
context.lastExecutionTime < 0) {
|
|
558
|
-
throw new types_js_1.ExecutionContextError(
|
|
574
|
+
throw new types_js_1.ExecutionContextError("INVALID_EXECUTION_CONTEXT", "Execution context is malformed.");
|
|
559
575
|
}
|
|
560
576
|
const sameAddress = (left, right) => (left === null || left === void 0 ? void 0 : left.toLowerCase()) === (right === null || right === void 0 ? void 0 : right.toLowerCase());
|
|
561
577
|
if (!sameAddress(this.vault, context.vaultAddress) ||
|
|
562
578
|
!sameAddress(vaultConfig.vaultAddress, context.vaultAddress)) {
|
|
563
|
-
throw new types_js_1.ExecutionContextError(
|
|
579
|
+
throw new types_js_1.ExecutionContextError("EXECUTION_CONTEXT_MISMATCH", "Supplied context vault does not match the execution request.");
|
|
564
580
|
}
|
|
565
581
|
if (this.chainId !== context.chainId ||
|
|
566
|
-
(vaultConfig.chainId !== undefined &&
|
|
567
|
-
|
|
582
|
+
(vaultConfig.chainId !== undefined &&
|
|
583
|
+
Number(vaultConfig.chainId) !== context.chainId)) {
|
|
584
|
+
throw new types_js_1.ExecutionContextError("EXECUTION_CONTEXT_MISMATCH", "Supplied context chain does not match the execution request.");
|
|
568
585
|
}
|
|
569
586
|
if (vaultConfig.anchorBlockNumber !== undefined &&
|
|
570
587
|
String(vaultConfig.anchorBlockNumber) !== String(context.blockNumber)) {
|
|
571
|
-
throw new types_js_1.ExecutionContextError(
|
|
588
|
+
throw new types_js_1.ExecutionContextError("EXECUTION_CONTEXT_MISMATCH", "Supplied context block does not match anchorBlockNumber.");
|
|
572
589
|
}
|
|
573
|
-
if (Number((_a = vaultConfig.strategyConfigData) === null || _a === void 0 ? void 0 : _a.epochLength) !==
|
|
574
|
-
|
|
590
|
+
if (Number((_a = vaultConfig.strategyConfigData) === null || _a === void 0 ? void 0 : _a.epochLength) !==
|
|
591
|
+
context.epochLength) {
|
|
592
|
+
throw new types_js_1.ExecutionContextError("EXECUTION_CONTEXT_MISMATCH", "Supplied context epoch length does not match vaultConfig.");
|
|
575
593
|
}
|
|
576
594
|
for (const position of context.positions) {
|
|
577
595
|
if (!position ||
|
|
578
596
|
!Number.isInteger(position.startTick) ||
|
|
579
597
|
!Number.isInteger(position.endTick) ||
|
|
580
598
|
!Number.isFinite(position.weight)) {
|
|
581
|
-
throw new types_js_1.ExecutionContextError(
|
|
599
|
+
throw new types_js_1.ExecutionContextError("INVALID_EXECUTION_CONTEXT", "Execution context contains an invalid position.");
|
|
582
600
|
}
|
|
583
601
|
}
|
|
584
602
|
}
|
|
585
603
|
redactError(error) {
|
|
586
604
|
const message = error instanceof Error ? error.message : String(error);
|
|
587
605
|
return message
|
|
588
|
-
.replace(/https?:\/\/[^\s@/]+(?::[^\s@/]+)?@/gi,
|
|
589
|
-
.replace(/([?&](?:key|token|api[_-]?key|password)=)[^&\s]+/gi,
|
|
606
|
+
.replace(/https?:\/\/[^\s@/]+(?::[^\s@/]+)?@/gi, "https://[REDACTED]@")
|
|
607
|
+
.replace(/([?&](?:key|token|api[_-]?key|password)=)[^&\s]+/gi, "$1[REDACTED]");
|
|
590
608
|
}
|
|
591
|
-
executeStabilityVault(_wasmFile, _vaultConfig, _data,
|
|
609
|
+
executeStabilityVault(_wasmFile, _vaultConfig, _data, rpc, forceDeposit) {
|
|
592
610
|
return __awaiter(this, void 0, void 0, function* () {
|
|
593
|
-
const dataConnector = new bundleDataConnector_js_1.DataConnector(
|
|
611
|
+
const dataConnector = new bundleDataConnector_js_1.DataConnector({
|
|
612
|
+
wasmFile: _wasmFile,
|
|
613
|
+
config: _vaultConfig,
|
|
614
|
+
executionConfig: this.config,
|
|
615
|
+
rpc,
|
|
616
|
+
});
|
|
594
617
|
yield dataConnector.loadSync();
|
|
595
618
|
const executionContext = yield this.getExecutionContext(dataConnector, JSON.parse(_vaultConfig));
|
|
596
619
|
const dynamicJobExecutionContext = {};
|
|
597
620
|
dataConnector.setExecutionContextStrategyExecution(Object.assign(Object.assign({}, executionContext), dynamicJobExecutionContext), forceDeposit);
|
|
598
621
|
_data = _data.map((element) => JSON.stringify(element));
|
|
599
622
|
const result = yield dataConnector.executeDynamicJobBundle(_data);
|
|
600
|
-
return
|
|
623
|
+
return this.parseStrategyResult(result);
|
|
601
624
|
});
|
|
602
625
|
}
|
|
603
|
-
executeDynamicJobs(_wasmFile, _vaultConfig, _data, _job,
|
|
626
|
+
executeDynamicJobs(_wasmFile, _vaultConfig, _data, _job, rpc, forceDeposit) {
|
|
604
627
|
return __awaiter(this, void 0, void 0, function* () {
|
|
605
|
-
const dataConnector = new bundleDataConnector_js_1.DataConnector(
|
|
628
|
+
const dataConnector = new bundleDataConnector_js_1.DataConnector({
|
|
629
|
+
wasmFile: _wasmFile,
|
|
630
|
+
config: _vaultConfig,
|
|
631
|
+
executionConfig: this.config,
|
|
632
|
+
rpc,
|
|
633
|
+
});
|
|
606
634
|
yield dataConnector.loadSync();
|
|
607
635
|
const executionContext = yield this.getExecutionContext(dataConnector, JSON.parse(_vaultConfig));
|
|
608
636
|
const smartRewardsContractAddress = _job.targetAddresses[0];
|
|
609
637
|
if (!smartRewardsContractAddress) {
|
|
610
|
-
throw new Error(
|
|
638
|
+
throw new Error("Dynamic job must include at least one target address");
|
|
611
639
|
}
|
|
612
640
|
const dynamicJobExecutionContext = {
|
|
613
641
|
smartRewardsContractAddress,
|
|
@@ -615,19 +643,21 @@ class ExecutionApp extends executionBase_js_1.ExecutionBase {
|
|
|
615
643
|
dataConnector.setExecutionContextStrategyExecution(Object.assign(Object.assign({}, executionContext), dynamicJobExecutionContext), forceDeposit);
|
|
616
644
|
_data = _data.map((element) => JSON.stringify(element));
|
|
617
645
|
const result = yield dataConnector.executeDynamicJobBundle(_data);
|
|
618
|
-
return
|
|
646
|
+
return this.parseStrategyResult(result);
|
|
619
647
|
});
|
|
620
648
|
}
|
|
621
|
-
getSmartPoolExecutionContext(currentExecutionContext, dataConnector, vaultConfig
|
|
649
|
+
getSmartPoolExecutionContext(currentExecutionContext, dataConnector, vaultConfig) {
|
|
622
650
|
var _a, _b, _c, _d, _e, _f;
|
|
623
651
|
return __awaiter(this, void 0, void 0, function* () {
|
|
624
652
|
const smartPoolExecutionContext = {};
|
|
625
653
|
const request = {
|
|
626
|
-
method:
|
|
654
|
+
method: "POST",
|
|
627
655
|
url: this.steerSubgraph,
|
|
628
|
-
headers: Object.assign({
|
|
629
|
-
?
|
|
630
|
-
:
|
|
656
|
+
headers: Object.assign({ "Content-Type": !this.steerSubgraph.includes("subgraph-proxy-server")
|
|
657
|
+
? "application/json"
|
|
658
|
+
: "text/plain;charset=UTF-8" }, (this.steerSubgraph.includes("sentio")
|
|
659
|
+
? { "api-key": this.sentioApiKey }
|
|
660
|
+
: {})),
|
|
631
661
|
data: {
|
|
632
662
|
query: `
|
|
633
663
|
{
|
|
@@ -646,13 +676,15 @@ class ExecutionApp extends executionBase_js_1.ExecutionBase {
|
|
|
646
676
|
},
|
|
647
677
|
};
|
|
648
678
|
const response = yield (0, utils_js_1.fetchData)(request, 4);
|
|
649
|
-
this.log(
|
|
679
|
+
this.log("Subgraph response vault positions :", response);
|
|
650
680
|
const requestSnapshot = {
|
|
651
|
-
method:
|
|
681
|
+
method: "POST",
|
|
652
682
|
url: this.steerSubgraph,
|
|
653
|
-
headers: Object.assign({
|
|
654
|
-
?
|
|
655
|
-
:
|
|
683
|
+
headers: Object.assign({ "Content-Type": !this.steerSubgraph.includes("subgraph-proxy-server")
|
|
684
|
+
? "application/json"
|
|
685
|
+
: "text/plain;charset=UTF-8" }, (this.steerSubgraph.includes("sentio")
|
|
686
|
+
? { "api-key": this.sentioApiKey }
|
|
687
|
+
: {})),
|
|
656
688
|
data: {
|
|
657
689
|
query: `
|
|
658
690
|
{
|
|
@@ -668,9 +700,10 @@ class ExecutionApp extends executionBase_js_1.ExecutionBase {
|
|
|
668
700
|
},
|
|
669
701
|
};
|
|
670
702
|
const responseSnapshot = yield (0, utils_js_1.fetchData)(requestSnapshot, 4);
|
|
671
|
-
this.log(
|
|
703
|
+
this.log("Subgraph response current snapshot", responseSnapshot);
|
|
672
704
|
const positions = [];
|
|
673
|
-
if (((_a = response === null || response === void 0 ? void 0 : response.data) === null || _a === void 0 ? void 0 : _a.vaultPositions) &&
|
|
705
|
+
if (((_a = response === null || response === void 0 ? void 0 : response.data) === null || _a === void 0 ? void 0 : _a.vaultPositions) &&
|
|
706
|
+
((_b = response === null || response === void 0 ? void 0 : response.data) === null || _b === void 0 ? void 0 : _b.vaultPositions.length) > 0) {
|
|
674
707
|
const positionResponse = (_c = response === null || response === void 0 ? void 0 : response.data) === null || _c === void 0 ? void 0 : _c.vaultPositions[0];
|
|
675
708
|
for (let i = 0; i < positionResponse.upperTick.length; i++) {
|
|
676
709
|
const position = positionResponse;
|
|
@@ -682,25 +715,31 @@ class ExecutionApp extends executionBase_js_1.ExecutionBase {
|
|
|
682
715
|
}
|
|
683
716
|
}
|
|
684
717
|
let lastSnapshot;
|
|
685
|
-
if (((_d = responseSnapshot === null || responseSnapshot === void 0 ? void 0 : responseSnapshot.data) === null || _d === void 0 ? void 0 : _d.vaultSnapshots) &&
|
|
718
|
+
if (((_d = responseSnapshot === null || responseSnapshot === void 0 ? void 0 : responseSnapshot.data) === null || _d === void 0 ? void 0 : _d.vaultSnapshots) &&
|
|
719
|
+
((_e = responseSnapshot === null || responseSnapshot === void 0 ? void 0 : responseSnapshot.data) === null || _e === void 0 ? void 0 : _e.vaultSnapshots.length) > 0) {
|
|
686
720
|
lastSnapshot = (_f = responseSnapshot === null || responseSnapshot === void 0 ? void 0 : responseSnapshot.data) === null || _f === void 0 ? void 0 : _f.vaultSnapshots[0];
|
|
687
721
|
}
|
|
688
|
-
this.log(
|
|
722
|
+
this.log("Subgraph response vault positions", positions);
|
|
689
723
|
smartPoolExecutionContext.positions = positions;
|
|
690
724
|
if (lastSnapshot) {
|
|
691
|
-
smartPoolExecutionContext.lastExecutionTime =
|
|
725
|
+
smartPoolExecutionContext.lastExecutionTime =
|
|
726
|
+
(Date.now() - Number(lastSnapshot.timestamp) * 1000) / 1000;
|
|
692
727
|
}
|
|
693
728
|
else {
|
|
694
|
-
smartPoolExecutionContext.lastExecutionTime =
|
|
729
|
+
smartPoolExecutionContext.lastExecutionTime =
|
|
730
|
+
currentExecutionContext.epochTimestamp;
|
|
695
731
|
}
|
|
696
|
-
const provider = dataConnector.
|
|
732
|
+
const provider = dataConnector.getClient();
|
|
697
733
|
if (!provider) {
|
|
698
|
-
throw new Error(
|
|
734
|
+
throw new Error("Provider configuration issue, unable to process Smart Pool execution context.");
|
|
735
|
+
}
|
|
736
|
+
if ((yield provider.getChainId()) !== currentExecutionContext.chainId) {
|
|
737
|
+
throw new Error("EXECUTION_CONTEXT_MISMATCH: provider chain does not match supplied context.");
|
|
699
738
|
}
|
|
700
739
|
const poolAddress = yield this.getVaultPoolAddress();
|
|
701
|
-
const currentTick = yield this.getPoolCurrentTick(poolAddress, provider, currentExecutionContext
|
|
702
|
-
const tickSpacing = yield this.getTickSpacing(poolAddress, provider,
|
|
703
|
-
const totalAmounts = yield this.getTotalAmounts(this.vault, currentExecutionContext, provider
|
|
740
|
+
const currentTick = yield this.getPoolCurrentTick(poolAddress, provider, currentExecutionContext);
|
|
741
|
+
const tickSpacing = yield this.getTickSpacing(poolAddress, provider, currentExecutionContext);
|
|
742
|
+
const totalAmounts = yield this.getTotalAmounts(this.vault, currentExecutionContext, provider);
|
|
704
743
|
// Handle both bigint and serialized bigint from centralized API
|
|
705
744
|
smartPoolExecutionContext.totalAmount0 = this.convertToString(totalAmounts.total0);
|
|
706
745
|
smartPoolExecutionContext.totalAmount1 = this.convertToString(totalAmounts.total1);
|
|
@@ -710,61 +749,59 @@ class ExecutionApp extends executionBase_js_1.ExecutionBase {
|
|
|
710
749
|
return smartPoolExecutionContext;
|
|
711
750
|
});
|
|
712
751
|
}
|
|
713
|
-
getPoolCurrentTick(poolAddress, provider, currentExecutionContext
|
|
752
|
+
getPoolCurrentTick(poolAddress, provider, currentExecutionContext) {
|
|
714
753
|
return __awaiter(this, void 0, void 0, function* () {
|
|
715
754
|
if (this.isAlgebraPool || this.isPoolSharkPool) {
|
|
716
|
-
const slot0 = yield this.getGlobalState(poolAddress, currentExecutionContext, provider
|
|
755
|
+
const slot0 = yield this.getGlobalState(poolAddress, currentExecutionContext, provider);
|
|
717
756
|
return slot0.tick;
|
|
718
757
|
}
|
|
719
758
|
else if (this.isAerodromePool) {
|
|
720
|
-
const slot0 = yield this.getSlot0Aerodrome(poolAddress, currentExecutionContext, provider
|
|
759
|
+
const slot0 = yield this.getSlot0Aerodrome(poolAddress, currentExecutionContext, provider);
|
|
721
760
|
return slot0.tick;
|
|
722
761
|
}
|
|
723
762
|
else {
|
|
724
|
-
const slot0 = yield this.getSlot0(poolAddress, currentExecutionContext, provider
|
|
763
|
+
const slot0 = yield this.getSlot0(poolAddress, currentExecutionContext, provider);
|
|
725
764
|
return slot0.tick;
|
|
726
765
|
}
|
|
727
766
|
});
|
|
728
767
|
}
|
|
729
|
-
getTickSpacing(poolAddress, provider,
|
|
768
|
+
getTickSpacing(poolAddress, provider, currentExecutionContext) {
|
|
730
769
|
return __awaiter(this, void 0, void 0, function* () {
|
|
731
770
|
const tickSpacingAbi = [
|
|
732
771
|
this.isPoolSharkPool
|
|
733
772
|
? {
|
|
734
773
|
inputs: [],
|
|
735
|
-
name:
|
|
774
|
+
name: "tickSpacing",
|
|
736
775
|
outputs: [
|
|
737
776
|
{
|
|
738
|
-
internalType:
|
|
739
|
-
name:
|
|
740
|
-
type:
|
|
777
|
+
internalType: "int24",
|
|
778
|
+
name: "",
|
|
779
|
+
type: "int24",
|
|
741
780
|
},
|
|
742
781
|
],
|
|
743
|
-
stateMutability:
|
|
744
|
-
type:
|
|
782
|
+
stateMutability: "view",
|
|
783
|
+
type: "function",
|
|
745
784
|
}
|
|
746
785
|
: {
|
|
747
786
|
inputs: [],
|
|
748
|
-
name:
|
|
787
|
+
name: "tickSpacing",
|
|
749
788
|
outputs: [
|
|
750
789
|
{
|
|
751
|
-
internalType:
|
|
752
|
-
name:
|
|
753
|
-
type:
|
|
790
|
+
internalType: "int16",
|
|
791
|
+
name: "",
|
|
792
|
+
type: "int16",
|
|
754
793
|
},
|
|
755
794
|
],
|
|
756
|
-
stateMutability:
|
|
757
|
-
type:
|
|
795
|
+
stateMutability: "pure",
|
|
796
|
+
type: "function",
|
|
758
797
|
},
|
|
759
798
|
];
|
|
760
799
|
const tickSpacing = yield (0, utils_js_1.readContract)({
|
|
761
800
|
address: poolAddress,
|
|
762
801
|
abi: tickSpacingAbi,
|
|
763
802
|
currentExecutionContext,
|
|
764
|
-
functionName:
|
|
803
|
+
functionName: "tickSpacing",
|
|
765
804
|
provider,
|
|
766
|
-
rpc,
|
|
767
|
-
chainId: this.chainId,
|
|
768
805
|
});
|
|
769
806
|
return tickSpacing;
|
|
770
807
|
});
|
|
@@ -774,17 +811,17 @@ class ExecutionApp extends executionBase_js_1.ExecutionBase {
|
|
|
774
811
|
* from the centralized API
|
|
775
812
|
*/
|
|
776
813
|
convertToString(value) {
|
|
777
|
-
if (typeof value ===
|
|
814
|
+
if (typeof value === "bigint") {
|
|
778
815
|
return value.toString();
|
|
779
816
|
}
|
|
780
|
-
if (typeof value ===
|
|
817
|
+
if (typeof value === "number") {
|
|
781
818
|
return value.toString();
|
|
782
819
|
}
|
|
783
|
-
if (typeof value ===
|
|
820
|
+
if (typeof value === "string") {
|
|
784
821
|
return value;
|
|
785
822
|
}
|
|
786
823
|
// Handle serialized bigint from centralized API (e.g., { type: 'BigNumber', hex: '0x...' })
|
|
787
|
-
if (value && typeof value ===
|
|
824
|
+
if (value && typeof value === "object") {
|
|
788
825
|
// If it's a BigNumber-like object with hex property
|
|
789
826
|
if (value.hex !== undefined) {
|
|
790
827
|
return BigInt(value.hex).toString();
|
|
@@ -794,35 +831,34 @@ class ExecutionApp extends executionBase_js_1.ExecutionBase {
|
|
|
794
831
|
return BigInt(value._hex).toString();
|
|
795
832
|
}
|
|
796
833
|
// If it has toString method, try using it
|
|
797
|
-
if (typeof value.toString ===
|
|
834
|
+
if (typeof value.toString === "function" &&
|
|
835
|
+
value.toString() !== "[object Object]") {
|
|
798
836
|
return value.toString();
|
|
799
837
|
}
|
|
800
838
|
}
|
|
801
839
|
// Fallback: convert to string (may result in '[object Object]' if not handled above)
|
|
802
840
|
return String(value);
|
|
803
841
|
}
|
|
804
|
-
getTotalAmounts(vaultAddress, currentExecutionContext, provider
|
|
842
|
+
getTotalAmounts(vaultAddress, currentExecutionContext, provider) {
|
|
805
843
|
return __awaiter(this, void 0, void 0, function* () {
|
|
806
844
|
const getTotalAmountsABI = [
|
|
807
845
|
{
|
|
808
846
|
inputs: [],
|
|
809
|
-
name:
|
|
847
|
+
name: "getTotalAmounts",
|
|
810
848
|
outputs: [
|
|
811
|
-
{ internalType:
|
|
812
|
-
{ internalType:
|
|
849
|
+
{ internalType: "uint256", name: "total0", type: "uint256" },
|
|
850
|
+
{ internalType: "uint256", name: "total1", type: "uint256" },
|
|
813
851
|
],
|
|
814
|
-
stateMutability:
|
|
815
|
-
type:
|
|
852
|
+
stateMutability: "view",
|
|
853
|
+
type: "function",
|
|
816
854
|
},
|
|
817
855
|
];
|
|
818
856
|
const totalAmounts = yield (0, utils_js_1.readContract)({
|
|
819
857
|
address: vaultAddress,
|
|
820
858
|
abi: getTotalAmountsABI,
|
|
821
859
|
currentExecutionContext,
|
|
822
|
-
functionName:
|
|
860
|
+
functionName: "getTotalAmounts",
|
|
823
861
|
provider,
|
|
824
|
-
rpc,
|
|
825
|
-
chainId: this.chainId,
|
|
826
862
|
});
|
|
827
863
|
return {
|
|
828
864
|
total0: totalAmounts[0],
|
|
@@ -833,7 +869,7 @@ class ExecutionApp extends executionBase_js_1.ExecutionBase {
|
|
|
833
869
|
getVaultPoolAddress() {
|
|
834
870
|
return __awaiter(this, void 0, void 0, function* () {
|
|
835
871
|
const requestSnapshot = {
|
|
836
|
-
method:
|
|
872
|
+
method: "POST",
|
|
837
873
|
url: this.steerSubgraph,
|
|
838
874
|
data: {
|
|
839
875
|
query: `
|
|
@@ -845,9 +881,11 @@ class ExecutionApp extends executionBase_js_1.ExecutionBase {
|
|
|
845
881
|
}
|
|
846
882
|
`,
|
|
847
883
|
},
|
|
848
|
-
headers: Object.assign({
|
|
849
|
-
?
|
|
850
|
-
:
|
|
884
|
+
headers: Object.assign({ "Content-Type": !this.steerSubgraph.includes("subgraph-proxy-server")
|
|
885
|
+
? "application/json"
|
|
886
|
+
: "text/plain;charset=UTF-8" }, (this.steerSubgraph.includes("sentio")
|
|
887
|
+
? { "api-key": this.sentioApiKey }
|
|
888
|
+
: {})),
|
|
851
889
|
};
|
|
852
890
|
const response = yield (0, utils_js_1.fetchData)(requestSnapshot, 4);
|
|
853
891
|
return response.data.vault.pool;
|