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.
Files changed (67) hide show
  1. package/README.md +87 -30
  2. package/dist/cli/program.d.ts.map +1 -1
  3. package/dist/cli/program.js +32 -7
  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 +23 -0
  13. package/dist/execution/executor.d.ts.map +1 -1
  14. package/dist/execution/executor.js +346 -102
  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 +51 -12
  19. package/dist/index.d.ts.map +1 -1
  20. package/dist/index.js +227 -26
  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 +3 -3
  45. package/dist/router/router.d.ts.map +1 -1
  46. package/dist/router/router.js +98 -25
  47. package/dist/router/router.js.map +1 -1
  48. package/dist/router/scorer.d.ts +3 -1
  49. package/dist/router/scorer.d.ts.map +1 -1
  50. package/dist/router/scorer.js +28 -5
  51. package/dist/router/scorer.js.map +1 -1
  52. package/dist/router/types.d.ts +11 -0
  53. package/dist/router/types.d.ts.map +1 -1
  54. package/dist/router/types.js.map +1 -1
  55. package/dist/types/result.d.ts +16 -0
  56. package/dist/types/result.d.ts.map +1 -0
  57. package/dist/types/result.js +9 -0
  58. package/dist/types/result.js.map +1 -0
  59. package/dist/utils/asset.d.ts +2 -0
  60. package/dist/utils/asset.d.ts.map +1 -0
  61. package/dist/utils/asset.js +18 -0
  62. package/dist/utils/asset.js.map +1 -0
  63. package/dist/utils/order-precision.d.ts +16 -0
  64. package/dist/utils/order-precision.d.ts.map +1 -0
  65. package/dist/utils/order-precision.js +45 -0
  66. package/dist/utils/order-precision.js.map +1 -0
  67. package/package.json +7 -3
@@ -2,6 +2,7 @@ import { FillSimulator } from "./simulator.js";
2
2
  import { MarketScorer } from "./scorer.js";
3
3
  import { SplitOptimizer } from "./splitter.js";
4
4
  import { NoMarketsError, InsufficientLiquidityError, MarketDataUnavailableError, } from "../utils/errors.js";
5
+ import { quantizeOrderPrice, quantizeOrderSize, sizeDecimalsForMarket, } from "../utils/order-precision.js";
5
6
  const BOOK_FETCH_TIMEOUT_MS = 2_500;
