hyperliquid-prime 0.1.4 → 0.1.5
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 +64 -28
- package/dist/cli/program.d.ts.map +1 -1
- package/dist/cli/program.js +5 -1
- package/dist/cli/program.js.map +1 -1
- package/dist/collateral/manager.d.ts +2 -2
- package/dist/collateral/manager.d.ts.map +1 -1
- package/dist/collateral/manager.js +487 -91
- package/dist/collateral/manager.js.map +1 -1
- package/dist/config.d.ts +5 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js.map +1 -1
- package/dist/execution/executor.d.ts +21 -0
- package/dist/execution/executor.d.ts.map +1 -1
- package/dist/execution/executor.js +311 -112
- package/dist/execution/executor.js.map +1 -1
- package/dist/execution/types.d.ts +23 -2
- package/dist/execution/types.d.ts.map +1 -1
- package/dist/index.d.ts +42 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +196 -14
- package/dist/index.js.map +1 -1
- package/dist/market/registry.d.ts +3 -0
- package/dist/market/registry.d.ts.map +1 -1
- package/dist/market/registry.js +53 -23
- package/dist/market/registry.js.map +1 -1
- package/dist/market/types.d.ts +6 -0
- package/dist/market/types.d.ts.map +1 -1
- package/dist/position/manager.d.ts +6 -3
- package/dist/position/manager.d.ts.map +1 -1
- package/dist/position/manager.js +58 -31
- package/dist/position/manager.js.map +1 -1
- package/dist/provider/nktkas.d.ts +38 -3
- package/dist/provider/nktkas.d.ts.map +1 -1
- package/dist/provider/nktkas.js +202 -35
- package/dist/provider/nktkas.js.map +1 -1
- package/dist/provider/provider.d.ts +29 -3
- package/dist/provider/provider.d.ts.map +1 -1
- package/dist/provider/schemas.d.ts +933 -0
- package/dist/provider/schemas.d.ts.map +1 -0
- package/dist/provider/schemas.js +330 -0
- package/dist/provider/schemas.js.map +1 -0
- package/dist/provider/types.d.ts +88 -1
- package/dist/provider/types.d.ts.map +1 -1
- package/dist/router/router.d.ts.map +1 -1
- package/dist/router/router.js +96 -27
- package/dist/router/router.js.map +1 -1
- package/dist/router/scorer.d.ts +3 -1
- package/dist/router/scorer.d.ts.map +1 -1
- package/dist/router/scorer.js +28 -5
- package/dist/router/scorer.js.map +1 -1
- package/dist/router/types.d.ts +3 -0
- package/dist/router/types.d.ts.map +1 -1
- package/dist/router/types.js.map +1 -1
- package/dist/types/result.d.ts +16 -0
- package/dist/types/result.d.ts.map +1 -0
- package/dist/types/result.js +9 -0
- package/dist/types/result.js.map +1 -0
- package/dist/utils/asset.d.ts +2 -0
- package/dist/utils/asset.d.ts.map +1 -0
- package/dist/utils/asset.js +18 -0
- package/dist/utils/asset.js.map +1 -0
- package/dist/utils/order-precision.d.ts +16 -0
- package/dist/utils/order-precision.d.ts.map +1 -0
- package/dist/utils/order-precision.js +45 -0
- package/dist/utils/order-precision.js.map +1 -0
- package/package.json +7 -3
|
@@ -1,8 +1,11 @@
|
|
|
1
|
+
import { randomUUID } from "node:crypto";
|
|
1
2
|
export class Executor {
|
|
2
3
|
provider;
|
|
3
4
|
logger;
|
|
4
5
|
wireBuilder;
|
|
6
|
+
builderEnabledForOrders = false;
|
|
5
7
|
approvalChecked = false;
|
|
8
|
+
builderManualApprovalWarned = false;
|
|
6
9
|
constructor(provider, logger, builderConfig) {
|
|
7
10
|
this.provider = provider;
|
|
8
11
|
this.logger = logger.child({ module: "executor" });
|
|
@@ -28,9 +31,48 @@ export class Executor {
|
|
|
28
31
|
user: userAddress,
|
|
29
32
|
builder: this.wireBuilder.b,
|
|
30
33
|
});
|
|
31
|
-
if (currentApproval
|
|
32
|
-
this.logger.debug({
|
|
34
|
+
if (this.isBuilderApprovalSufficient(currentApproval, this.wireBuilder.f)) {
|
|
35
|
+
this.logger.debug({
|
|
36
|
+
builder: this.wireBuilder.b,
|
|
37
|
+
approvedRaw: currentApproval,
|
|
38
|
+
approvedTenthsBps: this.normalizedApprovalTenthsBps(currentApproval),
|
|
39
|
+
requiredTenthsBps: this.wireBuilder.f,
|
|
40
|
+
}, "Builder fee already approved");
|
|
41
|
+
this.builderEnabledForOrders = true;
|
|
33
42
|
this.approvalChecked = true;
|
|
43
|
+
this.builderManualApprovalWarned = false;
|
|
44
|
+
return;
|
|
45
|
+
}
|
|
46
|
+
const signerAddress = this.provider.getSignerAddress?.();
|
|
47
|
+
const isAgentSession = Boolean(signerAddress && signerAddress.toLowerCase() !== userAddress.toLowerCase());
|
|
48
|
+
if (isAgentSession) {
|
|
49
|
+
// The master wallet may have just approved the builder fee (e.g. via the trade form's
|
|
50
|
+
// pre-trade actions). Poll briefly to allow the on-chain state to propagate before
|
|
51
|
+
// giving up.
|
|
52
|
+
const approved = await this.pollBuilderApproval(userAddress);
|
|
53
|
+
if (approved) {
|
|
54
|
+
this.builderEnabledForOrders = true;
|
|
55
|
+
this.approvalChecked = true;
|
|
56
|
+
this.builderManualApprovalWarned = false;
|
|
57
|
+
this.logger.info({ builder: this.wireBuilder.b, user: userAddress }, "Builder fee confirmed after polling");
|
|
58
|
+
return;
|
|
59
|
+
}
|
|
60
|
+
// Do NOT cache the negative result for agent sessions. The master wallet
|
|
61
|
+
// may approve the builder fee at any time (e.g. via the frontend pre-trade
|
|
62
|
+
// MetaMask flow), so we must re-check on every trade until approved.
|
|
63
|
+
this.builderEnabledForOrders = false;
|
|
64
|
+
if (!this.builderManualApprovalWarned) {
|
|
65
|
+
this.logger.warn({
|
|
66
|
+
builder: this.wireBuilder.b,
|
|
67
|
+
signer: signerAddress,
|
|
68
|
+
user: userAddress,
|
|
69
|
+
approvedRaw: currentApproval,
|
|
70
|
+
approvedTenthsBps: this.normalizedApprovalTenthsBps(currentApproval),
|
|
71
|
+
requiredTenthsBps: this.wireBuilder.f,
|
|
72
|
+
maxFeeRate: `${(this.wireBuilder.f / 1000).toFixed(2)}%`,
|
|
73
|
+
}, "Builder fee not approved for user. Approve with master wallet (setup flow) to enable builder fees.");
|
|
74
|
+
this.builderManualApprovalWarned = true;
|
|
75
|
+
}
|
|
34
76
|
return;
|
|
35
77
|
}
|
|
36
78
|
// Convert wire 0.1bps back to percentage string for approval
|
|
@@ -41,14 +83,31 @@ export class Executor {
|
|
|
41
83
|
maxFeeRate,
|
|
42
84
|
builder: this.wireBuilder.b,
|
|
43
85
|
});
|
|
86
|
+
this.builderEnabledForOrders = true;
|
|
44
87
|
this.approvalChecked = true;
|
|
45
88
|
this.logger.info("Builder fee approved successfully");
|
|
46
89
|
}
|
|
47
90
|
catch (error) {
|
|
48
|
-
this.
|
|
91
|
+
this.builderEnabledForOrders = false;
|
|
92
|
+
if (this.isDepositRequiredError(error)) {
|
|
93
|
+
// Terminal condition until funds are deposited: avoid noisy retries every order.
|
|
94
|
+
this.approvalChecked = true;
|
|
95
|
+
this.logger.warn({ error }, "Builder fee approval unavailable before first deposit; disabling builder fee checks for this session.");
|
|
96
|
+
return;
|
|
97
|
+
}
|
|
98
|
+
this.logger.warn({ error }, "Failed to check/approve builder fee — continuing without builder fee for this order; will retry next order.");
|
|
49
99
|
// Do NOT set approvalChecked = true so we retry on the next order attempt
|
|
50
100
|
}
|
|
51
101
|
}
|
|
102
|
+
/**
|
|
103
|
+
* Reset the cached builder approval state so the next trade re-checks on-chain.
|
|
104
|
+
* Call after the master wallet approves the builder fee (e.g. after setup flow).
|
|
105
|
+
*/
|
|
106
|
+
resetBuilderApprovalCheck() {
|
|
107
|
+
this.approvalChecked = false;
|
|
108
|
+
this.builderEnabledForOrders = false;
|
|
109
|
+
this.builderManualApprovalWarned = false;
|
|
110
|
+
}
|
|
52
111
|
/**
|
|
53
112
|
* Execute a plan generated by the router.
|
|
54
113
|
* This is the ONLY place orders are placed.
|
|
@@ -63,55 +122,41 @@ export class Executor {
|
|
|
63
122
|
}, "Executing order");
|
|
64
123
|
try {
|
|
65
124
|
await this.applyLeverageIfRequested(plan);
|
|
125
|
+
const builder = this.builderEnabledForOrders ? this.wireBuilder ?? undefined : undefined;
|
|
126
|
+
const cloid = `0x${randomUUID().replace(/-/g, "")}`;
|
|
66
127
|
const result = await this.provider.placeOrder({
|
|
67
128
|
assetIndex: plan.market.assetIndex,
|
|
68
129
|
isBuy: plan.side === "buy",
|
|
69
130
|
price: plan.price,
|
|
70
131
|
size: plan.size,
|
|
71
|
-
reduceOnly: false,
|
|
132
|
+
reduceOnly: plan.reduceOnly ?? false,
|
|
72
133
|
orderType: plan.orderType,
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
const
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
}
|
|
91
|
-
else if ("error" in status) {
|
|
92
|
-
this.logger.error({ error: status.error, plan }, "Order rejected");
|
|
93
|
-
return {
|
|
94
|
-
success: false,
|
|
95
|
-
market: plan.market,
|
|
96
|
-
side: plan.side,
|
|
97
|
-
requestedSize: plan.size,
|
|
98
|
-
filledSize: "0",
|
|
99
|
-
avgPrice: "0",
|
|
100
|
-
orderId: undefined,
|
|
101
|
-
timestamp: Date.now(),
|
|
102
|
-
error: status.error,
|
|
103
|
-
raw: result,
|
|
104
|
-
};
|
|
105
|
-
}
|
|
134
|
+
cloid,
|
|
135
|
+
}, builder);
|
|
136
|
+
const parsed = this.parseOrderStatus(result.statuses[0], plan.price);
|
|
137
|
+
if (!parsed.success) {
|
|
138
|
+
this.logger.error({ error: parsed.error, status: result.statuses[0], plan }, "Order rejected");
|
|
139
|
+
return {
|
|
140
|
+
success: false,
|
|
141
|
+
market: plan.market,
|
|
142
|
+
side: plan.side,
|
|
143
|
+
requestedSize: plan.size,
|
|
144
|
+
filledSize: parsed.filledSize,
|
|
145
|
+
avgPrice: parsed.avgPrice,
|
|
146
|
+
orderId: parsed.orderId,
|
|
147
|
+
timestamp: Date.now(),
|
|
148
|
+
error: parsed.error ?? "Order rejected",
|
|
149
|
+
raw: result,
|
|
150
|
+
};
|
|
106
151
|
}
|
|
107
152
|
const receipt = {
|
|
108
153
|
success: true,
|
|
109
154
|
market: plan.market,
|
|
110
155
|
side: plan.side,
|
|
111
156
|
requestedSize: plan.size,
|
|
112
|
-
filledSize,
|
|
113
|
-
avgPrice,
|
|
114
|
-
orderId,
|
|
157
|
+
filledSize: parsed.filledSize,
|
|
158
|
+
avgPrice: parsed.avgPrice,
|
|
159
|
+
orderId: parsed.orderId,
|
|
115
160
|
timestamp: Date.now(),
|
|
116
161
|
raw: result,
|
|
117
162
|
};
|
|
@@ -141,6 +186,9 @@ export class Executor {
|
|
|
141
186
|
/**
|
|
142
187
|
* Execute a split order plan across multiple markets.
|
|
143
188
|
* Flow: prepare collateral → batch place all leg orders → aggregate receipts.
|
|
189
|
+
*
|
|
190
|
+
* Returns per-leg receipts so callers can see exactly which legs succeeded
|
|
191
|
+
* even when some fail (partial fill scenario).
|
|
144
192
|
*/
|
|
145
193
|
async executeSplit(plan, collateralManager, userAddress) {
|
|
146
194
|
await this.ensureBuilderApproval(userAddress);
|
|
@@ -156,41 +204,34 @@ export class Executor {
|
|
|
156
204
|
await this.applySplitLeverage(plan);
|
|
157
205
|
}
|
|
158
206
|
catch (error) {
|
|
159
|
-
|
|
207
|
+
return this.failedSplitReceipt(plan, timestamp, {
|
|
160
208
|
success: false,
|
|
161
209
|
swapsExecuted: [],
|
|
162
210
|
abstractionWasEnabled: false,
|
|
163
211
|
error: error instanceof Error ? error.message : String(error),
|
|
164
|
-
};
|
|
165
|
-
return {
|
|
166
|
-
success: false,
|
|
167
|
-
legs: [],
|
|
168
|
-
collateralReceipt,
|
|
169
|
-
totalRequestedSize: plan.totalSize,
|
|
170
|
-
totalFilledSize: "0",
|
|
171
|
-
aggregateAvgPrice: "0",
|
|
172
|
-
timestamp,
|
|
173
|
-
error: `Leverage setup failed: ${collateralReceipt.error}`,
|
|
174
|
-
};
|
|
212
|
+
}, `Leverage setup failed: ${error instanceof Error ? error.message : String(error)}`);
|
|
175
213
|
}
|
|
176
214
|
// Step 2: Estimate collateral using live balances at execution time.
|
|
177
215
|
const allocations = this.buildAllocationsFromLegs(plan);
|
|
178
216
|
const collateralPlan = await collateralManager.estimateRequirements(allocations, userAddress);
|
|
217
|
+
this.logger.info({
|
|
218
|
+
user: userAddress,
|
|
219
|
+
swapsNeeded: collateralPlan.swapsNeeded,
|
|
220
|
+
requirements: collateralPlan.requirements.map((req) => ({
|
|
221
|
+
token: req.token,
|
|
222
|
+
amountNeeded: req.amountNeeded,
|
|
223
|
+
currentBalance: req.currentBalance,
|
|
224
|
+
shortfall: req.shortfall,
|
|
225
|
+
swapFrom: req.swapFrom,
|
|
226
|
+
estimatedSwapCostBps: req.estimatedSwapCostBps,
|
|
227
|
+
})),
|
|
228
|
+
}, "Collateral estimate at execution time (live balances)");
|
|
179
229
|
// Step 3: Prepare collateral (enable abstraction, swap if needed)
|
|
180
230
|
let collateralReceipt;
|
|
181
231
|
if (collateralPlan.swapsNeeded) {
|
|
182
232
|
collateralReceipt = await collateralManager.prepare(collateralPlan, userAddress);
|
|
183
233
|
if (!collateralReceipt.success) {
|
|
184
|
-
return {
|
|
185
|
-
success: false,
|
|
186
|
-
legs: [],
|
|
187
|
-
collateralReceipt,
|
|
188
|
-
totalRequestedSize: plan.totalSize,
|
|
189
|
-
totalFilledSize: "0",
|
|
190
|
-
aggregateAvgPrice: "0",
|
|
191
|
-
timestamp,
|
|
192
|
-
error: `Collateral preparation failed: ${collateralReceipt.error}`,
|
|
193
|
-
};
|
|
234
|
+
return this.failedSplitReceipt(plan, timestamp, collateralReceipt, `Collateral preparation failed: ${collateralReceipt.error}`);
|
|
194
235
|
}
|
|
195
236
|
}
|
|
196
237
|
else {
|
|
@@ -209,98 +250,105 @@ export class Executor {
|
|
|
209
250
|
size: leg.size,
|
|
210
251
|
reduceOnly: false,
|
|
211
252
|
orderType: leg.orderType,
|
|
253
|
+
cloid: `0x${randomUUID().replace(/-/g, "")}`,
|
|
212
254
|
}));
|
|
213
|
-
const result = await this.provider.batchOrders(orderParams, this.wireBuilder ?? undefined);
|
|
255
|
+
const result = await this.provider.batchOrders(orderParams, this.builderEnabledForOrders ? this.wireBuilder ?? undefined : undefined);
|
|
214
256
|
// Step 5: Map each status to a per-leg receipt
|
|
215
257
|
const legs = plan.legs.map((leg, i) => {
|
|
216
258
|
const status = result.statuses[i];
|
|
217
|
-
|
|
218
|
-
let filledSize = "0";
|
|
219
|
-
let avgPrice = "0";
|
|
220
|
-
let success = false;
|
|
221
|
-
let error;
|
|
222
|
-
if (status && typeof status === "object") {
|
|
223
|
-
if ("filled" in status) {
|
|
224
|
-
orderId = status.filled.oid;
|
|
225
|
-
filledSize = status.filled.totalSz;
|
|
226
|
-
avgPrice = status.filled.avgPx;
|
|
227
|
-
success = true;
|
|
228
|
-
}
|
|
229
|
-
else if ("resting" in status) {
|
|
230
|
-
orderId = status.resting.oid;
|
|
231
|
-
filledSize = "0";
|
|
232
|
-
avgPrice = leg.price;
|
|
233
|
-
success = true; // Order is resting, not failed
|
|
234
|
-
}
|
|
235
|
-
else if ("error" in status) {
|
|
236
|
-
error = status.error;
|
|
237
|
-
}
|
|
238
|
-
}
|
|
259
|
+
const parsed = this.parseOrderStatus(status, leg.price);
|
|
239
260
|
return {
|
|
240
|
-
success,
|
|
241
261
|
market: leg.market,
|
|
242
262
|
side: leg.side,
|
|
243
263
|
requestedSize: leg.size,
|
|
244
|
-
filledSize,
|
|
245
|
-
avgPrice,
|
|
246
|
-
orderId,
|
|
247
|
-
|
|
248
|
-
error,
|
|
264
|
+
filledSize: parsed.filledSize,
|
|
265
|
+
avgPrice: parsed.avgPrice,
|
|
266
|
+
orderId: parsed.orderId,
|
|
267
|
+
success: parsed.success,
|
|
268
|
+
error: parsed.error,
|
|
249
269
|
raw: status,
|
|
250
270
|
};
|
|
251
271
|
});
|
|
252
272
|
// Step 6: Aggregate results
|
|
253
273
|
let totalFilledSize = 0;
|
|
254
274
|
let totalFilledCost = 0;
|
|
255
|
-
let
|
|
275
|
+
let succeededCount = 0;
|
|
276
|
+
let failedCount = 0;
|
|
256
277
|
for (const leg of legs) {
|
|
257
278
|
const filled = parseFloat(leg.filledSize);
|
|
258
279
|
const price = parseFloat(leg.avgPrice);
|
|
259
280
|
totalFilledSize += filled;
|
|
260
281
|
totalFilledCost += filled * price;
|
|
261
|
-
if (
|
|
262
|
-
|
|
282
|
+
if (leg.success) {
|
|
283
|
+
succeededCount++;
|
|
284
|
+
}
|
|
285
|
+
else {
|
|
286
|
+
failedCount++;
|
|
287
|
+
}
|
|
263
288
|
}
|
|
289
|
+
const allSucceeded = failedCount === 0;
|
|
290
|
+
const partialFill = succeededCount > 0 && failedCount > 0;
|
|
264
291
|
const aggregateAvgPrice = totalFilledSize > 0
|
|
265
292
|
? (totalFilledCost / totalFilledSize).toFixed(6)
|
|
266
293
|
: "0";
|
|
294
|
+
const warnings = [];
|
|
295
|
+
if (partialFill) {
|
|
296
|
+
const failedLegs = legs.filter((l) => !l.success);
|
|
297
|
+
warnings.push(`Partial fill: ${succeededCount}/${legs.length} legs succeeded. ` +
|
|
298
|
+
`Failed: ${failedLegs.map((l) => `${l.market.coin} (${l.error ?? "unknown"})`).join(", ")}`);
|
|
299
|
+
}
|
|
267
300
|
this.logger.info({
|
|
268
|
-
|
|
301
|
+
allSucceeded,
|
|
302
|
+
partialFill,
|
|
269
303
|
totalFilledSize,
|
|
270
304
|
aggregateAvgPrice,
|
|
271
|
-
legsSucceeded:
|
|
272
|
-
legsFailed:
|
|
305
|
+
legsSucceeded: succeededCount,
|
|
306
|
+
legsFailed: failedCount,
|
|
273
307
|
}, "Split order executed");
|
|
274
308
|
return {
|
|
275
|
-
success:
|
|
309
|
+
success: allSucceeded,
|
|
310
|
+
allSucceeded,
|
|
311
|
+
partialFill,
|
|
276
312
|
legs,
|
|
277
313
|
collateralReceipt,
|
|
278
314
|
totalRequestedSize: plan.totalSize,
|
|
279
315
|
totalFilledSize: totalFilledSize.toString(),
|
|
280
316
|
aggregateAvgPrice,
|
|
281
317
|
timestamp,
|
|
318
|
+
warnings,
|
|
282
319
|
};
|
|
283
320
|
}
|
|
284
321
|
catch (error) {
|
|
285
322
|
this.logger.error({ error }, "Split order execution failed");
|
|
286
|
-
return
|
|
287
|
-
success: false,
|
|
288
|
-
legs: [],
|
|
289
|
-
collateralReceipt,
|
|
290
|
-
totalRequestedSize: plan.totalSize,
|
|
291
|
-
totalFilledSize: "0",
|
|
292
|
-
aggregateAvgPrice: "0",
|
|
293
|
-
timestamp,
|
|
294
|
-
error: error instanceof Error ? error.message : String(error),
|
|
295
|
-
};
|
|
323
|
+
return this.failedSplitReceipt(plan, timestamp, collateralReceipt, error instanceof Error ? error.message : String(error));
|
|
296
324
|
}
|
|
297
325
|
}
|
|
326
|
+
/** Build a failed SplitExecutionReceipt with consistent shape. */
|
|
327
|
+
failedSplitReceipt(plan, timestamp, collateralReceipt, error) {
|
|
328
|
+
return {
|
|
329
|
+
success: false,
|
|
330
|
+
allSucceeded: false,
|
|
331
|
+
partialFill: false,
|
|
332
|
+
legs: [],
|
|
333
|
+
collateralReceipt,
|
|
334
|
+
totalRequestedSize: plan.totalSize,
|
|
335
|
+
totalFilledSize: "0",
|
|
336
|
+
aggregateAvgPrice: "0",
|
|
337
|
+
timestamp,
|
|
338
|
+
warnings: [],
|
|
339
|
+
error,
|
|
340
|
+
};
|
|
341
|
+
}
|
|
298
342
|
buildAllocationsFromLegs(plan) {
|
|
299
343
|
const totalSize = plan.legs.reduce((sum, leg) => sum + parseFloat(leg.size), 0);
|
|
300
344
|
return plan.legs.map((leg) => {
|
|
301
345
|
const size = parseFloat(leg.size);
|
|
302
346
|
const estimatedAvgPrice = parseFloat(leg.price);
|
|
303
|
-
const
|
|
347
|
+
const notional = size * estimatedAvgPrice;
|
|
348
|
+
const leverage = Number.isFinite(leg.leverage) && (leg.leverage ?? 0) > 0
|
|
349
|
+
? leg.leverage
|
|
350
|
+
: 1;
|
|
351
|
+
const estimatedCost = notional / leverage;
|
|
304
352
|
return {
|
|
305
353
|
market: leg.market,
|
|
306
354
|
size,
|
|
@@ -313,12 +361,26 @@ export class Executor {
|
|
|
313
361
|
async applyLeverageIfRequested(plan) {
|
|
314
362
|
if (plan.leverage === undefined)
|
|
315
363
|
return;
|
|
364
|
+
if (!Number.isFinite(plan.market.assetIndex)) {
|
|
365
|
+
throw new Error(`Invalid asset index "${plan.market.assetIndex}" for ${plan.market.coin}`);
|
|
366
|
+
}
|
|
316
367
|
if (!Number.isFinite(plan.leverage) || plan.leverage <= 0) {
|
|
317
368
|
throw new Error(`Invalid leverage "${plan.leverage}" for ${plan.market.coin}`);
|
|
318
369
|
}
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
370
|
+
// Safety clamp: never send leverage exceeding the market's maximum to the exchange
|
|
371
|
+
const maxLev = plan.market.maxLeverage;
|
|
372
|
+
let effective = plan.leverage;
|
|
373
|
+
if (maxLev > 0 && effective > maxLev) {
|
|
374
|
+
this.logger.warn({ market: plan.market.coin, requested: effective, max: maxLev }, "Clamping leverage to market maximum (safety guard)");
|
|
375
|
+
effective = maxLev;
|
|
376
|
+
}
|
|
377
|
+
let isCross = plan.isCross ?? true;
|
|
378
|
+
if (isCross && plan.market.onlyIsolated) {
|
|
379
|
+
this.logger.warn({ market: plan.market.coin, assetIndex: plan.market.assetIndex }, "Cross margin not supported for this asset; switching leverage update to isolated margin");
|
|
380
|
+
isCross = false;
|
|
381
|
+
}
|
|
382
|
+
this.logger.info({ market: plan.market.coin, assetIndex: plan.market.assetIndex, leverage: effective, isCross }, "Applying leverage before execution");
|
|
383
|
+
await this.provider.setLeverage(plan.market.assetIndex, effective, isCross);
|
|
322
384
|
}
|
|
323
385
|
async applySplitLeverage(plan) {
|
|
324
386
|
const applied = new Set();
|
|
@@ -332,5 +394,142 @@ export class Executor {
|
|
|
332
394
|
applied.add(key);
|
|
333
395
|
}
|
|
334
396
|
}
|
|
397
|
+
parseOrderStatus(status, fallbackPrice) {
|
|
398
|
+
if (!status) {
|
|
399
|
+
return {
|
|
400
|
+
success: false,
|
|
401
|
+
orderId: undefined,
|
|
402
|
+
filledSize: "0",
|
|
403
|
+
avgPrice: "0",
|
|
404
|
+
error: "Exchange returned no order status.",
|
|
405
|
+
};
|
|
406
|
+
}
|
|
407
|
+
if (typeof status === "string") {
|
|
408
|
+
if (status === "waitingForFill" || status === "waitingForTrigger") {
|
|
409
|
+
return {
|
|
410
|
+
success: false,
|
|
411
|
+
orderId: undefined,
|
|
412
|
+
filledSize: "0",
|
|
413
|
+
avgPrice: "0",
|
|
414
|
+
error: `Order did not fill immediately (${status}).`,
|
|
415
|
+
};
|
|
416
|
+
}
|
|
417
|
+
return {
|
|
418
|
+
success: false,
|
|
419
|
+
orderId: undefined,
|
|
420
|
+
filledSize: "0",
|
|
421
|
+
avgPrice: "0",
|
|
422
|
+
error: `Unknown order status: ${status}`,
|
|
423
|
+
};
|
|
424
|
+
}
|
|
425
|
+
if (typeof status !== "object") {
|
|
426
|
+
return {
|
|
427
|
+
success: false,
|
|
428
|
+
orderId: undefined,
|
|
429
|
+
filledSize: "0",
|
|
430
|
+
avgPrice: "0",
|
|
431
|
+
error: "Unrecognized order status payload.",
|
|
432
|
+
};
|
|
433
|
+
}
|
|
434
|
+
const value = status;
|
|
435
|
+
if ("filled" in value && value.filled && typeof value.filled === "object") {
|
|
436
|
+
const filled = value.filled;
|
|
437
|
+
const rawSize = typeof filled.totalSz === "string" ? filled.totalSz : "0";
|
|
438
|
+
const rawPrice = typeof filled.avgPx === "string" ? filled.avgPx : "0";
|
|
439
|
+
const parsedSize = parseFloat(rawSize);
|
|
440
|
+
const parsedPrice = parseFloat(rawPrice);
|
|
441
|
+
// Sanity: reject nonsensical fills (negative or non-finite values)
|
|
442
|
+
if (!Number.isFinite(parsedSize) || parsedSize < 0) {
|
|
443
|
+
return {
|
|
444
|
+
success: false,
|
|
445
|
+
orderId: typeof filled.oid === "number" ? filled.oid : undefined,
|
|
446
|
+
filledSize: "0",
|
|
447
|
+
avgPrice: "0",
|
|
448
|
+
error: `Exchange returned invalid fill size: ${rawSize}`,
|
|
449
|
+
};
|
|
450
|
+
}
|
|
451
|
+
if (!Number.isFinite(parsedPrice) || parsedPrice < 0) {
|
|
452
|
+
return {
|
|
453
|
+
success: false,
|
|
454
|
+
orderId: typeof filled.oid === "number" ? filled.oid : undefined,
|
|
455
|
+
filledSize: "0",
|
|
456
|
+
avgPrice: "0",
|
|
457
|
+
error: `Exchange returned invalid fill price: ${rawPrice}`,
|
|
458
|
+
};
|
|
459
|
+
}
|
|
460
|
+
return {
|
|
461
|
+
success: true,
|
|
462
|
+
orderId: typeof filled.oid === "number" ? filled.oid : undefined,
|
|
463
|
+
filledSize: rawSize,
|
|
464
|
+
avgPrice: rawPrice,
|
|
465
|
+
};
|
|
466
|
+
}
|
|
467
|
+
if ("resting" in value && value.resting && typeof value.resting === "object") {
|
|
468
|
+
const resting = value.resting;
|
|
469
|
+
return {
|
|
470
|
+
success: true,
|
|
471
|
+
orderId: typeof resting.oid === "number" ? resting.oid : undefined,
|
|
472
|
+
filledSize: "0",
|
|
473
|
+
avgPrice: fallbackPrice,
|
|
474
|
+
};
|
|
475
|
+
}
|
|
476
|
+
if ("error" in value) {
|
|
477
|
+
return {
|
|
478
|
+
success: false,
|
|
479
|
+
orderId: undefined,
|
|
480
|
+
filledSize: "0",
|
|
481
|
+
avgPrice: "0",
|
|
482
|
+
error: typeof value.error === "string" ? value.error : "Order rejected.",
|
|
483
|
+
};
|
|
484
|
+
}
|
|
485
|
+
return {
|
|
486
|
+
success: false,
|
|
487
|
+
orderId: undefined,
|
|
488
|
+
filledSize: "0",
|
|
489
|
+
avgPrice: "0",
|
|
490
|
+
error: "Unknown order status payload from exchange.",
|
|
491
|
+
};
|
|
492
|
+
}
|
|
493
|
+
isDepositRequiredError(error) {
|
|
494
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
495
|
+
return /must deposit before performing actions/i.test(message);
|
|
496
|
+
}
|
|
497
|
+
normalizedApprovalTenthsBps(rawApproval) {
|
|
498
|
+
if (!Number.isFinite(rawApproval) || rawApproval <= 0)
|
|
499
|
+
return 0;
|
|
500
|
+
const raw = Math.max(0, rawApproval);
|
|
501
|
+
const candidates = [raw, raw * 10];
|
|
502
|
+
if (raw < 1) {
|
|
503
|
+
candidates.push(raw * 1000);
|
|
504
|
+
}
|
|
505
|
+
return Math.max(...candidates);
|
|
506
|
+
}
|
|
507
|
+
isBuilderApprovalSufficient(rawApproval, requiredTenthsBps) {
|
|
508
|
+
return this.normalizedApprovalTenthsBps(rawApproval) >= requiredTenthsBps;
|
|
509
|
+
}
|
|
510
|
+
/**
|
|
511
|
+
* Poll maxBuilderFee a few times with short delays to allow on-chain state propagation.
|
|
512
|
+
* The master wallet may have just signed the approval via the frontend pre-trade flow.
|
|
513
|
+
*/
|
|
514
|
+
async pollBuilderApproval(userAddress, retries = 4, delayMs = 400) {
|
|
515
|
+
if (!this.wireBuilder)
|
|
516
|
+
return false;
|
|
517
|
+
for (let i = 0; i < retries; i++) {
|
|
518
|
+
await new Promise((resolve) => setTimeout(resolve, delayMs));
|
|
519
|
+
try {
|
|
520
|
+
const approval = await this.provider.maxBuilderFee({
|
|
521
|
+
user: userAddress,
|
|
522
|
+
builder: this.wireBuilder.b,
|
|
523
|
+
});
|
|
524
|
+
if (this.isBuilderApprovalSufficient(approval, this.wireBuilder.f)) {
|
|
525
|
+
return true;
|
|
526
|
+
}
|
|
527
|
+
}
|
|
528
|
+
catch {
|
|
529
|
+
// Ignore transient errors during polling
|
|
530
|
+
}
|
|
531
|
+
}
|
|
532
|
+
return false;
|
|
533
|
+
}
|
|
335
534
|
}
|
|
336
535
|
//# sourceMappingURL=executor.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"executor.js","sourceRoot":"","sources":["../../src/execution/executor.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"executor.js","sourceRoot":"","sources":["../../src/execution/executor.ts"],"names":[],"mappings":"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"}
|
|
@@ -13,14 +13,35 @@ export interface ExecutionReceipt {
|
|
|
13
13
|
raw?: unknown;
|
|
14
14
|
}
|
|
15
15
|
export type OrderStatusType = "pending" | "open" | "filled" | "partially_filled" | "cancelled" | "rejected";
|
|
16
|
-
|
|
16
|
+
/** Per-leg receipt within a split execution. */
|
|
17
|
+
export interface LegReceipt {
|
|
18
|
+
market: PerpMarket;
|
|
19
|
+
side: "buy" | "sell";
|
|
20
|
+
requestedSize: string;
|
|
21
|
+
filledSize: string;
|
|
22
|
+
avgPrice: string;
|
|
23
|
+
orderId: number | undefined;
|
|
17
24
|
success: boolean;
|
|
18
|
-
|
|
25
|
+
error?: string;
|
|
26
|
+
raw?: unknown;
|
|
27
|
+
}
|
|
28
|
+
export interface SplitExecutionReceipt {
|
|
29
|
+
/** True only if ALL legs succeeded. */
|
|
30
|
+
allSucceeded: boolean;
|
|
31
|
+
/** True if at least one leg succeeded but not all. */
|
|
32
|
+
partialFill: boolean;
|
|
33
|
+
/** Individual per-leg results. */
|
|
34
|
+
legs: LegReceipt[];
|
|
19
35
|
collateralReceipt: CollateralReceipt;
|
|
20
36
|
totalRequestedSize: string;
|
|
21
37
|
totalFilledSize: string;
|
|
38
|
+
/** Weighted average price across all filled legs. */
|
|
22
39
|
aggregateAvgPrice: string;
|
|
23
40
|
timestamp: number;
|
|
41
|
+
/** Warnings generated during execution. */
|
|
42
|
+
warnings: string[];
|
|
24
43
|
error?: string;
|
|
44
|
+
/** @deprecated Use allSucceeded instead. */
|
|
45
|
+
success: boolean;
|
|
25
46
|
}
|
|
26
47
|
//# sourceMappingURL=types.d.ts.map
|