@lifi/perps-sdk-provider-hyperliquid 13.0.0 → 14.0.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 (245) hide show
  1. package/README.md +115 -0
  2. package/dist/cjs/HyperliquidProvider.d.ts.map +1 -1
  3. package/dist/cjs/HyperliquidProvider.js +1 -2
  4. package/dist/cjs/HyperliquidProvider.js.map +1 -1
  5. package/dist/cjs/constants.d.ts +1 -0
  6. package/dist/cjs/constants.d.ts.map +1 -1
  7. package/dist/cjs/constants.js +2 -1
  8. package/dist/cjs/constants.js.map +1 -1
  9. package/dist/cjs/index.d.ts +1 -3
  10. package/dist/cjs/index.d.ts.map +1 -1
  11. package/dist/cjs/index.js +2 -3
  12. package/dist/cjs/index.js.map +1 -1
  13. package/dist/cjs/services/getAccount.d.ts.map +1 -1
  14. package/dist/cjs/services/getAccount.js +16 -9
  15. package/dist/cjs/services/getAccount.js.map +1 -1
  16. package/dist/cjs/services/getActivity.d.ts.map +1 -1
  17. package/dist/cjs/services/getActivity.js +40 -7
  18. package/dist/cjs/services/getActivity.js.map +1 -1
  19. package/dist/cjs/services/getFills.d.ts.map +1 -1
  20. package/dist/cjs/services/getFills.js +3 -0
  21. package/dist/cjs/services/getFills.js.map +1 -1
  22. package/dist/cjs/services/getOrder.d.ts.map +1 -1
  23. package/dist/cjs/services/getOrder.js +14 -3
  24. package/dist/cjs/services/getOrder.js.map +1 -1
  25. package/dist/cjs/services/getOrders.d.ts +2 -7
  26. package/dist/cjs/services/getOrders.d.ts.map +1 -1
  27. package/dist/cjs/services/getOrders.js +94 -31
  28. package/dist/cjs/services/getOrders.js.map +1 -1
  29. package/dist/cjs/services/getPositions.d.ts.map +1 -1
  30. package/dist/cjs/services/getPositions.js +1 -1
  31. package/dist/cjs/services/getPositions.js.map +1 -1
  32. package/dist/cjs/types/explorer.d.ts +10 -0
  33. package/dist/cjs/types/explorer.d.ts.map +1 -0
  34. package/dist/cjs/types/explorer.js +17 -0
  35. package/dist/cjs/types/explorer.js.map +1 -0
  36. package/dist/cjs/types/fill.d.ts +6 -0
  37. package/dist/cjs/types/fill.d.ts.map +1 -1
  38. package/dist/cjs/types/index.d.ts +1 -0
  39. package/dist/cjs/types/index.d.ts.map +1 -1
  40. package/dist/cjs/types/index.js +1 -0
  41. package/dist/cjs/types/index.js.map +1 -1
  42. package/dist/cjs/types/ledger.d.ts +24 -1
  43. package/dist/cjs/types/ledger.d.ts.map +1 -1
  44. package/dist/cjs/types/ledger.js +5 -1
  45. package/dist/cjs/types/ledger.js.map +1 -1
  46. package/dist/cjs/types/order.d.ts +24 -0
  47. package/dist/cjs/types/order.d.ts.map +1 -1
  48. package/dist/cjs/types/ws.d.ts +14 -0
  49. package/dist/cjs/types/ws.d.ts.map +1 -1
  50. package/dist/cjs/utils/assetId.d.ts +1 -0
  51. package/dist/cjs/utils/assetId.d.ts.map +1 -1
  52. package/dist/cjs/utils/assetId.js +6 -1
  53. package/dist/cjs/utils/assetId.js.map +1 -1
  54. package/dist/cjs/utils/explorer.d.ts +7 -0
  55. package/dist/cjs/utils/explorer.d.ts.map +1 -0
  56. package/dist/cjs/utils/explorer.js +49 -0
  57. package/dist/cjs/utils/explorer.js.map +1 -0
  58. package/dist/cjs/utils/index.d.ts +4 -3
  59. package/dist/cjs/utils/index.d.ts.map +1 -1
  60. package/dist/cjs/utils/index.js +7 -6
  61. package/dist/cjs/utils/index.js.map +1 -1
  62. package/dist/cjs/utils/infoClient.d.ts +1 -0
  63. package/dist/cjs/utils/infoClient.d.ts.map +1 -1
  64. package/dist/cjs/utils/infoClient.js +16 -10
  65. package/dist/cjs/utils/infoClient.js.map +1 -1
  66. package/dist/cjs/utils/mapActivity.d.ts +5 -3
  67. package/dist/cjs/utils/mapActivity.d.ts.map +1 -1
  68. package/dist/cjs/utils/mapActivity.js +116 -48
  69. package/dist/cjs/utils/mapActivity.js.map +1 -1
  70. package/dist/cjs/utils/mapFill.d.ts.map +1 -1
  71. package/dist/cjs/utils/mapFill.js +0 -1
  72. package/dist/cjs/utils/mapFill.js.map +1 -1
  73. package/dist/cjs/utils/mapOrder.d.ts +4 -9
  74. package/dist/cjs/utils/mapOrder.d.ts.map +1 -1
  75. package/dist/cjs/utils/mapOrder.js +149 -135
  76. package/dist/cjs/utils/mapOrder.js.map +1 -1
  77. package/dist/cjs/utils/spotBalance.d.ts.map +1 -1
  78. package/dist/cjs/utils/spotBalance.js +10 -6
  79. package/dist/cjs/utils/spotBalance.js.map +1 -1
  80. package/dist/cjs/websocket/HyperliquidWsProvider.d.ts +3 -0
  81. package/dist/cjs/websocket/HyperliquidWsProvider.d.ts.map +1 -1
  82. package/dist/cjs/websocket/HyperliquidWsProvider.js +100 -29
  83. package/dist/cjs/websocket/HyperliquidWsProvider.js.map +1 -1
  84. package/dist/esm/HyperliquidProvider.d.ts.map +1 -1
  85. package/dist/esm/HyperliquidProvider.js +1 -2
  86. package/dist/esm/HyperliquidProvider.js.map +1 -1
  87. package/dist/esm/constants.d.ts +8 -0
  88. package/dist/esm/constants.d.ts.map +1 -1
  89. package/dist/esm/constants.js +8 -0
  90. package/dist/esm/constants.js.map +1 -1
  91. package/dist/esm/index.d.ts +1 -3
  92. package/dist/esm/index.d.ts.map +1 -1
  93. package/dist/esm/index.js +1 -2
  94. package/dist/esm/index.js.map +1 -1
  95. package/dist/esm/services/getAccount.d.ts.map +1 -1
  96. package/dist/esm/services/getAccount.js +14 -10
  97. package/dist/esm/services/getAccount.js.map +1 -1
  98. package/dist/esm/services/getActivity.d.ts +2 -2
  99. package/dist/esm/services/getActivity.d.ts.map +1 -1
  100. package/dist/esm/services/getActivity.js +44 -9
  101. package/dist/esm/services/getActivity.js.map +1 -1
  102. package/dist/esm/services/getFills.d.ts.map +1 -1
  103. package/dist/esm/services/getFills.js +4 -1
  104. package/dist/esm/services/getFills.js.map +1 -1
  105. package/dist/esm/services/getOrder.d.ts.map +1 -1
  106. package/dist/esm/services/getOrder.js +15 -4
  107. package/dist/esm/services/getOrder.js.map +1 -1
  108. package/dist/esm/services/getOrders.d.ts +4 -24
  109. package/dist/esm/services/getOrders.d.ts.map +1 -1
  110. package/dist/esm/services/getOrders.js +115 -42
  111. package/dist/esm/services/getOrders.js.map +1 -1
  112. package/dist/esm/services/getPositions.d.ts.map +1 -1
  113. package/dist/esm/services/getPositions.js +2 -2
  114. package/dist/esm/services/getPositions.js.map +1 -1
  115. package/dist/esm/types/explorer.d.ts +27 -0
  116. package/dist/esm/types/explorer.d.ts.map +1 -0
  117. package/dist/esm/types/explorer.js +20 -0
  118. package/dist/esm/types/explorer.js.map +1 -0
  119. package/dist/esm/types/fill.d.ts +11 -0
  120. package/dist/esm/types/fill.d.ts.map +1 -1
  121. package/dist/esm/types/index.d.ts +1 -0
  122. package/dist/esm/types/index.d.ts.map +1 -1
  123. package/dist/esm/types/index.js +1 -0
  124. package/dist/esm/types/index.js.map +1 -1
  125. package/dist/esm/types/ledger.d.ts +28 -1
  126. package/dist/esm/types/ledger.d.ts.map +1 -1
  127. package/dist/esm/types/ledger.js +4 -0
  128. package/dist/esm/types/ledger.js.map +1 -1
  129. package/dist/esm/types/order.d.ts +26 -0
  130. package/dist/esm/types/order.d.ts.map +1 -1
  131. package/dist/esm/types/ws.d.ts +15 -0
  132. package/dist/esm/types/ws.d.ts.map +1 -1
  133. package/dist/esm/utils/assetId.d.ts +9 -0
  134. package/dist/esm/utils/assetId.d.ts.map +1 -1
  135. package/dist/esm/utils/assetId.js +13 -0
  136. package/dist/esm/utils/assetId.js.map +1 -1
  137. package/dist/esm/utils/explorer.d.ts +31 -0
  138. package/dist/esm/utils/explorer.d.ts.map +1 -0
  139. package/dist/esm/utils/explorer.js +68 -0
  140. package/dist/esm/utils/explorer.js.map +1 -0
  141. package/dist/esm/utils/index.d.ts +4 -3
  142. package/dist/esm/utils/index.d.ts.map +1 -1
  143. package/dist/esm/utils/index.js +4 -3
  144. package/dist/esm/utils/index.js.map +1 -1
  145. package/dist/esm/utils/infoClient.d.ts +14 -3
  146. package/dist/esm/utils/infoClient.d.ts.map +1 -1
  147. package/dist/esm/utils/infoClient.js +29 -14
  148. package/dist/esm/utils/infoClient.js.map +1 -1
  149. package/dist/esm/utils/mapActivity.d.ts +16 -13
  150. package/dist/esm/utils/mapActivity.d.ts.map +1 -1
  151. package/dist/esm/utils/mapActivity.js +128 -72
  152. package/dist/esm/utils/mapActivity.js.map +1 -1
  153. package/dist/esm/utils/mapFill.d.ts.map +1 -1
  154. package/dist/esm/utils/mapFill.js +1 -2
  155. package/dist/esm/utils/mapFill.js.map +1 -1
  156. package/dist/esm/utils/mapOrder.d.ts +8 -73
  157. package/dist/esm/utils/mapOrder.d.ts.map +1 -1
  158. package/dist/esm/utils/mapOrder.js +148 -187
  159. package/dist/esm/utils/mapOrder.js.map +1 -1
  160. package/dist/esm/utils/spotBalance.d.ts +1 -1
  161. package/dist/esm/utils/spotBalance.d.ts.map +1 -1
  162. package/dist/esm/utils/spotBalance.js +12 -7
  163. package/dist/esm/utils/spotBalance.js.map +1 -1
  164. package/dist/esm/websocket/HyperliquidWsProvider.d.ts +5 -1
  165. package/dist/esm/websocket/HyperliquidWsProvider.d.ts.map +1 -1
  166. package/dist/esm/websocket/HyperliquidWsProvider.js +105 -34
  167. package/dist/esm/websocket/HyperliquidWsProvider.js.map +1 -1
  168. package/dist/types/HyperliquidProvider.d.ts.map +1 -1
  169. package/dist/types/constants.d.ts +8 -0
  170. package/dist/types/constants.d.ts.map +1 -1
  171. package/dist/types/index.d.ts +1 -3
  172. package/dist/types/index.d.ts.map +1 -1
  173. package/dist/types/services/getAccount.d.ts.map +1 -1
  174. package/dist/types/services/getActivity.d.ts +2 -2
  175. package/dist/types/services/getActivity.d.ts.map +1 -1
  176. package/dist/types/services/getFills.d.ts.map +1 -1
  177. package/dist/types/services/getOrder.d.ts.map +1 -1
  178. package/dist/types/services/getOrders.d.ts +4 -24
  179. package/dist/types/services/getOrders.d.ts.map +1 -1
  180. package/dist/types/services/getPositions.d.ts.map +1 -1
  181. package/dist/types/types/explorer.d.ts +27 -0
  182. package/dist/types/types/explorer.d.ts.map +1 -0
  183. package/dist/types/types/fill.d.ts +11 -0
  184. package/dist/types/types/fill.d.ts.map +1 -1
  185. package/dist/types/types/index.d.ts +1 -0
  186. package/dist/types/types/index.d.ts.map +1 -1
  187. package/dist/types/types/ledger.d.ts +28 -1
  188. package/dist/types/types/ledger.d.ts.map +1 -1
  189. package/dist/types/types/order.d.ts +26 -0
  190. package/dist/types/types/order.d.ts.map +1 -1
  191. package/dist/types/types/ws.d.ts +15 -0
  192. package/dist/types/types/ws.d.ts.map +1 -1
  193. package/dist/types/utils/assetId.d.ts +9 -0
  194. package/dist/types/utils/assetId.d.ts.map +1 -1
  195. package/dist/types/utils/explorer.d.ts +31 -0
  196. package/dist/types/utils/explorer.d.ts.map +1 -0
  197. package/dist/types/utils/index.d.ts +4 -3
  198. package/dist/types/utils/index.d.ts.map +1 -1
  199. package/dist/types/utils/infoClient.d.ts +14 -3
  200. package/dist/types/utils/infoClient.d.ts.map +1 -1
  201. package/dist/types/utils/mapActivity.d.ts +16 -13
  202. package/dist/types/utils/mapActivity.d.ts.map +1 -1
  203. package/dist/types/utils/mapFill.d.ts.map +1 -1
  204. package/dist/types/utils/mapOrder.d.ts +8 -73
  205. package/dist/types/utils/mapOrder.d.ts.map +1 -1
  206. package/dist/types/utils/spotBalance.d.ts +1 -1
  207. package/dist/types/utils/spotBalance.d.ts.map +1 -1
  208. package/dist/types/websocket/HyperliquidWsProvider.d.ts +5 -1
  209. package/dist/types/websocket/HyperliquidWsProvider.d.ts.map +1 -1
  210. package/package.json +3 -3
  211. package/src/HyperliquidProvider.ts +1 -13
  212. package/src/constants.ts +10 -0
  213. package/src/index.ts +1 -2
  214. package/src/services/getAccount.ts +22 -14
  215. package/src/services/getActivity.ts +81 -6
  216. package/src/services/getFills.ts +4 -1
  217. package/src/services/getOrder.ts +29 -5
  218. package/src/services/getOrders.ts +185 -70
  219. package/src/services/getPositions.ts +4 -1
  220. package/src/types/explorer.ts +39 -0
  221. package/src/types/fill.ts +12 -0
  222. package/src/types/index.ts +1 -0
  223. package/src/types/ledger.ts +37 -0
  224. package/src/types/order.ts +25 -0
  225. package/src/types/ws.ts +16 -0
  226. package/src/utils/assetId.ts +16 -0
  227. package/src/utils/explorer.ts +93 -0
  228. package/src/utils/index.ts +16 -7
  229. package/src/utils/infoClient.ts +46 -24
  230. package/src/utils/mapActivity.ts +163 -75
  231. package/src/utils/mapFill.ts +0 -2
  232. package/src/utils/mapOrder.ts +163 -212
  233. package/src/utils/spotBalance.ts +12 -7
  234. package/src/websocket/HyperliquidWsProvider.ts +127 -40
  235. package/dist/cjs/services/getRunningTwaps.d.ts +0 -10
  236. package/dist/cjs/services/getRunningTwaps.d.ts.map +0 -1
  237. package/dist/cjs/services/getRunningTwaps.js +0 -46
  238. package/dist/cjs/services/getRunningTwaps.js.map +0 -1
  239. package/dist/esm/services/getRunningTwaps.d.ts +0 -12
  240. package/dist/esm/services/getRunningTwaps.d.ts.map +0 -1
  241. package/dist/esm/services/getRunningTwaps.js +0 -40
  242. package/dist/esm/services/getRunningTwaps.js.map +0 -1
  243. package/dist/types/services/getRunningTwaps.d.ts +0 -12
  244. package/dist/types/services/getRunningTwaps.d.ts.map +0 -1
  245. package/src/services/getRunningTwaps.ts +0 -90
