@nktkas/hyperliquid 0.22.1 → 0.23.0

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 (230) hide show
  1. package/README.md +125 -70
  2. package/esm/mod.d.ts +1 -1
  3. package/esm/mod.d.ts.map +1 -1
  4. package/esm/src/base.d.ts +4 -1
  5. package/esm/src/base.d.ts.map +1 -1
  6. package/esm/src/base.js +2 -2
  7. package/esm/src/clients/exchange.d.ts +420 -368
  8. package/esm/src/clients/exchange.d.ts.map +1 -1
  9. package/esm/src/clients/exchange.js +721 -551
  10. package/esm/src/clients/info.d.ts +137 -41
  11. package/esm/src/clients/info.d.ts.map +1 -1
  12. package/esm/src/clients/info.js +124 -28
  13. package/esm/src/clients/multiSign.d.ts +406 -484
  14. package/esm/src/clients/multiSign.d.ts.map +1 -1
  15. package/esm/src/clients/multiSign.js +639 -734
  16. package/esm/src/clients/subscription.d.ts +38 -3
  17. package/esm/src/clients/subscription.d.ts.map +1 -1
  18. package/esm/src/clients/subscription.js +36 -3
  19. package/esm/src/signing/_signTypedData/ethers.d.ts +33 -0
  20. package/esm/src/signing/_signTypedData/ethers.d.ts.map +1 -0
  21. package/esm/src/signing/_signTypedData/ethers.js +12 -0
  22. package/esm/src/signing/_signTypedData/mod.d.ts +35 -0
  23. package/esm/src/signing/_signTypedData/mod.d.ts.map +1 -0
  24. package/esm/src/signing/_signTypedData/mod.js +59 -0
  25. package/esm/src/signing/_signTypedData/private_key.d.ts +26 -0
  26. package/esm/src/signing/_signTypedData/private_key.d.ts.map +1 -0
  27. package/esm/src/signing/_signTypedData/private_key.js +144 -0
  28. package/esm/src/signing/_signTypedData/viem.d.ts +23 -0
  29. package/esm/src/signing/_signTypedData/viem.d.ts.map +1 -0
  30. package/esm/src/signing/_signTypedData/viem.js +6 -0
  31. package/esm/src/signing/_signTypedData/window.d.ts +29 -0
  32. package/esm/src/signing/_signTypedData/window.d.ts.map +1 -0
  33. package/esm/src/signing/_signTypedData/window.js +30 -0
  34. package/esm/src/signing/_sorter.d.ts +128 -0
  35. package/esm/src/signing/_sorter.d.ts.map +1 -0
  36. package/esm/src/{signing.js → signing/_sorter.js} +36 -449
  37. package/esm/src/signing/mod.d.ts +272 -0
  38. package/esm/src/signing/mod.d.ts.map +1 -0
  39. package/esm/src/signing/mod.js +306 -0
  40. package/esm/src/transports/base.d.ts +1 -1
  41. package/esm/src/transports/base.d.ts.map +1 -1
  42. package/esm/src/transports/base.js +2 -2
  43. package/esm/src/transports/http/http_transport.d.ts +9 -15
  44. package/esm/src/transports/http/http_transport.d.ts.map +1 -1
  45. package/esm/src/transports/http/http_transport.js +64 -59
  46. package/esm/src/transports/websocket/_hyperliquid_event_target.d.ts +1 -1
  47. package/esm/src/transports/websocket/_hyperliquid_event_target.d.ts.map +1 -1
  48. package/esm/src/transports/websocket/_hyperliquid_event_target.js +1 -1
  49. package/esm/src/transports/websocket/_reconnecting_websocket.d.ts.map +1 -1
  50. package/esm/src/transports/websocket/_reconnecting_websocket.js +17 -4
  51. package/esm/src/transports/websocket/_websocket_async_request.d.ts +0 -9
  52. package/esm/src/transports/websocket/_websocket_async_request.d.ts.map +1 -1
  53. package/esm/src/transports/websocket/_websocket_async_request.js +14 -20
  54. package/esm/src/transports/websocket/websocket_transport.d.ts +8 -4
  55. package/esm/src/transports/websocket/websocket_transport.d.ts.map +1 -1
  56. package/esm/src/transports/websocket/websocket_transport.js +83 -54
  57. package/esm/src/types/exchange/requests.d.ts +27 -51
  58. package/esm/src/types/exchange/requests.d.ts.map +1 -1
  59. package/esm/src/types/explorer/requests.d.ts +5 -8
  60. package/esm/src/types/explorer/requests.d.ts.map +1 -1
  61. package/esm/src/types/info/accounts.d.ts +5 -5
  62. package/esm/src/types/info/accounts.d.ts.map +1 -1
  63. package/esm/src/types/info/delegations.d.ts +1 -1
  64. package/esm/src/types/info/delegations.d.ts.map +1 -1
  65. package/esm/src/types/info/orders.d.ts +1 -1
  66. package/esm/src/types/info/orders.d.ts.map +1 -1
  67. package/esm/src/types/info/requests.d.ts +49 -96
  68. package/esm/src/types/info/requests.d.ts.map +1 -1
  69. package/esm/src/types/subscriptions/requests.d.ts +72 -18
  70. package/esm/src/types/subscriptions/requests.d.ts.map +1 -1
  71. package/esm/src/types/subscriptions/responses.d.ts +2 -0
  72. package/esm/src/types/subscriptions/responses.d.ts.map +1 -1
  73. package/package.json +12 -8
  74. package/script/mod.d.ts +1 -1
  75. package/script/mod.d.ts.map +1 -1
  76. package/script/mod.js +13 -23
  77. package/script/src/base.d.ts +4 -1
  78. package/script/src/base.d.ts.map +1 -1
  79. package/script/src/base.js +10 -20
  80. package/script/src/clients/exchange.d.ts +420 -368
  81. package/script/src/clients/exchange.d.ts.map +1 -1
  82. package/script/src/clients/exchange.js +2000 -1840
  83. package/script/src/clients/info.d.ts +137 -41
  84. package/script/src/clients/info.d.ts.map +1 -1
  85. package/script/src/clients/info.js +1296 -1210
  86. package/script/src/clients/multiSign.d.ts +406 -484
  87. package/script/src/clients/multiSign.d.ts.map +1 -1
  88. package/script/src/clients/multiSign.js +2043 -2148
  89. package/script/src/clients/subscription.d.ts +38 -3
  90. package/script/src/clients/subscription.d.ts.map +1 -1
  91. package/script/src/clients/subscription.js +568 -545
  92. package/script/src/signing/_signTypedData/ethers.d.ts +33 -0
  93. package/script/src/signing/_signTypedData/ethers.d.ts.map +1 -0
  94. package/script/src/signing/_signTypedData/ethers.js +16 -0
  95. package/script/src/signing/_signTypedData/mod.d.ts +35 -0
  96. package/script/src/signing/_signTypedData/mod.d.ts.map +1 -0
  97. package/script/src/signing/_signTypedData/mod.js +67 -0
  98. package/script/src/signing/_signTypedData/private_key.d.ts +26 -0
  99. package/script/src/signing/_signTypedData/private_key.d.ts.map +1 -0
  100. package/script/src/signing/_signTypedData/private_key.js +148 -0
  101. package/script/src/signing/_signTypedData/viem.d.ts +23 -0
  102. package/script/src/signing/_signTypedData/viem.d.ts.map +1 -0
  103. package/script/src/signing/_signTypedData/viem.js +9 -0
  104. package/script/src/signing/_signTypedData/window.d.ts +29 -0
  105. package/script/src/signing/_signTypedData/window.d.ts.map +1 -0
  106. package/script/src/signing/_signTypedData/window.js +34 -0
  107. package/script/src/signing/_sorter.d.ts +128 -0
  108. package/script/src/signing/_sorter.d.ts.map +1 -0
  109. package/script/src/signing/_sorter.js +698 -0
  110. package/script/src/signing/mod.d.ts +272 -0
  111. package/script/src/signing/mod.d.ts.map +1 -0
  112. package/script/src/signing/mod.js +331 -0
  113. package/script/src/transports/base.d.ts +1 -1
  114. package/script/src/transports/base.d.ts.map +1 -1
  115. package/script/src/transports/base.js +11 -21
  116. package/script/src/transports/http/http_transport.d.ts +9 -15
  117. package/script/src/transports/http/http_transport.d.ts.map +1 -1
  118. package/script/src/transports/http/http_transport.js +97 -102
  119. package/script/src/transports/websocket/_hyperliquid_event_target.d.ts +1 -1
  120. package/script/src/transports/websocket/_hyperliquid_event_target.d.ts.map +1 -1
  121. package/script/src/transports/websocket/_hyperliquid_event_target.js +51 -61
  122. package/script/src/transports/websocket/_reconnecting_websocket.d.ts.map +1 -1
  123. package/script/src/transports/websocket/_reconnecting_websocket.js +271 -268
  124. package/script/src/transports/websocket/_websocket_async_request.d.ts +0 -9
  125. package/script/src/transports/websocket/_websocket_async_request.d.ts.map +1 -1
  126. package/script/src/transports/websocket/_websocket_async_request.js +157 -174
  127. package/script/src/transports/websocket/websocket_transport.d.ts +8 -4
  128. package/script/src/transports/websocket/websocket_transport.d.ts.map +1 -1
  129. package/script/src/transports/websocket/websocket_transport.js +209 -189
  130. package/script/src/types/exchange/requests.d.ts +27 -51
  131. package/script/src/types/exchange/requests.d.ts.map +1 -1
  132. package/script/src/types/exchange/requests.js +2 -12
  133. package/script/src/types/exchange/responses.js +2 -12
  134. package/script/src/types/explorer/requests.d.ts +5 -8
  135. package/script/src/types/explorer/requests.d.ts.map +1 -1
  136. package/script/src/types/explorer/requests.js +2 -12
  137. package/script/src/types/explorer/responses.js +2 -12
  138. package/script/src/types/info/accounts.d.ts +5 -5
  139. package/script/src/types/info/accounts.d.ts.map +1 -1
  140. package/script/src/types/info/accounts.js +2 -12
  141. package/script/src/types/info/assets.js +2 -12
  142. package/script/src/types/info/delegations.d.ts +1 -1
  143. package/script/src/types/info/delegations.d.ts.map +1 -1
  144. package/script/src/types/info/delegations.js +2 -12
  145. package/script/src/types/info/markets.js +2 -12
  146. package/script/src/types/info/orders.d.ts +1 -1
  147. package/script/src/types/info/orders.d.ts.map +1 -1
  148. package/script/src/types/info/orders.js +2 -12
  149. package/script/src/types/info/requests.d.ts +49 -96
  150. package/script/src/types/info/requests.d.ts.map +1 -1
  151. package/script/src/types/info/requests.js +2 -12
  152. package/script/src/types/info/vaults.js +2 -12
  153. package/script/src/types/mod.js +2 -12
  154. package/script/src/types/subscriptions/requests.d.ts +72 -18
  155. package/script/src/types/subscriptions/requests.d.ts.map +1 -1
  156. package/script/src/types/subscriptions/requests.js +2 -12
  157. package/script/src/types/subscriptions/responses.d.ts +2 -0
  158. package/script/src/types/subscriptions/responses.d.ts.map +1 -1
  159. package/script/src/types/subscriptions/responses.js +2 -12
  160. package/esm/deps/jsr.io/@derzade/typescript-event-target/1.1.1/mod.d.ts +0 -2
  161. package/esm/deps/jsr.io/@derzade/typescript-event-target/1.1.1/mod.d.ts.map +0 -1
  162. package/esm/deps/jsr.io/@derzade/typescript-event-target/1.1.1/mod.js +0 -1
  163. package/esm/deps/jsr.io/@derzade/typescript-event-target/1.1.1/src/TypedEventTarget.d.ts +0 -95
  164. package/esm/deps/jsr.io/@derzade/typescript-event-target/1.1.1/src/TypedEventTarget.d.ts.map +0 -1
  165. package/esm/deps/jsr.io/@derzade/typescript-event-target/1.1.1/src/TypedEventTarget.js +0 -10
  166. package/esm/deps/jsr.io/@std/async/1.0.13/delay.d.ts +0 -43
  167. package/esm/deps/jsr.io/@std/async/1.0.13/delay.d.ts.map +0 -1
  168. package/esm/deps/jsr.io/@std/async/1.0.13/delay.js +0 -63
  169. package/esm/deps/jsr.io/@std/bytes/1.0.6/_types.d.ts +0 -9
  170. package/esm/deps/jsr.io/@std/bytes/1.0.6/_types.d.ts.map +0 -1
  171. package/esm/deps/jsr.io/@std/bytes/1.0.6/_types.js +0 -2
  172. package/esm/deps/jsr.io/@std/bytes/1.0.6/concat.d.ts +0 -21
  173. package/esm/deps/jsr.io/@std/bytes/1.0.6/concat.d.ts.map +0 -1
  174. package/esm/deps/jsr.io/@std/bytes/1.0.6/concat.js +0 -32
  175. package/esm/deps/jsr.io/@std/encoding/1.0.10/_common16.d.ts +0 -23
  176. package/esm/deps/jsr.io/@std/encoding/1.0.10/_common16.d.ts.map +0 -1
  177. package/esm/deps/jsr.io/@std/encoding/1.0.10/_common16.js +0 -51
  178. package/esm/deps/jsr.io/@std/encoding/1.0.10/_common_detach.d.ts +0 -4
  179. package/esm/deps/jsr.io/@std/encoding/1.0.10/_common_detach.d.ts.map +0 -1
  180. package/esm/deps/jsr.io/@std/encoding/1.0.10/_common_detach.js +0 -13
  181. package/esm/deps/jsr.io/@std/encoding/1.0.10/_types.d.ts +0 -9
  182. package/esm/deps/jsr.io/@std/encoding/1.0.10/_types.d.ts.map +0 -1
  183. package/esm/deps/jsr.io/@std/encoding/1.0.10/_types.js +0 -2
  184. package/esm/deps/jsr.io/@std/encoding/1.0.10/hex.d.ts +0 -39
  185. package/esm/deps/jsr.io/@std/encoding/1.0.10/hex.d.ts.map +0 -1
  186. package/esm/deps/jsr.io/@std/encoding/1.0.10/hex.js +0 -87
  187. package/esm/deps/jsr.io/@std/msgpack/1.0.3/_types.d.ts +0 -9
  188. package/esm/deps/jsr.io/@std/msgpack/1.0.3/_types.d.ts.map +0 -1
  189. package/esm/deps/jsr.io/@std/msgpack/1.0.3/_types.js +0 -2
  190. package/esm/deps/jsr.io/@std/msgpack/1.0.3/encode.d.ts +0 -39
  191. package/esm/deps/jsr.io/@std/msgpack/1.0.3/encode.d.ts.map +0 -1
  192. package/esm/deps/jsr.io/@std/msgpack/1.0.3/encode.js +0 -237
  193. package/esm/src/signing.d.ts +0 -463
  194. package/esm/src/signing.d.ts.map +0 -1
  195. package/script/deps/jsr.io/@derzade/typescript-event-target/1.1.1/mod.d.ts +0 -2
  196. package/script/deps/jsr.io/@derzade/typescript-event-target/1.1.1/mod.d.ts.map +0 -1
  197. package/script/deps/jsr.io/@derzade/typescript-event-target/1.1.1/mod.js +0 -27
  198. package/script/deps/jsr.io/@derzade/typescript-event-target/1.1.1/src/TypedEventTarget.d.ts +0 -95
  199. package/script/deps/jsr.io/@derzade/typescript-event-target/1.1.1/src/TypedEventTarget.d.ts.map +0 -1
  200. package/script/deps/jsr.io/@derzade/typescript-event-target/1.1.1/src/TypedEventTarget.js +0 -24
  201. package/script/deps/jsr.io/@std/async/1.0.13/delay.d.ts +0 -43
  202. package/script/deps/jsr.io/@std/async/1.0.13/delay.d.ts.map +0 -1
  203. package/script/deps/jsr.io/@std/async/1.0.13/delay.js +0 -76
  204. package/script/deps/jsr.io/@std/bytes/1.0.6/_types.d.ts +0 -9
  205. package/script/deps/jsr.io/@std/bytes/1.0.6/_types.d.ts.map +0 -1
  206. package/script/deps/jsr.io/@std/bytes/1.0.6/_types.js +0 -13
  207. package/script/deps/jsr.io/@std/bytes/1.0.6/concat.d.ts +0 -21
  208. package/script/deps/jsr.io/@std/bytes/1.0.6/concat.d.ts.map +0 -1
  209. package/script/deps/jsr.io/@std/bytes/1.0.6/concat.js +0 -45
  210. package/script/deps/jsr.io/@std/encoding/1.0.10/_common16.d.ts +0 -23
  211. package/script/deps/jsr.io/@std/encoding/1.0.10/_common16.d.ts.map +0 -1
  212. package/script/deps/jsr.io/@std/encoding/1.0.10/_common16.js +0 -67
  213. package/script/deps/jsr.io/@std/encoding/1.0.10/_common_detach.d.ts +0 -4
  214. package/script/deps/jsr.io/@std/encoding/1.0.10/_common_detach.d.ts.map +0 -1
  215. package/script/deps/jsr.io/@std/encoding/1.0.10/_common_detach.js +0 -26
  216. package/script/deps/jsr.io/@std/encoding/1.0.10/_types.d.ts +0 -9
  217. package/script/deps/jsr.io/@std/encoding/1.0.10/_types.d.ts.map +0 -1
  218. package/script/deps/jsr.io/@std/encoding/1.0.10/_types.js +0 -13
  219. package/script/deps/jsr.io/@std/encoding/1.0.10/hex.d.ts +0 -39
  220. package/script/deps/jsr.io/@std/encoding/1.0.10/hex.d.ts.map +0 -1
  221. package/script/deps/jsr.io/@std/encoding/1.0.10/hex.js +0 -101
  222. package/script/deps/jsr.io/@std/msgpack/1.0.3/_types.d.ts +0 -9
  223. package/script/deps/jsr.io/@std/msgpack/1.0.3/_types.d.ts.map +0 -1
  224. package/script/deps/jsr.io/@std/msgpack/1.0.3/_types.js +0 -13
  225. package/script/deps/jsr.io/@std/msgpack/1.0.3/encode.d.ts +0 -39
  226. package/script/deps/jsr.io/@std/msgpack/1.0.3/encode.d.ts.map +0 -1
  227. package/script/deps/jsr.io/@std/msgpack/1.0.3/encode.js +0 -250
  228. package/script/src/signing.d.ts +0 -463
  229. package/script/src/signing.d.ts.map +0 -1
  230. package/script/src/signing.js +0 -1129
