@nktkas/hyperliquid 0.25.0-beta.1 → 0.25.0-beta.2

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 (222) hide show
  1. package/README.md +46 -14
  2. package/esm/mod.js +1 -0
  3. package/esm/mod.js.map +1 -0
  4. package/esm/src/clients/exchange.d.ts +0 -7
  5. package/esm/src/clients/exchange.d.ts.map +1 -1
  6. package/esm/src/clients/exchange.js +4 -5
  7. package/esm/src/clients/exchange.js.map +1 -0
  8. package/esm/src/clients/info.d.ts +64 -2
  9. package/esm/src/clients/info.d.ts.map +1 -1
  10. package/esm/src/clients/info.js +77 -1
  11. package/esm/src/clients/info.js.map +1 -0
  12. package/esm/src/clients/multiSign.js +2 -1
  13. package/esm/src/clients/multiSign.js.map +1 -0
  14. package/esm/src/clients/subscription.js +1 -0
  15. package/esm/src/clients/subscription.js.map +1 -0
  16. package/esm/src/errors.js +1 -0
  17. package/esm/src/errors.js.map +1 -0
  18. package/esm/src/schemas/_base.d.ts +6 -2
  19. package/esm/src/schemas/_base.d.ts.map +1 -1
  20. package/esm/src/schemas/_base.js +4 -1
  21. package/esm/src/schemas/_base.js.map +1 -0
  22. package/esm/src/schemas/exchange/requests.d.ts +284 -284
  23. package/esm/src/schemas/exchange/requests.js +260 -259
  24. package/esm/src/schemas/exchange/requests.js.map +1 -0
  25. package/esm/src/schemas/exchange/responses.d.ts +47 -47
  26. package/esm/src/schemas/exchange/responses.js +55 -54
  27. package/esm/src/schemas/exchange/responses.js.map +1 -0
  28. package/esm/src/schemas/explorer/requests.d.ts +3 -3
  29. package/esm/src/schemas/explorer/requests.js +6 -5
  30. package/esm/src/schemas/explorer/requests.js.map +1 -0
  31. package/esm/src/schemas/explorer/responses.d.ts +10 -10
  32. package/esm/src/schemas/explorer/responses.js +12 -11
  33. package/esm/src/schemas/explorer/responses.js.map +1 -0
  34. package/esm/src/schemas/info/accounts.d.ts +121 -121
  35. package/esm/src/schemas/info/accounts.js +110 -109
  36. package/esm/src/schemas/info/accounts.js.map +1 -0
  37. package/esm/src/schemas/info/assets.d.ts +68 -39
  38. package/esm/src/schemas/info/assets.d.ts.map +1 -1
  39. package/esm/src/schemas/info/assets.js +69 -49
  40. package/esm/src/schemas/info/assets.js.map +1 -0
  41. package/esm/src/schemas/info/markets.d.ts +25 -8
  42. package/esm/src/schemas/info/markets.d.ts.map +1 -1
  43. package/esm/src/schemas/info/markets.js +27 -15
  44. package/esm/src/schemas/info/markets.js.map +1 -0
  45. package/esm/src/schemas/info/orders.d.ts +56 -56
  46. package/esm/src/schemas/info/orders.js +37 -36
  47. package/esm/src/schemas/info/orders.js.map +1 -0
  48. package/esm/src/schemas/info/requests.d.ts +98 -56
  49. package/esm/src/schemas/info/requests.d.ts.map +1 -1
  50. package/esm/src/schemas/info/requests.js +103 -71
  51. package/esm/src/schemas/info/requests.js.map +1 -0
  52. package/esm/src/schemas/info/validators.d.ts +44 -23
  53. package/esm/src/schemas/info/validators.d.ts.map +1 -1
  54. package/esm/src/schemas/info/validators.js +40 -26
  55. package/esm/src/schemas/info/validators.js.map +1 -0
  56. package/esm/src/schemas/info/vaults.d.ts +40 -40
  57. package/esm/src/schemas/info/vaults.js +20 -19
  58. package/esm/src/schemas/info/vaults.js.map +1 -0
  59. package/esm/src/schemas/mod.d.ts +1 -0
  60. package/esm/src/schemas/mod.d.ts.map +1 -1
  61. package/esm/src/schemas/mod.js +2 -0
  62. package/esm/src/schemas/mod.js.map +1 -0
  63. package/esm/src/schemas/subscriptions/requests.d.ts +21 -21
  64. package/esm/src/schemas/subscriptions/requests.js +22 -21
  65. package/esm/src/schemas/subscriptions/requests.js.map +1 -0
  66. package/esm/src/schemas/subscriptions/responses.d.ts +192 -192
  67. package/esm/src/schemas/subscriptions/responses.js +41 -40
  68. package/esm/src/schemas/subscriptions/responses.js.map +1 -0
  69. package/esm/src/signing/_signTypedData/ethers.js +1 -0
  70. package/esm/src/signing/_signTypedData/ethers.js.map +1 -0
  71. package/esm/src/signing/_signTypedData/mod.js +1 -0
  72. package/esm/src/signing/_signTypedData/mod.js.map +1 -0
  73. package/esm/src/signing/_signTypedData/private_key.js +1 -0
  74. package/esm/src/signing/_signTypedData/private_key.js.map +1 -0
  75. package/esm/src/signing/_signTypedData/viem.js +1 -0
  76. package/esm/src/signing/_signTypedData/viem.js.map +1 -0
  77. package/esm/src/signing/mod.js +1 -0
  78. package/esm/src/signing/mod.js.map +1 -0
  79. package/esm/src/transports/base.d.ts +2 -2
  80. package/esm/src/transports/base.d.ts.map +1 -1
  81. package/esm/src/transports/base.js +1 -0
  82. package/esm/src/transports/base.js.map +1 -0
  83. package/esm/src/transports/http/http_transport.d.ts +1 -1
  84. package/esm/src/transports/http/http_transport.js +1 -0
  85. package/esm/src/transports/http/http_transport.js.map +1 -0
  86. package/esm/src/transports/websocket/_hyperliquid_event_target.js +1 -0
  87. package/esm/src/transports/websocket/_hyperliquid_event_target.js.map +1 -0
  88. package/esm/src/transports/websocket/_reconnecting_websocket.js +1 -0
  89. package/esm/src/transports/websocket/_reconnecting_websocket.js.map +1 -0
  90. package/esm/src/transports/websocket/_websocket_async_request.js +1 -0
  91. package/esm/src/transports/websocket/_websocket_async_request.js.map +1 -0
  92. package/esm/src/transports/websocket/websocket_transport.d.ts +7 -0
  93. package/esm/src/transports/websocket/websocket_transport.d.ts.map +1 -1
  94. package/esm/src/transports/websocket/websocket_transport.js +4 -0
  95. package/esm/src/transports/websocket/websocket_transport.js.map +1 -0
  96. package/package.json +1 -1
  97. package/script/mod.js +1 -0
  98. package/script/mod.js.map +1 -0
  99. package/script/src/clients/exchange.d.ts +0 -7
  100. package/script/src/clients/exchange.d.ts.map +1 -1
  101. package/script/src/clients/exchange.js +4 -5
  102. package/script/src/clients/exchange.js.map +1 -0
  103. package/script/src/clients/info.d.ts +64 -2
  104. package/script/src/clients/info.d.ts.map +1 -1
  105. package/script/src/clients/info.js +76 -0
  106. package/script/src/clients/info.js.map +1 -0
  107. package/script/src/clients/multiSign.js +2 -1
  108. package/script/src/clients/multiSign.js.map +1 -0
  109. package/script/src/clients/subscription.js +1 -0
  110. package/script/src/clients/subscription.js.map +1 -0
  111. package/script/src/errors.js +1 -0
  112. package/script/src/errors.js.map +1 -0
  113. package/script/src/schemas/_base.d.ts +6 -2
  114. package/script/src/schemas/_base.d.ts.map +1 -1
  115. package/script/src/schemas/_base.js +5 -2
  116. package/script/src/schemas/_base.js.map +1 -0
  117. package/script/src/schemas/exchange/requests.d.ts +284 -284
  118. package/script/src/schemas/exchange/requests.js +259 -258
  119. package/script/src/schemas/exchange/requests.js.map +1 -0
  120. package/script/src/schemas/exchange/responses.d.ts +47 -47
  121. package/script/src/schemas/exchange/responses.js +54 -53
  122. package/script/src/schemas/exchange/responses.js.map +1 -0
  123. package/script/src/schemas/explorer/requests.d.ts +3 -3
  124. package/script/src/schemas/explorer/requests.js +5 -4
  125. package/script/src/schemas/explorer/requests.js.map +1 -0
  126. package/script/src/schemas/explorer/responses.d.ts +10 -10
  127. package/script/src/schemas/explorer/responses.js +11 -10
  128. package/script/src/schemas/explorer/responses.js.map +1 -0
  129. package/script/src/schemas/info/accounts.d.ts +121 -121
  130. package/script/src/schemas/info/accounts.js +109 -108
  131. package/script/src/schemas/info/accounts.js.map +1 -0
  132. package/script/src/schemas/info/assets.d.ts +68 -39
  133. package/script/src/schemas/info/assets.d.ts.map +1 -1
  134. package/script/src/schemas/info/assets.js +69 -49
  135. package/script/src/schemas/info/assets.js.map +1 -0
  136. package/script/src/schemas/info/markets.d.ts +25 -8
  137. package/script/src/schemas/info/markets.d.ts.map +1 -1
  138. package/script/src/schemas/info/markets.js +27 -15
  139. package/script/src/schemas/info/markets.js.map +1 -0
  140. package/script/src/schemas/info/orders.d.ts +56 -56
  141. package/script/src/schemas/info/orders.js +36 -35
  142. package/script/src/schemas/info/orders.js.map +1 -0
  143. package/script/src/schemas/info/requests.d.ts +98 -56
  144. package/script/src/schemas/info/requests.d.ts.map +1 -1
  145. package/script/src/schemas/info/requests.js +103 -71
  146. package/script/src/schemas/info/requests.js.map +1 -0
  147. package/script/src/schemas/info/validators.d.ts +44 -23
  148. package/script/src/schemas/info/validators.d.ts.map +1 -1
  149. package/script/src/schemas/info/validators.js +40 -26
  150. package/script/src/schemas/info/validators.js.map +1 -0
  151. package/script/src/schemas/info/vaults.d.ts +40 -40
  152. package/script/src/schemas/info/vaults.js +19 -18
  153. package/script/src/schemas/info/vaults.js.map +1 -0
  154. package/script/src/schemas/mod.d.ts +1 -0
  155. package/script/src/schemas/mod.d.ts.map +1 -1
  156. package/script/src/schemas/mod.js +4 -1
  157. package/script/src/schemas/mod.js.map +1 -0
  158. package/script/src/schemas/subscriptions/requests.d.ts +21 -21
  159. package/script/src/schemas/subscriptions/requests.js +22 -21
  160. package/script/src/schemas/subscriptions/requests.js.map +1 -0
  161. package/script/src/schemas/subscriptions/responses.d.ts +192 -192
  162. package/script/src/schemas/subscriptions/responses.js +40 -39
  163. package/script/src/schemas/subscriptions/responses.js.map +1 -0
  164. package/script/src/signing/_signTypedData/ethers.js +1 -0
  165. package/script/src/signing/_signTypedData/ethers.js.map +1 -0
  166. package/script/src/signing/_signTypedData/mod.js +1 -0
  167. package/script/src/signing/_signTypedData/mod.js.map +1 -0
  168. package/script/src/signing/_signTypedData/private_key.js +1 -0
  169. package/script/src/signing/_signTypedData/private_key.js.map +1 -0
  170. package/script/src/signing/_signTypedData/viem.js +1 -0
  171. package/script/src/signing/_signTypedData/viem.js.map +1 -0
  172. package/script/src/signing/mod.js +1 -0
  173. package/script/src/signing/mod.js.map +1 -0
  174. package/script/src/transports/base.d.ts +2 -2
  175. package/script/src/transports/base.d.ts.map +1 -1
  176. package/script/src/transports/base.js +1 -0
  177. package/script/src/transports/base.js.map +1 -0
  178. package/script/src/transports/http/http_transport.d.ts +1 -1
  179. package/script/src/transports/http/http_transport.js +1 -0
  180. package/script/src/transports/http/http_transport.js.map +1 -0
  181. package/script/src/transports/websocket/_hyperliquid_event_target.js +1 -0
  182. package/script/src/transports/websocket/_hyperliquid_event_target.js.map +1 -0
  183. package/script/src/transports/websocket/_reconnecting_websocket.js +1 -0
  184. package/script/src/transports/websocket/_reconnecting_websocket.js.map +1 -0
  185. package/script/src/transports/websocket/_websocket_async_request.js +1 -0
  186. package/script/src/transports/websocket/_websocket_async_request.js.map +1 -0
  187. package/script/src/transports/websocket/websocket_transport.d.ts +7 -0
  188. package/script/src/transports/websocket/websocket_transport.d.ts.map +1 -1
  189. package/script/src/transports/websocket/websocket_transport.js +4 -0
  190. package/script/src/transports/websocket/websocket_transport.js.map +1 -0
  191. package/src/mod.ts +28 -0
  192. package/src/src/clients/exchange.ts +2246 -0
  193. package/src/src/clients/info.ts +2076 -0
  194. package/src/src/clients/multiSign.ts +183 -0
  195. package/src/src/clients/subscription.ts +841 -0
  196. package/src/src/errors.ts +7 -0
  197. package/src/src/schemas/_base.ts +43 -0
  198. package/src/src/schemas/exchange/requests.ts +3057 -0
  199. package/src/src/schemas/exchange/responses.ts +540 -0
  200. package/src/src/schemas/explorer/requests.ts +65 -0
  201. package/src/src/schemas/explorer/responses.ts +138 -0
  202. package/src/src/schemas/info/accounts.ts +1490 -0
  203. package/src/src/schemas/info/assets.ts +693 -0
  204. package/src/src/schemas/info/markets.ts +171 -0
  205. package/src/src/schemas/info/orders.ts +597 -0
  206. package/src/src/schemas/info/requests.ts +1369 -0
  207. package/src/src/schemas/info/validators.ts +299 -0
  208. package/src/src/schemas/info/vaults.ts +262 -0
  209. package/src/src/schemas/mod.ts +121 -0
  210. package/src/src/schemas/subscriptions/requests.ts +504 -0
  211. package/src/src/schemas/subscriptions/responses.ts +576 -0
  212. package/src/src/signing/_signTypedData/ethers.ts +59 -0
  213. package/src/src/signing/_signTypedData/mod.ts +121 -0
  214. package/src/src/signing/_signTypedData/private_key.ts +229 -0
  215. package/src/src/signing/_signTypedData/viem.ts +55 -0
  216. package/src/src/signing/mod.ts +572 -0
  217. package/src/src/transports/base.ts +54 -0
  218. package/src/src/transports/http/http_transport.ts +208 -0
  219. package/src/src/transports/websocket/_hyperliquid_event_target.ts +118 -0
  220. package/src/src/transports/websocket/_reconnecting_websocket.ts +404 -0
  221. package/src/src/transports/websocket/_websocket_async_request.ts +229 -0
  222. package/src/src/transports/websocket/websocket_transport.ts +394 -0