@@ -1,4 +1,4 @@
1
- import { errorCodeFromStatus, fetchWithRetry, PerpsError, resolveRetryPolicy, } from '@lifi/perps-sdk';
1
+ import { errorCodeFromStatus, fetchWithRetry, isAbortError, PerpsError, resolveRetryPolicy, } from '@lifi/perps-sdk';
2
2
  import { PerpsErrorCode } from '@lifi/perps-types';
3
3
  import { isAddress } from 'viem';
4
4
  import { PROVIDER_KEY } from '../constants.js';
@@ -51,7 +51,7 @@ export const hlInfoOptions = (client, options) => ({
51
51
  fetchImpl: client.config.fetch,
52
52
  });
53
53
  /**
54
- * POST to the Hyperliquid `/info` endpoint and return the parsed JSON body.
54
+ * POST a JSON body to a Hyperliquid REST surface and return the parsed body.
55
55
  *
56
56
  * Direct-to-venue: no proxy, no AJV validation, no cache. The caller's type
57
57
  * parameter is trusted; consumers should treat the response shape as
@@ -61,14 +61,17 @@ export const hlInfoOptions = (client, options) => ({
61
61
  * Non-2xx responses raise a {@link PerpsError} tagged with the Hyperliquid
62
62
  * provider key, carrying the code the status resolves to: `RateLimitExceeded`
63
63
  * for a 429, `Unauthorized` for a 401, `AgentUnauthorized` for a 403, and
64
- * `ThirdPartyError` for every other status.
65
- * @public
64
+ * `ThirdPartyError` for every other status. A transport failure and a 2xx body
65
+ * that is not JSON both raise `ServerError`, so every failure but a caller
66
+ * abort reaches the caller as a `PerpsError`. An abort rejects untouched.
67
+ *
68
+ * @param label - Names the surface in the error message, e.g. `info request`.
69
+ * @internal
66
70
  */