@@ -0,0 +1,272 @@
1
+ /**
2
+ * This module contains functions for generating Hyperliquid transaction signatures
3
+ * and interfaces to various wallet implementations.
4
+ *
5
+ * @example Signing an L1 action
6
+ * ```ts
7
+ * import { actionSorter, signL1Action } from "@nktkas/hyperliquid/signing";
8
+ *
9
+ * const privateKey = "0x..."; // or `viem`, `ethers`
10
+ *
11
+ * const nonce = Date.now();
12
+ * const action = {
13
+ * type: "cancel",
14
+ * cancels: [
15
+ * { a: 0, o: 12345 },
16
+ * ],
17
+ * } as const;
18
+ *
19
+ * const signature = await signL1Action({
20
+ * wallet: privateKey,
21
+ * action: actionSorter[action.type](action),
22
+ * nonce,
23
+ * });
24
+ * ```
25
+ *
26
+ * @example Signing a user-signed action
27
+ * ```ts
28
+ * import { signUserSignedAction, userSignedActionEip712Types } from "@nktkas/hyperliquid/signing";
29
+ *
30
+ * const privateKey = "0x..."; // or `viem`, `ethers`
31
+ *
32
+ * const action = {
33
+ * type: "approveAgent",
34
+ * signatureChainId: "0x66eee",
35
+ * hyperliquidChain: "Mainnet",
36
+ * agentAddress: "0x...",
37
+ * agentName: "Agent",
38
+ * nonce: Date.now(),
39
+ * } as const;
40
+ *
41
+ * const signature = await signUserSignedAction({
42
+ * wallet: privateKey,
43
+ * action,
44
+ * types: userSignedActionEip712Types[action.type],
45
+ * });
46
+ * ```
47
+ *
48
+ * @example Signing a multi-signature action
49
+ * ```ts
50
+ * import { actionSorter, signL1Action, signMultiSigAction } from "@nktkas/hyperliquid/signing";
51
+ * import { privateKeyToAccount } from "viem/accounts";
52
+ *
53
+ * const wallet = privateKeyToAccount("0x..."); // or `ethers`, private key with address
54
+ * const multiSigUser = "0x...";
55
+ *
56
+ * const nonce = Date.now();
57
+ * const action = {
58
+ * type: "scheduleCancel",
59
+ * time: Date.now() + 10000,
60
+ * } as const;
61
+ *
62
+ * // First, create the required number of signatures
63
+ * const signature = await signL1Action({
64
+ * wallet,
65
+ * action: [multiSigUser.toLowerCase(), wallet.address.toLowerCase(), actionSorter[action.type](action)],
66
+ * nonce,
67
+ * });
68
+ *
69
+ * // Then use signatures in the multi-sig action
70
+ * const multiSigSignature = await signMultiSigAction({
71
+ * wallet,
72
+ * action: {
73
+ * signatureChainId: "0x66eee",
74
+ * signatures: [signature],
75
+ * payload: {
76
+ * multiSigUser,
77
+ * outerSigner: wallet.address,
78
+ * action,
79
+ * },
80
+ * },
81
+ * nonce,
82
+ * });
83
+ * ```
84
+ *
85
+ * @module
86
+ */
87
+ import type { Hex } from "../base.js";
88
+ import { type AbstractEthersSigner, type AbstractEthersV5Signer, type AbstractViemWalletClient, type AbstractWallet, type AbstractWindowEthereum, isAbstractEthersSigner, isAbstractEthersV5Signer, isAbstractViemWalletClient, isAbstractWindowEthereum, isValidPrivateKey, type Signature } from "./_signTypedData/mod.js";
89
+ export { type AbstractEthersSigner, type AbstractEthersV5Signer, type AbstractViemWalletClient, type AbstractWallet, type AbstractWindowEthereum, type Hex, isAbstractEthersSigner, isAbstractEthersV5Signer, isAbstractViemWalletClient, isAbstractWindowEthereum, isValidPrivateKey, type Signature, };
90
+ export * from "./_sorter.js";
91
+ /**
92
+ * Create a hash of the L1 action.
93
+ * @example
94
+ * ```ts
95
+ * import { actionSorter, createL1ActionHash } from "@nktkas/hyperliquid/signing";
96
+ *
97
+ * const action = {
98
+ * type: "cancel",
99
+ * cancels: [
100
+ * { a: 0, o: 12345 },
101
+ * ],
102
+ * } as const;
103
+ * const nonce = Date.now();
104
+ *
105
+ * const actionHash = createL1ActionHash({
106
+ * action: actionSorter[action.type](action),
107
+ * nonce,
108
+ * vaultAddress: "0x...", // optional
109
+ * expiresAfter: Date.now() + 10_000, // optional
110
+ * });
111
+ * ```
112
+ */
113
+ export declare function createL1ActionHash(args: {
114
+ /** The action to be hashed (hash depends on key order). */
115
+ action: Record<string, unknown> | unknown[];
116
+ /** The current timestamp in ms. */
117
+ nonce: number;
118
+ /** Optional vault address used in the action. */
119
+ vaultAddress?: Hex;
120
+ /** Optional expiration time of the action in ms since the epoch. */
121
+ expiresAfter?: number;
122
+ }): Hex;
123
+ /**
124
+ * Sign an L1 action.
125
+ * @example
126
+ * ```ts
127
+ * import { actionSorter, signL1Action } from "@nktkas/hyperliquid/signing";
128
+ *
129
+ * const privateKey = "0x..."; // or `viem`, `ethers`
130
+ *
131
+ * const nonce = Date.now();
132
+ * const action = {
133
+ * type: "cancel",
134
+ * cancels: [
135
+ * { a: 0, o: 12345 },
136
+ * ],
137
+ * } as const;
138
+ *
139
+ * const signature = await signL1Action({
140
+ * wallet: privateKey,
141
+ * action: actionSorter[action.type](action),
142
+ * nonce,
143
+ * });
144
+ *
145
+ * // Send the signed action to the Hyperliquid API
146
+ * const response = await fetch("https://api.hyperliquid.xyz/exchange", {
147
+ * method: "POST",
148
+ * headers: { "Content-Type": "application/json" },
149
+ * body: JSON.stringify({ action, signature, nonce }),
150
+ * });
151
+ * const body = await response.json();
152
+ * ```
153
+ */
154
+ export declare function signL1Action(args: {
155
+ /** Wallet to sign the action. */
156
+ wallet: AbstractWallet;
157
+ /** The action to be signed (hash depends on key order). */
158
+ action: Record<string, unknown> | unknown[];
159
+ /** The current timestamp in ms. */
160
+ nonce: number;
161
+ /** Indicates if the action is for the testnet. (default: false) */
162
+ isTestnet?: boolean;
163
+ /** Optional vault address used in the action. */
164
+ vaultAddress?: Hex;
165
+ /** Optional expiration time of the action in ms since the epoch. */
166
+ expiresAfter?: number;
167
+ }): Promise<Signature>;
168
+ /**
169
+ * Sign a user-signed action.
170
+ * @example
171
+ * ```ts
172
+ * import { signUserSignedAction, userSignedActionEip712Types } from "@nktkas/hyperliquid/signing";
173
+ *
174
+ * const privateKey = "0x..."; // or `viem`, `ethers`
175
+ *
176
+ * const action = {
177
+ * type: "approveAgent",
178
+ * signatureChainId: "0x66eee",
179
+ * hyperliquidChain: "Mainnet",
180
+ * agentAddress: "0x...",
181
+ * agentName: "Agent",
182
+ * nonce: Date.now(),
183
+ * } as const;
184
+ *
185
+ * const signature = await signUserSignedAction({
186
+ * wallet: privateKey,
187
+ * action,
188
+ * types: userSignedActionEip712Types[action.type],
189
+ * });
190
+ *
191
+ * // Send the signed action to the Hyperliquid API
192
+ * const response = await fetch("https://api.hyperliquid.xyz/exchange", {
193
+ * method: "POST",
194
+ * headers: { "Content-Type": "application/json" },
195
+ * body: JSON.stringify({ action, signature, nonce: action.nonce }),
196
+ * });
197
+ * const body = await response.json();
198
+ * ```
199
+ */
200
+ export declare function signUserSignedAction(args: {
201
+ /** Wallet to sign the action. */
202
+ wallet: AbstractWallet;
203
+ /** The action to be signed. */
204
+ action: {
205
+ signatureChainId: Hex;
206
+ [key: string]: unknown;
207
+ };
208
+ /** The types of the action (hash depends on key order). */
209
+ types: {
210
+ [key: string]: {
211
+ name: string;
212
+ type: string;
213
+ }[];
214
+ };
215
+ }): Promise<Signature>;
216
+ /**
217
+ * Sign a multi-signature action.
218
+ * @example
219
+ * ```ts
220
+ * import { actionSorter, signL1Action, signMultiSigAction } from "@nktkas/hyperliquid/signing";
221
+ * import { privateKeyToAccount } from "viem/accounts";
222
+ *
223
+ * const wallet = privateKeyToAccount("0x..."); // or `ethers`, private key with address
224
+ * const multiSigUser = "0x...";
225
+ *
226
+ * const nonce = Date.now();
227
+ * const action = {
228
+ * type: "scheduleCancel",
229
+ * time: Date.now() + 10000,
230
+ * } as const;
231
+ *
232
+ * // First, create the required number of signatures
233
+ * const signature = await signL1Action({
234
+ * wallet,
235
+ * action: [multiSigUser.toLowerCase(), wallet.address.toLowerCase(), actionSorter[action.type](action)],
236
+ * nonce,
237
+ * });
238
+ *
239
+ * // Then use signatures in the multi-sig action
240
+ * const multiSigSignature = await signMultiSigAction({
241
+ * wallet,
242
+ * action: {
243
+ * signatureChainId: "0x66eee",
244
+ * signatures: [signature],
245
+ * payload: {
246
+ * multiSigUser,
247
+ * outerSigner: wallet.address,
248
+ * action,
249
+ * },
250
+ * },
251
+ * nonce,
252
+ * });
253
+ * ```
254
+ */
255
+ export declare function signMultiSigAction(args: {
256
+ /** Wallet to sign the action. */
257
+ wallet: AbstractWallet;
258
+ /** The action to be signed (hash depends on key order). */
259
+ action: {
260
+ signatureChainId: Hex;
261
+ [key: string]: unknown;
262
+ };
263
+ /** The current timestamp in ms. */
264
+ nonce: number;
265
+ /** Indicates if the action is for the testnet. (default: false) */
266
+ isTestnet?: boolean;
267
+ /** Optional vault address used in the action. */
268
+ vaultAddress?: Hex;
269
+ /** Optional expiration time of the action in ms since the epoch. */
270
+ expiresAfter?: number;
271
+ }): Promise<Signature>;
272
+ //# sourceMappingURL=mod.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mod.d.ts","sourceRoot":"","sources":["../../../src/src/signing/mod.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,306 @@
1
+ /**
2
+ * This module contains functions for generating Hyperliquid transaction signatures
3
+ * and interfaces to various wallet implementations.
4
+ *
5
+ * @example Signing an L1 action
6
+ * ```ts
7
+ * import { actionSorter, signL1Action } from "@nktkas/hyperliquid/signing";
8
+ *
9
+ * const privateKey = "0x..."; // or `viem`, `ethers`
10
+ *
11
+ * const nonce = Date.now();
12
+ * const action = {
13
+ * type: "cancel",
14
+ * cancels: [
15
+ * { a: 0, o: 12345 },
16
+ * ],
17
+ * } as const;
18
+ *
19
+ * const signature = await signL1Action({
20
+ * wallet: privateKey,
21
+ * action: actionSorter[action.type](action),
22
+ * nonce,
23
+ * });
24
+ * ```
25
+ *
26
+ * @example Signing a user-signed action
27
+ * ```ts
28
+ * import { signUserSignedAction, userSignedActionEip712Types } from "@nktkas/hyperliquid/signing";
29
+ *
30
+ * const privateKey = "0x..."; // or `viem`, `ethers`
31
+ *
32
+ * const action = {
33
+ * type: "approveAgent",
34
+ * signatureChainId: "0x66eee",
35
+ * hyperliquidChain: "Mainnet",
36
+ * agentAddress: "0x...",
37
+ * agentName: "Agent",
38
+ * nonce: Date.now(),
39
+ * } as const;
40
+ *
41
+ * const signature = await signUserSignedAction({
42
+ * wallet: privateKey,
43
+ * action,
44
+ * types: userSignedActionEip712Types[action.type],
45
+ * });
46
+ * ```
47
+ *
48
+ * @example Signing a multi-signature action
49
+ * ```ts
50
+ * import { actionSorter, signL1Action, signMultiSigAction } from "@nktkas/hyperliquid/signing";
51
+ * import { privateKeyToAccount } from "viem/accounts";
52
+ *
53
+ * const wallet = privateKeyToAccount("0x..."); // or `ethers`, private key with address
54
+ * const multiSigUser = "0x...";
55
+ *
56
+ * const nonce = Date.now();
57
+ * const action = {
58
+ * type: "scheduleCancel",
59
+ * time: Date.now() + 10000,
60
+ * } as const;
61
+ *
62
+ * // First, create the required number of signatures
63
+ * const signature = await signL1Action({
64
+ * wallet,
65
+ * action: [multiSigUser.toLowerCase(), wallet.address.toLowerCase(), actionSorter[action.type](action)],
66
+ * nonce,
67
+ * });
68
+ *
69
+ * // Then use signatures in the multi-sig action
70
+ * const multiSigSignature = await signMultiSigAction({
71
+ * wallet,
72
+ * action: {
73
+ * signatureChainId: "0x66eee",
74
+ * signatures: [signature],
75
+ * payload: {
76
+ * multiSigUser,
77
+ * outerSigner: wallet.address,
78
+ * action,
79
+ * },
80
+ * },
81
+ * nonce,
82
+ * });
83
+ * ```
84
+ *
85
+ * @module
86
+ */
87
+ import { keccak_256 } from "@noble/hashes/sha3";
88
+ import { etc } from "@noble/secp256k1";
89
+ import { encode as encodeMsgpack } from "@msgpack/msgpack";
90
+ import { isAbstractEthersSigner, isAbstractEthersV5Signer, isAbstractViemWalletClient, isAbstractWindowEthereum, isValidPrivateKey, signTypedData, } from "./_signTypedData/mod.js";
91
+ export { isAbstractEthersSigner, isAbstractEthersV5Signer, isAbstractViemWalletClient, isAbstractWindowEthereum, isValidPrivateKey, };
92
+ export * from "./_sorter.js";
93
+ /**
94
+ * Create a hash of the L1 action.
95
+ * @example
96
+ * ```ts
97
+ * import { actionSorter, createL1ActionHash } from "@nktkas/hyperliquid/signing";
98
+ *
99
+ * const action = {
100
+ * type: "cancel",
101
+ * cancels: [
102
+ * { a: 0, o: 12345 },
103
+ * ],
104
+ * } as const;
105
+ * const nonce = Date.now();
106
+ *
107
+ * const actionHash = createL1ActionHash({
108
+ * action: actionSorter[action.type](action),
109
+ * nonce,
110
+ * vaultAddress: "0x...", // optional
111
+ * expiresAfter: Date.now() + 10_000, // optional
112
+ * });
113
+ * ```
114
+ */
115
+ export function createL1ActionHash(args) {
116
+ const { action, nonce, vaultAddress, expiresAfter } = args;
117
+ // 1. Action
118
+ const actionBytes = encodeMsgpack(action);
119
+ // 2. Nonce
120
+ const nonceBytes = toUint64Bytes(nonce);
121
+ // 3. Vault address
122
+ const vaultMarker = vaultAddress ? new Uint8Array([1]) : new Uint8Array([0]);
123
+ const vaultBytes = vaultAddress ? etc.hexToBytes(vaultAddress.slice(2)) : new Uint8Array();
124
+ // 4. Expires after
125
+ const expiresMarker = expiresAfter !== undefined ? new Uint8Array([0]) : new Uint8Array();
126
+ const expiresBytes = expiresAfter !== undefined ? toUint64Bytes(expiresAfter) : new Uint8Array();
127
+ // Create a hash
128
+ const bytes = etc.concatBytes(actionBytes, nonceBytes, vaultMarker, vaultBytes, expiresMarker, expiresBytes);
129
+ const hash = keccak_256(bytes);
130
+ return `0x${etc.bytesToHex(hash)}`;
131
+ }
132
+ function toUint64Bytes(n) {
133
+ const bytes = new Uint8Array(8);
134
+ new DataView(bytes.buffer).setBigUint64(0, BigInt(n));
135
+ return bytes;
136
+ }
137
+ /**
138
+ * Sign an L1 action.
139
+ * @example
140
+ * ```ts
141
+ * import { actionSorter, signL1Action } from "@nktkas/hyperliquid/signing";
142
+ *
143
+ * const privateKey = "0x..."; // or `viem`, `ethers`
144
+ *
145
+ * const nonce = Date.now();
146
+ * const action = {
147
+ * type: "cancel",
148
+ * cancels: [
149
+ * { a: 0, o: 12345 },
150
+ * ],
151
+ * } as const;
152
+ *
153
+ * const signature = await signL1Action({
154
+ * wallet: privateKey,
155
+ * action: actionSorter[action.type](action),
156
+ * nonce,
157
+ * });
158
+ *
159
+ * // Send the signed action to the Hyperliquid API
160
+ * const response = await fetch("https://api.hyperliquid.xyz/exchange", {
161
+ * method: "POST",
162
+ * headers: { "Content-Type": "application/json" },
163
+ * body: JSON.stringify({ action, signature, nonce }),
164
+ * });
165
+ * const body = await response.json();
166
+ * ```
167
+ */
168
+ export async function signL1Action(args) {
169
+ const { wallet, action, nonce, isTestnet = false, vaultAddress, expiresAfter, } = args;
170
+ const actionHash = createL1ActionHash({ action, nonce, vaultAddress, expiresAfter });
171
+ const message = {
172
+ source: isTestnet ? "b" : "a",
173
+ connectionId: actionHash,
174
+ };
175
+ return await signTypedData({
176
+ wallet,
177
+ domain: {
178
+ name: "Exchange",
179
+ version: "1",
180
+ chainId: 1337, // hyperliquid requires chainId to be 1337
181
+ verifyingContract: "0x0000000000000000000000000000000000000000",
182
+ },
183
+ types: {
184
+ Agent: [
185
+ { name: "source", type: "string" },
186
+ { name: "connectionId", type: "bytes32" },
187
+ ],
188
+ },
189
+ primaryType: "Agent",
190
+ message,
191
+ });
192
+ }
193
+ /**
194
+ * Sign a user-signed action.
195
+ * @example
196
+ * ```ts
197
+ * import { signUserSignedAction, userSignedActionEip712Types } from "@nktkas/hyperliquid/signing";
198
+ *
199
+ * const privateKey = "0x..."; // or `viem`, `ethers`
200
+ *
201
+ * const action = {
202
+ * type: "approveAgent",
203
+ * signatureChainId: "0x66eee",
204
+ * hyperliquidChain: "Mainnet",
205
+ * agentAddress: "0x...",
206
+ * agentName: "Agent",
207
+ * nonce: Date.now(),
208
+ * } as const;
209
+ *
210
+ * const signature = await signUserSignedAction({
211
+ * wallet: privateKey,
212
+ * action,
213
+ * types: userSignedActionEip712Types[action.type],
214
+ * });
215
+ *
216
+ * // Send the signed action to the Hyperliquid API
217
+ * const response = await fetch("https://api.hyperliquid.xyz/exchange", {
218
+ * method: "POST",
219
+ * headers: { "Content-Type": "application/json" },
220
+ * body: JSON.stringify({ action, signature, nonce: action.nonce }),
221
+ * });
222
+ * const body = await response.json();
223
+ * ```
224
+ */
225
+ export async function signUserSignedAction(args) {
226
+ const { wallet, action, types } = args;
227
+ return await signTypedData({
228
+ wallet,
229
+ domain: {
230
+ name: "HyperliquidSignTransaction",
231
+ version: "1",
232
+ chainId: parseInt(action.signatureChainId),
233
+ verifyingContract: "0x0000000000000000000000000000000000000000",
234
+ },
235
+ types,
236
+ primaryType: Object.keys(types)[0],
237
+ message: action,
238
+ });
239
+ }
240
+ /**
241
+ * Sign a multi-signature action.
242
+ * @example
243
+ * ```ts
244
+ * import { actionSorter, signL1Action, signMultiSigAction } from "@nktkas/hyperliquid/signing";
245
+ * import { privateKeyToAccount } from "viem/accounts";
246
+ *
247
+ * const wallet = privateKeyToAccount("0x..."); // or `ethers`, private key with address
248
+ * const multiSigUser = "0x...";
249
+ *
250
+ * const nonce = Date.now();
251
+ * const action = {
252
+ * type: "scheduleCancel",
253
+ * time: Date.now() + 10000,
254
+ * } as const;
255
+ *
256
+ * // First, create the required number of signatures
257
+ * const signature = await signL1Action({
258
+ * wallet,
259
+ * action: [multiSigUser.toLowerCase(), wallet.address.toLowerCase(), actionSorter[action.type](action)],
260
+ * nonce,
261
+ * });
262
+ *
263
+ * // Then use signatures in the multi-sig action
264
+ * const multiSigSignature = await signMultiSigAction({
265
+ * wallet,
266
+ * action: {
267
+ * signatureChainId: "0x66eee",
268
+ * signatures: [signature],
269
+ * payload: {
270
+ * multiSigUser,
271
+ * outerSigner: wallet.address,
272
+ * action,
273
+ * },
274
+ * },
275
+ * nonce,
276
+ * });
277
+ * ```
278
+ */
279
+ export async function signMultiSigAction(args) {
280
+ const { wallet, action, nonce, isTestnet = false, vaultAddress, expiresAfter, } = args;
281
+ const multiSigActionHash = createL1ActionHash({ action, nonce, vaultAddress, expiresAfter });
282
+ const message = {
283
+ signatureChainId: action.signatureChainId,
284
+ hyperliquidChain: isTestnet ? "Testnet" : "Mainnet",
285
+ multiSigActionHash,
286
+ nonce,
287
+ };
288
+ return await signTypedData({
289
+ wallet,
290
+ domain: {
291
+ name: "HyperliquidSignTransaction",
292
+ version: "1",
293
+ chainId: parseInt(message.signatureChainId),
294
+ verifyingContract: "0x0000000000000000000000000000000000000000",
295
+ },
296
+ types: {
297
+ "HyperliquidTransaction:SendMultiSig": [
298
+ { name: "hyperliquidChain", type: "string" },
299
+ { name: "multiSigActionHash", type: "bytes32" },
300
+ { name: "nonce", type: "uint64" },
301
+ ],
302
+ },
303
+ primaryType: "HyperliquidTransaction:SendMultiSig",
304
+ message,
305
+ });
306
+ }
@@ -42,6 +42,6 @@ export interface Subscription {
42
42
  }
