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
@@ -13,14 +13,35 @@ export interface ExecutionReceipt {
13
13
  raw?: unknown;
14
14
  }
15
15
  export type OrderStatusType = "pending" | "open" | "filled" | "partially_filled" | "cancelled" | "rejected";
16
- export interface SplitExecutionReceipt {
16
+ /** Per-leg receipt within a split execution. */
17
+ export interface LegReceipt {
18
+ market: PerpMarket;
19
+ side: "buy" | "sell";
20
+ requestedSize: string;
21
+ filledSize: string;
22
+ avgPrice: string;
23
+ orderId: number | undefined;
17
24
  success: boolean;
18
- legs: ExecutionReceipt[];
25
+ error?: string;
26
+ raw?: unknown;
27
+ }
28
+ export interface SplitExecutionReceipt {
29
+ /** True only if ALL legs succeeded. */
30
+ allSucceeded: boolean;
31
+ /** True if at least one leg succeeded but not all. */
32
+ partialFill: boolean;
33
+ /** Individual per-leg results. */
34
+ legs: LegReceipt[];
19
35
  collateralReceipt: CollateralReceipt;
20
36
  totalRequestedSize: string;
21
37
  totalFilledSize: string;
38
+ /** Weighted average price across all filled legs. */
22
39
  aggregateAvgPrice: string;
23
40
  timestamp: number;
41
+ /** Warnings generated during execution. */
42
+ warnings: string[];
24
43
  error?: string;
44
+ /** @deprecated Use allSucceeded instead. */
45
+ success: boolean;
25
46
  }
26
47
  //# sourceMappingURL=types.d.ts.map
@@ -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;IACjB,IAAI,EAAE,gBAAgB,EAAE,CAAC;IACzB,iBAAiB,EAAE,iBAAiB,CAAC;IACrC,kBAAkB,EAAE,MAAM,CAAC;IAC3B,eAAe,EAAE,MAAM,CAAC;IACxB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB"}
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
@@ -2,9 +2,12 @@ import type { HyperliquidPrimeConfig } from "./config.js";
2
2
  import type { HLProvider } from "./provider/provider.js";
3
3
  import { MarketRegistry } from "./market/registry.js";
4
4
  import type { PerpMarket, MarketGroup, AggregatedBook, FundingComparison } from "./market/types.js";
5
- import type { Quote, ExecutionPlan, SplitQuote, SplitExecutionPlan } from "./router/types.js";
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;
@@ -31,24 +34,29 @@ export declare class HyperliquidPrime {
31
34
  /** Compare funding rates across all markets for an asset. */
32
35
  getFundingComparison(baseAsset: string): Promise<FundingComparison>;
33
36
  /** Generate a routing quote. Does NOT execute. */
34
- quote(baseAsset: string, side: "buy" | "sell", size: number): Promise<Quote>;
37
+ quote(baseAsset: string, side: "buy" | "sell", size: number, options?: TradeExecutionOptions): Promise<Quote>;
35
38
  /** Execute a previously generated quote. */
36
39
  execute(plan: ExecutionPlan): Promise<ExecutionReceipt>;
37
40
  /** Convenience: quote + execute in one call. */
38
- long(baseAsset: string, size: number): Promise<ExecutionReceipt>;
39
- short(baseAsset: string, size: number): Promise<ExecutionReceipt>;
41
+ long(baseAsset: string, size: number, options?: TradeExecutionOptions): Promise<ExecutionReceipt>;
42
+ short(baseAsset: string, size: number, options?: TradeExecutionOptions): Promise<ExecutionReceipt>;
40
43
  /** Generate a split quote across multiple HIP-3 markets. Does NOT execute. */
41
- quoteSplit(baseAsset: string, side: "buy" | "sell", size: number): Promise<SplitQuote>;
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
- longSplit(baseAsset: string, size: number): Promise<SplitExecutionReceipt>;
46
- shortSplit(baseAsset: string, size: number): Promise<SplitExecutionReceipt>;
53
+ longSplit(baseAsset: string, size: number, options?: TradeExecutionOptions): Promise<SplitExecutionReceipt>;
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,21 +64,50 @@ 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. */
62
95
  get markets(): MarketRegistry;
63
96
  disconnect(): Promise<void>;
64
97
  private resolveUserCollateral;
98
+ private normalizeTradeOptions;
99
+ private buildAllocationsFromSplitPlan;
65
100
  }
66
101
  export type { HyperliquidPrimeConfig, BuilderConfig } from "./config.js";
67
102
  export type { HLProvider } from "./provider/provider.js";
68
103
  export type { PerpMarket, HIP3Market, MarketGroup, AggregatedBook, FundingComparison } from "./market/types.js";
69
104
  export type { Quote, ExecutionPlan, MarketScore, SimulationResult, SplitQuote, SplitExecutionPlan, SplitAllocation, SplitResult } from "./router/types.js";
70
105
  export { isSplitQuote } from "./router/types.js";
71
- export type { ExecutionReceipt, SplitExecutionReceipt } from "./execution/types.js";
106
+ export type { ExecutionReceipt, SplitExecutionReceipt, LegReceipt } from "./execution/types.js";
72
107
  export type { CollateralPlan, CollateralRequirement, CollateralReceipt } from "./collateral/types.js";
108
+ export type { ReferralResponse, ReferralUserState } from "./provider/types.js";
73
109
  export type { LogicalPosition, ManagedPositionState, RiskProfile } from "./position/types.js";
110
+ export type { TradeExecutionOptions } from "./router/types.js";
74
111
  export type { Logger } from "./logging/logger.js";
75
112
  export { MarketRegistry } from "./market/registry.js";
76
113
  export { BookAggregator } from "./market/aggregator.js";
@@ -84,4 +121,6 @@ export { PositionManager } from "./position/manager.js";
84
121
  export { NktkasProvider } from "./provider/nktkas.js";
85
122
  export { createLogger } from "./logging/logger.js";
86
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";
87
126
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
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
- this.provider = new NktkasProvider({
31
- privateKey: config.privateKey,
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);
@@ -111,10 +120,11 @@ export class HyperliquidPrime {
111
120
  return comparison;
112
121
  }
113
122
  /** Generate a routing quote. Does NOT execute. */
114
- async quote(baseAsset, side, size) {
123
+ async quote(baseAsset, side, size, options) {
115
124
  this.ensureConnected();
125
+ const tradeOptions = this.normalizeTradeOptions(options);
116
126
  const { collateral, warnings } = await this.resolveUserCollateral();
117
- const quote = await this.router.quote(baseAsset, side, size, collateral, this._config.defaultSlippage ?? 0.01);
127
+ const quote = await this.router.quote(baseAsset, side, size, collateral, this._config.defaultSlippage ?? 0.01, tradeOptions);
118
128
  if (warnings.length > 0) {
119
129
  quote.warnings = [...(quote.warnings ?? []), ...warnings];
120
130
  }
@@ -125,22 +135,25 @@ export class HyperliquidPrime {
125
135
  async execute(plan) {
126
136
  this.ensureConnected();
127
137
  const user = this.ensureWallet();
128
- return this.executor.execute(plan, user);
138
+ const receipt = await this.executor.execute(plan, user);
139
+ this.provider.invalidateBalanceCaches?.();
140
+ return receipt;
129
141
  }
130
142
  /** Convenience: quote + execute in one call. */
131
- async long(baseAsset, size) {
132
- const q = await this.quote(baseAsset, "buy", size);
143
+ async long(baseAsset, size, options) {
144
+ const q = await this.quote(baseAsset, "buy", size, options);
133
145
  return this.execute(q.plan);
134
146
  }
135
- async short(baseAsset, size) {
136
- const q = await this.quote(baseAsset, "sell", size);
147
+ async short(baseAsset, size, options) {
148
+ const q = await this.quote(baseAsset, "sell", size, options);
137
149
  return this.execute(q.plan);
138
150
  }
139
151
  /** Generate a split quote across multiple HIP-3 markets. Does NOT execute. */
140
- async quoteSplit(baseAsset, side, size) {
152
+ async quoteSplit(baseAsset, side, size, options) {
141
153
  this.ensureConnected();
154
+ const tradeOptions = this.normalizeTradeOptions(options);
142
155
  const { collateral, warnings } = await this.resolveUserCollateral();
143
- const quote = await this.router.quoteSplit(baseAsset, side, size, collateral, this._config.defaultSlippage ?? 0.01);
156
+ const quote = await this.router.quoteSplit(baseAsset, side, size, collateral, this._config.defaultSlippage ?? 0.01, tradeOptions);
144
157
  if (warnings.length > 0) {
145
158
  quote.warnings = [...(quote.warnings ?? []), ...warnings];
146
159
  }
@@ -150,39 +163,143 @@ export class HyperliquidPrime {
150
163
  async executeSplit(plan) {
151
164
  this.ensureConnected();
152
165
  const user = this.ensureWallet();
153
- return this.executor.executeSplit(plan, this.collateralManager, user);
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);
154
181
  }
155
182
  /** Convenience: split quote + execute in one call. */
156
- async longSplit(baseAsset, size) {
157
- const q = await this.quoteSplit(baseAsset, "buy", size);
183
+ async longSplit(baseAsset, size, options) {
184
+ const q = await this.quoteSplit(baseAsset, "buy", size, options);
158
185
  return this.executeSplit(q.splitPlan);
159
186
  }
160
- async shortSplit(baseAsset, size) {
161
- const q = await this.quoteSplit(baseAsset, "sell", size);
187
+ async shortSplit(baseAsset, size, options) {
188
+ const q = await this.quoteSplit(baseAsset, "sell", size, options);
162
189
  return this.executeSplit(q.splitPlan);
163
190
  }
164
191
  async close(baseAsset) {
165
192
  this.ensureConnected();
166
193
  const user = this.ensureWallet();
167
- const allPositions = await this.positions.getPositions(user);
168
- const toClose = allPositions.filter((p) => p.baseAsset.toUpperCase() === baseAsset.toUpperCase() && p.size > 0);
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;
169
237
  const receipts = [];
170
238
  for (const pos of toClose) {
171
239
  const side = pos.side === "long" ? "sell" : "buy";
172
- const q = await this.quote(pos.coin, side, pos.size);
173
- const receipt = await this.execute(q.plan);
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);
174
291
  receipts.push(receipt);
175
292
  }
176
293
  return receipts;
177
294
  }
178
295
  // === Positions ===
179
- /** Get all positions. */
296
+ /** Get all positions with warnings about any failed deployer fetches. */
180
297
  async getPositions() {
181
298
  this.ensureConnected();
182
299
  const user = this.ensureWallet();
183
300
  return this.positions.getPositions(user);
184
301
  }
185
- /** Get positions grouped by base asset (unified view). */
302
+ /** Get positions grouped by base asset (unified view) with warnings. */
186
303
  async getGroupedPositions() {
187
304
  this.ensureConnected();
188
305
  const user = this.ensureWallet();
@@ -196,6 +313,53 @@ export class HyperliquidPrime {
196
313
  const state = await this.provider.clearinghouseState(user);
197
314
  return state.marginSummary;
198
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
+ }
199
363
  // === Escape Hatches ===
200
364
  /** Direct access to the provider for raw HL API calls. */
201
365
  get api() {
@@ -232,6 +396,42 @@ export class HyperliquidPrime {
232
396
  }
233
397
  return { collateral, warnings };
234
398
  }
399
+ normalizeTradeOptions(options) {
400
+ if (!options)
401
+ return undefined;
402
+ if (options.isCross !== undefined && options.leverage === undefined) {
403
+ throw new HyperliquidPrimeError("isCross requires leverage. Provide leverage when specifying margin mode.");
404
+ }
405
+ if (options.leverage === undefined) {
406
+ return undefined;
407
+ }
408
+ if (!Number.isFinite(options.leverage) || options.leverage <= 0) {
409
+ throw new HyperliquidPrimeError(`Invalid leverage "${options.leverage}". Expected a positive number.`);
410
+ }
411
+ return {
412
+ leverage: options.leverage,
413
+ isCross: options.isCross ?? true,
414
+ };
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
+ }
235
435
  }
236
436
  export { isSplitQuote } from "./router/types.js";
237
437
  export { MarketRegistry } from "./market/registry.js";
@@ -246,4 +446,5 @@ export { PositionManager } from "./position/manager.js";
246
446
  export { NktkasProvider } from "./provider/nktkas.js";
247
447
  export { createLogger } from "./logging/logger.js";
248
448
  export { HyperliquidPrimeError, NoMarketsError, InsufficientLiquidityError, MarketDataUnavailableError, NoWalletError, NotConnectedError, ExecutionError, } from "./utils/errors.js";
449
+ export { ok, withWarnings } from "./types/result.js";
249
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;IAMvB,OAAO,CAAC,QAAQ;IALlB,OAAO,CAAC,MAAM,CAAkC;IAChD,OAAO,CAAC,UAAU,CAAgC;IAClD,OAAO,CAAC,MAAM,CAAS;gBAGb,QAAQ,EAAE,UAAU,EAC5B,MAAM,EAAE,MAAM;IAKV,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAqG/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,OAAO,CAAC,UAAU;IAyBlB,OAAO,CAAC,gBAAgB;IASxB,OAAO,CAAC,sBAAsB;CAQ/B"}
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"}