67
- export async function infoRequest(apiUrl, body, options) {
71
+ export async function hlPostJson(url, label, body, options) {
68
72
  const policy = options?.policy ?? HYPERLIQUID_RETRY_DEFAULTS;
69
- let response;
70
73
  try {
71
- response = await fetchWithRetry(`${apiUrl}/info`, {
74
+ const response = await fetchWithRetry(url, {
72
75
  method: 'POST',
73
76
  headers: { 'Content-Type': 'application/json' },
74
77
  body: JSON.stringify(normalizeInfoValue(body)),
@@ -77,17 +80,29 @@ export async function infoRequest(apiUrl, body, options) {
77
80
  fetchImpl: options?.fetchImpl,
78
81
  signal: options?.signal,
79
82
  });
83
+ if (!response.ok) {
84
+ const err = new PerpsError(errorCodeFromStatus(response.status, PerpsErrorCode.ThirdPartyError, HYPERLIQUID_STATUS_ERROR_CODES), `Hyperliquid ${label} failed: ${response.status}`);
85
+ err.tool = PROVIDER_KEY;
86
+ throw err;
87
+ }
88
+ return (await response.json());
80
89
  }
81
90
  catch (error) {
82
- const err = new PerpsError(PerpsErrorCode.ServerError, error instanceof Error ? error.message : 'Hyperliquid info request failed');
83
- err.tool = PROVIDER_KEY;
84
- throw err;
85
- }
86
- if (!response.ok) {
87
- const err = new PerpsError(errorCodeFromStatus(response.status, PerpsErrorCode.ThirdPartyError, HYPERLIQUID_STATUS_ERROR_CODES), `Hyperliquid info request failed: ${response.status}`);
91
+ if (error instanceof PerpsError || isAbortError(error)) {
92
+ throw error;
93
+ }
94
+ const err = new PerpsError(PerpsErrorCode.ServerError, error instanceof Error ? error.message : `Hyperliquid ${label} failed`);
88
95
  err.tool = PROVIDER_KEY;
89
96
  throw err;
90
97
  }
91
- return (await response.json());
98
+ }
99
+ /**
100
+ * POST to the Hyperliquid `/info` endpoint and return the parsed JSON body.
101
+ * See {@link hlPostJson} for the transport and error contract.
102
+ *
103
+ * @public
104
+ */
105
+ export function infoRequest(apiUrl, body, options) {
106
+ return hlPostJson(`${apiUrl}/info`, 'info request', body, options);
92
107
  }
93
108
  //# sourceMappingURL=infoClient.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"infoClient.js","sourceRoot":"","sources":["../../../src/utils/infoClient.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"infoClient.js","sourceRoot":"","sources":["../../../src/utils/infoClient.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,mBAAmB,EACnB,cAAc,EACd,YAAY,EACZ,UAAU,EAGV,kBAAkB,GAEnB,MAAM,iBAAiB,CAAA;AACxB,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAClD,OAAO,EAAE,SAAS,EAAE,MAAM,MAAM,CAAA;AAChC,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAE9C,MAAM,kBAAkB,GAAG,CAAC,KAAc,EAAW,EAAE;IACrD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,SAAS,CAAC,KAAK,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,KAAK,CAAA;IAC1E,CAAC;IACD,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,KAAK,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAA;IACtC,CAAC;IACD,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAChD,OAAO,MAAM,CAAC,WAAW,CACvB,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,WAAW,CAAC,EAAE,EAAE,CAAC;YAChD,GAAG;YACH,kBAAkB,CAAC,WAAW,CAAC;SAChC,CAAC,CACH,CAAA;IACH,CAAC;IACD,OAAO,KAAK,CAAA;AACd,CAAC,CAAA;AAED,MAAM,8BAA8B,GAAG;IACrC,GAAG,EAAE,cAAc,CAAC,YAAY;IAChC,GAAG,EAAE,cAAc,CAAC,iBAAiB;CAC7B,CAAA;AAEV,gBAAgB;AAChB,MAAM,CAAC,MAAM,0BAA0B,GAAwB;IAC7D,OAAO,EAAE,IAAI;IACb,WAAW,EAAE,CAAC;IACd,WAAW,EAAE,KAAK;IAClB,UAAU,EAAE,MAAM;IAClB,iBAAiB,EAAE,IAAI;IACvB,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE;QACzB,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;YAC5B,OAAO,kBAAkB,CAAA;QAC3B,CAAC;QACD,IACE,QAAQ,CAAC,MAAM,KAAK,GAAG;YACvB,QAAQ,CAAC,MAAM,KAAK,GAAG;YACvB,QAAQ,CAAC,MAAM,KAAK,GAAG,EACvB,CAAC;YACD,OAAO,cAAc,CAAA;QACvB,CAAC;QACD,OAAO,MAAM,CAAA;IACf,CAAC;CACF,CAAA;AAcD;;;;GAIG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,CAC3B,MAAsB,EACtB,OAA2B,EACP,EAAE,CAAC,CAAC;IACxB,MAAM,EAAE,OAAO,EAAE,MAAM;IACvB,MAAM,EAAE,kBAAkB,CACxB,0BAA0B,EAC1B,MAAM,CAAC,MAAM,CAAC,KAAK,EACnB,YAAY,CACb;IACD,SAAS,EAAE,MAAM,CAAC,MAAM,CAAC,KAAK;CAC/B,CAAC,CAAA;AAEF;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,GAAW,EACX,KAAa,EACb,IAA6B,EAC7B,OAA4B;IAE5B,MAAM,MAAM,GAAG,OAAO,EAAE,MAAM,IAAI,0BAA0B,CAAA;IAE5D,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,cAAc,CACnC,GAAG,EACH;YACE,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;YAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;SAC/C,EACD;YACE,MAAM;YACN,SAAS,EAAE,OAAO,EAAE,SAAS;YAC7B,MAAM,EAAE,OAAO,EAAE,MAAM;SACxB,CACF,CAAA;QAED,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,GAAG,GAAG,IAAI,UAAU,CACxB,mBAAmB,CACjB,QAAQ,CAAC,MAAM,EACf,cAAc,CAAC,eAAe,EAC9B,8BAA8B,CAC/B,EACD,eAAe,KAAK,YAAY,QAAQ,CAAC,MAAM,EAAE,CAClD,CAAA;YACD,GAAG,CAAC,IAAI,GAAG,YAAY,CAAA;YACvB,MAAM,GAAG,CAAA;QACX,CAAC;QAED,OAAO,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAM,CAAA;IACrC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,UAAU,IAAI,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC;YACvD,MAAM,KAAK,CAAA;QACb,CAAC;QACD,MAAM,GAAG,GAAG,IAAI,UAAU,CACxB,cAAc,CAAC,WAAW,EAC1B,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,KAAK,SAAS,CACvE,CAAA;QACD,GAAG,CAAC,IAAI,GAAG,YAAY,CAAA;QACvB,MAAM,GAAG,CAAA;IACX,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,WAAW,CACzB,MAAc,EACd,IAA6B,EAC7B,OAA4B;IAE5B,OAAO,UAAU,CAAI,GAAG,MAAM,OAAO,EAAE,cAAc,EAAE,IAAI,EAAE,OAAO,CAAC,CAAA;AACvE,CAAC"}
@@ -1,19 +1,12 @@
1
- import type { ActivityItem, FundingActivity, MarketDisplay } from '@lifi/perps-types';
2
- import type { HlFundingUpdate, HlLedgerUpdate } from '../types/index.js';
1
+ import { type AssetRegistry } from '@lifi/perps-sdk';
2
+ import type { ActivityItem, FundingActivity, LiquidationActivity, MarketDisplay } from '@lifi/perps-types';
3
+ import type { HlFundingUpdate, HlLedgerUpdate, HlUserFill } from '../types/index.js';
3
4
  /**
4
- * Map a Hyperliquid non-funding ledger entry to an ActivityItem.
5
- *
6
- * Direction for `spotTransfer` and `sendAsset` is derived from
7
- * `queriedAddress` matching the delta's `user` (OUT) or `destination` (IN).
8
- * Returns null for unsupported delta types and for same-account moves, where
9
- * `user === destination === queriedAddress`.
10
- *
11
- * @param resolveMarket - Market identity for a venue coin, or `undefined` when
12
- * the backend market list does not hold it. A liquidated position the resolver
13
- * cannot identify is dropped.
5
+ * Map supported ledger entries; exclude same-account moves and unsupported types.
6
+ * Missing assets throw; unresolved liquidation markets omit only those positions.
14
7
  * @public
15
8
  */
16
- export declare const mapLedgerEntry: (entry: HlLedgerUpdate, providerKey: string, queriedAddress: string, resolveMarket: (coin: string) => MarketDisplay | undefined) => ActivityItem | null;
9
+ export declare const mapLedgerEntry: (entry: HlLedgerUpdate, providerKey: string, queriedAddress: string, assetRegistry: AssetRegistry, resolveMarket: (coin: string) => MarketDisplay | undefined) => ActivityItem | null;
17
10
  /**
18
11
  * Map a Hyperliquid funding ledger update to a normalized funding activity, or
19
12
  * `null` when `resolveMarket` cannot identify the row's coin. `amount`,
@@ -26,4 +19,14 @@ export declare const mapLedgerEntry: (entry: HlLedgerUpdate, providerKey: string
26
19
  * @public
27
20
  */
28
21
  export declare const mapFundingActivity: (entry: HlFundingUpdate, providerKey: string, resolveMarket: (coin: string) => MarketDisplay | undefined) => FundingActivity | null;
22
+ /**
23
+ * Build one liquidation activity per liquidation order from the fills of the
24
+ * liquidated account. Hyperliquid attaches `liquidation` to the fills of both
25
+ * parties, so only fills whose `liquidatedUser` is the queried address count.
26
+ * A fill whose hash a ledger liquidation row already carries is the same
27
+ * event and is skipped. The size sign follows the closed position: a sell
28
+ * fill closes a long. Groups whose market does not resolve are dropped.
29
+ * @public
30
+ */
31
+ export declare const mapLiquidationFills: (fills: HlUserFill[], providerKey: string, queriedAddress: string, resolveMarket: (coin: string) => MarketDisplay | undefined, ledgerHashes: ReadonlySet<string>) => LiquidationActivity[];
29
32
  //# sourceMappingURL=mapActivity.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"mapActivity.d.ts","sourceRoot":"","sources":["../../../src/utils/mapActivity.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,YAAY,EAGZ,eAAe,EAEf,aAAa,EAGd,MAAM,mBAAmB,CAAA;AAE1B,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAgCxE;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,cAAc,GACzB,OAAO,cAAc,EACrB,aAAa,MAAM,EACnB,gBAAgB,MAAM,EACtB,eAAe,CAAC,IAAI,EAAE,MAAM,KAAK,aAAa,GAAG,SAAS,KACzD,YAAY,GAAG,IA0JjB,CAAA;AAED;;;;;;;;;;GAUG;AACH,eAAO,MAAM,kBAAkB,GAC7B,OAAO,eAAe,EACtB,aAAa,MAAM,EACnB,eAAe,CAAC,IAAI,EAAE,MAAM,KAAK,aAAa,GAAG,SAAS,KACzD,eAAe,GAAG,IAgBpB,CAAA"}
1
+ {"version":3,"file":"mapActivity.d.ts","sourceRoot":"","sources":["../../../src/utils/mapActivity.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,aAAa,EAAc,MAAM,iBAAiB,CAAA;AAChE,OAAO,KAAK,EACV,YAAY,EAIZ,eAAe,EACf,mBAAmB,EACnB,aAAa,EAGd,MAAM,mBAAmB,CAAA;AAG1B,OAAO,KAAK,EACV,eAAe,EACf,cAAc,EACd,UAAU,EACX,MAAM,mBAAmB,CAAA;AA8C1B;;;;GAIG;AACH,eAAO,MAAM,cAAc,GACzB,OAAO,cAAc,EACrB,aAAa,MAAM,EACnB,gBAAgB,MAAM,EACtB,eAAe,aAAa,EAC5B,eAAe,CAAC,IAAI,EAAE,MAAM,KAAK,aAAa,GAAG,SAAS,KACzD,YAAY,GAAG,IAuKjB,CAAA;AAED;;;;;;;;;;GAUG;AACH,eAAO,MAAM,kBAAkB,GAC7B,OAAO,eAAe,EACtB,aAAa,MAAM,EACnB,eAAe,CAAC,IAAI,EAAE,MAAM,KAAK,aAAa,GAAG,SAAS,KACzD,eAAe,GAAG,IAgBpB,CAAA;AAED;;;;;;;;GAQG;AACH,eAAO,MAAM,mBAAmB,GAC9B,OAAO,UAAU,EAAE,EACnB,aAAa,MAAM,EACnB,gBAAgB,MAAM,EACtB,eAAe,CAAC,IAAI,EAAE,MAAM,KAAK,aAAa,GAAG,SAAS,EAC1D,cAAc,WAAW,CAAC,MAAM,CAAC,KAChC,mBAAmB,EA4CrB,CAAA"}
@@ -1,5 +1,7 @@
1
- import { ActivityType } from '@lifi/perps-types';
2
- import { isDepositDelta, isLiquidationDelta, isSendAssetDelta, isSpotTransferDelta, isWithdrawDelta, } from '../types/index.js';
1
+ import { PerpsError } from '@lifi/perps-sdk';
2
+ import { ActivityType, PerpsErrorCode } from '@lifi/perps-types';
3
+ import Big from 'big.js';
4
+ import { isCollateralTransferDelta, isDepositDelta, isLiquidationDelta, isSendAssetDelta, isSpotTransferDelta, isVaultTransferDelta, isWithdrawDelta, } from '../types/index.js';
3
5
  /**
4
6
  * Hyperliquid settles every perp deposit and withdrawal in USDC, and charges
5
7
  * the `spotTransfer` fee in USDC too — that delta carries no `feeToken`.
@@ -10,76 +12,81 @@ const HL_COLLATERAL_SYMBOL = 'USDC';
10
12
  * so the symbol comes from the venue rather than from the delta.
11
13
  */
12
14
  const HL_NATIVE_TOKEN_SYMBOL = 'HYPE';
15
+ // Hyperliquid reserves spot token index 0 for USDC.
16
+ const HL_COLLATERAL_ASSET_ID = '0';
13
17
  /**
14
- * Display symbol for a ledger delta's wire token (`"USDC"`, `"PURR:0x..."`).
15
- * The colon separates the name from the token id, so the symbol is the part
16
- * BEFORE it the opposite half to a market coin's `dex:COIN`, which is why
17
- * `coinAsset` cannot be reused here.
18
+ * A ledger row moves a spot asset a perp contract cannot be sent, received
19
+ * or withdrawn so the delta's token symbol resolves inside the spot asset
20
+ * registry. The HIP-1 ticker auction keeps those symbols unique.
18
21
  */
19
- const ledgerTokenSymbol = (token) => {
20
- const separator = token.indexOf(':');
21
- return separator === -1 ? token : token.slice(0, separator);
22
+ const resolveLedgerAsset = (symbol, registry) => {
23
+ const asset = registry.assets.find((candidate) => candidate.displaySymbol === symbol);
24
+ if (asset === undefined) {
25
+ const error = new PerpsError(PerpsErrorCode.ValidationError, `[hyperliquid] stale or mis-keyed asset registry: unknown spot symbol '${symbol}'`);
26
+ error.tool = 'hyperliquid';
27
+ throw error;
28
+ }
29
+ return asset;
22
30
  };
23
31
  /**
24
- * Map a Hyperliquid non-funding ledger entry to an ActivityItem.
25
- *
26
- * Direction for `spotTransfer` and `sendAsset` is derived from
27
- * `queriedAddress` matching the delta's `user` (OUT) or `destination` (IN).
28
- * Returns null for unsupported delta types and for same-account moves, where
29
- * `user === destination === queriedAddress`.
30
- *
31
- * @param resolveMarket - Market identity for a venue coin, or `undefined` when
32
- * the backend market list does not hold it. A liquidated position the resolver
33
- * cannot identify is dropped.
32
+ * Map supported ledger entries; exclude same-account moves and unsupported types.
33
+ * Missing assets throw; unresolved liquidation markets omit only those positions.
34
34
  * @public
35
35
  */
36
- export const mapLedgerEntry = (entry, providerKey, queriedAddress, resolveMarket) => {
36
+ export const mapLedgerEntry = (entry, providerKey, queriedAddress, assetRegistry, resolveMarket) => {
37
37
  const { delta } = entry;
38
38
  const base = {
39
39
  id: entry.hash,
40
40
  provider: providerKey,
41
41
  timestamp: new Date(entry.time).toISOString(),
42
42
  };
43
- // Handled before the switch: the catch-all arm of `HlLedgerDelta` is a
44
- // structural supertype of the concrete delta, so a `switch (delta.type)`
45
- // cannot narrow off the discriminant. The user-defined type guard does.
46
- if (isSpotTransferDelta(delta)) {
43
+ if (isSpotTransferDelta(delta) ||
44
+ isSendAssetDelta(delta) ||
45
+ isCollateralTransferDelta(delta)) {
47
46
  const queried = queriedAddress.toLowerCase();
48
47
  const sender = delta.user.toLowerCase();
49
48
  const recipient = delta.destination.toLowerCase();
50
- // A transfer reports a movement between two accounts. A row whose sender
51
- // and recipient are the queried account moves nothing between accounts.
52
49
  if (sender === recipient && sender === queried) {
53
50
  return null;
54
51
  }
55
52
  const direction = queried === sender ? 'OUT' : 'IN';
56
- const counterpartyAddress = direction === 'OUT' ? recipient : sender;
57
- const meta = {
58
- transferType: 'spotTransfer',
59
- };
60
- if (delta.usdcValue !== undefined) {
61
- meta.usdcValue = delta.usdcValue;
62
- }
63
- if (delta.nonce !== undefined) {
64
- meta.nonce = delta.nonce;
65
- }
66
53
  const fees = [];
67
54
  if (delta.fee !== undefined) {
68
- fees.push({ amount: delta.fee, asset: HL_COLLATERAL_SYMBOL });
69
- }
70
- if (delta.nativeTokenFee !== undefined) {
71
55
  fees.push({
72
- amount: delta.nativeTokenFee,
73
- asset: HL_NATIVE_TOKEN_SYMBOL,
56
+ amount: delta.fee,
57
+ asset: isSendAssetDelta(delta)
58
+ ? delta.feeToken.split(':')[0]
59
+ : HL_COLLATERAL_SYMBOL,
74
60
  });
75
61
  }
62
+ if (!isCollateralTransferDelta(delta) &&
63
+ delta.nativeTokenFee !== undefined) {
64
+ fees.push({ amount: delta.nativeTokenFee, asset: HL_NATIVE_TOKEN_SYMBOL });
65
+ }
66
+ const meta = {
67
+ transferType: isSendAssetDelta(delta) ? 'sendAsset' : delta.type,
68
+ };
69
+ if (!isCollateralTransferDelta(delta)) {
70
+ if (delta.usdcValue !== undefined) {
71
+ meta.usdcValue = delta.usdcValue;
72
+ }
73
+ if (delta.nonce !== undefined) {
74
+ meta.nonce = delta.nonce;
75
+ }
76
+ }
77
+ if (isSendAssetDelta(delta)) {
78
+ meta.sourceDex = delta.sourceDex;
79
+ meta.destinationDex = delta.destinationDex;
80
+ }
76
81
  return {
77
82
  ...base,
78
83
  type: ActivityType.TRANSFER,
79
84
  direction,
80
- counterpartyAddress,
81
- asset: ledgerTokenSymbol(delta.token),
82
- amount: delta.amount,
85
+ counterpartyAddress: direction === 'OUT' ? recipient : sender,
86
+ asset: isCollateralTransferDelta(delta)
87
+ ? assetRegistry.require(HL_COLLATERAL_ASSET_ID)
88
+ : resolveLedgerAsset(delta.token, assetRegistry),
89
+ amount: isCollateralTransferDelta(delta) ? delta.usdc : delta.amount,
83
90
  ...(fees.length === 0 ? {} : { fees }),
84
91
  meta,
85
92
  explorerLink: entry.hash
@@ -87,38 +94,35 @@ export const mapLedgerEntry = (entry, providerKey, queriedAddress, resolveMarket
87
94
  : undefined,
88
95
  };
89
96
  }
90
- // `sendAsset` (wire `type === 'send'`) covers cross-user transfers
91
- // (modelled as TRANSFER) and same-user dex moves (returned as null —
92
- // overloading TRANSFER for those would lie about direction). Pre-switch
93
- // narrowing for the same reason as spotTransfer.
94
- if (isSendAssetDelta(delta)) {
97
+ if (isVaultTransferDelta(delta)) {
95
98
  const queried = queriedAddress.toLowerCase();
96
- const sender = delta.user.toLowerCase();
97
- const recipient = delta.destination.toLowerCase();
98
- if (sender === recipient && sender === queried) {
99
+ const vault = delta.vault.toLowerCase();
100
+ if (delta.type === 'vaultDeposit' && queried === vault) {
101
+ throw new PerpsError(PerpsErrorCode.ValidationError, 'Hyperliquid vaultDeposit identifies no depositor for the vault account');
102
+ }
103
+ if (delta.type === 'vaultWithdraw' &&
104
+ delta.user.toLowerCase() === vault &&
105
+ queried === vault) {
99
106
  return null;
100
107
  }
101
- const direction = queried === sender ? 'OUT' : 'IN';
102
- const counterpartyAddress = direction === 'OUT' ? recipient : sender;
103
- const meta = {
104
- transferType: 'sendAsset',
105
- sourceDex: delta.sourceDex,
106
- destinationDex: delta.destinationDex,
107
- usdcValue: delta.usdcValue,
108
- nonce: delta.nonce,
109
- };
110
108
  return {
111
109
  ...base,
112
110
  type: ActivityType.TRANSFER,
113
- direction,
114
- counterpartyAddress,
115
- asset: ledgerTokenSymbol(delta.token),
116
- amount: delta.amount,
117
- fees: [
118
- { amount: delta.fee, asset: ledgerTokenSymbol(delta.feeToken) },
119
- { amount: delta.nativeTokenFee, asset: HL_NATIVE_TOKEN_SYMBOL },
120
- ],
121
- meta,
111
+ direction: delta.type === 'vaultDeposit' || queried === vault ? 'OUT' : 'IN',
112
+ counterpartyAddress: delta.type === 'vaultWithdraw' && queried === vault
113
+ ? delta.user.toLowerCase()
114
+ : vault,
115
+ asset: assetRegistry.require(HL_COLLATERAL_ASSET_ID),
116
+ amount: delta.type === 'vaultDeposit' ? delta.usdc : delta.netWithdrawnUsd,
117
+ meta: delta.type === 'vaultDeposit'
118
+ ? { transferType: delta.type }
119
+ : {
120
+ transferType: delta.type,
121
+ requestedUsd: delta.requestedUsd,
122
+ commission: delta.commission,
123
+ closingCost: delta.closingCost,
124
+ basis: delta.basis,
125
+ },
122
126
  explorerLink: entry.hash
123
127
  ? `https://app.hyperliquid.xyz/explorer/tx/${entry.hash}`
124
128
  : undefined,
@@ -130,7 +134,7 @@ export const mapLedgerEntry = (entry, providerKey, queriedAddress, resolveMarket
130
134
  return {
131
135
  ...base,
132
136
  type: ActivityType.DEPOSIT,
133
- asset: HL_COLLATERAL_SYMBOL,
137
+ asset: assetRegistry.require(HL_COLLATERAL_ASSET_ID),
134
138
  amount: delta.usdc,
135
139
  explorerLink: entry.hash
136
140
  ? `https://scan.li.fi/tx/${entry.hash}`
@@ -141,7 +145,7 @@ export const mapLedgerEntry = (entry, providerKey, queriedAddress, resolveMarket
141
145
  return {
142
146
  ...base,
143
147
  type: ActivityType.WITHDRAWAL,
144
- asset: HL_COLLATERAL_SYMBOL,
148
+ asset: assetRegistry.require(HL_COLLATERAL_ASSET_ID),
145
149
  amount: delta.usdc,
146
150
  ...(delta.fee === undefined
147
151
  ? {}
@@ -206,4 +210,56 @@ export const mapFundingActivity = (entry, providerKey, resolveMarket) => {
206
210
  fundingRate: entry.delta.fundingRate,
207
211
  };
208
212
  };
213
+ /**
214
+ * Build one liquidation activity per liquidation order from the fills of the
215
+ * liquidated account. Hyperliquid attaches `liquidation` to the fills of both
216
+ * parties, so only fills whose `liquidatedUser` is the queried address count.
217
+ * A fill whose hash a ledger liquidation row already carries is the same
218
+ * event and is skipped. The size sign follows the closed position: a sell
219
+ * fill closes a long. Groups whose market does not resolve are dropped.
220
+ * @public
221
+ */
222
+ export const mapLiquidationFills = (fills, providerKey, queriedAddress, resolveMarket, ledgerHashes) => {
223
+ const queried = queriedAddress.toLowerCase();
224
+ const byOrder = new Map();
225
+ for (const fill of fills) {
226
+ if (fill.liquidation?.liquidatedUser.toLowerCase() !== queried ||
227
+ (fill.hash !== undefined && ledgerHashes.has(fill.hash))) {
228
+ continue;
229
+ }
230
+ const group = byOrder.get(fill.oid) ?? [];
231
+ group.push(fill);
232
+ byOrder.set(fill.oid, group);
233
+ }
234
+ return [...byOrder.entries()].flatMap(([oid, group]) => {
235
+ const [first] = group;
236
+ const market = resolveMarket(first.coin);
237
+ if (market === undefined) {
238
+ return [];
239
+ }
240
+ let size = new Big(0);
241
+ let notional = new Big(0);
242
+ let time = first.time;
243
+ for (const fill of group) {
244
+ size = size.plus(fill.sz);
245
+ notional = notional.plus(new Big(fill.px).times(fill.sz));
246
+ time = Math.max(time, fill.time);
247
+ }
248
+ return [
249
+ {
250
+ id: `liquidation:${oid}`,
251
+ provider: providerKey,
252
+ timestamp: new Date(time).toISOString(),
253
+ type: ActivityType.LIQUIDATION,
254
+ liquidatedNotionalPosition: notional.toFixed(),
255
+ liquidatedPositions: [
256
+ {
257
+ market,
258
+ size: (first.side === 'A' ? size : size.neg()).toFixed(),
259
+ },
260
+ ],
261
+ },
262
+ ];
263
+ });
264
+ };
209
265
  //# sourceMappingURL=mapActivity.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"mapActivity.js","sourceRoot":"","sources":["../../../src/utils/mapActivity.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mapActivity.js","sourceRoot":"","sources":["../../../src/utils/mapActivity.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"mapFill.d.ts","sourceRoot":"","sources":["../../../src/utils/mapFill.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,wBAAwB,EAGzB,MAAM,iBAAiB,CAAA;AACxB,OAAO,KAAK,EAAE,IAAI,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AAS5D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAEnD,0FAA0F;AAC1F,OAAO,EAAE,wBAAwB,EAAE,CAAA;AAEnC;;;;GAIG;AACH,eAAO,MAAM,OAAO,GAAI,MAAM,UAAU,EAAE,QAAQ,aAAa,KAAG,IAyCjE,CAAA"}
1
+ {"version":3,"file":"mapFill.d.ts","sourceRoot":"","sources":["../../../src/utils/mapFill.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,wBAAwB,EAGzB,MAAM,iBAAiB,CAAA;AACxB,OAAO,KAAK,EAAE,IAAI,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AAQ5D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAA;AAEnD,0FAA0F;AAC1F,OAAO,EAAE,wBAAwB,EAAE,CAAA;AAEnC;;;;GAIG;AACH,eAAO,MAAM,OAAO,GAAI,MAAM,UAAU,EAAE,QAAQ,aAAa,KAAG,IAwCjE,CAAA"}
@@ -1,5 +1,5 @@
1
1
  import { classifyFillFromPosition, ExplorerChainId, explorerTxUrl, } from '@lifi/perps-sdk';
2
- import { FillClassification, FillStatus, LiquidityRole, OrderSide, OrderType, } from '@lifi/perps-types';
2
+ import { FillClassification, LiquidityRole, OrderSide, OrderType, } from '@lifi/perps-types';
3
3
  import { SPOT_MARKET_ID } from '../constants.js';
4
4
  /** Re-export the shared fill-position classifier used by Hyperliquid mappings. @public */
5
5
  export { classifyFillFromPosition };
@@ -27,7 +27,6 @@ export const mapFill = (fill, market) => {
27
27
  type: fill.crossed ? undefined : OrderType.LIMIT,
28
28
  size: fill.sz,
29
29
  price: fill.px,
30
- status: FillStatus.FILLED,
31
30
  liquidity: fill.crossed ? LiquidityRole.TAKER : LiquidityRole.MAKER,
32
31
  filledSize: fill.sz,
33
32
  fee: {
@@ -1 +1 @@
1
- {"version":3,"file":"mapFill.js","sourceRoot":"","sources":["../../../src/utils/mapFill.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,wBAAwB,EACxB,eAAe,EACf,aAAa,GACd,MAAM,iBAAiB,CAAA;AAExB,OAAO,EACL,kBAAkB,EAClB,UAAU,EACV,aAAa,EACb,SAAS,EACT,SAAS,GACV,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAA;AAGhD,0FAA0F;AAC1F,OAAO,EAAE,wBAAwB,EAAE,CAAA;AAEnC;;;;GAIG;AACH,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,IAAgB,EAAE,MAAqB,EAAQ,EAAE;IACvE,qEAAqE;IACrE,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,MAAM,CAAC,UAAU,CAAC,aAAa,CAAA;IAEjE,OAAO;QACL,GAAG,CAAC,MAAM,CAAC,UAAU,KAAK,cAAc;YACtC,CAAC,CAAC,EAAE,WAAW,EAAE,IAAI,CAAC,SAAS,EAAE;YACjC,CAAC,CAAC,EAAE,WAAW,EAAE,IAAI,CAAC,SAAS,KAAK,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;QACpE,EAAE,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC;QACpB,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC;QACzB,aAAa,EAAE,IAAI,CAAC,KAAK;QACzB,MAAM;QACN,IAAI,EAAE,IAAI,CAAC,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI;QACxD,0EAA0E;QAC1E,0EAA0E;QAC1E,6EAA6E;QAC7E,sEAAsE;QACtE,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK;QAChD,IAAI,EAAE,IAAI,CAAC,EAAE;QACb,KAAK,EAAE,IAAI,CAAC,EAAE;QACd,MAAM,EAAE,UAAU,CAAC,MAAM;QACzB,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,aAAa,CAAC,KAAK;QACnE,UAAU,EAAE,IAAI,CAAC,EAAE;QACnB,GAAG,EAAE;YACH,MAAM,EAAE,IAAI,CAAC,GAAG;YAChB,KAAK,EAAE,QAAQ;SAChB;QACD,UAAU,EACR,IAAI,CAAC,UAAU,KAAK,SAAS;YAC3B,CAAC,CAAC,SAAS;YACX,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,UAAU,EAAE,KAAK,EAAE,QAAQ,EAAE;QAClD,aAAa,EAAE,IAAI,CAAC,aAAa;QACjC,YAAY,EAAE,aAAa,CAAC,eAAe,CAAC,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC;QACnE,cAAc,EACZ,MAAM,CAAC,UAAU,KAAK,cAAc;YAClC,CAAC,CAAC,IAAI,CAAC,IAAI,KAAK,GAAG;gBACjB,CAAC,CAAC,kBAAkB,CAAC,QAAQ;gBAC7B,CAAC,CAAC,kBAAkB,CAAC,SAAS;YAChC,CAAC,CAAC,wBAAwB,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC;QACtE,SAAS,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE;KAC7C,CAAA;AACH,CAAC,CAAA"}
1
+ {"version":3,"file":"mapFill.js","sourceRoot":"","sources":["../../../src/utils/mapFill.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,wBAAwB,EACxB,eAAe,EACf,aAAa,GACd,MAAM,iBAAiB,CAAA;AAExB,OAAO,EACL,kBAAkB,EAClB,aAAa,EACb,SAAS,EACT,SAAS,GACV,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAA;AAGhD,0FAA0F;AAC1F,OAAO,EAAE,wBAAwB,EAAE,CAAA;AAEnC;;;;GAIG;AACH,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,IAAgB,EAAE,MAAqB,EAAQ,EAAE;IACvE,qEAAqE;IACrE,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,IAAI,MAAM,CAAC,UAAU,CAAC,aAAa,CAAA;IAEjE,OAAO;QACL,GAAG,CAAC,MAAM,CAAC,UAAU,KAAK,cAAc;YACtC,CAAC,CAAC,EAAE,WAAW,EAAE,IAAI,CAAC,SAAS,EAAE;YACjC,CAAC,CAAC,EAAE,WAAW,EAAE,IAAI,CAAC,SAAS,KAAK,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;QACpE,EAAE,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC;QACpB,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC;QACzB,aAAa,EAAE,IAAI,CAAC,KAAK;QACzB,MAAM;QACN,IAAI,EAAE,IAAI,CAAC,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,IAAI;QACxD,0EAA0E;QAC1E,0EAA0E;QAC1E,6EAA6E;QAC7E,sEAAsE;QACtE,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK;QAChD,IAAI,EAAE,IAAI,CAAC,EAAE;QACb,KAAK,EAAE,IAAI,CAAC,EAAE;QACd,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,aAAa,CAAC,KAAK;QACnE,UAAU,EAAE,IAAI,CAAC,EAAE;QACnB,GAAG,EAAE;YACH,MAAM,EAAE,IAAI,CAAC,GAAG;YAChB,KAAK,EAAE,QAAQ;SAChB;QACD,UAAU,EACR,IAAI,CAAC,UAAU,KAAK,SAAS;YAC3B,CAAC,CAAC,SAAS;YACX,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,UAAU,EAAE,KAAK,EAAE,QAAQ,EAAE;QAClD,aAAa,EAAE,IAAI,CAAC,aAAa;QACjC,YAAY,EAAE,aAAa,CAAC,eAAe,CAAC,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC;QACnE,cAAc,EACZ,MAAM,CAAC,UAAU,KAAK,cAAc;YAClC,CAAC,CAAC,IAAI,CAAC,IAAI,KAAK,GAAG;gBACjB,CAAC,CAAC,kBAAkB,CAAC,QAAQ;gBAC7B,CAAC,CAAC,kBAAkB,CAAC,SAAS;YAChC,CAAC,CAAC,wBAAwB,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC;QACtE,SAAS,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE;KAC7C,CAAA;AACH,CAAC,CAAA"}
@@ -1,77 +1,12 @@
1
- import type { MarketDisplay, OpenOrder, Order, TriggerOrder } from '@lifi/perps-types';
1
+ import type { MarketDisplay, Order } from '@lifi/perps-types';
2
2
  import { OrderStatus, OrderType } from '@lifi/perps-types';
3
- import type { HlFrontendOpenOrder, HlOrderDetail } from '../types/index.js';
4
- /**
5
- * An order as seen by the REST `frontendOpenOrders` payload, or the smaller
6
- * shape nested in the `orderUpdates` WebSocket frame. `mapOpenOrder` and
7
- * `mapTriggerOrder` accept either so both code paths share one mapper.
8
- * @public
9
- */
3
+ import type { HlFrontendOpenOrder, HlOrderDetail, HlTwapHistoryEntry } from '../types/index.js';
4
+ /** Order payload shared by frontend, historical, and single-order reads. */
10
5
  export type HlOrderLike = HlFrontendOpenOrder | HlOrderDetail['order'];
11
- /**
12
- * Map a Hyperliquid orderType string to the OrderType enum.
13
- *
14
- * @public
15
- */
16
- export declare const mapOrderType: (orderType: string) => OrderType;
17
- /** Return whether an SDK order type represents a take-profit or stop trigger. @public */
18
- export declare const isTriggerType: (type: OrderType) => boolean;
19
- /**
20
- * Decide whether a raw Hyperliquid order belongs in the cross-provider
21
- * `triggerOrders` bucket. Single source of truth for both the REST
22
- * `getOrders` path (`HlFrontendOpenOrder` payload) and the `orderUpdates`
23
- * WS handler (`HlOrderDetail.order`, a strict subset).
24
- *
25
- * Authoritative signals, in order:
26
- * 1. `isTrigger` — REST-only boolean Hyperliquid sets on
27
- * `frontendOpenOrders`. Definitive when present.
28
- * 2. `isPositionTpsl` — REST-only flag for TP/SL legs attached to a
29
- * position.
30
- * 3. `triggerCondition !== 'N/A'` — present on both REST and WS payloads.
31
- * Non-trigger orders carry the literal `'N/A'`.
32
- * 4. `triggerPx` non-null and non-zero — present on both. The reliable
33
- * trigger signal on the WS wire when `orderType` lies (HL pushes
34
- * `'Limit'` for a freshly-placed TP/SL until REST refetch lands the
35
- * corrected type).
36
- * 5. `orderType` — final fall-back via `isTriggerType`.
37
- * @public
38
- */
39
- export declare const isTriggerOrder: (o: HlOrderLike) => boolean;
40
- /**
41
- * Map an open Hyperliquid order to the SDK's normalized open-order shape.
42
- * Numeric IDs become strings and wire millisecond timestamps become ISO dates.
43
- * @public
44
- */
45
- export declare const mapOpenOrder: (o: HlOrderLike, market: MarketDisplay) => OpenOrder;
46
- /**
47
- * Map a Hyperliquid trigger/TP-SL order to the SDK's trigger-order shape.
48
- * @public
49
- */
50
- export declare const mapTriggerOrder: (o: HlOrderLike, market: MarketDisplay) => TriggerOrder;
51
- /**
52
- * Map a raw Hyperliquid order status string to the SDK's OrderStatus enum.
53
- *
54
- * HL's terminal statuses are mostly compound strings ending in `Canceled`
55
- * or `Rejected` (e.g. `siblingFilledCanceled`, `tickRejected`); classify
56
- * those by suffix so a status HL adds later still lands in the correct
57
- * terminal bucket instead of silently falling through to PENDING, which
58
- * {@link isActiveOrderStatus} treats as active. `scheduledCancel` is the
59
- * one documented cancel status without the `Canceled` suffix.
60
- * @public
61
- */
6
+ /** Translate documented venue execution types without reading trigger prose. */
7
+ export declare const mapOrderType: (orderType: string) => Exclude<OrderType, OrderType.TWAP>;
8
+ /** Translate venue lifecycle statuses; unknown statuses are errors. */
62
9
  export declare const mapOrderStatus: (status: string) => OrderStatus;
63
- /**
64
- * Map a raw Hyperliquid order status to a short English sentence
65
- * describing *why* the order ended in a terminal non-FILLED state. Bare
66
- * `canceled`/`cancelled`/`rejected` carry no actionable detail and
67
- * return `undefined`; so do non-terminal and unknown values.
68
- * @public
69
- */
70
- export declare const mapStatusReason: (status: string) => string | undefined;
71
- /**
72
- * Map an `orderStatus` detail to the SDK's normalized order shape, preserving
73
- * decimal size/price strings and translating status, side, and time-in-force.
74
- * @public
75
- */
76
- export declare const mapOrder: (detail: HlOrderDetail, market: MarketDisplay) => Order;
10
+ /** Normalize regular, trigger, and TWAP rows through one lifecycle model. */
11
+ export declare const mapOrder: (raw: HlOrderLike | HlOrderDetail | HlTwapHistoryEntry, market: MarketDisplay, parentOrderId?: string) => Order;
77
12
  //# sourceMappingURL=mapOrder.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"mapOrder.d.ts","sourceRoot":"","sources":["../../../src/utils/mapOrder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,aAAa,EACb,SAAS,EACT,KAAK,EACL,YAAY,EACb,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EAEL,WAAW,EACX,SAAS,EAEV,MAAM,mBAAmB,CAAA;AAC1B,OAAO,KAAK,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AAE3E;;;;;GAKG;AACH,MAAM,MAAM,WAAW,GAAG,mBAAmB,GAAG,aAAa,CAAC,OAAO,CAAC,CAAA;AAEtE;;;;GAIG;AACH,eAAO,MAAM,YAAY,GAAI,WAAW,MAAM,KAAG,SAehD,CAAA;AAED,yFAAyF;AACzF,eAAO,MAAM,aAAa,GAAI,MAAM,SAAS,KAAG,OAIjB,CAAA;AAE/B;;;;;;;;;;;;;;;;;;;GAmBG;AACH,eAAO,MAAM,cAAc,GAAI,GAAG,WAAW,KAAG,OAkB/C,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,YAAY,GACvB,GAAG,WAAW,EACd,QAAQ,aAAa,KACpB,SAcD,CAAA;AAEF;;;GAGG;AACH,eAAO,MAAM,eAAe,GAC1B,GAAG,WAAW,EACd,QAAQ,aAAa,KACpB,YAcF,CAAA;AAED;;;;;;;;;;GAUG;AACH,eAAO,MAAM,cAAc,GAAI,QAAQ,MAAM,KAAG,WAwB/C,CAAA;AAED;;;;;;GAMG;AACH,eAAO,MAAM,eAAe,GAAI,QAAQ,MAAM,KAAG,MAAM,GAAG,SAmDzD,CAAA;AAeD;;;;GAIG;AACH,eAAO,MAAM,QAAQ,GACnB,QAAQ,aAAa,EACrB,QAAQ,aAAa,KACpB,KAsBF,CAAA"}
1
+ {"version":3,"file":"mapOrder.d.ts","sourceRoot":"","sources":["../../../src/utils/mapOrder.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,aAAa,EACb,KAAK,EAGN,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EAEL,WAAW,EACX,SAAS,EAGV,MAAM,mBAAmB,CAAA;AAG1B,OAAO,KAAK,EACV,mBAAmB,EACnB,aAAa,EACb,kBAAkB,EACnB,MAAM,mBAAmB,CAAA;AAE1B,4EAA4E;AAC5E,MAAM,MAAM,WAAW,GAAG,mBAAmB,GAAG,aAAa,CAAC,OAAO,CAAC,CAAA;AAEtE,gFAAgF;AAChF,eAAO,MAAM,YAAY,GACvB,WAAW,MAAM,KAChB,OAAO,CAAC,SAAS,EAAE,SAAS,CAAC,IAAI,CAiBnC,CAAA;AAED,uEAAuE;AACvE,eAAO,MAAM,cAAc,GAAI,QAAQ,MAAM,KAAG,WAuC/C,CAAA;AAQD,6EAA6E;AAC7E,eAAO,MAAM,QAAQ,GACnB,KAAK,WAAW,GAAG,aAAa,GAAG,kBAAkB,EACrD,QAAQ,aAAa,EACrB,gBAAgB,MAAM,KACrB,KAiIF,CAAA"}