43
43
  /** Base class for all transport-related errors. */
44
44
  export declare class TransportError extends HyperliquidError {
45
- constructor(message?: string);
45
+ constructor(message?: string, options?: ErrorOptions);
46
46
  }
47
47
  //# sourceMappingURL=base.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../../src/src/transports/base.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAE9C;;;;;;;;GAQG;AACH,MAAM,WAAW,iBAAkB,SAAQ,OAAO,CAAC,eAAe,CAAC;IAC/D;;;;;;OAMG;IACH,OAAO,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,GAAG,UAAU,GAAG,UAAU,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;CAC9G;AAED;;;;GAIG;AACH,MAAM,WAAW,sBAAuB,SAAQ,OAAO,CAAC,eAAe,CAAC;IACpE;;;;;;OAMG;IACH,SAAS,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC,KAAK,IAAI,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;CACpH;AAED,6CAA6C;AAC7C,MAAM,WAAW,YAAY;IACzB,kFAAkF;IAClF,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7B,wEAAwE;IACxE,iBAAiB,CAAC,EAAE,WAAW,CAAC;CACnC;AAED,mDAAmD;AACnD,qBAAa,cAAe,SAAQ,gBAAgB;gBACpC,OAAO,CAAC,EAAE,MAAM;CAI/B"}
