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.
Files changed (66) hide show
  1. package/README.md +64 -28
  2. package/dist/cli/program.d.ts.map +1 -1
  3. package/dist/cli/program.js +5 -1
  4. package/dist/cli/program.js.map +1 -1
  5. package/dist/collateral/manager.d.ts +2 -2
  6. package/dist/collateral/manager.d.ts.map +1 -1
  7. package/dist/collateral/manager.js +487 -91
  8. package/dist/collateral/manager.js.map +1 -1
  9. package/dist/config.d.ts +5 -0
  10. package/dist/config.d.ts.map +1 -1
  11. package/dist/config.js.map +1 -1
  12. package/dist/execution/executor.d.ts +21 -0
  13. package/dist/execution/executor.d.ts.map +1 -1
  14. package/dist/execution/executor.js +311 -112
  15. package/dist/execution/executor.js.map +1 -1
  16. package/dist/execution/types.d.ts +23 -2
  17. package/dist/execution/types.d.ts.map +1 -1
  18. package/dist/index.d.ts +42 -5
  19. package/dist/index.d.ts.map +1 -1
  20. package/dist/index.js +196 -14
  21. package/dist/index.js.map +1 -1
  22. package/dist/market/registry.d.ts +3 -0
  23. package/dist/market/registry.d.ts.map +1 -1
  24. package/dist/market/registry.js +53 -23
  25. package/dist/market/registry.js.map +1 -1
  26. package/dist/market/types.d.ts +6 -0
  27. package/dist/market/types.d.ts.map +1 -1
  28. package/dist/position/manager.d.ts +6 -3
  29. package/dist/position/manager.d.ts.map +1 -1
  30. package/dist/position/manager.js +58 -31
  31. package/dist/position/manager.js.map +1 -1
  32. package/dist/provider/nktkas.d.ts +38 -3
  33. package/dist/provider/nktkas.d.ts.map +1 -1
  34. package/dist/provider/nktkas.js +202 -35
  35. package/dist/provider/nktkas.js.map +1 -1
  36. package/dist/provider/provider.d.ts +29 -3
  37. package/dist/provider/provider.d.ts.map +1 -1
  38. package/dist/provider/schemas.d.ts +933 -0
  39. package/dist/provider/schemas.d.ts.map +1 -0
  40. package/dist/provider/schemas.js +330 -0
  41. package/dist/provider/schemas.js.map +1 -0
  42. package/dist/provider/types.d.ts +88 -1
  43. package/dist/provider/types.d.ts.map +1 -1
  44. package/dist/router/router.d.ts.map +1 -1
  45. package/dist/router/router.js +96 -27
  46. package/dist/router/router.js.map +1 -1
  47. package/dist/router/scorer.d.ts +3 -1
  48. package/dist/router/scorer.d.ts.map +1 -1
  49. package/dist/router/scorer.js +28 -5
  50. package/dist/router/scorer.js.map +1 -1
  51. package/dist/router/types.d.ts +3 -0
  52. package/dist/router/types.d.ts.map +1 -1
  53. package/dist/router/types.js.map +1 -1
  54. package/dist/types/result.d.ts +16 -0
  55. package/dist/types/result.d.ts.map +1 -0
  56. package/dist/types/result.js +9 -0
  57. package/dist/types/result.js.map +1 -0
  58. package/dist/utils/asset.d.ts +2 -0
  59. package/dist/utils/asset.d.ts.map +1 -0
  60. package/dist/utils/asset.js +18 -0
  61. package/dist/utils/asset.js.map +1 -0
  62. package/dist/utils/order-precision.d.ts +16 -0
  63. package/dist/utils/order-precision.d.ts.map +1 -0
  64. package/dist/utils/order-precision.js +45 -0
  65. package/dist/utils/order-precision.js.map +1 -0
  66. 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 >= this.wireBuilder.f) {
32
- this.logger.debug({ builder: this.wireBuilder.b, approved: currentApproval, required: this.wireBuilder.f }, "Builder fee already approved");
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.logger.warn({ error }, "Failed to check/approve builder fee — will retry on next order. Orders may fail if not pre-approved.");
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
- }, this.wireBuilder ?? undefined);
74
- // Parse the order result to extract fill info
75
- const status = result.statuses[0];
76
- let orderId;
77
- let filledSize = "0";
78
- let avgPrice = "0";
79
- if (status && typeof status === "object") {
80
- if ("filled" in status) {
81
- orderId = status.filled.oid;
82
- filledSize = status.filled.totalSz;
83
- avgPrice = status.filled.avgPx;
84
- }
85
- else if ("resting" in status) {
86
- orderId = status.resting.oid;
87
- // Resting means not yet filled — IOC orders shouldn't reach here
88
- filledSize = "0";
89
- avgPrice = plan.price;
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
- const collateralReceipt = {
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
- let orderId;
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
- timestamp,
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 allSuccess = true;
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 (!leg.success)
262
- allSuccess = false;
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
- allSuccess,
301
+ allSucceeded,
302
+ partialFill,
269
303
  totalFilledSize,
270
304
  aggregateAvgPrice,
271
- legsSucceeded: legs.filter((l) => l.success).length,
272
- legsFailed: legs.filter((l) => !l.success).length,
305
+ legsSucceeded: succeededCount,
306
+ legsFailed: failedCount,
273
307
  }, "Split order executed");
274
308
  return {
275
- success: allSuccess,
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 estimatedCost = size * estimatedAvgPrice;
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
- const isCross = plan.isCross ?? true;
320
- this.logger.info({ market: plan.market.coin, leverage: plan.leverage, isCross }, "Applying leverage before execution");
321
- await this.provider.setLeverage(plan.market.coin, plan.leverage, isCross);
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
- export interface SplitExecutionReceipt {
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
- legs: ExecutionReceipt[];
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