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.
Files changed (66) hide show
  1. package/README.md +64 -28
  2. package/dist/cli/program.d.ts.map +1 -1
  3. package/dist/cli/program.js +5 -1
  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 +21 -0
  13. package/dist/execution/executor.d.ts.map +1 -1
  14. package/dist/execution/executor.js +311 -112
  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 +42 -5
  19. package/dist/index.d.ts.map +1 -1
  20. package/dist/index.js +196 -14
  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.map +1 -1
  45. package/dist/router/router.js +96 -27
  46. package/dist/router/router.js.map +1 -1
  47. package/dist/router/scorer.d.ts +3 -1
  48. package/dist/router/scorer.d.ts.map +1 -1
  49. package/dist/router/scorer.js +28 -5
  50. package/dist/router/scorer.js.map +1 -1
  51. package/dist/router/types.d.ts +3 -0
  52. package/dist/router/types.d.ts.map +1 -1
  53. package/dist/router/types.js.map +1 -1
  54. package/dist/types/result.d.ts +16 -0
  55. package/dist/types/result.d.ts.map +1 -0
  56. package/dist/types/result.js +9 -0
  57. package/dist/types/result.js.map +1 -0
  58. package/dist/utils/asset.d.ts +2 -0
  59. package/dist/utils/asset.d.ts.map +1 -0
  60. package/dist/utils/asset.js +18 -0
  61. package/dist/utils/asset.js.map +1 -0
  62. package/dist/utils/order-precision.d.ts +16 -0
  63. package/dist/utils/order-precision.d.ts.map +1 -0
  64. package/dist/utils/order-precision.js +45 -0
  65. package/dist/utils/order-precision.js.map +1 -0
  66. 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;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
@@ -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
@@ -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;AAQtD,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACpG,OAAO,KAAK,EACV,KAAK,EACL,aAAa,EACb,UAAU,EACV,kBAAkB,EAClB,qBAAqB,EACtB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AACpF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAG3D,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,QAAQ,CAAa;IAC7B,OAAO,CAAC,SAAS,CAAiB;IAClC,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,QAAQ,CAAW;IAC3B,OAAO,CAAC,iBAAiB,CAAoB;IAC7C,OAAO,CAAC,SAAS,CAAkB;IACnC,OAAO,CAAC,UAAU,CAAiB;IACnC,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,OAAO,CAAyB;IACxC,OAAO,CAAC,aAAa,CAAqB;IAC1C,OAAO,CAAC,SAAS,CAAS;gBAEd,MAAM,EAAE,sBAAsB;IAuD1C,8EAA8E;IACxE,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAO9B,OAAO,CAAC,eAAe;IAIvB,OAAO,CAAC,YAAY;IAOpB,0CAA0C;IAC1C,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,UAAU,EAAE;IAK3C,6DAA6D;IAC7D,oBAAoB,IAAI,WAAW,EAAE;IAKrC,8DAA8D;IACxD,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;IAKnE,6DAA6D;IACvD,oBAAoB,CACxB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,iBAAiB,CAAC;IA6B7B,kDAAkD;IAC5C,KAAK,CACT,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,KAAK,GAAG,MAAM,EACpB,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE,qBAAqB,GAC9B,OAAO,CAAC,KAAK,CAAC;IAoBjB,4CAA4C;IACtC,OAAO,CAAC,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAM7D,gDAAgD;IAC1C,IAAI,CACR,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE,qBAAqB,GAC9B,OAAO,CAAC,gBAAgB,CAAC;IAKtB,KAAK,CACT,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE,qBAAqB,GAC9B,OAAO,CAAC,gBAAgB,CAAC;IAK5B,8EAA8E;IACxE,UAAU,CACd,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,KAAK,GAAG,MAAM,EACpB,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE,qBAAqB,GAC9B,OAAO,CAAC,UAAU,CAAC;IAkBtB,kDAAkD;IAC5C,YAAY,CAAC,IAAI,EAAE,kBAAkB,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAU5E,sDAAsD;IAChD,SAAS,CACb,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE,qBAAqB,GAC9B,OAAO,CAAC,qBAAqB,CAAC;IAK3B,UAAU,CACd,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE,qBAAqB,GAC9B,OAAO,CAAC,qBAAqB,CAAC;IAK3B,KAAK,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC;IAoB3D,yBAAyB;IACnB,YAAY,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC;IAMhD,0DAA0D;IACpD,mBAAmB,IAAI,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,eAAe,EAAE,CAAC,CAAC;IAQpE,+CAA+C;IACzC,UAAU,IAAI,OAAO,CAAC;QAC1B,YAAY,EAAE,MAAM,CAAC;QACrB,eAAe,EAAE,MAAM,CAAC;QACxB,WAAW,EAAE,MAAM,CAAC;QACpB,WAAW,EAAE,MAAM,CAAC;KACrB,CAAC;IASF,0DAA0D;IAC1D,IAAI,GAAG,IAAI,UAAU,CAEpB;IAED,4CAA4C;IAC5C,IAAI,OAAO,IAAI,cAAc,CAE5B;IAIK,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;YAMnB,qBAAqB;IAiCnC,OAAO,CAAC,qBAAqB;CAsB9B;AAGD,YAAY,EAAE,sBAAsB,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACzE,YAAY,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACzD,YAAY,EAAE,UAAU,EAAE,UAAU,EAAE,WAAW,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAChH,YAAY,EAAE,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,gBAAgB,EAAE,UAAU,EAAE,kBAAkB,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAC3J,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,YAAY,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AACpF,YAAY,EAAE,cAAc,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AACtG,YAAY,EAAE,eAAe,EAAE,oBAAoB,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAC9F,YAAY,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAC/D,YAAY,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACxD,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EACL,qBAAqB,EACrB,cAAc,EACd,0BAA0B,EAC1B,0BAA0B,EAC1B,aAAa,EACb,iBAAiB,EACjB,cAAc,GACf,MAAM,mBAAmB,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
- 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);
@@ -126,7 +135,9 @@ export class HyperliquidPrime {
126
135
  async execute(plan) {
127
136
  this.ensureConnected();
128
137
  const user = this.ensureWallet();
129
- return this.executor.execute(plan, user);
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
- 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);
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
- const allPositions = await this.positions.getPositions(user);
170
- 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;
171
237
  const receipts = [];
172
238
  for (const pos of toClose) {
173
239
  const side = pos.side === "long" ? "sell" : "buy";
174
- const q = await this.quote(pos.coin, side, pos.size);
175
- 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);
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;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"}
@@ -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 all deployers and their metadata in parallel
19
- const [dexs, allMetas] = await Promise.all([
20
- this.provider.perpDexs(),
21
- this.provider.allPerpMetas(),
22
- ]);
23
- const ctxResults = await Promise.allSettled(allMetas.map((_, dexIndex) => {
24
- const dex = dexs[dexIndex];
25
- return this.provider.metaAndAssetCtxs(dex ? dex.name : "");
26
- }));
27
- this.logger.info({ dexCount: dexs.length, spotTokens: spotMeta.tokens.length }, "Discovering markets across all deployers");
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 [dexIndex, meta] of allMetas.entries()) {
31
- const dex = dexs[dexIndex];
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 (dexIndex 0): assetIndex = local index
55
- // HIP-3 (dexIndex > 0): assetIndex = 100000 + dexIndex * 10000 + local index
56
- const globalAssetIndex = dexIndex === 0 ? i : 100000 + dexIndex * 10000 + i;
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
  };