1
+ {"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../../src/src/transports/base.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAE9C;;;;;;;;GAQG;AACH,MAAM,WAAW,iBAAkB,SAAQ,OAAO,CAAC,eAAe,CAAC;IAC/D;;;;;;OAMG;IACH,OAAO,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,GAAG,UAAU,GAAG,UAAU,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;CAC9G;AAED;;;;GAIG;AACH,MAAM,WAAW,sBAAuB,SAAQ,OAAO,CAAC,eAAe,CAAC;IACpE;;;;;;OAMG;IACH,SAAS,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC,CAAC,KAAK,IAAI,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;CACpH;AAED,6CAA6C;AAC7C,MAAM,WAAW,YAAY;IACzB,kFAAkF;IAClF,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7B,wEAAwE;IACxE,iBAAiB,CAAC,EAAE,WAAW,CAAC;CACnC;AAED,mDAAmD;AACnD,qBAAa,cAAe,SAAQ,gBAAgB;gBACpC,OAAO,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,YAAY;CAIvD"}
@@ -1,8 +1,8 @@
1
1
  import { HyperliquidError } from "../base.js";
2
2
  /** Base class for all transport-related errors. */
3
3
  export class TransportError extends HyperliquidError {
4
- constructor(message) {
5
- super(message);
4
+ constructor(message, options) {
5
+ super(message, options);
6
6
  this.name = "TransportError";
7
7
  }
8
8
  }
@@ -1,19 +1,13 @@
1
1
  import type { MaybePromise } from "../../base.js";
2
2
  import { type IRequestTransport, TransportError } from "../base.js";
3
- /**
4
- * Error thrown when an HTTP response is deemed invalid:
5
- * - Non-200 status code
6
- * - Unexpected content type
7
- */
3
+ /** Error thrown when an HTTP request fails. */
8
4
  export declare class HttpRequestError extends TransportError {
9
- response: Response;
10
- responseBody?: string | undefined;
11
- /**
12
- * Creates a new HTTP request error.
13
- * @param response - The failed HTTP response.
14
- * @param responseBody - The raw response body content, if available.
15
- */
16
- constructor(response: Response, responseBody?: string | undefined);
5
+ response?: Response;
6
+ body?: string;
7
+ constructor(args?: {
8
+ response?: Response;
9
+ body?: string;
10
+ }, options?: ErrorOptions);
17
11
  }
18
12
  /** Configuration options for the HTTP transport layer. */
19
13
  export interface HttpTransportOptions {
@@ -84,8 +78,8 @@ export declare class HttpTransport implements IRequestTransport, HttpTransportOp
84
78
  * @param payload - The payload to send with the request.
85
79
  * @param signal - An optional abort signal.
86
80
  * @returns A promise that resolves with parsed JSON response body.
87
- * @throws {HttpRequestError} - Thrown when an HTTP response is deemed invalid.
88
- * @throws May throw {@link https://developer.mozilla.org/en-US/docs/Web/API/Window/fetch#exceptions | fetch errors}.
81
+ *
82
+ * @throws {HttpRequestError} Thrown when the HTTP request fails.
89
83
  */
90
84
  request<T>(endpoint: "info" | "exchange" | "explorer", payload: unknown, signal?: AbortSignal): Promise<T>;
91
85
  }
@@ -1 +1 @@
1
- {"version":3,"file":"http_transport.d.ts","sourceRoot":"","sources":["../../../../src/src/transports/http/http_transport.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EAAE,KAAK,iBAAiB,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEpE;;;;GAIG;AACH,qBAAa,gBAAiB,SAAQ,cAAc;IAM7B,QAAQ,EAAE,QAAQ;IAAS,YAAY,CAAC,EAAE,MAAM;IALnE;;;;OAIG;gBACgB,QAAQ,EAAE,QAAQ,EAAS,YAAY,CAAC,EAAE,MAAM,YAAA;CAOtE;AAED,0DAA0D;AAC1D,MAAM,WAAW,oBAAoB;IACjC;;;OAGG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IAEpB;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAExB;;;OAGG;IACH,MAAM,CAAC,EAAE;QACL,OAAO,CAAC,EAAE;YAAE,GAAG,CAAC,EAAE,MAAM,GAAG,GAAG,CAAC;YAAC,GAAG,CAAC,EAAE,MAAM,GAAG,GAAG,CAAA;SAAE,CAAC;QACrD,OAAO,CAAC,EAAE;YAAE,GAAG,CAAC,EAAE,MAAM,GAAG,GAAG,CAAC;YAAC,GAAG,CAAC,EAAE,MAAM,GAAG,GAAG,CAAA;SAAE,CAAC;KACxD,CAAC;IAEF,2IAA2I;IAC3I,YAAY,CAAC,EAAE,IAAI,CAAC,WAAW,EAAE,MAAM,GAAG,QAAQ,CAAC,CAAC;IAEpD;;;;OAIG;IACH,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,YAAY,CAAC,OAAO,GAAG,IAAI,GAAG,IAAI,GAAG,SAAS,CAAC,CAAC;IAElF;;;;OAIG;IACH,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,QAAQ,KAAK,YAAY,CAAC,QAAQ,GAAG,IAAI,GAAG,IAAI,GAAG,SAAS,CAAC,CAAC;CACzF;AAED,2DAA2D;AAC3D,qBAAa,aAAc,YAAW,iBAAiB,EAAE,oBAAoB;IACzE,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,MAAM,EAAE;QACJ,OAAO,EAAE;YAAE,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;YAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;SAAE,CAAC;QAClD,OAAO,EAAE;YAAE,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;YAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;SAAE,CAAC;KACrD,CAAC;IACF,YAAY,EAAE,IAAI,CAAC,WAAW,EAAE,MAAM,GAAG,QAAQ,CAAC,CAAC;IACnD,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,YAAY,CAAC,OAAO,GAAG,IAAI,GAAG,IAAI,GAAG,SAAS,CAAC,CAAC;IAClF,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,QAAQ,KAAK,YAAY,CAAC,QAAQ,GAAG,IAAI,GAAG,IAAI,GAAG,SAAS,CAAC,CAAC;IAEtF;;;OAGG;gBACS,OAAO,CAAC,EAAE,oBAAoB;IAkB1C;;;;;;;;OAQG;IACG,OAAO,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,GAAG,UAAU,GAAG,UAAU,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,CAAC,CAAC;CAuDnH"}
1
+ {"version":3,"file":"http_transport.d.ts","sourceRoot":"","sources":["../../../../src/src/transports/http/http_transport.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EAAE,KAAK,iBAAiB,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEpE,+CAA+C;AAC/C,qBAAa,gBAAiB,SAAQ,cAAc;IAChD,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;gBAEF,IAAI,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,QAAQ,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,EAAE,OAAO,CAAC,EAAE,YAAY;CAgBpF;AAED,0DAA0D;AAC1D,MAAM,WAAW,oBAAoB;IACjC;;;OAGG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IAEpB;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAExB;;;OAGG;IACH,MAAM,CAAC,EAAE;QACL,OAAO,CAAC,EAAE;YAAE,GAAG,CAAC,EAAE,MAAM,GAAG,GAAG,CAAC;YAAC,GAAG,CAAC,EAAE,MAAM,GAAG,GAAG,CAAA;SAAE,CAAC;QACrD,OAAO,CAAC,EAAE;YAAE,GAAG,CAAC,EAAE,MAAM,GAAG,GAAG,CAAC;YAAC,GAAG,CAAC,EAAE,MAAM,GAAG,GAAG,CAAA;SAAE,CAAC;KACxD,CAAC;IAEF,2IAA2I;IAC3I,YAAY,CAAC,EAAE,IAAI,CAAC,WAAW,EAAE,MAAM,GAAG,QAAQ,CAAC,CAAC;IAEpD;;;;OAIG;IACH,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,YAAY,CAAC,OAAO,GAAG,IAAI,GAAG,IAAI,GAAG,SAAS,CAAC,CAAC;IAElF;;;;OAIG;IACH,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,QAAQ,KAAK,YAAY,CAAC,QAAQ,GAAG,IAAI,GAAG,IAAI,GAAG,SAAS,CAAC,CAAC;CACzF;AAED,2DAA2D;AAC3D,qBAAa,aAAc,YAAW,iBAAiB,EAAE,oBAAoB;IACzE,SAAS,EAAE,OAAO,CAAC;IACnB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,MAAM,EAAE;QACJ,OAAO,EAAE;YAAE,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;YAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;SAAE,CAAC;QAClD,OAAO,EAAE;YAAE,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;YAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;SAAE,CAAC;KACrD,CAAC;IACF,YAAY,EAAE,IAAI,CAAC,WAAW,EAAE,MAAM,GAAG,QAAQ,CAAC,CAAC;IACnD,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,YAAY,CAAC,OAAO,GAAG,IAAI,GAAG,IAAI,GAAG,SAAS,CAAC,CAAC;IAClF,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,QAAQ,KAAK,YAAY,CAAC,QAAQ,GAAG,IAAI,GAAG,IAAI,GAAG,SAAS,CAAC,CAAC;IAEtF;;;OAGG;gBACS,OAAO,CAAC,EAAE,oBAAoB;IAkB1C;;;;;;;;OAQG;IACG,OAAO,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,GAAG,UAAU,GAAG,UAAU,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,CAAC,CAAC;CA4DnH"}