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
package/dist/router/router.js
CHANGED
|
@@ -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
|
|
74
|
-
|
|
75
|
-
|
|
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
|
|
159
|
-
const
|
|
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
|
-
|
|
166
|
-
|
|
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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"}
|
package/dist/router/scorer.d.ts
CHANGED
|
@@ -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;
|
|
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"}
|
package/dist/router/scorer.js
CHANGED
|
@@ -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
|
-
|
|
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
|
-
|
|
38
|
-
|
|
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
|
|
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"}
|
package/dist/router/types.d.ts
CHANGED
|
@@ -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;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/router/types.ts"],"names":[],"mappings":"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"}
|
package/dist/router/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/router/types.ts"],"names":[],"mappings":"
|
|
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 @@
|
|
|
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
|
+
"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.
|
|
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",
|