@@ -0,0 +1,183 @@
1
+ import type { IRequestTransport } from "../transports/base.js";
2
+ import type {
3
+ CancelSuccessResponse,
4
+ CreateSubAccountResponse,
5
+ CreateVaultResponse,
6
+ MultiSigRequest,
7
+ OrderSuccessResponse,
8
+ SuccessResponse,
9
+ TwapCancelSuccessResponse,
10
+ TwapOrderSuccessResponse,
11
+ } from "../schemas/mod.js";
12
+ import { ExchangeClient, type ExchangeClientParameters } from "./exchange.js";
13
+ import {
14
+ type AbstractWallet,
15
+ getWalletAddress,
16
+ signL1Action,
17
+ signUserSignedAction,
18
+ userSignedActionEip712Types,
19
+ } from "../signing/mod.js";
20
+
21
+ /** Parameters for the {@linkcode MultiSignClient} constructor. */
22
+ export interface MultiSignClientParameters<
23
+ T extends IRequestTransport = IRequestTransport,
24
+ S extends readonly AbstractWallet[] = AbstractWallet[],
25
+ > extends Omit<ExchangeClientParameters<T, S[0]>, "wallet"> {
26
+ /** The multi-signature account address. */
27
+ multiSignAddress: `0x${string}`;
28
+ /** Array of wallets used for multi-signature operations. The first wallet acts as the leader. */
29
+ signers: S;
30
+ }
31
+
32
+ /**
33
+ * Multi-signature exchange client for interacting with the Hyperliquid API.
34
+ * @typeParam T The transport used to connect to the Hyperliquid API.
35
+ * @typeParam S Array of wallets where the first wallet acts as the leader.
36
+ */
37
+ export class MultiSignClient<
38
+ T extends IRequestTransport = IRequestTransport,
39
+ S extends readonly AbstractWallet[] = AbstractWallet[],
40
+ > extends ExchangeClient<T, S[0]> implements MultiSignClientParameters<T, S> {
41
+ multiSignAddress: `0x${string}`;
42
+ signers: S;
43
+
44
+ /**
45
+ * @multisign Is the first wallet from {@linkcode signers}. Changing the property also changes the first element in the {@linkcode signers} array.
46
+ */
47
+ declare wallet: S[0];
48
+
49
+ /**
50
+ * Initialises a new multi-signature client instance.
51
+ * @param args - The parameters for the multi-signature client.
52
+ *
53
+ * @example
54
+ * ```ts
55
+ * import * as hl from "@nktkas/hyperliquid";
56
+ *
57
+ * const multiSignAddress = "0x...";
58
+ * const signers = [
59
+ * "0x...", // private key; or any other wallet libraries
60
+ * ] as const;
61
+ *
62
+ * const transport = new hl.HttpTransport();
63
+ * const multiSignClient = new hl.MultiSignClient({ transport, multiSignAddress, signers });
64
+ * ```
65
+ */
66
+ constructor(args: MultiSignClientParameters<T, S>) {
67
+ super({ ...args, wallet: args.signers[0] });
68
+ this.multiSignAddress = args.multiSignAddress;
69
+ this.signers = args.signers;
70
+
71
+ Object.defineProperty(this, "wallet", {
72
+ get() {
73
+ return this.signers[0];
74
+ },
75
+ set(value) {
76
+ this.signers[0] = value;
77
+ },
78
+ enumerable: true,
79
+ configurable: true,
80
+ });
81
+ }
82
+
83
+ protected override async _executeL1Action<
84
+ T extends
85
+ | SuccessResponse
86
+ | CancelSuccessResponse
87
+ | CreateSubAccountResponse
88
+ | CreateVaultResponse
89
+ | OrderSuccessResponse
90
+ | TwapOrderSuccessResponse
91
+ | TwapCancelSuccessResponse,
92
+ >(
93
+ request: {
94
+ action: Exclude<
95
+ MultiSigRequest["action"]["payload"]["action"],
96
+ { type: keyof typeof userSignedActionEip712Types }
97
+ >;
98
+ vaultAddress?: `0x${string}`;
99
+ expiresAfter: number | undefined;
100
+ },
101
+ signal?: AbortSignal,
102
+ ): Promise<T> {
103
+ const { action, vaultAddress, expiresAfter } = request;
104
+
105
+ // Sign an L1 action
106
+ const nonce = await this.nonceManager();
107
+ const outerSigner = await getWalletAddress(this.signers[0]);
108
+ const signatures = await Promise.all(this.signers.map(async (signer) => {
109
+ return await signL1Action({
110
+ wallet: signer,
111
+ action: [this.multiSignAddress.toLowerCase(), outerSigner.toLowerCase(), action],
112
+ nonce,
113
+ isTestnet: this.transport.isTestnet,
114
+ vaultAddress,
115
+ expiresAfter,
116
+ });
117
+ }));
118
+
119
+ // Send a request via multi-sign action
120
+ return await super.multiSig(
121
+ {
122
+ signatures,
123
+ payload: {
124
+ multiSigUser: this.multiSignAddress,
125
+ outerSigner,
126
+ action,
127
+ },
128
+ nonce,
129
+ },
130
+ { signal, vaultAddress, expiresAfter },
131
+ );
132
+ }
133
+
134
+ protected override async _executeUserSignedAction<
135
+ T extends
136
+ | SuccessResponse
137
+ | CancelSuccessResponse
138
+ | CreateSubAccountResponse
139
+ | CreateVaultResponse
140
+ | OrderSuccessResponse
141
+ | TwapOrderSuccessResponse
142
+ | TwapCancelSuccessResponse,
143
+ >(
144
+ request: {
145
+ action: Extract<
146
+ MultiSigRequest["action"]["payload"]["action"],
147
+ { type: keyof typeof userSignedActionEip712Types }
148
+ >;
149
+ },
150
+ signal?: AbortSignal,
151
+ ): Promise<T> {
152
+ const { action } = request;
153
+
154
+ // Sign a user-signed action
155
+ const nonce = "nonce" in action ? action.nonce : action.time;
156
+ const outerSigner = await getWalletAddress(this.signers[0]);
157
+ const signatures = await Promise.all(this.signers.map(async (signer) => {
158
+ return await signUserSignedAction({
159
+ wallet: signer,
160
+ action: {
161
+ payloadMultiSigUser: this.multiSignAddress,
162
+ outerSigner,
163
+ ...action,
164
+ },
165
+ types: userSignedActionEip712Types[action.type],
166
+ });
167
+ }));
168
+
169
+ // Send a request via multi-sign action
170
+ return await super.multiSig(
171
+ {
172
+ signatures,
173
+ payload: {
174
+ multiSigUser: this.multiSignAddress,
175
+ outerSigner,
176
+ action,
177
+ },
178
+ nonce,
179
+ },
180
+ { signal },
181
+ );
182
+ }
183
+ }