hyperliquid-prime 0.1.4 → 0.1.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +64 -28
- package/dist/cli/program.d.ts.map +1 -1
- package/dist/cli/program.js +5 -1
- package/dist/cli/program.js.map +1 -1
- package/dist/collateral/manager.d.ts +2 -2
- package/dist/collateral/manager.d.ts.map +1 -1
- package/dist/collateral/manager.js +487 -91
- package/dist/collateral/manager.js.map +1 -1
- package/dist/config.d.ts +5 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js.map +1 -1
- package/dist/execution/executor.d.ts +21 -0
- package/dist/execution/executor.d.ts.map +1 -1
- package/dist/execution/executor.js +311 -112
- package/dist/execution/executor.js.map +1 -1
- package/dist/execution/types.d.ts +23 -2
- package/dist/execution/types.d.ts.map +1 -1
- package/dist/index.d.ts +42 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +196 -14
- package/dist/index.js.map +1 -1
- package/dist/market/registry.d.ts +3 -0
- package/dist/market/registry.d.ts.map +1 -1
- package/dist/market/registry.js +53 -23
- package/dist/market/registry.js.map +1 -1
- package/dist/market/types.d.ts +6 -0
- package/dist/market/types.d.ts.map +1 -1
- package/dist/position/manager.d.ts +6 -3
- package/dist/position/manager.d.ts.map +1 -1
- package/dist/position/manager.js +58 -31
- package/dist/position/manager.js.map +1 -1
- package/dist/provider/nktkas.d.ts +38 -3
- package/dist/provider/nktkas.d.ts.map +1 -1
- package/dist/provider/nktkas.js +202 -35
- package/dist/provider/nktkas.js.map +1 -1
- package/dist/provider/provider.d.ts +29 -3
- package/dist/provider/provider.d.ts.map +1 -1
- package/dist/provider/schemas.d.ts +933 -0
- package/dist/provider/schemas.d.ts.map +1 -0
- package/dist/provider/schemas.js +330 -0
- package/dist/provider/schemas.js.map +1 -0
- package/dist/provider/types.d.ts +88 -1
- package/dist/provider/types.d.ts.map +1 -1
- package/dist/router/router.d.ts.map +1 -1
- package/dist/router/router.js +96 -27
- package/dist/router/router.js.map +1 -1
- package/dist/router/scorer.d.ts +3 -1
- package/dist/router/scorer.d.ts.map +1 -1
- package/dist/router/scorer.js +28 -5
- package/dist/router/scorer.js.map +1 -1
- package/dist/router/types.d.ts +3 -0
- package/dist/router/types.d.ts.map +1 -1
- package/dist/router/types.js.map +1 -1
- package/dist/types/result.d.ts +16 -0
- package/dist/types/result.d.ts.map +1 -0
- package/dist/types/result.js +9 -0
- package/dist/types/result.js.map +1 -0
- package/dist/utils/asset.d.ts +2 -0
- package/dist/utils/asset.d.ts.map +1 -0
- package/dist/utils/asset.js +18 -0
- package/dist/utils/asset.js.map +1 -0
- package/dist/utils/order-precision.d.ts +16 -0
- package/dist/utils/order-precision.d.ts.map +1 -0
- package/dist/utils/order-precision.js +45 -0
- package/dist/utils/order-precision.js.map +1 -0
- package/package.json +7 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/execution/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAEhE,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,UAAU,CAAC;IACnB,IAAI,EAAE,KAAK,GAAG,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,OAAO,CAAC;CACf;AAED,MAAM,MAAM,eAAe,GACvB,SAAS,GACT,MAAM,GACN,QAAQ,GACR,kBAAkB,GAClB,WAAW,GACX,UAAU,CAAC;AAEf,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/execution/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAEhE,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,UAAU,CAAC;IACnB,IAAI,EAAE,KAAK,GAAG,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,OAAO,CAAC;CACf;AAED,MAAM,MAAM,eAAe,GACvB,SAAS,GACT,MAAM,GACN,QAAQ,GACR,kBAAkB,GAClB,WAAW,GACX,UAAU,CAAC;AAEf,gDAAgD;AAChD,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,UAAU,CAAC;IACnB,IAAI,EAAE,KAAK,GAAG,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;IAC5B,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,GAAG,CAAC,EAAE,OAAO,CAAC;CACf;AAED,MAAM,WAAW,qBAAqB;IACpC,uCAAuC;IACvC,YAAY,EAAE,OAAO,CAAC;IACtB,sDAAsD;IACtD,WAAW,EAAE,OAAO,CAAC;IACrB,kCAAkC;IAClC,IAAI,EAAE,UAAU,EAAE,CAAC;IACnB,iBAAiB,EAAE,iBAAiB,CAAC;IACrC,kBAAkB,EAAE,MAAM,CAAC;IAC3B,eAAe,EAAE,MAAM,CAAC;IACxB,qDAAqD;IACrD,iBAAiB,EAAE,MAAM,CAAC;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,2CAA2C;IAC3C,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,4CAA4C;IAC5C,OAAO,EAAE,OAAO,CAAC;CAClB"}
|
package/dist/index.d.ts
CHANGED
|
@@ -5,6 +5,9 @@ import type { PerpMarket, MarketGroup, AggregatedBook, FundingComparison } from
|
|
|
5
5
|
import type { Quote, ExecutionPlan, SplitQuote, SplitExecutionPlan, TradeExecutionOptions } from "./router/types.js";
|
|
6
6
|
import type { ExecutionReceipt, SplitExecutionReceipt } from "./execution/types.js";
|
|
7
7
|
import type { LogicalPosition } from "./position/types.js";
|
|
8
|
+
import type { CollateralPlan } from "./collateral/types.js";
|
|
9
|
+
import type { ReferralResponse } from "./provider/types.js";
|
|
10
|
+
import type { WithWarnings } from "./types/result.js";
|
|
8
11
|
export declare class HyperliquidPrime {
|
|
9
12
|
private provider;
|
|
10
13
|
private _registry;
|
|
@@ -41,14 +44,19 @@ export declare class HyperliquidPrime {
|
|
|
41
44
|
quoteSplit(baseAsset: string, side: "buy" | "sell", size: number, options?: TradeExecutionOptions): Promise<SplitQuote>;
|
|
42
45
|
/** Execute a previously generated split quote. */
|
|
43
46
|
executeSplit(plan: SplitExecutionPlan): Promise<SplitExecutionReceipt>;
|
|
47
|
+
/**
|
|
48
|
+
* Estimate collateral swaps required for a split execution plan.
|
|
49
|
+
* Read-only: no transfers, swaps, or abstraction writes are performed.
|
|
50
|
+
*/
|
|
51
|
+
estimateSplitCollateral(plan: SplitExecutionPlan, userAddress?: string): Promise<CollateralPlan>;
|
|
44
52
|
/** Convenience: split quote + execute in one call. */
|
|
45
53
|
longSplit(baseAsset: string, size: number, options?: TradeExecutionOptions): Promise<SplitExecutionReceipt>;
|
|
46
54
|
shortSplit(baseAsset: string, size: number, options?: TradeExecutionOptions): Promise<SplitExecutionReceipt>;
|
|
47
55
|
close(baseAsset: string): Promise<ExecutionReceipt[]>;
|
|
48
|
-
/** Get all positions. */
|
|
49
|
-
getPositions(): Promise<LogicalPosition[]
|
|
50
|
-
/** Get positions grouped by base asset (unified view). */
|
|
51
|
-
getGroupedPositions(): Promise<Map<string, LogicalPosition[]
|
|
56
|
+
/** Get all positions with warnings about any failed deployer fetches. */
|
|
57
|
+
getPositions(): Promise<WithWarnings<LogicalPosition[]>>;
|
|
58
|
+
/** Get positions grouped by base asset (unified view) with warnings. */
|
|
59
|
+
getGroupedPositions(): Promise<WithWarnings<Map<string, LogicalPosition[]>>>;
|
|
52
60
|
/** Get perp account balance/margin summary. */
|
|
53
61
|
getBalance(): Promise<{
|
|
54
62
|
accountValue: string;
|
|
@@ -56,6 +64,31 @@ export declare class HyperliquidPrime {
|
|
|
56
64
|
totalNtlPos: string;
|
|
57
65
|
totalRawUsd: string;
|
|
58
66
|
}>;
|
|
67
|
+
/** Approve an agent wallet to trade on behalf of this account. Master signs. */
|
|
68
|
+
approveAgent(agentAddress: `0x${string}`, agentName?: string): Promise<void>;
|
|
69
|
+
/** List approved agent wallets for the current user. */
|
|
70
|
+
listAgents(): Promise<{
|
|
71
|
+
address: `0x${string}`;
|
|
72
|
+
name: string;
|
|
73
|
+
validUntil: number;
|
|
74
|
+
}[]>;
|
|
75
|
+
/** List approved agent wallets for any user address (no wallet required). */
|
|
76
|
+
listAgentsFor(user: `0x${string}`): Promise<{
|
|
77
|
+
address: `0x${string}`;
|
|
78
|
+
name: string;
|
|
79
|
+
validUntil: number;
|
|
80
|
+
}[]>;
|
|
81
|
+
/** Set abstraction mode for the user. Master signs. */
|
|
82
|
+
setAbstraction(abstraction: "dexAbstraction" | "unifiedAccount" | "portfolioMargin" | "disabled"): Promise<void>;
|
|
83
|
+
/** Set abstraction mode as an agent. Agent signs. */
|
|
84
|
+
agentSetAbstraction(abstraction: "i" | "u" | "p"): Promise<void>;
|
|
85
|
+
/** Get referral data for any user (public read, no wallet needed). */
|
|
86
|
+
getReferral(user: string): Promise<ReferralResponse>;
|
|
87
|
+
/**
|
|
88
|
+
* Reset the cached builder-fee approval state so the next trade re-checks on-chain.
|
|
89
|
+
* Call after the master wallet approves the builder fee (e.g. after setup flow completes).
|
|
90
|
+
*/
|
|
91
|
+
resetBuilderApprovalCheck(): void;
|
|
59
92
|
/** Direct access to the provider for raw HL API calls. */
|
|
60
93
|
get api(): HLProvider;
|
|
61
94
|
/** Direct access to the market registry. */
|
|
@@ -63,14 +96,16 @@ export declare class HyperliquidPrime {
|
|
|
63
96
|
disconnect(): Promise<void>;
|
|
64
97
|
private resolveUserCollateral;
|
|
65
98
|
private normalizeTradeOptions;
|
|
99
|
+
private buildAllocationsFromSplitPlan;
|
|
66
100
|
}
|
|
67
101
|
export type { HyperliquidPrimeConfig, BuilderConfig } from "./config.js";
|
|
68
102
|
export type { HLProvider } from "./provider/provider.js";
|
|
69
103
|
export type { PerpMarket, HIP3Market, MarketGroup, AggregatedBook, FundingComparison } from "./market/types.js";
|
|
70
104
|
export type { Quote, ExecutionPlan, MarketScore, SimulationResult, SplitQuote, SplitExecutionPlan, SplitAllocation, SplitResult } from "./router/types.js";
|
|
71
105
|
export { isSplitQuote } from "./router/types.js";
|
|
72
|
-
export type { ExecutionReceipt, SplitExecutionReceipt } from "./execution/types.js";
|
|
106
|
+
export type { ExecutionReceipt, SplitExecutionReceipt, LegReceipt } from "./execution/types.js";
|
|
73
107
|
export type { CollateralPlan, CollateralRequirement, CollateralReceipt } from "./collateral/types.js";
|
|
108
|
+
export type { ReferralResponse, ReferralUserState } from "./provider/types.js";
|
|
74
109
|
export type { LogicalPosition, ManagedPositionState, RiskProfile } from "./position/types.js";
|
|
75
110
|
export type { TradeExecutionOptions } from "./router/types.js";
|
|
76
111
|
export type { Logger } from "./logging/logger.js";
|
|
@@ -86,4 +121,6 @@ export { PositionManager } from "./position/manager.js";
|
|
|
86
121
|
export { NktkasProvider } from "./provider/nktkas.js";
|
|
87
122
|
export { createLogger } from "./logging/logger.js";
|
|
88
123
|
export { HyperliquidPrimeError, NoMarketsError, InsufficientLiquidityError, MarketDataUnavailableError, NoWalletError, NotConnectedError, ExecutionError, } from "./utils/errors.js";
|
|
124
|
+
export type { WithWarnings } from "./types/result.js";
|
|
125
|
+
export { ok, withWarnings } from "./types/result.js";
|
|
89
126
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,sBAAsB,EAAiB,MAAM,aAAa,CAAC;AAEzE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAEzD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -9,6 +9,8 @@ import { CollateralManager } from "./collateral/manager.js";
|
|
|
9
9
|
import { PositionManager } from "./position/manager.js";
|
|
10
10
|
import { createLogger } from "./logging/logger.js";
|
|
11
11
|
import { HyperliquidPrimeError, NoWalletError, NotConnectedError } from "./utils/errors.js";
|
|
12
|
+
import { assetVariants } from "./utils/asset.js";
|
|
13
|
+
import { quantizeOrderSize, quantizeOrderPrice } from "./utils/order-precision.js";
|
|
12
14
|
export class HyperliquidPrime {
|
|
13
15
|
provider;
|
|
14
16
|
_registry;
|
|
@@ -22,24 +24,31 @@ export class HyperliquidPrime {
|
|
|
22
24
|
walletAddress;
|
|
23
25
|
connected = false;
|
|
24
26
|
constructor(config) {
|
|
27
|
+
if (config.privateKey && config.wallet) {
|
|
28
|
+
throw new HyperliquidPrimeError("Provide either privateKey or wallet, not both.");
|
|
29
|
+
}
|
|
25
30
|
this._config = config;
|
|
26
31
|
this.logger = createLogger({
|
|
27
32
|
level: config.logLevel ?? "info",
|
|
28
33
|
pretty: config.prettyLogs ?? false,
|
|
29
34
|
});
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
testnet: config.testnet ?? false,
|
|
33
|
-
});
|
|
34
|
-
// Derive wallet address if private key is provided
|
|
35
|
+
// Derive wallet address if private key is provided. Abstract wallets must pass
|
|
36
|
+
// walletAddress or signerAddress explicitly because construction is synchronous.
|
|
35
37
|
if (config.privateKey) {
|
|
36
38
|
this.walletAddress =
|
|
37
39
|
config.walletAddress ??
|
|
38
40
|
privateKeyToAccount(config.privateKey).address;
|
|
39
41
|
}
|
|
40
42
|
else {
|
|
41
|
-
this.walletAddress = config.walletAddress;
|
|
43
|
+
this.walletAddress = config.walletAddress ?? config.signerAddress;
|
|
42
44
|
}
|
|
45
|
+
this.provider = new NktkasProvider({
|
|
46
|
+
privateKey: config.privateKey,
|
|
47
|
+
wallet: config.wallet,
|
|
48
|
+
walletAddress: this.walletAddress,
|
|
49
|
+
signerAddress: config.signerAddress,
|
|
50
|
+
testnet: config.testnet ?? false,
|
|
51
|
+
});
|
|
43
52
|
this._registry = new MarketRegistry(this.provider, this.logger);
|
|
44
53
|
this.aggregator = new BookAggregator(this.provider, this._registry, this.logger);
|
|
45
54
|
this.collateralManager = new CollateralManager(this.provider, this.logger);
|
|
@@ -126,7 +135,9 @@ export class HyperliquidPrime {
|
|
|
126
135
|
async execute(plan) {
|
|
127
136
|
this.ensureConnected();
|
|
128
137
|
const user = this.ensureWallet();
|
|
129
|
-
|
|
138
|
+
const receipt = await this.executor.execute(plan, user);
|
|
139
|
+
this.provider.invalidateBalanceCaches?.();
|
|
140
|
+
return receipt;
|
|
130
141
|
}
|
|
131
142
|
/** Convenience: quote + execute in one call. */
|
|
132
143
|
async long(baseAsset, size, options) {
|
|
@@ -152,7 +163,21 @@ export class HyperliquidPrime {
|
|
|
152
163
|
async executeSplit(plan) {
|
|
153
164
|
this.ensureConnected();
|
|
154
165
|
const user = this.ensureWallet();
|
|
155
|
-
|
|
166
|
+
const receipt = await this.executor.executeSplit(plan, this.collateralManager, user);
|
|
167
|
+
this.provider.invalidateBalanceCaches?.();
|
|
168
|
+
return receipt;
|
|
169
|
+
}
|
|
170
|
+
/**
|
|
171
|
+
* Estimate collateral swaps required for a split execution plan.
|
|
172
|
+
* Read-only: no transfers, swaps, or abstraction writes are performed.
|
|
173
|
+
*/
|
|
174
|
+
async estimateSplitCollateral(plan, userAddress) {
|
|
175
|
+
this.ensureConnected();
|
|
176
|
+
const user = userAddress ?? this.walletAddress;
|
|
177
|
+
if (!user)
|
|
178
|
+
throw new NoWalletError();
|
|
179
|
+
const allocations = this.buildAllocationsFromSplitPlan(plan);
|
|
180
|
+
return this.collateralManager.estimateRequirements(allocations, user);
|
|
156
181
|
}
|
|
157
182
|
/** Convenience: split quote + execute in one call. */
|
|
158
183
|
async longSplit(baseAsset, size, options) {
|
|
@@ -166,25 +191,115 @@ export class HyperliquidPrime {
|
|
|
166
191
|
async close(baseAsset) {
|
|
167
192
|
this.ensureConnected();
|
|
168
193
|
const user = this.ensureWallet();
|
|
169
|
-
|
|
170
|
-
|
|
194
|
+
// Invalidate cached clearinghouse state so we fetch fresh positions.
|
|
195
|
+
// Without this, the 30-second cache can serve stale data that doesn't
|
|
196
|
+
// include positions opened externally (e.g. on the Hyperliquid UI).
|
|
197
|
+
this.provider.invalidateBalanceCaches?.();
|
|
198
|
+
const normalizedRequest = String(baseAsset ?? "").trim().toUpperCase();
|
|
199
|
+
const requestedCoin = normalizedRequest.includes(":") ? normalizedRequest : null;
|
|
200
|
+
const requestedVariants = requestedCoin ? new Set() : assetVariants(baseAsset);
|
|
201
|
+
const { data: allPositions, warnings } = await this.positions.getPositions(user);
|
|
202
|
+
if (allPositions.length === 0) {
|
|
203
|
+
this.logger.warn({ user, baseAsset, warnings }, "close: getPositions returned empty — no positions found for user");
|
|
204
|
+
}
|
|
205
|
+
const toClose = allPositions.filter((p) => {
|
|
206
|
+
if (p.size <= 0)
|
|
207
|
+
return false;
|
|
208
|
+
if (requestedCoin) {
|
|
209
|
+
return p.coin.toUpperCase() === requestedCoin;
|
|
210
|
+
}
|
|
211
|
+
if (requestedVariants.size === 0)
|
|
212
|
+
return false;
|
|
213
|
+
const positionVariants = new Set([
|
|
214
|
+
...assetVariants(p.baseAsset),
|
|
215
|
+
...assetVariants(p.coin),
|
|
216
|
+
]);
|
|
217
|
+
for (const variant of positionVariants) {
|
|
218
|
+
if (requestedVariants.has(variant))
|
|
219
|
+
return true;
|
|
220
|
+
}
|
|
221
|
+
return false;
|
|
222
|
+
});
|
|
223
|
+
if (allPositions.length > 0 && toClose.length === 0) {
|
|
224
|
+
this.logger.warn({
|
|
225
|
+
baseAsset,
|
|
226
|
+
requestedCoin,
|
|
227
|
+
requestedVariants: [...requestedVariants],
|
|
228
|
+
positions: allPositions.map((p) => ({
|
|
229
|
+
coin: p.coin,
|
|
230
|
+
baseAsset: p.baseAsset,
|
|
231
|
+
size: p.size,
|
|
232
|
+
side: p.side,
|
|
233
|
+
})),
|
|
234
|
+
}, "close: positions exist but none match the requested asset variants");
|
|
235
|
+
}
|
|
236
|
+
const slippage = this._config.defaultSlippage ?? 0.01;
|
|
171
237
|
const receipts = [];
|
|
172
238
|
for (const pos of toClose) {
|
|
173
239
|
const side = pos.side === "long" ? "sell" : "buy";
|
|
174
|
-
|
|
175
|
-
|
|
240
|
+
if (!pos.market) {
|
|
241
|
+
this.logger.error({ coin: pos.coin, baseAsset: pos.baseAsset }, "Cannot close position: no market data available in registry");
|
|
242
|
+
receipts.push({
|
|
243
|
+
success: false,
|
|
244
|
+
market: { coin: pos.coin, baseAsset: pos.baseAsset, assetIndex: -1 },
|
|
245
|
+
side,
|
|
246
|
+
requestedSize: String(pos.size),
|
|
247
|
+
filledSize: "0",
|
|
248
|
+
avgPrice: "0",
|
|
249
|
+
orderId: undefined,
|
|
250
|
+
timestamp: Date.now(),
|
|
251
|
+
error: `No market data found for ${pos.coin}`,
|
|
252
|
+
});
|
|
253
|
+
continue;
|
|
254
|
+
}
|
|
255
|
+
// Build execution plan directly from position data, bypassing the
|
|
256
|
+
// router's market selection. This ensures we target the exact market
|
|
257
|
+
// where the position exists rather than whatever the router picks as
|
|
258
|
+
// "best" (which may be a different deployer market entirely).
|
|
259
|
+
const slippageMultiplier = side === "buy" ? (1 + slippage) : (1 - slippage);
|
|
260
|
+
const limitPrice = pos.markPrice * slippageMultiplier;
|
|
261
|
+
const orderSize = quantizeOrderSize(pos.size, pos.market);
|
|
262
|
+
const orderPrice = quantizeOrderPrice(limitPrice, side, pos.market);
|
|
263
|
+
if (parseFloat(orderSize) <= 0 || parseFloat(orderPrice) <= 0) {
|
|
264
|
+
this.logger.error({ coin: pos.coin, size: pos.size, markPrice: pos.markPrice, orderSize, orderPrice }, "Cannot close position: quantized size or price is zero");
|
|
265
|
+
receipts.push({
|
|
266
|
+
success: false,
|
|
267
|
+
market: pos.market,
|
|
268
|
+
side,
|
|
269
|
+
requestedSize: String(pos.size),
|
|
270
|
+
filledSize: "0",
|
|
271
|
+
avgPrice: "0",
|
|
272
|
+
orderId: undefined,
|
|
273
|
+
timestamp: Date.now(),
|
|
274
|
+
error: `Quantized order size (${orderSize}) or price (${orderPrice}) is zero for ${pos.coin}`,
|
|
275
|
+
});
|
|
276
|
+
continue;
|
|
277
|
+
}
|
|
278
|
+
// Match Hyperliquid UI close behavior: reduceOnly + FrontendMarket TIF.
|
|
279
|
+
// Without reduceOnly the exchange treats the order as a new position open,
|
|
280
|
+
// which fails with "Vault not registered" on HIP-3 deployer markets.
|
|
281
|
+
const plan = {
|
|
282
|
+
market: pos.market,
|
|
283
|
+
side,
|
|
284
|
+
size: orderSize,
|
|
285
|
+
price: orderPrice,
|
|
286
|
+
orderType: { limit: { tif: "FrontendMarket" } },
|
|
287
|
+
slippage,
|
|
288
|
+
reduceOnly: true,
|
|
289
|
+
};
|
|
290
|
+
const receipt = await this.execute(plan);
|
|
176
291
|
receipts.push(receipt);
|
|
177
292
|
}
|
|
178
293
|
return receipts;
|
|
179
294
|
}
|
|
180
295
|
// === Positions ===
|
|
181
|
-
/** Get all positions. */
|
|
296
|
+
/** Get all positions with warnings about any failed deployer fetches. */
|
|
182
297
|
async getPositions() {
|
|
183
298
|
this.ensureConnected();
|
|
184
299
|
const user = this.ensureWallet();
|
|
185
300
|
return this.positions.getPositions(user);
|
|
186
301
|
}
|
|
187
|
-
/** Get positions grouped by base asset (unified view). */
|
|
302
|
+
/** Get positions grouped by base asset (unified view) with warnings. */
|
|
188
303
|
async getGroupedPositions() {
|
|
189
304
|
this.ensureConnected();
|
|
190
305
|
const user = this.ensureWallet();
|
|
@@ -198,6 +313,53 @@ export class HyperliquidPrime {
|
|
|
198
313
|
const state = await this.provider.clearinghouseState(user);
|
|
199
314
|
return state.marginSummary;
|
|
200
315
|
}
|
|
316
|
+
// === Agent Wallet Management ===
|
|
317
|
+
/** Approve an agent wallet to trade on behalf of this account. Master signs. */
|
|
318
|
+
async approveAgent(agentAddress, agentName) {
|
|
319
|
+
this.ensureConnected();
|
|
320
|
+
return this.provider.approveAgent({
|
|
321
|
+
agentAddress,
|
|
322
|
+
agentName: agentName ?? null,
|
|
323
|
+
});
|
|
324
|
+
}
|
|
325
|
+
/** List approved agent wallets for the current user. */
|
|
326
|
+
async listAgents() {
|
|
327
|
+
this.ensureConnected();
|
|
328
|
+
const user = this.ensureWallet();
|
|
329
|
+
return this.provider.extraAgents(user);
|
|
330
|
+
}
|
|
331
|
+
/** List approved agent wallets for any user address (no wallet required). */
|
|
332
|
+
async listAgentsFor(user) {
|
|
333
|
+
this.ensureConnected();
|
|
334
|
+
return this.provider.extraAgents(user);
|
|
335
|
+
}
|
|
336
|
+
/** Set abstraction mode for the user. Master signs. */
|
|
337
|
+
async setAbstraction(abstraction) {
|
|
338
|
+
this.ensureConnected();
|
|
339
|
+
const user = this.ensureWallet();
|
|
340
|
+
return this.provider.userSetAbstraction({
|
|
341
|
+
user: user,
|
|
342
|
+
abstraction,
|
|
343
|
+
});
|
|
344
|
+
}
|
|
345
|
+
/** Set abstraction mode as an agent. Agent signs. */
|
|
346
|
+
async agentSetAbstraction(abstraction) {
|
|
347
|
+
this.ensureConnected();
|
|
348
|
+
return this.provider.agentSetAbstraction({ abstraction });
|
|
349
|
+
}
|
|
350
|
+
// === Referral ===
|
|
351
|
+
/** Get referral data for any user (public read, no wallet needed). */
|
|
352
|
+
async getReferral(user) {
|
|
353
|
+
this.ensureConnected();
|
|
354
|
+
return this.provider.referral(user);
|
|
355
|
+
}
|
|
356
|
+
/**
|
|
357
|
+
* Reset the cached builder-fee approval state so the next trade re-checks on-chain.
|
|
358
|
+
* Call after the master wallet approves the builder fee (e.g. after setup flow completes).
|
|
359
|
+
*/
|
|
360
|
+
resetBuilderApprovalCheck() {
|
|
361
|
+
this.executor.resetBuilderApprovalCheck();
|
|
362
|
+
}
|
|
201
363
|
// === Escape Hatches ===
|
|
202
364
|
/** Direct access to the provider for raw HL API calls. */
|
|
203
365
|
get api() {
|
|
@@ -251,6 +413,25 @@ export class HyperliquidPrime {
|
|
|
251
413
|
isCross: options.isCross ?? true,
|
|
252
414
|
};
|
|
253
415
|
}
|
|
416
|
+
buildAllocationsFromSplitPlan(plan) {
|
|
417
|
+
const totalSize = plan.legs.reduce((sum, leg) => sum + parseFloat(leg.size), 0);
|
|
418
|
+
return plan.legs.map((leg) => {
|
|
419
|
+
const size = parseFloat(leg.size);
|
|
420
|
+
const estimatedAvgPrice = parseFloat(leg.price);
|
|
421
|
+
const notional = size * estimatedAvgPrice;
|
|
422
|
+
const leverage = Number.isFinite(leg.leverage) && (leg.leverage ?? 0) > 0
|
|
423
|
+
? leg.leverage
|
|
424
|
+
: 1;
|
|
425
|
+
const estimatedCost = notional / leverage;
|
|
426
|
+
return {
|
|
427
|
+
market: leg.market,
|
|
428
|
+
size,
|
|
429
|
+
estimatedCost,
|
|
430
|
+
estimatedAvgPrice,
|
|
431
|
+
proportion: totalSize > 0 ? size / totalSize : 0,
|
|
432
|
+
};
|
|
433
|
+
});
|
|
434
|
+
}
|
|
254
435
|
}
|
|
255
436
|
export { isSplitQuote } from "./router/types.js";
|
|
256
437
|
export { MarketRegistry } from "./market/registry.js";
|
|
@@ -265,4 +446,5 @@ export { PositionManager } from "./position/manager.js";
|
|
|
265
446
|
export { NktkasProvider } from "./provider/nktkas.js";
|
|
266
447
|
export { createLogger } from "./logging/logger.js";
|
|
267
448
|
export { HyperliquidPrimeError, NoMarketsError, InsufficientLiquidityError, MarketDataUnavailableError, NoWalletError, NotConnectedError, ExecutionError, } from "./utils/errors.js";
|
|
449
|
+
export { ok, withWarnings } from "./types/result.js";
|
|
268
450
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,6 +4,7 @@ import type { PerpMarket, MarketGroup } from "./types.js";
|
|
|
4
4
|
export declare class MarketRegistry {
|
|
5
5
|
private provider;
|
|
6
6
|
private groups;
|
|
7
|
+
private coinIndex;
|
|
7
8
|
private spotTokens;
|
|
8
9
|
private logger;
|
|
9
10
|
constructor(provider: HLProvider, logger: Logger);
|
|
@@ -12,6 +13,8 @@ export declare class MarketRegistry {
|
|
|
12
13
|
getGroup(baseAsset: string): MarketGroup | undefined;
|
|
13
14
|
getAllGroups(): MarketGroup[];
|
|
14
15
|
getGroupsWithAlternatives(): MarketGroup[];
|
|
16
|
+
/** O(1) lookup of a market by its full coin name (e.g. "xyz:TSLA"). */
|
|
17
|
+
findByCoin(coin: string): PerpMarket | undefined;
|
|
15
18
|
private parseAsset;
|
|
16
19
|
private extractBaseAsset;
|
|
17
20
|
private resolveCollateralToken;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/market/registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAE1D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE1D,qBAAa,cAAc;
|
|
1
|
+
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/market/registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAE1D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE1D,qBAAa,cAAc;IAOvB,OAAO,CAAC,QAAQ;IANlB,OAAO,CAAC,MAAM,CAAkC;IAChD,OAAO,CAAC,SAAS,CAAiC;IAClD,OAAO,CAAC,UAAU,CAAgC;IAClD,OAAO,CAAC,MAAM,CAAS;gBAGb,QAAQ,EAAE,UAAU,EAC5B,MAAM,EAAE,MAAM;IAKV,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAyH/B,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,UAAU,EAAE;IAI3C,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS;IAIpD,YAAY,IAAI,WAAW,EAAE;IAI7B,yBAAyB,IAAI,WAAW,EAAE;IAI1C,uEAAuE;IACvE,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS;IAIhD,OAAO,CAAC,UAAU;IA+BlB,OAAO,CAAC,gBAAgB;IASxB,OAAO,CAAC,sBAAsB;CAQ/B"}
|
package/dist/market/registry.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
export class MarketRegistry {
|
|
2
2
|
provider;
|
|
3
3
|
groups = new Map();
|
|
4
|
+
coinIndex = new Map();
|
|
4
5
|
spotTokens = new Map();
|
|
5
6
|
logger;
|
|
6
7
|
constructor(provider, logger) {
|
|
@@ -15,46 +16,57 @@ export class MarketRegistry {
|
|
|
15
16
|
for (const token of spotMeta.tokens) {
|
|
16
17
|
nextSpotTokens.set(token.index, token);
|
|
17
18
|
}
|
|
18
|
-
// Fetch
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
const
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
19
|
+
// Fetch deployer list — indices in this array ARE the canonical dex indices
|
|
20
|
+
// used by the exchange for global asset ID computation.
|
|
21
|
+
// Previously we iterated allPerpMetas() which can have different array
|
|
22
|
+
// indices than perpDexs(), causing wrong asset IDs (e.g. 110003 instead
|
|
23
|
+
// of 170009 for xyz:GOLD).
|
|
24
|
+
const dexs = await this.provider.perpDexs();
|
|
25
|
+
// Build (dexIndex, dexName) pairs from perpDexs.
|
|
26
|
+
// In the real API, perpDexs[0] is always null (native perps).
|
|
27
|
+
// null entries → native deployer, non-null → HIP-3 deployer.
|
|
28
|
+
const dexEntries = [];
|
|
29
|
+
for (let i = 0; i < dexs.length; i++) {
|
|
30
|
+
const dex = dexs[i];
|
|
31
|
+
if (dex === null) {
|
|
32
|
+
dexEntries.push({ dexIndex: i, dexName: "__native__", apiDex: "", isNative: true });
|
|
33
|
+
}
|
|
34
|
+
else if (dex.name && dex.name.length > 0) {
|
|
35
|
+
dexEntries.push({ dexIndex: i, dexName: dex.name, apiDex: dex.name, isNative: false });
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
// Fetch metaAndAssetCtxs for each deployer in parallel
|
|
39
|
+
const ctxResults = await Promise.allSettled(dexEntries.map((entry) => this.provider.metaAndAssetCtxs(entry.apiDex)));
|
|
40
|
+
this.logger.info({ dexCount: dexEntries.length, spotTokens: spotMeta.tokens.length }, "Discovering markets across all deployers");
|
|
28
41
|
let totalAssets = 0;
|
|
29
42
|
let dexContextFailures = 0;
|
|
30
|
-
for (const [
|
|
31
|
-
const
|
|
32
|
-
const dexName = dex ? dex.name : "__native__";
|
|
33
|
-
const collateral = this.resolveCollateralToken(meta.collateralToken, nextSpotTokens);
|
|
34
|
-
const ctxResult = ctxResults[dexIndex];
|
|
43
|
+
for (const [idx, entry] of dexEntries.entries()) {
|
|
44
|
+
const ctxResult = ctxResults[idx];
|
|
35
45
|
if (!ctxResult || ctxResult.status === "rejected") {
|
|
36
46
|
dexContextFailures++;
|
|
37
47
|
this.logger.warn({
|
|
38
|
-
dexName,
|
|
48
|
+
dexName: entry.dexName,
|
|
49
|
+
dexIndex: entry.dexIndex,
|
|
39
50
|
reason: ctxResult?.status === "rejected" ? String(ctxResult.reason) : "missing context result",
|
|
40
51
|
}, "Skipping deployer due to missing asset contexts");
|
|
41
52
|
continue;
|
|
42
53
|
}
|
|
43
|
-
const [, assetCtxs] = ctxResult.value;
|
|
54
|
+
const [meta, assetCtxs] = ctxResult.value;
|
|
55
|
+
const collateral = this.resolveCollateralToken(meta.collateralToken, nextSpotTokens);
|
|
44
56
|
for (const [i, asset] of meta.universe.entries()) {
|
|
45
57
|
// Skip delisted markets
|
|
46
58
|
if (asset.isDelisted)
|
|
47
59
|
continue;
|
|
48
60
|
const ctx = assetCtxs[i];
|
|
49
61
|
if (!ctx) {
|
|
50
|
-
this.logger.warn({ dexName, asset: asset.name, assetIndex: i }, "Skipping asset due to missing context");
|
|
62
|
+
this.logger.warn({ dexName: entry.dexName, asset: asset.name, assetIndex: i }, "Skipping asset due to missing context");
|
|
51
63
|
continue;
|
|
52
64
|
}
|
|
53
|
-
// Compute global asset ID:
|
|
54
|
-
// Native
|
|
55
|
-
// HIP-3
|
|
56
|
-
const globalAssetIndex =
|
|
57
|
-
const parsed = this.parseAsset(asset, globalAssetIndex, ctx, dexName, collateral);
|
|
65
|
+
// Compute global asset ID using the CANONICAL dex index from perpDexs():
|
|
66
|
+
// Native: assetIndex = local index
|
|
67
|
+
// HIP-3: assetIndex = 100000 + dexIndex * 10000 + local index
|
|
68
|
+
const globalAssetIndex = entry.isNative ? i : 100000 + entry.dexIndex * 10000 + i;
|
|
69
|
+
const parsed = this.parseAsset(asset, globalAssetIndex, ctx, entry.dexName, collateral);
|
|
58
70
|
if (!parsed)
|
|
59
71
|
continue;
|
|
60
72
|
const key = parsed.baseAsset.toUpperCase();
|
|
@@ -73,6 +85,14 @@ export class MarketRegistry {
|
|
|
73
85
|
}
|
|
74
86
|
this.groups = nextGroups;
|
|
75
87
|
this.spotTokens = nextSpotTokens;
|
|
88
|
+
// Build coin→market index for O(1) lookup by coin name
|
|
89
|
+
const nextCoinIndex = new Map();
|
|
90
|
+
for (const group of nextGroups.values()) {
|
|
91
|
+
for (const market of group.markets) {
|
|
92
|
+
nextCoinIndex.set(market.coin, market);
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
this.coinIndex = nextCoinIndex;
|
|
76
96
|
this.logger.info({
|
|
77
97
|
totalAssets,
|
|
78
98
|
totalGroups: nextGroups.size,
|
|
@@ -92,6 +112,10 @@ export class MarketRegistry {
|
|
|
92
112
|
getGroupsWithAlternatives() {
|
|
93
113
|
return [...this.groups.values()].filter((g) => g.hasAlternatives);
|
|
94
114
|
}
|
|
115
|
+
/** O(1) lookup of a market by its full coin name (e.g. "xyz:TSLA"). */
|
|
116
|
+
findByCoin(coin) {
|
|
117
|
+
return this.coinIndex.get(coin);
|
|
118
|
+
}
|
|
95
119
|
parseAsset(asset, index, ctx, dexName, collateral) {
|
|
96
120
|
const isNative = dexName === "__native__";
|
|
97
121
|
return {
|
|
@@ -103,8 +127,14 @@ export class MarketRegistry {
|
|
|
103
127
|
dexName,
|
|
104
128
|
collateral,
|
|
105
129
|
isNative,
|
|
130
|
+
maxLeverage: asset.maxLeverage,
|
|
131
|
+
szDecimals: asset.szDecimals,
|
|
132
|
+
onlyIsolated: asset.onlyIsolated,
|
|
133
|
+
marginMode: asset.marginMode,
|
|
106
134
|
funding: ctx.funding,
|
|
107
135
|
openInterest: ctx.openInterest,
|
|
136
|
+
prevDayPx: ctx.prevDayPx,
|
|
137
|
+
dayNtlVlm: ctx.dayNtlVlm,
|
|
108
138
|
markPrice: ctx.markPx,
|
|
109
139
|
oraclePx: ctx.oraclePx,
|
|
110
140
|
};
|