6
7
  export class Router {
7
8
  provider;
@@ -24,7 +25,7 @@ export class Router {
24
25
  * Generate a quote for a trade. This is read-only — no orders are placed.
25
26
  * The caller must explicitly call execute(plan) to act on it.
26
27
  */
27
- async quote(baseAsset, side, size, userCollateral, slippage = 0.01) {
28
+ async quote(baseAsset, side, size, userCollateral, slippage = 0.01, tradeOptions) {
28
29
  const markets = this.registry.getMarkets(baseAsset);
29
30
  if (markets.length === 0) {
30
31
  throw new NoMarketsError(baseAsset);
@@ -35,6 +36,7 @@ export class Router {
35
36
  }
36
37
  // Simulate + score each market
37
38
  const scored = [];
39
+ const requestedLeverage = tradeOptions?.leverage;
38
40
  for (const { market, book } of snapshots) {
39
41
  const sim = this.simulator.simulate(book, side, size);
40
42
  if (!sim) {
@@ -48,7 +50,7 @@ export class Router {
48
50
  });
49
51
  continue;
50
52
  }
51
- scored.push(this.scorer.score(sim, market, side, userCollateral));
53
+ scored.push(this.scorer.score(sim, market, side, userCollateral, undefined, requestedLeverage));
52
54
  }
53
55
  // Sort by score (lower = better)
54
56
  scored.sort((a, b) => a.totalScore - b.totalScore);
@@ -70,9 +72,19 @@ export class Router {
70
72
  throw new MarketDataUnavailableError(baseAsset, [best.market.coin]);
71
73
  }
72
74
  const sim = this.simulator.simulate(bestSnapshot.book, side, size);
73
- const slippagePrice = side === "buy"
74
- ? sim.avgPrice * (1 + slippage)
75
- : sim.avgPrice * (1 - slippage);
75
+ const legResult = buildExecutionLeg({
76
+ market: best.market,
77
+ side,
78
+ rawSize: size,
79
+ estimatedAvgPrice: sim.avgPrice,
80
+ slippage,
81
+ requestedLeverage,
82
+ requestedIsCross: tradeOptions?.isCross,
83
+ });
84
+ warnings.push(...legResult.warnings);
85
+ if (!legResult.leg) {
86
+ throw new InsufficientLiquidityError(baseAsset, size);
87
+ }
76
88
  return {
77
89
  baseAsset,
78
90
  side,
@@ -83,14 +95,7 @@ export class Router {
83
95
  estimatedFundingRate: parseFloat(best.market.funding ?? "0"),
84
96
  alternativesConsidered: scored,
85
97
  warnings: warnings.length > 0 ? warnings : undefined,
86
- plan: {
87
- market: best.market,
88
- side,
89
- size: size.toString(),
90
- price: slippagePrice.toFixed(6), // TODO: respect tick size
91
- orderType: { limit: { tif: "Ioc" } },
92
- slippage,
93
- },
98
+ plan: legResult.leg,
94
99
  };
95
100
  }
96
101
  /**
@@ -98,7 +103,7 @@ export class Router {
98
103
  * Uses the BookAggregator to merge books, then SplitOptimizer to find
99
104
  * the optimal allocation, then CollateralManager to estimate swap costs.
100
105
  */
101
- async quoteSplit(baseAsset, side, size, userCollateral, slippage = 0.01) {
106
+ async quoteSplit(baseAsset, side, size, userCollateral, slippage = 0.01, tradeOptions) {
102
107
  if (!this.aggregator) {
103
108
  throw new Error("BookAggregator required for split quotes");
104
109
  }
@@ -142,6 +147,7 @@ export class Router {
142
147
  ]));
143
148
  // Score each market for the alternativesConsidered list
144
149
  const scored = [];
150
+ const requestedLeverage = tradeOptions?.leverage;
145
151
  for (const alloc of splitResult.allocations) {
146
152
  const book = bookMap.get(alloc.market.coin);
147
153
  if (!book) {
@@ -150,24 +156,30 @@ export class Router {
150
156
  }
151
157
  const sim = this.simulator.simulate(book, side, alloc.size);
152
158
  if (sim) {
153
- scored.push(this.scorer.score(sim, alloc.market, side, userCollateral));
159
+ scored.push(this.scorer.score(sim, alloc.market, side, userCollateral, undefined, requestedLeverage));
154
160
  }
155
161
  }
156
162
  scored.sort((a, b) => a.totalScore - b.totalScore);
157
- // Build execution legs
158
- const legs = splitResult.allocations.map((alloc) => {
159
- const slippagePrice = side === "buy"
160
- ? alloc.estimatedAvgPrice * (1 + slippage)
161
- : alloc.estimatedAvgPrice * (1 - slippage);
162
- return {
163
+ // Build execution legs with per-market leverage clamping
164
+ const rawLegs = splitResult.allocations.map((alloc) => {
165
+ const legResult = buildExecutionLeg({
163
166
  market: alloc.market,
164
167
  side,
165
- size: alloc.size.toString(),
166
- price: slippagePrice.toFixed(6),
167
- orderType: { limit: { tif: "Ioc" } },
168
+ rawSize: alloc.size,
169
+ estimatedAvgPrice: alloc.estimatedAvgPrice,
168
170
  slippage,
169
- };
171
+ requestedLeverage,
172
+ requestedIsCross: tradeOptions?.isCross,
173
+ });
174
+ for (const w of legResult.warnings) {
175
+ this.pushWarning(warnings, w);
176
+ }
177
+ return legResult.leg;
170
178
  });
179
+ const legs = rawLegs.filter((leg) => leg !== null);
180
+ if (legs.length === 0) {
181
+ throw new InsufficientLiquidityError(baseAsset, size);
182
+ }
171
183
  // Compute weighted funding rate
172
184
  const weightedFunding = splitResult.allocations.reduce((sum, a) => sum + parseFloat(a.market.funding ?? "0") * a.proportion, 0);
173
185
  // Use the largest allocation's market as the "selected" market (for backward compat)
@@ -253,4 +265,65 @@ export class Router {
253
265
  }
254
266
  }
255
267
  }
268
+ /**
269
+ * Clamp requested leverage to the market's max. Returns undefined if no leverage was requested.
270
+ */
271
+ function clampLeverage(requested, market) {
272
+ if (requested === undefined)
273
+ return undefined;
274
+ return Math.min(requested, market.maxLeverage);
275
+ }
276
+ function resolveIsCross(requested, market, warnings) {
277
+ if (requested === undefined)
278
+ return undefined;
279
+ if (requested && market.onlyIsolated) {
280
+ const warning = `${market.coin}: cross margin unsupported on this asset; using isolated margin`;
281
+ if (!warnings.includes(warning)) {
282
+ warnings.push(warning);
283
+ }
284
+ return false;
285
+ }
286
+ return requested;
287
+ }
288
+ /**
289
+ * Build a single execution leg from raw inputs, applying slippage, leverage
290
+ * clamping, margin mode resolution, and size/price quantization.
291
+ *
292
+ * Shared between quote() and quoteSplit() to eliminate DRY violation.
293
+ * Returns null (with warnings) if the quantized size or price rounds to zero.
294
+ */
295
+ function buildExecutionLeg(params) {
296
+ const warnings = [];
297
+ const slippagePrice = params.side === "buy"
298
+ ? params.estimatedAvgPrice * (1 + params.slippage)
299
+ : params.estimatedAvgPrice * (1 - params.slippage);
300
+ const effectiveLeverage = clampLeverage(params.requestedLeverage, params.market);
301
+ if (params.requestedLeverage !== undefined && effectiveLeverage !== params.requestedLeverage) {
302
+ warnings.push(`${params.market.coin}: leverage clamped to ${effectiveLeverage}x (market max), requested ${params.requestedLeverage}x`);
303
+ }
304
+ const effectiveIsCross = resolveIsCross(params.requestedIsCross, params.market, warnings);
305
+ const orderSize = quantizeOrderSize(params.rawSize, params.market);
306
+ const orderPrice = quantizeOrderPrice(slippagePrice, params.side, params.market);
307
+ if (parseFloat(orderSize) <= 0) {
308
+ warnings.push(`${params.market.coin}: rounded order size to zero at ${sizeDecimalsForMarket(params.market)} decimals; leg skipped`);
309
+ return { leg: null, warnings };
310
+ }
311
+ if (parseFloat(orderPrice) <= 0) {
312
+ warnings.push(`${params.market.coin}: rounded order price to zero; leg skipped`);
313
+ return { leg: null, warnings };
314
+ }
315
+ return {
316
+ leg: {
317
+ market: params.market,
318
+ side: params.side,
319
+ size: orderSize,
320
+ price: orderPrice,
321
+ orderType: { limit: { tif: "Ioc" } },
322
+ slippage: params.slippage,
323
+ leverage: effectiveLeverage,
324
+ isCross: effectiveIsCross,
325
+ },
326
+ warnings,
327
+ };
328
+ }
256
329
  //# sourceMappingURL=router.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"router.js","sourceRoot":"","sources":["../../src/router/router.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"router.js","sourceRoot":"","sources":["../../src/router/router.ts"],"names":[],"mappings":"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"}
@@ -8,11 +8,13 @@ export declare class MarketScorer {
8
8
  * 1. Price impact (dominant factor)
9
9
  * 2. Funding rate (secondary — prefer favorable funding)
10
10
  * 3. Collateral match (if user lacks collateral, penalize by estimated swap cost)
11
+ * 4. Leverage fit (penalty when market maxLeverage < requested leverage)
11
12
  *
12
13
  * @param swapCostBps Estimated cost to swap into this market's collateral.
13
14
  * Pass 0 or omit when user already holds the collateral.
14
15
  * When omitted and collateral is missing, uses a conservative default.
16
+ * @param requestedLeverage Target leverage requested by the user. When omitted, no leverage penalty is applied.
15
17
  */
16
- score(simulation: SimulationResult, market: PerpMarket, side: "buy" | "sell", userCollateral: string[], swapCostBps?: number): MarketScore;
18
+ score(simulation: SimulationResult, market: PerpMarket, side: "buy" | "sell", userCollateral: string[], swapCostBps?: number, requestedLeverage?: number): MarketScore;
17
19
  }
18
20
  //# sourceMappingURL=scorer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"scorer.d.ts","sourceRoot":"","sources":["../../src/router/scorer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,KAAK,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAKhE,qBAAa,YAAY;IACvB;;;;;;;;;;;OAWG;IACH,KAAK,CACH,UAAU,EAAE,gBAAgB,EAC5B,MAAM,EAAE,UAAU,EAClB,IAAI,EAAE,KAAK,GAAG,MAAM,EACpB,cAAc,EAAE,MAAM,EAAE,EACxB,WAAW,CAAC,EAAE,MAAM,GACnB,WAAW;CA8Bf"}
1
+ {"version":3,"file":"scorer.d.ts","sourceRoot":"","sources":["../../src/router/scorer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,KAAK,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAahE,qBAAa,YAAY;IACvB;;;;;;;;;;;;;OAaG;IACH,KAAK,CACH,UAAU,EAAE,gBAAgB,EAC5B,MAAM,EAAE,UAAU,EAClB,IAAI,EAAE,KAAK,GAAG,MAAM,EACpB,cAAc,EAAE,MAAM,EAAE,EACxB,WAAW,CAAC,EAAE,MAAM,EACpB,iBAAiB,CAAC,EAAE,MAAM,GACzB,WAAW;CA8Cf"}
@@ -1,5 +1,12 @@
1
1
  /** Default swap cost estimate (bps) when no spot book data is available */
2
2
  const DEFAULT_SWAP_COST_BPS = 50;
3
+ /**
4
+ * Penalty (bps) per 1x of leverage clamping.
5
+ * E.g. requesting 20x on a 12x market → 8x gap → 8 * 25 = 200 bps penalty.
6
+ * This makes lower-leverage markets less attractive but doesn't exclude them,
7
+ * so the optimizer can still use their liquidity when it's price-competitive.
8
+ */
9
+ const LEVERAGE_CLAMP_PENALTY_PER_X = 25;
3
10
  export class MarketScorer {
4
11
  /**
5
12
  * Score a market for a given trade. Lower score = better.
@@ -8,12 +15,14 @@ export class MarketScorer {
8
15
  * 1. Price impact (dominant factor)
9
16
  * 2. Funding rate (secondary — prefer favorable funding)
10
17
  * 3. Collateral match (if user lacks collateral, penalize by estimated swap cost)
18
+ * 4. Leverage fit (penalty when market maxLeverage < requested leverage)
11
19
  *
12
20
  * @param swapCostBps Estimated cost to swap into this market's collateral.
13
21
  * Pass 0 or omit when user already holds the collateral.
14
22
  * When omitted and collateral is missing, uses a conservative default.
23
+ * @param requestedLeverage Target leverage requested by the user. When omitted, no leverage penalty is applied.
15
24
  */
16
- score(simulation, market, side, userCollateral, swapCostBps) {
25
+ score(simulation, market, side, userCollateral, swapCostBps, requestedLeverage) {
17
26
  // Price impact: direct cost, measured in bps
18
27
  const priceImpact = simulation.priceImpactBps;
19
28
  // Funding: if going long and funding is negative (shorts pay longs), that's good
@@ -26,7 +35,22 @@ export class MarketScorer {
26
35
  const collateralPenalty = hasCollateral
27
36
  ? 0
28
37
  : (swapCostBps ?? DEFAULT_SWAP_COST_BPS);
29
- const totalScore = priceImpact - fundingScore + collateralPenalty;
38
+ // Leverage fit: penalize if the market can't meet the requested leverage
39
+ let leveragePenalty = 0;
40
+ let leverageClamped;
41
+ if (requestedLeverage !== undefined && requestedLeverage > market.maxLeverage) {
42
+ const gap = requestedLeverage - market.maxLeverage;
43
+ leveragePenalty = gap * LEVERAGE_CLAMP_PENALTY_PER_X;
44
+ leverageClamped = market.maxLeverage;
45
+ }
46
+ const totalScore = priceImpact - fundingScore + collateralPenalty + leveragePenalty;
47
+ const reasons = [];
48
+ if (!hasCollateral) {
49
+ reasons.push(`No ${market.collateral} balance (swap ~${collateralPenalty.toFixed(1)} bps)`);
50
+ }
51
+ if (leverageClamped !== undefined) {
52
+ reasons.push(`Leverage clamped to ${leverageClamped}x (max), requested ${requestedLeverage}x`);
53
+ }
30
54
  return {
31
55
  market,
32
56
  priceImpact,
@@ -34,9 +58,8 @@ export class MarketScorer {
34
58
  collateralMatch: hasCollateral,
35
59
  totalScore,
36
60
  swapCostBps: hasCollateral ? undefined : (swapCostBps ?? DEFAULT_SWAP_COST_BPS),
37
- reason: !hasCollateral
38
- ? `No ${market.collateral} balance (swap ~${collateralPenalty.toFixed(1)} bps)`
39
- : undefined,
61
+ leverageClamped,
62
+ reason: reasons.length > 0 ? reasons.join("; ") : undefined,
40
63
  };
41
64
  }
42
65
  }
@@ -1 +1 @@
1
- {"version":3,"file":"scorer.js","sourceRoot":"","sources":["../../src/router/scorer.ts"],"names":[],"mappings":"AAGA,2EAA2E;AAC3E,MAAM,qBAAqB,GAAG,EAAE,CAAC;AAEjC,MAAM,OAAO,YAAY;IACvB;;;;;;;;;;;OAWG;IACH,KAAK,CACH,UAA4B,EAC5B,MAAkB,EAClB,IAAoB,EACpB,cAAwB,EACxB,WAAoB;QAEpB,6CAA6C;QAC7C,MAAM,WAAW,GAAG,UAAU,CAAC,cAAc,CAAC;QAE9C,iFAAiF;QACjF,MAAM,WAAW,GAAG,UAAU,CAAC,MAAM,CAAC,OAAO,IAAI,GAAG,CAAC,CAAC;QACtD,MAAM,cAAc,GAAG,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC;QACnE,iFAAiF;QACjF,MAAM,YAAY,GAAG,cAAc,GAAG,KAAK,GAAG,CAAC,CAAC;QAEhD,2DAA2D;QAC3D,MAAM,aAAa,GAAG,cAAc,CAAC,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QACjE,MAAM,iBAAiB,GAAG,aAAa;YACrC,CAAC,CAAC,CAAC;YACH,CAAC,CAAC,CAAC,WAAW,IAAI,qBAAqB,CAAC,CAAC;QAE3C,MAAM,UAAU,GAAG,WAAW,GAAG,YAAY,GAAG,iBAAiB,CAAC;QAElE,OAAO;YACL,MAAM;YACN,WAAW;YACX,WAAW;YACX,eAAe,EAAE,aAAa;YAC9B,UAAU;YACV,WAAW,EAAE,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,WAAW,IAAI,qBAAqB,CAAC;YAC/E,MAAM,EAAE,CAAC,aAAa;gBACpB,CAAC,CAAC,MAAM,MAAM,CAAC,UAAU,mBAAmB,iBAAiB,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO;gBAC/E,CAAC,CAAC,SAAS;SACd,CAAC;IACJ,CAAC;CACF"}
1
+ {"version":3,"file":"scorer.js","sourceRoot":"","sources":["../../src/router/scorer.ts"],"names":[],"mappings":"AAGA,2EAA2E;AAC3E,MAAM,qBAAqB,GAAG,EAAE,CAAC;AAEjC;;;;;GAKG;AACH,MAAM,4BAA4B,GAAG,EAAE,CAAC;AAExC,MAAM,OAAO,YAAY;IACvB;;;;;;;;;;;;;OAaG;IACH,KAAK,CACH,UAA4B,EAC5B,MAAkB,EAClB,IAAoB,EACpB,cAAwB,EACxB,WAAoB,EACpB,iBAA0B;QAE1B,6CAA6C;QAC7C,MAAM,WAAW,GAAG,UAAU,CAAC,cAAc,CAAC;QAE9C,iFAAiF;QACjF,MAAM,WAAW,GAAG,UAAU,CAAC,MAAM,CAAC,OAAO,IAAI,GAAG,CAAC,CAAC;QACtD,MAAM,cAAc,GAAG,IAAI,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,WAAW,CAAC;QACnE,iFAAiF;QACjF,MAAM,YAAY,GAAG,cAAc,GAAG,KAAK,GAAG,CAAC,CAAC;QAEhD,2DAA2D;QAC3D,MAAM,aAAa,GAAG,cAAc,CAAC,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QACjE,MAAM,iBAAiB,GAAG,aAAa;YACrC,CAAC,CAAC,CAAC;YACH,CAAC,CAAC,CAAC,WAAW,IAAI,qBAAqB,CAAC,CAAC;QAE3C,yEAAyE;QACzE,IAAI,eAAe,GAAG,CAAC,CAAC;QACxB,IAAI,eAAmC,CAAC;QACxC,IAAI,iBAAiB,KAAK,SAAS,IAAI,iBAAiB,GAAG,MAAM,CAAC,WAAW,EAAE,CAAC;YAC9E,MAAM,GAAG,GAAG,iBAAiB,GAAG,MAAM,CAAC,WAAW,CAAC;YACnD,eAAe,GAAG,GAAG,GAAG,4BAA4B,CAAC;YACrD,eAAe,GAAG,MAAM,CAAC,WAAW,CAAC;QACvC,CAAC;QAED,MAAM,UAAU,GAAG,WAAW,GAAG,YAAY,GAAG,iBAAiB,GAAG,eAAe,CAAC;QAEpF,MAAM,OAAO,GAAa,EAAE,CAAC;QAC7B,IAAI,CAAC,aAAa,EAAE,CAAC;YACnB,OAAO,CAAC,IAAI,CAAC,MAAM,MAAM,CAAC,UAAU,mBAAmB,iBAAiB,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;QAC9F,CAAC;QACD,IAAI,eAAe,KAAK,SAAS,EAAE,CAAC;YAClC,OAAO,CAAC,IAAI,CAAC,uBAAuB,eAAe,sBAAsB,iBAAiB,GAAG,CAAC,CAAC;QACjG,CAAC;QAED,OAAO;YACL,MAAM;YACN,WAAW;YACX,WAAW;YACX,eAAe,EAAE,aAAa;YAC9B,UAAU;YACV,WAAW,EAAE,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,WAAW,IAAI,qBAAqB,CAAC;YAC/E,eAAe;YACf,MAAM,EAAE,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS;SAC5D,CAAC;IACJ,CAAC;CACF"}
@@ -1,6 +1,12 @@
1
1
  import type { PerpMarket } from "../market/types.js";
2
2
  import type { OrderType } from "../provider/types.js";
3
3
  import type { CollateralPlan } from "../collateral/types.js";
4
+ export interface TradeExecutionOptions {
5
+ /** Target leverage for the trade. When omitted, exchange defaults are used. */
6
+ leverage?: number;
7
+ /** Margin mode used when setting leverage. Default: true (cross). */
8
+ isCross?: boolean;
9
+ }
4
10
  export interface Quote {
5
11
  baseAsset: string;
6
12
  side: "buy" | "sell";
@@ -20,6 +26,10 @@ export interface ExecutionPlan {
20
26
  price: string;
21
27
  orderType: OrderType;
22
28
  slippage: number;
29
+ /** When true, order may only reduce an existing position. */
30
+ reduceOnly?: boolean;
31
+ leverage?: number;
32
+ isCross?: boolean;
23
33
  }
24
34
  export interface MarketScore {
25
35
  market: PerpMarket;
@@ -28,6 +38,7 @@ export interface MarketScore {
28
38
  collateralMatch: boolean;
29
39
  totalScore: number;
30
40
  swapCostBps?: number;
41
+ leverageClamped?: number;
31
42
  reason?: string;
32
43
  }
33
44
  export interface SimulationResult {
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/router/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAE7D,MAAM,WAAW,KAAK;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,KAAK,GAAG,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,UAAU,CAAC;IAC3B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,oBAAoB,EAAE,MAAM,CAAC;IAC7B,oBAAoB,EAAE,MAAM,CAAC;IAC7B,sBAAsB,EAAE,WAAW,EAAE,CAAC;IACtC,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,IAAI,EAAE,aAAa,CAAC;CACrB;AAED,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,UAAU,CAAC;IACnB,IAAI,EAAE,KAAK,GAAG,MAAM,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,SAAS,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,UAAU,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,EAAE,OAAO,CAAC;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;CACpB;AAID,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,UAAU,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,EAAE,MAAM,CAAC;IACtB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,WAAW;IAC1B,WAAW,EAAE,eAAe,EAAE,CAAC;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,uBAAuB,EAAE,MAAM,CAAC;IAChC,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,UAAW,SAAQ,KAAK;IACvC,OAAO,EAAE,IAAI,CAAC;IACd,WAAW,EAAE,eAAe,EAAE,CAAC;IAC/B,cAAc,EAAE,cAAc,CAAC;IAC/B,SAAS,EAAE,kBAAkB,CAAC;CAC/B;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,aAAa,EAAE,CAAC;IACtB,cAAc,EAAE,cAAc,CAAC;IAC/B,IAAI,EAAE,KAAK,GAAG,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,wBAAgB,YAAY,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,IAAI,UAAU,CAEtD"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/router/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAE7D,MAAM,WAAW,qBAAqB;IACpC,+EAA+E;IAC/E,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,qEAAqE;IACrE,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,KAAK;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,KAAK,GAAG,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,UAAU,CAAC;IAC3B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,oBAAoB,EAAE,MAAM,CAAC;IAC7B,oBAAoB,EAAE,MAAM,CAAC;IAC7B,sBAAsB,EAAE,WAAW,EAAE,CAAC;IACtC,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,IAAI,EAAE,aAAa,CAAC;CACrB;AAED,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,UAAU,CAAC;IACnB,IAAI,EAAE,KAAK,GAAG,MAAM,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,SAAS,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,6DAA6D;IAC7D,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,UAAU,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,EAAE,OAAO,CAAC;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;CACpB;AAID,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,UAAU,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,EAAE,MAAM,CAAC;IACtB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,WAAW;IAC1B,WAAW,EAAE,eAAe,EAAE,CAAC;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,uBAAuB,EAAE,MAAM,CAAC;IAChC,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,UAAW,SAAQ,KAAK;IACvC,OAAO,EAAE,IAAI,CAAC;IACd,WAAW,EAAE,eAAe,EAAE,CAAC;IAC/B,cAAc,EAAE,cAAc,CAAC;IAC/B,SAAS,EAAE,kBAAkB,CAAC;CAC/B;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,aAAa,EAAE,CAAC;IACtB,cAAc,EAAE,cAAc,CAAC;IAC/B,IAAI,EAAE,KAAK,GAAG,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,wBAAgB,YAAY,CAAC,CAAC,EAAE,KAAK,GAAG,CAAC,IAAI,UAAU,CAEtD"}
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/router/types.ts"],"names":[],"mappings":"AA8EA,MAAM,UAAU,YAAY,CAAC,CAAQ;IACnC,OAAO,SAAS,IAAI,CAAC,IAAK,CAAgB,CAAC,OAAO,KAAK,IAAI,CAAC;AAC9D,CAAC"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/router/types.ts"],"names":[],"mappings":"AA0FA,MAAM,UAAU,YAAY,CAAC,CAAQ;IACnC,OAAO,SAAS,IAAI,CAAC,IAAK,CAAgB,CAAC,OAAO,KAAK,IAAI,CAAC;AAC9D,CAAC"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Generic result wrapper that carries partial data alongside warnings.
3
+ * Used when an operation succeeds but some data sources failed.
4
+ *
5
+ * Example: fetching positions from 3 deployers where 1 is down returns
6
+ * the positions from the 2 healthy deployers plus a warning about the failed one.
7
+ */
8
+ export type WithWarnings<T> = {
9
+ data: T;
10
+ warnings: string[];
11
+ };
12
+ /** Create a WithWarnings with no warnings. */
13
+ export declare function ok<T>(data: T): WithWarnings<T>;
14
+ /** Create a WithWarnings with warnings. */
15
+ export declare function withWarnings<T>(data: T, warnings: string[]): WithWarnings<T>;
16
+ //# sourceMappingURL=result.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"result.d.ts","sourceRoot":"","sources":["../../src/types/result.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,MAAM,MAAM,YAAY,CAAC,CAAC,IAAI;IAC5B,IAAI,EAAE,CAAC,CAAC;IACR,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB,CAAC;AAEF,8CAA8C;AAC9C,wBAAgB,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,GAAG,YAAY,CAAC,CAAC,CAAC,CAE9C;AAED,2CAA2C;AAC3C,wBAAgB,YAAY,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,YAAY,CAAC,CAAC,CAAC,CAE5E"}
@@ -0,0 +1,9 @@
1
+ /** Create a WithWarnings with no warnings. */
2
+ export function ok(data) {
3
+ return { data, warnings: [] };
4
+ }
5
+ /** Create a WithWarnings with warnings. */
6
+ export function withWarnings(data, warnings) {
7
+ return { data, warnings };
8
+ }
9
+ //# sourceMappingURL=result.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"result.js","sourceRoot":"","sources":["../../src/types/result.ts"],"names":[],"mappings":"AAYA,8CAA8C;AAC9C,MAAM,UAAU,EAAE,CAAI,IAAO;IAC3B,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;AAChC,CAAC;AAED,2CAA2C;AAC3C,MAAM,UAAU,YAAY,CAAI,IAAO,EAAE,QAAkB;IACzD,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;AAC5B,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function assetVariants(value: string): Set<string>;
2
+ //# sourceMappingURL=asset.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"asset.d.ts","sourceRoot":"","sources":["../../src/utils/asset.ts"],"names":[],"mappings":"AAAA,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,CAkBxD"}
@@ -0,0 +1,18 @@
1
+ export function assetVariants(value) {
2
+ const normalized = String(value ?? "").trim().toUpperCase();
3
+ const out = new Set();
4
+ if (!normalized)
5
+ return out;
6
+ out.add(normalized);
7
+ const slashBase = normalized.includes("/") ? (normalized.split("/")[0] ?? normalized) : normalized;
8
+ out.add(slashBase);
9
+ const colonBase = slashBase.includes(":")
10
+ ? slashBase.slice(slashBase.indexOf(":") + 1)
11
+ : slashBase;
12
+ out.add(colonBase);
13
+ const stripped = colonBase.replace(/\d+$/, "");
14
+ if (stripped)
15
+ out.add(stripped);
16
+ return out;
17
+ }
18
+ //# sourceMappingURL=asset.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"asset.js","sourceRoot":"","sources":["../../src/utils/asset.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,aAAa,CAAC,KAAa;IACzC,MAAM,UAAU,GAAG,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAC5D,MAAM,GAAG,GAAG,IAAI,GAAG,EAAU,CAAC;IAC9B,IAAI,CAAC,UAAU;QAAE,OAAO,GAAG,CAAC;IAE5B,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IACpB,MAAM,SAAS,GAAG,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC;IACnG,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IAEnB,MAAM,SAAS,GAAG,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC;QACvC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC7C,CAAC,CAAC,SAAS,CAAC;IACd,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IAEnB,MAAM,QAAQ,GAAG,SAAS,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IAC/C,IAAI,QAAQ;QAAE,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAEhC,OAAO,GAAG,CAAC;AACb,CAAC"}
@@ -0,0 +1,16 @@
1
+ import type { PerpMarket } from "../market/types.js";
2
+ export declare function sizeDecimalsForMarket(market: PerpMarket): number;
3
+ export declare function quantizeOrderSize(size: number, market: PerpMarket): string;
4
+ /**
5
+ * Format a price to a valid Hyperliquid tick size using the official
6
+ * `@nktkas/hyperliquid` string-based formatting.
7
+ *
8
+ * Rules (per HL docs):
9
+ * - Max 5 significant figures
10
+ * - Max (6 - szDecimals) decimal places for perps
11
+ * - Integer prices always allowed
12
+ *
13
+ * Slippage is applied upstream, so truncation is safe for both directions.
14
+ */
15
+ export declare function quantizeOrderPrice(price: number, _side: "buy" | "sell", market: PerpMarket): string;
16
+ //# sourceMappingURL=order-precision.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"order-precision.d.ts","sourceRoot":"","sources":["../../src/utils/order-precision.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAKrD,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM,CAKhE;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,GAAG,MAAM,CAQ1E;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,KAAK,GAAG,MAAM,EACrB,MAAM,EAAE,UAAU,GACjB,MAAM,CAQR"}
@@ -0,0 +1,45 @@
1
+ import { formatPrice, formatSize } from "@nktkas/hyperliquid/utils";
2
+ const DEFAULT_ORDER_SIZE_DECIMALS = 6;
3
+ const MAX_ORDER_SIZE_DECIMALS = 12;
4
+ export function sizeDecimalsForMarket(market) {
5
+ if (market.szDecimals === undefined)
6
+ return DEFAULT_ORDER_SIZE_DECIMALS;
7
+ if (!Number.isFinite(market.szDecimals))
8
+ return DEFAULT_ORDER_SIZE_DECIMALS;
9
+ const normalized = Math.floor(market.szDecimals);
10
+ return Math.max(0, Math.min(MAX_ORDER_SIZE_DECIMALS, normalized));
11
+ }
12
+ export function quantizeOrderSize(size, market) {
13
+ if (!Number.isFinite(size) || size <= 0)
14
+ return "0";
15
+ const szDecimals = sizeDecimalsForMarket(market);
16
+ try {
17
+ return formatSize(size, szDecimals);
18
+ }
19
+ catch {
20
+ return "0";
21
+ }
22
+ }
23
+ /**
24
+ * Format a price to a valid Hyperliquid tick size using the official
25
+ * `@nktkas/hyperliquid` string-based formatting.
26
+ *
27
+ * Rules (per HL docs):
28
+ * - Max 5 significant figures
29
+ * - Max (6 - szDecimals) decimal places for perps
30
+ * - Integer prices always allowed
31
+ *
32
+ * Slippage is applied upstream, so truncation is safe for both directions.
33
+ */
34
+ export function quantizeOrderPrice(price, _side, market) {
35
+ if (!Number.isFinite(price) || price <= 0)
36
+ return "0";
37
+ const szDecimals = sizeDecimalsForMarket(market);
38
+ try {
39
+ return formatPrice(price, szDecimals, "perp");
40
+ }
41
+ catch {
42
+ return "0";
43
+ }
44
+ }
45
+ //# sourceMappingURL=order-precision.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"order-precision.js","sourceRoot":"","sources":["../../src/utils/order-precision.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAGpE,MAAM,2BAA2B,GAAG,CAAC,CAAC;AACtC,MAAM,uBAAuB,GAAG,EAAE,CAAC;AAEnC,MAAM,UAAU,qBAAqB,CAAC,MAAkB;IACtD,IAAI,MAAM,CAAC,UAAU,KAAK,SAAS;QAAE,OAAO,2BAA2B,CAAC;IACxE,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC;QAAE,OAAO,2BAA2B,CAAC;IAC5E,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;IACjD,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,uBAAuB,EAAE,UAAU,CAAC,CAAC,CAAC;AACpE,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,IAAY,EAAE,MAAkB;IAChE,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC;QAAE,OAAO,GAAG,CAAC;IACpD,MAAM,UAAU,GAAG,qBAAqB,CAAC,MAAM,CAAC,CAAC;IACjD,IAAI,CAAC;QACH,OAAO,UAAU,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;IACtC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,GAAG,CAAC;IACb,CAAC;AACH,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,kBAAkB,CAChC,KAAa,EACb,KAAqB,EACrB,MAAkB;IAElB,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC;QAAE,OAAO,GAAG,CAAC;IACtD,MAAM,UAAU,GAAG,qBAAqB,CAAC,MAAM,CAAC,CAAC;IACjD,IAAI,CAAC;QACH,OAAO,WAAW,CAAC,KAAK,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC;IAChD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,GAAG,CAAC;IACb,CAAC;AACH,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "hyperliquid-prime",
3
- "version": "0.1.3",
3
+ "version": "0.1.5",
4
4
  "description": "Prime broker SDK for Hyperliquid markets — unified trading across fragmented markets",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -36,15 +36,19 @@
36
36
  ],
37
37
  "license": "MIT",
38
38
  "dependencies": {
39
- "@nktkas/hyperliquid": "^0.30.0",
39
+ "@nktkas/hyperliquid": "^0.31.0",
40
40
  "better-sqlite3": "^11.0.0",
41
41
  "commander": "^12.0.0",
42
42
  "pino": "^9.0.0",
43
- "viem": "^2.0.0"
43
+ "viem": "^2.0.0",
44
+ "ws": "^8.18.3",
45
+ "zod": "^4.3.6"
44
46
  },
45
47
  "devDependencies": {
46
48
  "@types/better-sqlite3": "^7.0.0",
47
49
  "@types/node": "^22.0.0",
50
+ "@typescript-eslint/eslint-plugin": "^8.57.0",
51
+ "@typescript-eslint/parser": "^8.57.0",
48
52
  "eslint": "^9.0.0",
49
53
  "pino-pretty": "^11.0.0",
50
54
  "tsx": "^4.0.0",