hyperliquid-prime 0.1.3 → 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 +87 -30
- package/dist/cli/program.d.ts.map +1 -1
- package/dist/cli/program.js +32 -7
- 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 +23 -0
- package/dist/execution/executor.d.ts.map +1 -1
- package/dist/execution/executor.js +346 -102
- 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 +51 -12
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +227 -26
- 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 +3 -3
- package/dist/router/router.d.ts.map +1 -1
- package/dist/router/router.js +98 -25
- 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 +11 -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.
|
|
@@ -62,55 +121,42 @@ export class Executor {
|
|
|
62
121
|
price: plan.price,
|
|
63
122
|
}, "Executing order");
|
|
64
123
|
try {
|
|
124
|
+
await this.applyLeverageIfRequested(plan);
|
|
125
|
+
const builder = this.builderEnabledForOrders ? this.wireBuilder ?? undefined : undefined;
|
|
126
|
+
const cloid = `0x${randomUUID().replace(/-/g, "")}`;
|
|
65
127
|
const result = await this.provider.placeOrder({
|
|
66
128
|
assetIndex: plan.market.assetIndex,
|
|
67
129
|
isBuy: plan.side === "buy",
|
|
68
130
|
price: plan.price,
|
|
69
131
|
size: plan.size,
|
|
70
|
-
reduceOnly: false,
|
|
132
|
+
reduceOnly: plan.reduceOnly ?? false,
|
|
71
133
|
orderType: plan.orderType,
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
const
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
}
|
|
90
|
-
else if ("error" in status) {
|
|
91
|
-
this.logger.error({ error: status.error, plan }, "Order rejected");
|
|
92
|
-
return {
|
|
93
|
-
success: false,
|
|
94
|
-
market: plan.market,
|
|
95
|
-
side: plan.side,
|
|
96
|
-
requestedSize: plan.size,
|
|
97
|
-
filledSize: "0",
|
|
98
|
-
avgPrice: "0",
|
|
99
|
-
orderId: undefined,
|
|
100
|
-
timestamp: Date.now(),
|
|
101
|
-
error: status.error,
|
|
102
|
-
raw: result,
|
|
103
|
-
};
|
|
104
|
-
}
|
|
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
|
+
};
|
|
105
151
|
}
|
|
106
152
|
const receipt = {
|
|
107
153
|
success: true,
|
|
108
154
|
market: plan.market,
|
|
109
155
|
side: plan.side,
|
|
110
156
|
requestedSize: plan.size,
|
|
111
|
-
filledSize,
|
|
112
|
-
avgPrice,
|
|
113
|
-
orderId,
|
|
157
|
+
filledSize: parsed.filledSize,
|
|
158
|
+
avgPrice: parsed.avgPrice,
|
|
159
|
+
orderId: parsed.orderId,
|
|
114
160
|
timestamp: Date.now(),
|
|
115
161
|
raw: result,
|
|
116
162
|
};
|
|
@@ -140,6 +186,9 @@ export class Executor {
|
|
|
140
186
|
/**
|
|
141
187
|
* Execute a split order plan across multiple markets.
|
|
142
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).
|
|
143
192
|
*/
|
|
144
193
|
async executeSplit(plan, collateralManager, userAddress) {
|
|
145
194
|
await this.ensureBuilderApproval(userAddress);
|
|
@@ -150,24 +199,39 @@ export class Executor {
|
|
|
150
199
|
markets: plan.legs.map((l) => l.market.coin),
|
|
151
200
|
}, "Executing split order");
|
|
152
201
|
const timestamp = Date.now();
|
|
153
|
-
// Step 1:
|
|
202
|
+
// Step 1: Apply requested leverage per leg/market before any transfers/orders.
|
|
203
|
+
try {
|
|
204
|
+
await this.applySplitLeverage(plan);
|
|
205
|
+
}
|
|
206
|
+
catch (error) {
|
|
207
|
+
return this.failedSplitReceipt(plan, timestamp, {
|
|
208
|
+
success: false,
|
|
209
|
+
swapsExecuted: [],
|
|
210
|
+
abstractionWasEnabled: false,
|
|
211
|
+
error: error instanceof Error ? error.message : String(error),
|
|
212
|
+
}, `Leverage setup failed: ${error instanceof Error ? error.message : String(error)}`);
|
|
213
|
+
}
|
|
214
|
+
// Step 2: Estimate collateral using live balances at execution time.
|
|
154
215
|
const allocations = this.buildAllocationsFromLegs(plan);
|
|
155
216
|
const collateralPlan = await collateralManager.estimateRequirements(allocations, userAddress);
|
|
156
|
-
|
|
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)");
|
|
229
|
+
// Step 3: Prepare collateral (enable abstraction, swap if needed)
|
|
157
230
|
let collateralReceipt;
|
|
158
231
|
if (collateralPlan.swapsNeeded) {
|
|
159
232
|
collateralReceipt = await collateralManager.prepare(collateralPlan, userAddress);
|
|
160
233
|
if (!collateralReceipt.success) {
|
|
161
|
-
return {
|
|
162
|
-
success: false,
|
|
163
|
-
legs: [],
|
|
164
|
-
collateralReceipt,
|
|
165
|
-
totalRequestedSize: plan.totalSize,
|
|
166
|
-
totalFilledSize: "0",
|
|
167
|
-
aggregateAvgPrice: "0",
|
|
168
|
-
timestamp,
|
|
169
|
-
error: `Collateral preparation failed: ${collateralReceipt.error}`,
|
|
170
|
-
};
|
|
234
|
+
return this.failedSplitReceipt(plan, timestamp, collateralReceipt, `Collateral preparation failed: ${collateralReceipt.error}`);
|
|
171
235
|
}
|
|
172
236
|
}
|
|
173
237
|
else {
|
|
@@ -177,7 +241,7 @@ export class Executor {
|
|
|
177
241
|
abstractionWasEnabled: false,
|
|
178
242
|
};
|
|
179
243
|
}
|
|
180
|
-
// Step
|
|
244
|
+
// Step 4: Place all leg orders via batchOrders (single atomic API call)
|
|
181
245
|
try {
|
|
182
246
|
const orderParams = plan.legs.map((leg) => ({
|
|
183
247
|
assetIndex: leg.market.assetIndex,
|
|
@@ -186,98 +250,105 @@ export class Executor {
|
|
|
186
250
|
size: leg.size,
|
|
187
251
|
reduceOnly: false,
|
|
188
252
|
orderType: leg.orderType,
|
|
253
|
+
cloid: `0x${randomUUID().replace(/-/g, "")}`,
|
|
189
254
|
}));
|
|
190
|
-
const result = await this.provider.batchOrders(orderParams, this.wireBuilder ?? undefined);
|
|
191
|
-
// Step
|
|
255
|
+
const result = await this.provider.batchOrders(orderParams, this.builderEnabledForOrders ? this.wireBuilder ?? undefined : undefined);
|
|
256
|
+
// Step 5: Map each status to a per-leg receipt
|
|
192
257
|
const legs = plan.legs.map((leg, i) => {
|
|
193
258
|
const status = result.statuses[i];
|
|
194
|
-
|
|
195
|
-
let filledSize = "0";
|
|
196
|
-
let avgPrice = "0";
|
|
197
|
-
let success = false;
|
|
198
|
-
let error;
|
|
199
|
-
if (status && typeof status === "object") {
|
|
200
|
-
if ("filled" in status) {
|
|
201
|
-
orderId = status.filled.oid;
|
|
202
|
-
filledSize = status.filled.totalSz;
|
|
203
|
-
avgPrice = status.filled.avgPx;
|
|
204
|
-
success = true;
|
|
205
|
-
}
|
|
206
|
-
else if ("resting" in status) {
|
|
207
|
-
orderId = status.resting.oid;
|
|
208
|
-
filledSize = "0";
|
|
209
|
-
avgPrice = leg.price;
|
|
210
|
-
success = true; // Order is resting, not failed
|
|
211
|
-
}
|
|
212
|
-
else if ("error" in status) {
|
|
213
|
-
error = status.error;
|
|
214
|
-
}
|
|
215
|
-
}
|
|
259
|
+
const parsed = this.parseOrderStatus(status, leg.price);
|
|
216
260
|
return {
|
|
217
|
-
success,
|
|
218
261
|
market: leg.market,
|
|
219
262
|
side: leg.side,
|
|
220
263
|
requestedSize: leg.size,
|
|
221
|
-
filledSize,
|
|
222
|
-
avgPrice,
|
|
223
|
-
orderId,
|
|
224
|
-
|
|
225
|
-
error,
|
|
264
|
+
filledSize: parsed.filledSize,
|
|
265
|
+
avgPrice: parsed.avgPrice,
|
|
266
|
+
orderId: parsed.orderId,
|
|
267
|
+
success: parsed.success,
|
|
268
|
+
error: parsed.error,
|
|
226
269
|
raw: status,
|
|
227
270
|
};
|
|
228
271
|
});
|
|
229
|
-
// Step
|
|
272
|
+
// Step 6: Aggregate results
|
|
230
273
|
let totalFilledSize = 0;
|
|
231
274
|
let totalFilledCost = 0;
|
|
232
|
-
let
|
|
275
|
+
let succeededCount = 0;
|
|
276
|
+
let failedCount = 0;
|
|
233
277
|
for (const leg of legs) {
|
|
234
278
|
const filled = parseFloat(leg.filledSize);
|
|
235
279
|
const price = parseFloat(leg.avgPrice);
|
|
236
280
|
totalFilledSize += filled;
|
|
237
281
|
totalFilledCost += filled * price;
|
|
238
|
-
if (
|
|
239
|
-
|
|
282
|
+
if (leg.success) {
|
|
283
|
+
succeededCount++;
|
|
284
|
+
}
|
|
285
|
+
else {
|
|
286
|
+
failedCount++;
|
|
287
|
+
}
|
|
240
288
|
}
|
|
289
|
+
const allSucceeded = failedCount === 0;
|
|
290
|
+
const partialFill = succeededCount > 0 && failedCount > 0;
|
|
241
291
|
const aggregateAvgPrice = totalFilledSize > 0
|
|
242
292
|
? (totalFilledCost / totalFilledSize).toFixed(6)
|
|
243
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
|
+
}
|
|
244
300
|
this.logger.info({
|
|
245
|
-
|
|
301
|
+
allSucceeded,
|
|
302
|
+
partialFill,
|
|
246
303
|
totalFilledSize,
|
|
247
304
|
aggregateAvgPrice,
|
|
248
|
-
legsSucceeded:
|
|
249
|
-
legsFailed:
|
|
305
|
+
legsSucceeded: succeededCount,
|
|
306
|
+
legsFailed: failedCount,
|
|
250
307
|
}, "Split order executed");
|
|
251
308
|
return {
|
|
252
|
-
success:
|
|
309
|
+
success: allSucceeded,
|
|
310
|
+
allSucceeded,
|
|
311
|
+
partialFill,
|
|
253
312
|
legs,
|
|
254
313
|
collateralReceipt,
|
|
255
314
|
totalRequestedSize: plan.totalSize,
|
|
256
315
|
totalFilledSize: totalFilledSize.toString(),
|
|
257
316
|
aggregateAvgPrice,
|
|
258
317
|
timestamp,
|
|
318
|
+
warnings,
|
|
259
319
|
};
|
|
260
320
|
}
|
|
261
321
|
catch (error) {
|
|
262
322
|
this.logger.error({ error }, "Split order execution failed");
|
|
263
|
-
return
|
|
264
|
-
success: false,
|
|
265
|
-
legs: [],
|
|
266
|
-
collateralReceipt,
|
|
267
|
-
totalRequestedSize: plan.totalSize,
|
|
268
|
-
totalFilledSize: "0",
|
|
269
|
-
aggregateAvgPrice: "0",
|
|
270
|
-
timestamp,
|
|
271
|
-
error: error instanceof Error ? error.message : String(error),
|
|
272
|
-
};
|
|
323
|
+
return this.failedSplitReceipt(plan, timestamp, collateralReceipt, error instanceof Error ? error.message : String(error));
|
|
273
324
|
}
|
|
274
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
|
+
}
|
|
275
342
|
buildAllocationsFromLegs(plan) {
|
|
276
343
|
const totalSize = plan.legs.reduce((sum, leg) => sum + parseFloat(leg.size), 0);
|
|
277
344
|
return plan.legs.map((leg) => {
|
|
278
345
|
const size = parseFloat(leg.size);
|
|
279
346
|
const estimatedAvgPrice = parseFloat(leg.price);
|
|
280
|
-
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;
|
|
281
352
|
return {
|
|
282
353
|
market: leg.market,
|
|
283
354
|
size,
|
|
@@ -287,5 +358,178 @@ export class Executor {
|
|
|
287
358
|
};
|
|
288
359
|
});
|
|
289
360
|
}
|
|
361
|
+
async applyLeverageIfRequested(plan) {
|
|
362
|
+
if (plan.leverage === undefined)
|
|
363
|
+
return;
|
|
364
|
+
if (!Number.isFinite(plan.market.assetIndex)) {
|
|
365
|
+
throw new Error(`Invalid asset index "${plan.market.assetIndex}" for ${plan.market.coin}`);
|
|
366
|
+
}
|
|
367
|
+
if (!Number.isFinite(plan.leverage) || plan.leverage <= 0) {
|
|
368
|
+
throw new Error(`Invalid leverage "${plan.leverage}" for ${plan.market.coin}`);
|
|
369
|
+
}
|
|
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);
|
|
384
|
+
}
|
|
385
|
+
async applySplitLeverage(plan) {
|
|
386
|
+
const applied = new Set();
|
|
387
|
+
for (const leg of plan.legs) {
|
|
388
|
+
if (leg.leverage === undefined)
|
|
389
|
+
continue;
|
|
390
|
+
const key = `${leg.market.coin}:${leg.leverage}:${leg.isCross ?? true}`;
|
|
391
|
+
if (applied.has(key))
|
|
392
|
+
continue;
|
|
393
|
+
await this.applyLeverageIfRequested(leg);
|
|
394
|
+
applied.add(key);
|
|
395
|
+
}
|
|
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
|
+
}
|
|
290
534
|
}
|
|
291
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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"}
|