@lifi/perps-sdk-provider-hyperliquid 25.0.0 → 27.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/dist/cjs/accountSummary.d.ts.map +1 -1
  2. package/dist/cjs/accountSummary.js +8 -14
  3. package/dist/cjs/accountSummary.js.map +1 -1
  4. package/dist/cjs/services/getAccount.d.ts.map +1 -1
  5. package/dist/cjs/services/getAccount.js +18 -16
  6. package/dist/cjs/services/getAccount.js.map +1 -1
  7. package/dist/cjs/services/getFills.d.ts.map +1 -1
  8. package/dist/cjs/services/getFills.js +2 -1
  9. package/dist/cjs/services/getFills.js.map +1 -1
  10. package/dist/cjs/services/getMarketSettings.d.ts.map +1 -1
  11. package/dist/cjs/services/getMarketSettings.js +1 -1
  12. package/dist/cjs/services/getMarketSettings.js.map +1 -1
  13. package/dist/cjs/services/getOrder.d.ts.map +1 -1
  14. package/dist/cjs/services/getOrder.js +14 -4
  15. package/dist/cjs/services/getOrder.js.map +1 -1
  16. package/dist/cjs/services/getOrders.d.ts.map +1 -1
  17. package/dist/cjs/services/getOrders.js +8 -28
  18. package/dist/cjs/services/getOrders.js.map +1 -1
  19. package/dist/cjs/services/getPortfolioHistory.d.ts.map +1 -1
  20. package/dist/cjs/services/getPortfolioHistory.js +17 -6
  21. package/dist/cjs/services/getPortfolioHistory.js.map +1 -1
  22. package/dist/cjs/services/getPositions.d.ts.map +1 -1
  23. package/dist/cjs/services/getPositions.js +4 -1
  24. package/dist/cjs/services/getPositions.js.map +1 -1
  25. package/dist/cjs/types/ws.d.ts +3 -2
  26. package/dist/cjs/types/ws.d.ts.map +1 -1
  27. package/dist/cjs/utils/index.d.ts +1 -1
  28. package/dist/cjs/utils/index.d.ts.map +1 -1
  29. package/dist/cjs/utils/index.js +3 -1
  30. package/dist/cjs/utils/index.js.map +1 -1
  31. package/dist/cjs/utils/liquidation.d.ts +5 -2
  32. package/dist/cjs/utils/liquidation.d.ts.map +1 -1
  33. package/dist/cjs/utils/liquidation.js +8 -8
  34. package/dist/cjs/utils/liquidation.js.map +1 -1
  35. package/dist/cjs/utils/mapActivity.d.ts.map +1 -1
  36. package/dist/cjs/utils/mapActivity.js +38 -23
  37. package/dist/cjs/utils/mapActivity.js.map +1 -1
  38. package/dist/cjs/utils/mapFill.d.ts +1 -1
  39. package/dist/cjs/utils/mapFill.d.ts.map +1 -1
  40. package/dist/cjs/utils/mapFill.js +17 -6
  41. package/dist/cjs/utils/mapFill.js.map +1 -1
  42. package/dist/cjs/utils/mapMarket.d.ts.map +1 -1
  43. package/dist/cjs/utils/mapMarket.js +9 -13
  44. package/dist/cjs/utils/mapMarket.js.map +1 -1
  45. package/dist/cjs/utils/mapMarketContext.d.ts.map +1 -1
  46. package/dist/cjs/utils/mapMarketContext.js +3 -12
  47. package/dist/cjs/utils/mapMarketContext.js.map +1 -1
  48. package/dist/cjs/utils/mapOrder.d.ts +3 -1
  49. package/dist/cjs/utils/mapOrder.d.ts.map +1 -1
  50. package/dist/cjs/utils/mapOrder.js +73 -19
  51. package/dist/cjs/utils/mapOrder.js.map +1 -1
  52. package/dist/cjs/utils/mapPosition.d.ts +1 -1
  53. package/dist/cjs/utils/mapPosition.d.ts.map +1 -1
  54. package/dist/cjs/utils/mapPosition.js +41 -15
  55. package/dist/cjs/utils/mapPosition.js.map +1 -1
  56. package/dist/cjs/utils/rowTimestamp.d.ts +2 -0
  57. package/dist/cjs/utils/rowTimestamp.d.ts.map +1 -0
  58. package/dist/cjs/utils/rowTimestamp.js +14 -0
  59. package/dist/cjs/utils/rowTimestamp.js.map +1 -0
  60. package/dist/cjs/utils/spotBalance.d.ts +3 -3
  61. package/dist/cjs/utils/spotBalance.d.ts.map +1 -1
  62. package/dist/cjs/utils/spotBalance.js +6 -5
  63. package/dist/cjs/utils/spotBalance.js.map +1 -1
  64. package/dist/cjs/utils/spotCollateral.d.ts.map +1 -1
  65. package/dist/cjs/utils/spotCollateral.js +3 -2
  66. package/dist/cjs/utils/spotCollateral.js.map +1 -1
  67. package/dist/cjs/utils/transferMargin.d.ts.map +1 -1
  68. package/dist/cjs/utils/transferMargin.js +16 -19
  69. package/dist/cjs/utils/transferMargin.js.map +1 -1
  70. package/dist/cjs/utils/venueTotals.d.ts +4 -5
  71. package/dist/cjs/utils/venueTotals.d.ts.map +1 -1
  72. package/dist/cjs/utils/venueTotals.js +18 -10
  73. package/dist/cjs/utils/venueTotals.js.map +1 -1
  74. package/dist/cjs/utils/withdrawableBalances.d.ts.map +1 -1
  75. package/dist/cjs/utils/withdrawableBalances.js +10 -10
  76. package/dist/cjs/utils/withdrawableBalances.js.map +1 -1
  77. package/dist/cjs/websocket/HyperliquidWsProvider.d.ts +1 -0
  78. package/dist/cjs/websocket/HyperliquidWsProvider.d.ts.map +1 -1
  79. package/dist/cjs/websocket/HyperliquidWsProvider.js +144 -115
  80. package/dist/cjs/websocket/HyperliquidWsProvider.js.map +1 -1
  81. package/dist/esm/accountSummary.d.ts +2 -1
  82. package/dist/esm/accountSummary.d.ts.map +1 -1
  83. package/dist/esm/accountSummary.js +11 -13
  84. package/dist/esm/accountSummary.js.map +1 -1
  85. package/dist/esm/services/getAccount.d.ts.map +1 -1
  86. package/dist/esm/services/getAccount.js +23 -21
  87. package/dist/esm/services/getAccount.js.map +1 -1
  88. package/dist/esm/services/getFills.d.ts.map +1 -1
  89. package/dist/esm/services/getFills.js +2 -1
  90. package/dist/esm/services/getFills.js.map +1 -1
  91. package/dist/esm/services/getMarketSettings.d.ts.map +1 -1
  92. package/dist/esm/services/getMarketSettings.js +2 -2
  93. package/dist/esm/services/getMarketSettings.js.map +1 -1
  94. package/dist/esm/services/getOrder.d.ts.map +1 -1
  95. package/dist/esm/services/getOrder.js +14 -4
  96. package/dist/esm/services/getOrder.js.map +1 -1
  97. package/dist/esm/services/getOrders.d.ts.map +1 -1
  98. package/dist/esm/services/getOrders.js +12 -37
  99. package/dist/esm/services/getOrders.js.map +1 -1
  100. package/dist/esm/services/getPortfolioHistory.d.ts.map +1 -1
  101. package/dist/esm/services/getPortfolioHistory.js +19 -7
  102. package/dist/esm/services/getPortfolioHistory.js.map +1 -1
  103. package/dist/esm/services/getPositions.d.ts.map +1 -1
  104. package/dist/esm/services/getPositions.js +4 -1
  105. package/dist/esm/services/getPositions.js.map +1 -1
  106. package/dist/esm/services/getWithdrawableBalances.d.ts +1 -1
  107. package/dist/esm/services/getWithdrawableBalances.js +1 -1
  108. package/dist/esm/types/ws.d.ts +3 -2
  109. package/dist/esm/types/ws.d.ts.map +1 -1
  110. package/dist/esm/utils/index.d.ts +1 -1
  111. package/dist/esm/utils/index.d.ts.map +1 -1
  112. package/dist/esm/utils/index.js +1 -1
  113. package/dist/esm/utils/index.js.map +1 -1
  114. package/dist/esm/utils/liquidation.d.ts +23 -24
  115. package/dist/esm/utils/liquidation.d.ts.map +1 -1
  116. package/dist/esm/utils/liquidation.js +26 -31
  117. package/dist/esm/utils/liquidation.js.map +1 -1
  118. package/dist/esm/utils/mapActivity.d.ts +2 -1
  119. package/dist/esm/utils/mapActivity.d.ts.map +1 -1
  120. package/dist/esm/utils/mapActivity.js +41 -22
  121. package/dist/esm/utils/mapActivity.js.map +1 -1
  122. package/dist/esm/utils/mapFill.d.ts +3 -2
  123. package/dist/esm/utils/mapFill.d.ts.map +1 -1
  124. package/dist/esm/utils/mapFill.js +21 -9
  125. package/dist/esm/utils/mapFill.js.map +1 -1
  126. package/dist/esm/utils/mapMarket.d.ts +2 -2
  127. package/dist/esm/utils/mapMarket.d.ts.map +1 -1
  128. package/dist/esm/utils/mapMarket.js +12 -13
  129. package/dist/esm/utils/mapMarket.js.map +1 -1
  130. package/dist/esm/utils/mapMarketContext.d.ts.map +1 -1
  131. package/dist/esm/utils/mapMarketContext.js +3 -9
  132. package/dist/esm/utils/mapMarketContext.js.map +1 -1
  133. package/dist/esm/utils/mapOrder.d.ts +12 -2
  134. package/dist/esm/utils/mapOrder.d.ts.map +1 -1
  135. package/dist/esm/utils/mapOrder.js +81 -17
  136. package/dist/esm/utils/mapOrder.js.map +1 -1
  137. package/dist/esm/utils/mapPosition.d.ts +4 -2
  138. package/dist/esm/utils/mapPosition.d.ts.map +1 -1
  139. package/dist/esm/utils/mapPosition.js +44 -13
  140. package/dist/esm/utils/mapPosition.js.map +1 -1
  141. package/dist/esm/utils/rowTimestamp.d.ts +6 -0
  142. package/dist/esm/utils/rowTimestamp.d.ts.map +1 -0
  143. package/dist/esm/utils/rowTimestamp.js +14 -0
  144. package/dist/esm/utils/rowTimestamp.js.map +1 -0
  145. package/dist/esm/utils/spotBalance.d.ts +5 -5
  146. package/dist/esm/utils/spotBalance.d.ts.map +1 -1
  147. package/dist/esm/utils/spotBalance.js +9 -8
  148. package/dist/esm/utils/spotBalance.js.map +1 -1
  149. package/dist/esm/utils/spotCollateral.d.ts.map +1 -1
  150. package/dist/esm/utils/spotCollateral.js +3 -2
  151. package/dist/esm/utils/spotCollateral.js.map +1 -1
  152. package/dist/esm/utils/transferMargin.d.ts +2 -1
  153. package/dist/esm/utils/transferMargin.d.ts.map +1 -1
  154. package/dist/esm/utils/transferMargin.js +19 -18
  155. package/dist/esm/utils/transferMargin.js.map +1 -1
  156. package/dist/esm/utils/venueTotals.d.ts +7 -6
  157. package/dist/esm/utils/venueTotals.d.ts.map +1 -1
  158. package/dist/esm/utils/venueTotals.js +21 -8
  159. package/dist/esm/utils/venueTotals.js.map +1 -1
  160. package/dist/esm/utils/withdrawableBalances.d.ts +6 -4
  161. package/dist/esm/utils/withdrawableBalances.d.ts.map +1 -1
  162. package/dist/esm/utils/withdrawableBalances.js +17 -15
  163. package/dist/esm/utils/withdrawableBalances.js.map +1 -1
  164. package/dist/esm/websocket/HyperliquidWsProvider.d.ts +3 -0
  165. package/dist/esm/websocket/HyperliquidWsProvider.d.ts.map +1 -1
  166. package/dist/esm/websocket/HyperliquidWsProvider.js +155 -115
  167. package/dist/esm/websocket/HyperliquidWsProvider.js.map +1 -1
  168. package/dist/types/accountSummary.d.ts +2 -1
  169. package/dist/types/accountSummary.d.ts.map +1 -1
  170. package/dist/types/services/getAccount.d.ts.map +1 -1
  171. package/dist/types/services/getFills.d.ts.map +1 -1
  172. package/dist/types/services/getMarketSettings.d.ts.map +1 -1
  173. package/dist/types/services/getOrder.d.ts.map +1 -1
  174. package/dist/types/services/getOrders.d.ts.map +1 -1
  175. package/dist/types/services/getPortfolioHistory.d.ts.map +1 -1
  176. package/dist/types/services/getPositions.d.ts.map +1 -1
  177. package/dist/types/services/getWithdrawableBalances.d.ts +1 -1
  178. package/dist/types/types/ws.d.ts +3 -2
  179. package/dist/types/types/ws.d.ts.map +1 -1
  180. package/dist/types/utils/index.d.ts +1 -1
  181. package/dist/types/utils/index.d.ts.map +1 -1
  182. package/dist/types/utils/liquidation.d.ts +23 -24
  183. package/dist/types/utils/liquidation.d.ts.map +1 -1
  184. package/dist/types/utils/mapActivity.d.ts +2 -1
  185. package/dist/types/utils/mapActivity.d.ts.map +1 -1
  186. package/dist/types/utils/mapFill.d.ts +3 -2
  187. package/dist/types/utils/mapFill.d.ts.map +1 -1
  188. package/dist/types/utils/mapMarket.d.ts +2 -2
  189. package/dist/types/utils/mapMarket.d.ts.map +1 -1
  190. package/dist/types/utils/mapMarketContext.d.ts.map +1 -1
  191. package/dist/types/utils/mapOrder.d.ts +12 -2
  192. package/dist/types/utils/mapOrder.d.ts.map +1 -1
  193. package/dist/types/utils/mapPosition.d.ts +4 -2
  194. package/dist/types/utils/mapPosition.d.ts.map +1 -1
  195. package/dist/types/utils/rowTimestamp.d.ts +6 -0
  196. package/dist/types/utils/rowTimestamp.d.ts.map +1 -0
  197. package/dist/types/utils/spotBalance.d.ts +5 -5
  198. package/dist/types/utils/spotBalance.d.ts.map +1 -1
  199. package/dist/types/utils/spotCollateral.d.ts.map +1 -1
  200. package/dist/types/utils/transferMargin.d.ts +2 -1
  201. package/dist/types/utils/transferMargin.d.ts.map +1 -1
  202. package/dist/types/utils/venueTotals.d.ts +7 -6
  203. package/dist/types/utils/venueTotals.d.ts.map +1 -1
  204. package/dist/types/utils/withdrawableBalances.d.ts +6 -4
  205. package/dist/types/utils/withdrawableBalances.d.ts.map +1 -1
  206. package/dist/types/websocket/HyperliquidWsProvider.d.ts +3 -0
  207. package/dist/types/websocket/HyperliquidWsProvider.d.ts.map +1 -1
  208. package/package.json +3 -3
  209. package/src/HyperliquidProvider.ts +1 -1
  210. package/src/accountSummary.ts +35 -23
  211. package/src/services/getAccount.ts +50 -33
  212. package/src/services/getFills.ts +2 -1
  213. package/src/services/getMarketSettings.ts +6 -2
  214. package/src/services/getOrder.ts +18 -7
  215. package/src/services/getOrders.ts +14 -46
  216. package/src/services/getPortfolioHistory.ts +34 -7
  217. package/src/services/getPositions.ts +4 -3
  218. package/src/services/getWithdrawableBalances.ts +1 -1
  219. package/src/types/ws.ts +3 -2
  220. package/src/utils/index.ts +2 -0
  221. package/src/utils/liquidation.ts +46 -34
  222. package/src/utils/mapActivity.ts +48 -20
  223. package/src/utils/mapFill.ts +25 -9
  224. package/src/utils/mapMarket.ts +16 -12
  225. package/src/utils/mapMarketContext.ts +6 -8
  226. package/src/utils/mapOrder.ts +107 -20
  227. package/src/utils/mapPosition.ts +72 -14
  228. package/src/utils/rowTimestamp.ts +15 -0
  229. package/src/utils/spotBalance.ts +19 -16
  230. package/src/utils/spotCollateral.ts +15 -2
  231. package/src/utils/transferMargin.ts +40 -18
  232. package/src/utils/venueTotals.ts +51 -17
  233. package/src/utils/withdrawableBalances.ts +33 -15
  234. package/src/websocket/HyperliquidWsProvider.ts +224 -133
  235. package/dist/cjs/utils/decimal.d.ts +0 -3
  236. package/dist/cjs/utils/decimal.d.ts.map +0 -1
  237. package/dist/cjs/utils/decimal.js +0 -19
  238. package/dist/cjs/utils/decimal.js.map +0 -1
  239. package/dist/esm/utils/decimal.d.ts +0 -10
  240. package/dist/esm/utils/decimal.d.ts.map +0 -1
  241. package/dist/esm/utils/decimal.js +0 -19
  242. package/dist/esm/utils/decimal.js.map +0 -1
  243. package/dist/types/utils/decimal.d.ts +0 -10
  244. package/dist/types/utils/decimal.d.ts.map +0 -1
  245. package/src/utils/decimal.ts +0 -21
@@ -1 +1 @@
1
- {"version":3,"file":"mapPosition.js","sourceRoot":"","sources":["../../../src/utils/mapPosition.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAC5D,OAAO,GAAG,MAAM,QAAQ,CAAA;AAGxB;;;;;GAKG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,EAAmB,EAAW,EAAE,CAClE,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;AAE1C;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,CACzB,EAAmB,EACnB,MAA0B,EAChB,EAAE;IACZ,MAAM,GAAG,GAAG,EAAE,CAAC,QAAQ,CAAA;IACvB,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;IAC5B,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,GAAG,EAAE,CAAA;IACtD,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;IAC5C,MAAM,UAAU,GACd,GAAG,CAAC,QAAQ,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,UAAU,CAAC,QAAQ,CAAA;IAExE,OAAO;QACL,MAAM;QACN,IAAI,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,KAAK;QACzD,IAAI,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC,OAAO,EAAE;QACzB,UAAU,EAAE,GAAG,CAAC,OAAO,IAAI,GAAG;QAC9B,SAAS,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,OAAO,EAAE;QACnE,gBAAgB,EAAE,GAAG,CAAC,aAAa,IAAI,GAAG;QAC1C,aAAa,EAAE,GAAG,CAAC,aAAa;QAChC,cAAc,EAAE,IAAI,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,GAAG,EAAE,CAAC,OAAO,EAAE;QACjE,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK;QACpC,UAAU,EAAE,GAAG,CAAC,UAAU;QAC1B,wBAAwB,EAAE,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,OAAO,EAAE;QAC/D,UAAU;KACX,CAAA;AACH,CAAC,CAAA"}
1
+ {"version":3,"file":"mapPosition.js","sourceRoot":"","sources":["../../../src/utils/mapPosition.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Read a venue row time as an ISO-8601 string, or `undefined` when the time is
3
+ * not valid. The caller logs the row skip, so this logs nothing.
4
+ */
5
+ export declare const rowTimestampToIsoStringOrUndefined: (value: string | number) => string | undefined;
6
+ //# sourceMappingURL=rowTimestamp.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rowTimestamp.d.ts","sourceRoot":"","sources":["../../../src/utils/rowTimestamp.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,eAAO,MAAM,kCAAkC,GAC7C,OAAO,MAAM,GAAG,MAAM,KACrB,MAAM,GAAG,SAMX,CAAA"}
@@ -0,0 +1,14 @@
1
+ import { timestampToIsoString } from '@lifi/perps-sdk';
2
+ /**
3
+ * Read a venue row time as an ISO-8601 string, or `undefined` when the time is
4
+ * not valid. The caller logs the row skip, so this logs nothing.
5
+ */
6
+ export const rowTimestampToIsoStringOrUndefined = (value) => {
7
+ try {
8
+ return timestampToIsoString(value);
9
+ }
10
+ catch {
11
+ return undefined;
12
+ }
13
+ };
14
+ //# sourceMappingURL=rowTimestamp.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rowTimestamp.js","sourceRoot":"","sources":["../../../src/utils/rowTimestamp.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAA;AAEtD;;;GAGG;AACH,MAAM,CAAC,MAAM,kCAAkC,GAAG,CAChD,KAAsB,EACF,EAAE;IACtB,IAAI,CAAC;QACH,OAAO,oBAAoB,CAAC,KAAK,CAAC,CAAA;IACpC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAA;IAClB,CAAC;AACH,CAAC,CAAA"}
@@ -1,12 +1,12 @@
1
- import type { Asset, Balance, Market } from '@lifi/perps-types';
1
+ import type { Asset, Balance, DecimalString, Market } from '@lifi/perps-types';
2
2
  import type { HlSpotBalance } from '../types/index.js';
3
3
  /**
4
4
  * Build USD prices keyed by spot token asset ID. Base tokens use the supplied
5
- * market mark price; quote tokens default to exactly `$1`; missing base prices
6
- * default to `0`.
5
+ * market mark price; quote tokens default to exactly `$1`; missing or invalid
6
+ * base prices default to `0`.
7
7
  * @public
8
8
  */
9
- export declare const spotPriceById: (markets: readonly Market[], priceByMarketId: ReadonlyMap<string, number>) => Map<string, number>;
9
+ export declare const spotPriceById: (markets: readonly Market[], priceByMarketId: ReadonlyMap<string, DecimalString>) => Map<string, DecimalString>;
10
10
  /**
11
11
  * Convert a Hyperliquid spot balance's numeric token index into an SDK asset.
12
12
  * The balance payload has no `fullName`, so logo resolution uses the base
@@ -15,5 +15,5 @@ export declare const spotPriceById: (markets: readonly Market[], priceByMarketId
15
15
  */
16
16
  export declare const spotAssetFromToken: (b: HlSpotBalance) => Asset;
17
17
  /** Assemble a typed spot {@link Balance}; `total` is native token units and its unit price and USD value use `priceById`. @public */
18
- export declare const spotBalance: (asset: Asset, total: string, priceById: Map<string, number>) => Balance;
18
+ export declare const spotBalance: (asset: Asset, total: DecimalString, priceById: ReadonlyMap<string, DecimalString>) => Balance;
19
19
  //# sourceMappingURL=spotBalance.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"spotBalance.d.ts","sourceRoot":"","sources":["../../../src/utils/spotBalance.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAE/D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AAItD;;;;;GAKG;AACH,eAAO,MAAM,aAAa,GACxB,SAAS,SAAS,MAAM,EAAE,EAC1B,iBAAiB,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,KAC3C,GAAG,CAAC,MAAM,EAAE,MAAM,CAapB,CAAA;AAED;;;;;GAKG;AACH,eAAO,MAAM,kBAAkB,GAAI,GAAG,aAAa,KAAG,KAIpD,CAAA;AAEF,qIAAqI;AACrI,eAAO,MAAM,WAAW,GACtB,OAAO,KAAK,EACZ,OAAO,MAAM,EACb,WAAW,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,KAC7B,OAYF,CAAA"}
1
+ {"version":3,"file":"spotBalance.d.ts","sourceRoot":"","sources":["../../../src/utils/spotBalance.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAE9E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AAItD;;;;;GAKG;AACH,eAAO,MAAM,aAAa,GACxB,SAAS,SAAS,MAAM,EAAE,EAC1B,iBAAiB,WAAW,CAAC,MAAM,EAAE,aAAa,CAAC,KAClD,GAAG,CAAC,MAAM,EAAE,aAAa,CAc3B,CAAA;AAED;;;;;GAKG;AACH,eAAO,MAAM,kBAAkB,GAAI,GAAG,aAAa,KAAG,KAIpD,CAAA;AAEF,qIAAqI;AACrI,eAAO,MAAM,WAAW,GACtB,OAAO,KAAK,EACZ,OAAO,aAAa,EACpB,WAAW,WAAW,CAAC,MAAM,EAAE,aAAa,CAAC,KAC5C,OAUF,CAAA"}
@@ -1,23 +1,24 @@
1
- import { numberToDecimalString, parseDecimal } from '@lifi/perps-sdk';
1
+ import { isDecimalString, isDecimalStringGreaterThan, multiplyDecimalString, } from '@lifi/perps-sdk';
2
2
  import { SPOT_MARKET_ID } from '../constants.js';
3
3
  import { spotLogoURI } from './assetLogo.js';
4
4
  import { coinAsset } from './marketDisplay.js';
5
5
  /**
6
6
  * Build USD prices keyed by spot token asset ID. Base tokens use the supplied
7
- * market mark price; quote tokens default to exactly `$1`; missing base prices
8
- * default to `0`.
7
+ * market mark price; quote tokens default to exactly `$1`; missing or invalid
8
+ * base prices default to `0`.
9
9
  * @public
10
10
  */
11
11
  export const spotPriceById = (markets, priceByMarketId) => {
12
12
  const map = new Map();
13
13
  for (const m of markets) {
14
14
  if (m.categoryId === SPOT_MARKET_ID) {
15
- map.set(m.baseAsset.id, priceByMarketId.get(m.id) ?? 0);
15
+ const price = priceByMarketId.get(m.id);
16
+ map.set(m.baseAsset.id, isDecimalString(price) ? price : '0');
16
17
  }
17
18
  }
18
19
  for (const m of markets) {
19
20
  if (!map.has(m.quoteAsset.id)) {
20
- map.set(m.quoteAsset.id, 1);
21
+ map.set(m.quoteAsset.id, '1');
21
22
  }
22
23
  }
23
24
  return map;
@@ -35,14 +36,14 @@ export const spotAssetFromToken = (b) => ({
35
36
  });
36
37
  /** Assemble a typed spot {@link Balance}; `total` is native token units and its unit price and USD value use `priceById`. @public */
37
38
  export const spotBalance = (asset, total, priceById) => {
38
- const price = priceById.get(asset.id) ?? 0;
39
+ const price = priceById.get(asset.id) ?? '0';
39
40
  return {
40
41
  categoryId: SPOT_MARKET_ID,
41
42
  asset,
42
43
  units: total,
43
- valueUsd: numberToDecimalString((parseDecimal(total) ?? Number.NaN) * price),
44
+ valueUsd: multiplyDecimalString(total, price),
44
45
  // A zero entry means the map holds no mark for the asset, not a free asset.
45
- ...(price > 0 ? { price: numberToDecimalString(price) } : {}),
46
+ ...(isDecimalStringGreaterThan(price, '0') ? { price } : {}),
46
47
  };
47
48
  };
48
49
  //# sourceMappingURL=spotBalance.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"spotBalance.js","sourceRoot":"","sources":["../../../src/utils/spotBalance.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAErE,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAA;AAEhD,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAC5C,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAA;AAE9C;;;;;GAKG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,CAC3B,OAA0B,EAC1B,eAA4C,EACvB,EAAE;IACvB,MAAM,GAAG,GAAG,IAAI,GAAG,EAAkB,CAAA;IACrC,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;QACxB,IAAI,CAAC,CAAC,UAAU,KAAK,cAAc,EAAE,CAAC;YACpC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,EAAE,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAA;QACzD,CAAC;IACH,CAAC;IACD,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;QACxB,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC,EAAE,CAAC;YAC9B,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE,EAAE,CAAC,CAAC,CAAA;QAC7B,CAAC;IACH,CAAC;IACD,OAAO,GAAG,CAAA;AACZ,CAAC,CAAA;AAED;;;;;GAKG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAgB,EAAS,EAAE,CAAC,CAAC;IAC9D,GAAG,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC;IACpB,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC;IACnB,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC;CAC7B,CAAC,CAAA;AAEF,qIAAqI;AACrI,MAAM,CAAC,MAAM,WAAW,GAAG,CACzB,KAAY,EACZ,KAAa,EACb,SAA8B,EACrB,EAAE;IACX,MAAM,KAAK,GAAG,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,CAAA;IAC1C,OAAO;QACL,UAAU,EAAE,cAAc;QAC1B,KAAK;QACL,KAAK,EAAE,KAAK;QACZ,QAAQ,EAAE,qBAAqB,CAC7B,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAC5C;QACD,4EAA4E;QAC5E,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,qBAAqB,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC9D,CAAA;AACH,CAAC,CAAA"}
1
+ {"version":3,"file":"spotBalance.js","sourceRoot":"","sources":["../../../src/utils/spotBalance.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EACf,0BAA0B,EAC1B,qBAAqB,GACtB,MAAM,iBAAiB,CAAA;AAExB,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAA;AAEhD,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAC5C,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAA;AAE9C;;;;;GAKG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,CAC3B,OAA0B,EAC1B,eAAmD,EACvB,EAAE;IAC9B,MAAM,GAAG,GAAG,IAAI,GAAG,EAAyB,CAAA;IAC5C,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;QACxB,IAAI,CAAC,CAAC,UAAU,KAAK,cAAc,EAAE,CAAC;YACpC,MAAM,KAAK,GAAG,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAA;YACvC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,EAAE,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;QAC/D,CAAC;IACH,CAAC;IACD,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;QACxB,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC,EAAE,CAAC;YAC9B,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE,EAAE,GAAG,CAAC,CAAA;QAC/B,CAAC;IACH,CAAC;IACD,OAAO,GAAG,CAAA;AACZ,CAAC,CAAA;AAED;;;;;GAKG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAgB,EAAS,EAAE,CAAC,CAAC;IAC9D,GAAG,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC;IACpB,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC;IACnB,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC;CAC7B,CAAC,CAAA;AAEF,qIAAqI;AACrI,MAAM,CAAC,MAAM,WAAW,GAAG,CACzB,KAAY,EACZ,KAAoB,EACpB,SAA6C,EACpC,EAAE;IACX,MAAM,KAAK,GAAG,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,GAAG,CAAA;IAC5C,OAAO;QACL,UAAU,EAAE,cAAc;QAC1B,KAAK;QACL,KAAK,EAAE,KAAK;QACZ,QAAQ,EAAE,qBAAqB,CAAC,KAAK,EAAE,KAAK,CAAC;QAC7C,4EAA4E;QAC5E,GAAG,CAAC,0BAA0B,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC7D,CAAA;AACH,CAAC,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"spotCollateral.d.ts","sourceRoot":"","sources":["../../../src/utils/spotCollateral.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAA;AAGhD;;;;GAIG;AACH,MAAM,WAAW,aAAa;IAC5B,kBAAkB,EAAE,OAAO,EAAE,CAAA;IAC7B,QAAQ,EAAE,OAAO,EAAE,CAAA;CACpB;AAED;;;;;GAKG;AACH,eAAO,MAAM,qBAAqB,GAChC,cAAc,SAAS,OAAO,EAAE,EAChC,eAAe,WAAW,CAAC,MAAM,CAAC,KACjC,aAcF,CAAA"}
1
+ {"version":3,"file":"spotCollateral.d.ts","sourceRoot":"","sources":["../../../src/utils/spotCollateral.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAA;AAGhD;;;;GAIG;AACH,MAAM,WAAW,aAAa;IAC5B,kBAAkB,EAAE,OAAO,EAAE,CAAA;IAC7B,QAAQ,EAAE,OAAO,EAAE,CAAA;CACpB;AAED;;;;;GAKG;AACH,eAAO,MAAM,qBAAqB,GAChC,cAAc,SAAS,OAAO,EAAE,EAChC,eAAe,WAAW,CAAC,MAAM,CAAC,KACjC,aAuBF,CAAA"}
@@ -1,4 +1,5 @@
1
- import { toWireBig } from './decimal.js';
1
+ import { isDecimalStringGreaterThan, unknownToDecimalString, } from '@lifi/perps-sdk';
2
+ import { PROVIDER_KEY } from '../constants.js';
2
3
  /**
3
4
  * Partition spot balances into collateral and ordinary holdings. Category
4
5
  * quote assets are collateral; every other token is an ordinary holding.
@@ -9,7 +10,7 @@ export const partitionSpotBalances = (spotBalances, quoteAssetIds) => {
9
10
  const collateralBalances = [];
10
11
  const balances = [];
11
12
  for (const balance of spotBalances) {
12
- if (!toWireBig(balance.units, 'spotBalance.units').gt(0)) {
13
+ if (!isDecimalStringGreaterThan(unknownToDecimalString(balance.units, 'spotBalance.units', PROVIDER_KEY), '0')) {
13
14
  continue;
14
15
  }
15
16
  if (quoteAssetIds.has(balance.asset.id)) {
@@ -1 +1 @@
1
- {"version":3,"file":"spotCollateral.js","sourceRoot":"","sources":["../../../src/utils/spotCollateral.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AAYxC;;;;;GAKG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,CACnC,YAAgC,EAChC,aAAkC,EACnB,EAAE;IACjB,MAAM,kBAAkB,GAAc,EAAE,CAAA;IACxC,MAAM,QAAQ,GAAc,EAAE,CAAA;IAC9B,KAAK,MAAM,OAAO,IAAI,YAAY,EAAE,CAAC;QACnC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,EAAE,mBAAmB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACzD,SAAQ;QACV,CAAC;QACD,IAAI,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC;YACxC,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;QAClC,CAAC;aAAM,CAAC;YACN,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;QACxB,CAAC;IACH,CAAC;IACD,OAAO,EAAE,kBAAkB,EAAE,QAAQ,EAAE,CAAA;AACzC,CAAC,CAAA"}
1
+ {"version":3,"file":"spotCollateral.js","sourceRoot":"","sources":["../../../src/utils/spotCollateral.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,0BAA0B,EAC1B,sBAAsB,GACvB,MAAM,iBAAiB,CAAA;AAExB,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAY9C;;;;;GAKG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,CACnC,YAAgC,EAChC,aAAkC,EACnB,EAAE;IACjB,MAAM,kBAAkB,GAAc,EAAE,CAAA;IACxC,MAAM,QAAQ,GAAc,EAAE,CAAA;IAC9B,KAAK,MAAM,OAAO,IAAI,YAAY,EAAE,CAAC;QACnC,IACE,CAAC,0BAA0B,CACzB,sBAAsB,CACpB,OAAO,CAAC,KAAK,EACb,mBAAmB,EACnB,YAAY,CACb,EACD,GAAG,CACJ,EACD,CAAC;YACD,SAAQ;QACV,CAAC;QACD,IAAI,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC;YACxC,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;QAClC,CAAC;aAAM,CAAC;YACN,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;QACxB,CAAC;IACH,CAAC;IACD,OAAO,EAAE,kBAAkB,EAAE,QAAQ,EAAE,CAAA;AACzC,CAAC,CAAA"}
@@ -10,7 +10,8 @@ import { type DecimalString, type Position } from '@lifi/perps-types';
10
10
  * margin adjustment; `'0'` for add-only strict-isolated markets and when
11
11
  * nothing is removable.
12
12
  * @throws {PerpsError} `ValidationError` when a required `Position` decimal
13
- * is malformed, or when a size, price or requirement is not positive.
13
+ * is absent or malformed, or when a size, price or requirement is not
14
+ * positive.
14
15
  * @see https://hyperliquid.gitbook.io/hyperliquid-docs/trading/margining
15
16
  * @public
16
17
  */
@@ -1 +1 @@
1
- {"version":3,"file":"transferMargin.d.ts","sourceRoot":"","sources":["../../../src/utils/transferMargin.ts"],"names":[],"mappings":"AAMA,OAAO,EACL,KAAK,aAAa,EAElB,KAAK,QAAQ,EACd,MAAM,mBAAmB,CAAA;AAqB1B;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,uBAAuB,CACrC,QAAQ,EAAE,QAAQ,GACjB,aAAa,GAAG,SAAS,CAwB3B"}
1
+ {"version":3,"file":"transferMargin.d.ts","sourceRoot":"","sources":["../../../src/utils/transferMargin.ts"],"names":[],"mappings":"AAUA,OAAO,EACL,KAAK,aAAa,EAElB,KAAK,QAAQ,EACd,MAAM,mBAAmB,CAAA;AAkC1B;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,uBAAuB,CACrC,QAAQ,EAAE,QAAQ,GACjB,aAAa,GAAG,SAAS,CA4B3B"}
@@ -1,17 +1,19 @@
1
- import { PerpsError, positionSupportsMarginAdjustment, positionSupportsMarginRemoval, validateDecimalString, } from '@lifi/perps-sdk';
1
+ import { isDecimalString, isDecimalStringGreaterThan, multiplyDecimalString, PerpsError, positionSupportsMarginAdjustment, positionSupportsMarginRemoval, roundDecimalString, subtractDecimalString, } from '@lifi/perps-sdk';
2
2
  import { PerpsErrorCode, } from '@lifi/perps-types';
3
- import Big from 'big.js';
4
3
  const NOTIONAL_FLOOR_RATIO = '0.1';
5
4
  const AMOUNT_DECIMALS = 6;
6
- function positionAmount(value, field) {
7
- return new Big(validateDecimalString(value, `Position.${field}`));
5
+ function requirePositionAmount(value, field) {
6
+ if (!isDecimalString(value)) {
7
+ throw new PerpsError(PerpsErrorCode.ValidationError, `Invalid \`Position.${field}\`: '${value}' does not match the decimal pattern.`);
8
+ }
9
+ return value;
8
10
  }
9
- function positivePositionAmount(value, field) {
10
- const amount = positionAmount(value, field);
11
- if (amount.lte(0)) {
11
+ function requirePositivePositionAmount(value, field) {
12
+ if (value === undefined ||
13
+ !isDecimalStringGreaterThan(requirePositionAmount(value, field), '0')) {
12
14
  throw new PerpsError(PerpsErrorCode.ValidationError, `Position.${field} must be greater than zero.`);
13
15
  }
14
- return amount;
16
+ return value;
15
17
  }
16
18
  /**
17
19
  * Hyperliquid removable isolated margin:
@@ -24,7 +26,8 @@ function positivePositionAmount(value, field) {
24
26
  * margin adjustment; `'0'` for add-only strict-isolated markets and when
25
27
  * nothing is removable.
26
28
  * @throws {PerpsError} `ValidationError` when a required `Position` decimal
27
- * is malformed, or when a size, price or requirement is not positive.
29
+ * is absent or malformed, or when a size, price or requirement is not
30
+ * positive.
28
31
  * @see https://hyperliquid.gitbook.io/hyperliquid-docs/trading/margining
29
32
  * @public
30
33
  */
@@ -35,18 +38,16 @@ export function positionRemovableMargin(position) {
35
38
  if (!positionSupportsMarginRemoval(position)) {
36
39
  return '0';
37
40
  }
38
- const marginUsed = positionAmount(position.marginUsed, 'marginUsed');
39
- const initialMargin = positivePositionAmount(position.initialMarginRequirement, 'initialMarginRequirement');
40
- const notionalFloor = positivePositionAmount(position.size, 'size')
41
- .times(positivePositionAmount(position.markPrice, 'markPrice'))
42
- .times(NOTIONAL_FLOOR_RATIO);
43
- const minimumMargin = initialMargin.gt(notionalFloor)
41
+ const marginUsed = requirePositionAmount(position.marginUsed, 'marginUsed');
42
+ const initialMargin = requirePositivePositionAmount(position.initialMarginRequirement, 'initialMarginRequirement');
43
+ const notionalFloor = multiplyDecimalString(multiplyDecimalString(requirePositivePositionAmount(position.size, 'size'), requirePositivePositionAmount(position.markPrice, 'markPrice')), NOTIONAL_FLOOR_RATIO);
44
+ const minimumMargin = isDecimalStringGreaterThan(initialMargin, notionalFloor)
44
45
  ? initialMargin
45
46
  : notionalFloor;
46
- const removable = marginUsed.minus(minimumMargin);
47
- if (removable.lte(0)) {
47
+ const removable = subtractDecimalString(marginUsed, minimumMargin);
48
+ if (!isDecimalStringGreaterThan(removable, '0')) {
48
49
  return '0';
49
50
  }
50
- return removable.round(AMOUNT_DECIMALS, Big.roundDown).toFixed();
51
+ return roundDecimalString(removable, AMOUNT_DECIMALS, 'truncate');
51
52
  }
52
53
  //# sourceMappingURL=transferMargin.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"transferMargin.js","sourceRoot":"","sources":["../../../src/utils/transferMargin.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,UAAU,EACV,gCAAgC,EAChC,6BAA6B,EAC7B,qBAAqB,GACtB,MAAM,iBAAiB,CAAA;AACxB,OAAO,EAEL,cAAc,GAEf,MAAM,mBAAmB,CAAA;AAC1B,OAAO,GAAG,MAAM,QAAQ,CAAA;AAExB,MAAM,oBAAoB,GAAG,KAAK,CAAA;AAClC,MAAM,eAAe,GAAG,CAAC,CAAA;AAEzB,SAAS,cAAc,CAAC,KAAoB,EAAE,KAAa;IACzD,OAAO,IAAI,GAAG,CAAC,qBAAqB,CAAC,KAAK,EAAE,YAAY,KAAK,EAAE,CAAC,CAAC,CAAA;AACnE,CAAC;AAED,SAAS,sBAAsB,CAAC,KAAoB,EAAE,KAAa;IACjE,MAAM,MAAM,GAAG,cAAc,CAAC,KAAK,EAAE,KAAK,CAAC,CAAA;IAC3C,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;QAClB,MAAM,IAAI,UAAU,CAClB,cAAc,CAAC,eAAe,EAC9B,YAAY,KAAK,6BAA6B,CAC/C,CAAA;IACH,CAAC;IACD,OAAO,MAAM,CAAA;AACf,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,uBAAuB,CACrC,QAAkB;IAElB,IAAI,CAAC,gCAAgC,CAAC,QAAQ,CAAC,EAAE,CAAC;QAChD,OAAO,SAAS,CAAA;IAClB,CAAC;IACD,IAAI,CAAC,6BAA6B,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC7C,OAAO,GAAG,CAAA;IACZ,CAAC;IACD,MAAM,UAAU,GAAG,cAAc,CAAC,QAAQ,CAAC,UAAU,EAAE,YAAY,CAAC,CAAA;IACpE,MAAM,aAAa,GAAG,sBAAsB,CAC1C,QAAQ,CAAC,wBAAwB,EACjC,0BAA0B,CAC3B,CAAA;IACD,MAAM,aAAa,GAAG,sBAAsB,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;SAChE,KAAK,CAAC,sBAAsB,CAAC,QAAQ,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;SAC9D,KAAK,CAAC,oBAAoB,CAAC,CAAA;IAC9B,MAAM,aAAa,GAAG,aAAa,CAAC,EAAE,CAAC,aAAa,CAAC;QACnD,CAAC,CAAC,aAAa;QACf,CAAC,CAAC,aAAa,CAAA;IAEjB,MAAM,SAAS,GAAG,UAAU,CAAC,KAAK,CAAC,aAAa,CAAC,CAAA;IACjD,IAAI,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;QACrB,OAAO,GAAG,CAAA;IACZ,CAAC;IACD,OAAO,SAAS,CAAC,KAAK,CAAC,eAAe,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,CAAA;AAClE,CAAC"}
1
+ {"version":3,"file":"transferMargin.js","sourceRoot":"","sources":["../../../src/utils/transferMargin.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EACf,0BAA0B,EAC1B,qBAAqB,EACrB,UAAU,EACV,gCAAgC,EAChC,6BAA6B,EAC7B,kBAAkB,EAClB,qBAAqB,GACtB,MAAM,iBAAiB,CAAA;AACxB,OAAO,EAEL,cAAc,GAEf,MAAM,mBAAmB,CAAA;AAE1B,MAAM,oBAAoB,GAAG,KAAK,CAAA;AAClC,MAAM,eAAe,GAAG,CAAC,CAAA;AAEzB,SAAS,qBAAqB,CAC5B,KAAoB,EACpB,KAAa;IAEb,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,EAAE,CAAC;QAC5B,MAAM,IAAI,UAAU,CAClB,cAAc,CAAC,eAAe,EAC9B,sBAAsB,KAAK,QAAQ,KAAK,uCAAuC,CAChF,CAAA;IACH,CAAC;IACD,OAAO,KAAK,CAAA;AACd,CAAC;AAED,SAAS,6BAA6B,CACpC,KAAgC,EAChC,KAAa;IAEb,IACE,KAAK,KAAK,SAAS;QACnB,CAAC,0BAA0B,CAAC,qBAAqB,CAAC,KAAK,EAAE,KAAK,CAAC,EAAE,GAAG,CAAC,EACrE,CAAC;QACD,MAAM,IAAI,UAAU,CAClB,cAAc,CAAC,eAAe,EAC9B,YAAY,KAAK,6BAA6B,CAC/C,CAAA;IACH,CAAC;IACD,OAAO,KAAK,CAAA;AACd,CAAC;AAED;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,uBAAuB,CACrC,QAAkB;IAElB,IAAI,CAAC,gCAAgC,CAAC,QAAQ,CAAC,EAAE,CAAC;QAChD,OAAO,SAAS,CAAA;IAClB,CAAC;IACD,IAAI,CAAC,6BAA6B,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC7C,OAAO,GAAG,CAAA;IACZ,CAAC;IACD,MAAM,UAAU,GAAG,qBAAqB,CAAC,QAAQ,CAAC,UAAU,EAAE,YAAY,CAAC,CAAA;IAC3E,MAAM,aAAa,GAAG,6BAA6B,CACjD,QAAQ,CAAC,wBAAwB,EACjC,0BAA0B,CAC3B,CAAA;IACD,MAAM,aAAa,GAAG,qBAAqB,CACzC,qBAAqB,CACnB,6BAA6B,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,EACpD,6BAA6B,CAAC,QAAQ,CAAC,SAAS,EAAE,WAAW,CAAC,CAC/D,EACD,oBAAoB,CACrB,CAAA;IACD,MAAM,aAAa,GAAG,0BAA0B,CAAC,aAAa,EAAE,aAAa,CAAC;QAC5E,CAAC,CAAC,aAAa;QACf,CAAC,CAAC,aAAa,CAAA;IAEjB,MAAM,SAAS,GAAG,qBAAqB,CAAC,UAAU,EAAE,aAAa,CAAC,CAAA;IAClE,IAAI,CAAC,0BAA0B,CAAC,SAAS,EAAE,GAAG,CAAC,EAAE,CAAC;QAChD,OAAO,GAAG,CAAA;IACZ,CAAC;IACD,OAAO,kBAAkB,CAAC,SAAS,EAAE,eAAe,EAAE,UAAU,CAAC,CAAA;AACnE,CAAC"}
@@ -1,5 +1,4 @@
1
- import type { HyperliquidMarginSummary, Position } from '@lifi/perps-types';
2
- import Big from 'big.js';
1
+ import type { DecimalString, HyperliquidMarginSummary, Position } from '@lifi/perps-types';
3
2
  /**
4
3
  * One perps sub-dex entry {@link perpsTotals} reads. The REST response always
5
4
  * carries `marginSummary`; a WebSocket frame may omit it.
@@ -12,15 +11,17 @@ export interface DexMarginSummary {
12
11
  * Sum the venue `marginSummary` totals over every perps sub-dex of an
13
12
  * account. `accountValue` is total equity, so it already carries locked
14
13
  * margin and unrealized PnL. An entry without a `marginSummary` adds nothing.
14
+ * @throws {PerpsError} `SDKError` when a venue figure is not a decimal.
15
15
  * @public
16
16
  */
17
17
  export declare const perpsTotals: (dexStates: readonly DexMarginSummary[]) => {
18
- accountValue: Big;
19
- marginUsed: Big;
18
+ accountValue: DecimalString;
19
+ marginUsed: DecimalString;
20
20
  };
21
21
  /**
22
- * Sum the unrealized PnL of every position, in quote-asset units.
22
+ * Sum the unrealized PnL of every position, in quote-asset units. A term that
23
+ * does not match the decimal pattern adds nothing and warns once.
23
24
  * @public
24
25
  */
25
- export declare const sumUnrealizedPnl: (positions: readonly Position[]) => Big;
26
+ export declare const sumUnrealizedPnl: (positions: readonly Position[]) => DecimalString;
26
27
  //# sourceMappingURL=venueTotals.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"venueTotals.d.ts","sourceRoot":"","sources":["../../../src/utils/venueTotals.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAC3E,OAAO,GAAG,MAAM,QAAQ,CAAA;AAGxB;;;;GAIG;AACH,MAAM,WAAW,gBAAgB;IAC/B,aAAa,CAAC,EAAE,wBAAwB,CAAA;CACzC;AAED;;;;;GAKG;AACH,eAAO,MAAM,WAAW,GACtB,WAAW,SAAS,gBAAgB,EAAE,KACrC;IAAE,YAAY,EAAE,GAAG,CAAC;IAAC,UAAU,EAAE,GAAG,CAAA;CAetC,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,gBAAgB,GAAI,WAAW,SAAS,QAAQ,EAAE,KAAG,GAK/D,CAAA"}
1
+ {"version":3,"file":"venueTotals.d.ts","sourceRoot":"","sources":["../../../src/utils/venueTotals.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EACV,aAAa,EACb,wBAAwB,EACxB,QAAQ,EACT,MAAM,mBAAmB,CAAA;AAG1B;;;;GAIG;AACH,MAAM,WAAW,gBAAgB;IAC/B,aAAa,CAAC,EAAE,wBAAwB,CAAA;CACzC;AAED;;;;;;GAMG;AACH,eAAO,MAAM,WAAW,GACtB,WAAW,SAAS,gBAAgB,EAAE,KACrC;IAAE,YAAY,EAAE,aAAa,CAAC;IAAC,UAAU,EAAE,aAAa,CAAA;CAyB1D,CAAA;AAID;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,GAC3B,WAAW,SAAS,QAAQ,EAAE,KAC7B,aAaF,CAAA"}
@@ -1,26 +1,39 @@
1
- import Big from 'big.js';
2
- import { toWireBig } from './decimal.js';
1
+ import { addDecimalString, addDecimalStrings, createWarnOnce, isDecimalString, unknownToDecimalString, } from '@lifi/perps-sdk';
2
+ import { PROVIDER_KEY } from '../constants.js';
3
3
  /**
4
4
  * Sum the venue `marginSummary` totals over every perps sub-dex of an
5
5
  * account. `accountValue` is total equity, so it already carries locked
6
6
  * margin and unrealized PnL. An entry without a `marginSummary` adds nothing.
7
+ * @throws {PerpsError} `SDKError` when a venue figure is not a decimal.
7
8
  * @public
8
9
  */
9
10
  export const perpsTotals = (dexStates) => {
10
- let accountValue = new Big(0);
11
- let marginUsed = new Big(0);
11
+ let accountValue = '0';
12
+ let marginUsed = '0';
12
13
  for (const { marginSummary } of dexStates) {
13
14
  if (marginSummary === undefined) {
14
15
  continue;
15
16
  }
16
- accountValue = accountValue.plus(toWireBig(marginSummary.accountValue, 'marginSummary.accountValue'));
17
- marginUsed = marginUsed.plus(toWireBig(marginSummary.totalMarginUsed, 'marginSummary.totalMarginUsed'));
17
+ accountValue = addDecimalString(accountValue, unknownToDecimalString(marginSummary.accountValue, 'marginSummary.accountValue', PROVIDER_KEY));
18
+ marginUsed = addDecimalString(marginUsed, unknownToDecimalString(marginSummary.totalMarginUsed, 'marginSummary.totalMarginUsed', PROVIDER_KEY));
18
19
  }
19
20
  return { accountValue, marginUsed };
20
21
  };
22
+ const warnSkippedTermOnce = createWarnOnce();
21
23
  /**
22
- * Sum the unrealized PnL of every position, in quote-asset units.
24
+ * Sum the unrealized PnL of every position, in quote-asset units. A term that
25
+ * does not match the decimal pattern adds nothing and warns once.
23
26
  * @public
24
27
  */
25
- export const sumUnrealizedPnl = (positions) => positions.reduce((sum, position) => sum.plus(toWireBig(position.unrealizedPnl, 'position.unrealizedPnl')), new Big(0));
28
+ export const sumUnrealizedPnl = (positions) => {
29
+ const terms = [];
30
+ for (const { unrealizedPnl } of positions) {
31
+ if (isDecimalString(unrealizedPnl)) {
32
+ terms.push(unrealizedPnl);
33
+ continue;
34
+ }
35
+ warnSkippedTermOnce(`${PROVIDER_KEY}|position.unrealizedPnl`, `[${PROVIDER_KEY}] skipping a \`position.unrealizedPnl\` term that does not match the decimal pattern: '${String(unrealizedPnl).slice(0, 64)}'`);
36
+ }
37
+ return addDecimalStrings(terms);
38
+ };
26
39
  //# sourceMappingURL=venueTotals.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"venueTotals.js","sourceRoot":"","sources":["../../../src/utils/venueTotals.ts"],"names":[],"mappings":"AACA,OAAO,GAAG,MAAM,QAAQ,CAAA;AACxB,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AAWxC;;;;;GAKG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,CACzB,SAAsC,EACE,EAAE;IAC1C,IAAI,YAAY,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,CAAA;IAC7B,IAAI,UAAU,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,CAAA;IAC3B,KAAK,MAAM,EAAE,aAAa,EAAE,IAAI,SAAS,EAAE,CAAC;QAC1C,IAAI,aAAa,KAAK,SAAS,EAAE,CAAC;YAChC,SAAQ;QACV,CAAC;QACD,YAAY,GAAG,YAAY,CAAC,IAAI,CAC9B,SAAS,CAAC,aAAa,CAAC,YAAY,EAAE,4BAA4B,CAAC,CACpE,CAAA;QACD,UAAU,GAAG,UAAU,CAAC,IAAI,CAC1B,SAAS,CAAC,aAAa,CAAC,eAAe,EAAE,+BAA+B,CAAC,CAC1E,CAAA;IACH,CAAC;IACD,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,CAAA;AACrC,CAAC,CAAA;AAED;;;GAGG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,SAA8B,EAAO,EAAE,CACtE,SAAS,CAAC,MAAM,CACd,CAAC,GAAG,EAAE,QAAQ,EAAE,EAAE,CAChB,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,aAAa,EAAE,wBAAwB,CAAC,CAAC,EACvE,IAAI,GAAG,CAAC,CAAC,CAAC,CACX,CAAA"}
1
+ {"version":3,"file":"venueTotals.js","sourceRoot":"","sources":["../../../src/utils/venueTotals.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,gBAAgB,EAChB,iBAAiB,EACjB,cAAc,EACd,eAAe,EACf,sBAAsB,GACvB,MAAM,iBAAiB,CAAA;AAMxB,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAW9C;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,CACzB,SAAsC,EACsB,EAAE;IAC9D,IAAI,YAAY,GAAG,GAAG,CAAA;IACtB,IAAI,UAAU,GAAG,GAAG,CAAA;IACpB,KAAK,MAAM,EAAE,aAAa,EAAE,IAAI,SAAS,EAAE,CAAC;QAC1C,IAAI,aAAa,KAAK,SAAS,EAAE,CAAC;YAChC,SAAQ;QACV,CAAC;QACD,YAAY,GAAG,gBAAgB,CAC7B,YAAY,EACZ,sBAAsB,CACpB,aAAa,CAAC,YAAY,EAC1B,4BAA4B,EAC5B,YAAY,CACb,CACF,CAAA;QACD,UAAU,GAAG,gBAAgB,CAC3B,UAAU,EACV,sBAAsB,CACpB,aAAa,CAAC,eAAe,EAC7B,+BAA+B,EAC/B,YAAY,CACb,CACF,CAAA;IACH,CAAC;IACD,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,CAAA;AACrC,CAAC,CAAA;AAED,MAAM,mBAAmB,GAAG,cAAc,EAAE,CAAA;AAE5C;;;;GAIG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAC9B,SAA8B,EACf,EAAE;IACjB,MAAM,KAAK,GAAoB,EAAE,CAAA;IACjC,KAAK,MAAM,EAAE,aAAa,EAAE,IAAI,SAAS,EAAE,CAAC;QAC1C,IAAI,eAAe,CAAC,aAAa,CAAC,EAAE,CAAC;YACnC,KAAK,CAAC,IAAI,CAAC,aAAa,CAAC,CAAA;YACzB,SAAQ;QACV,CAAC;QACD,mBAAmB,CACjB,GAAG,YAAY,yBAAyB,EACxC,IAAI,YAAY,0FAA0F,MAAM,CAAC,aAAa,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAChJ,CAAA;IACH,CAAC;IACD,OAAO,iBAAiB,CAAC,KAAK,CAAC,CAAA;AACjC,CAAC,CAAA"}
@@ -1,16 +1,18 @@
1
1
  import { type ProviderWithdrawableBalance } from '@lifi/perps-sdk';
2
2
  import type { HlAbstractionMode, HlClearinghouseState, HlSpotClearinghouseState } from '../types/index.js';
3
3
  /**
4
- * Split a Hyperliquid account's venue figures into the routes a withdrawal
5
- * draws on. A unified or portfolio-margin account holds its collateral in spot,
4
+ * Split a Hyperliquid account's venue figures into the categories a
5
+ * withdrawal draws on. A unified or portfolio-margin account holds its collateral in spot,
6
6
  * so each spot token adds the part of `total` that no order or margin holds. A
7
- * route with nothing left to draw carries no row, and the caller applies the
7
+ * category with nothing left to draw carries no row, and the caller applies the
8
8
  * per-asset venue minimum.
9
9
  *
10
- * @param quoteAssetId - `Asset.id` the perps-route row is keyed by.
10
+ * @param quoteAssetId - `Asset.id` the perps-category row is keyed by.
11
11
  * @param withdrawalFee - Flat venue fee in quote-asset units, set on every
12
12
  * quote-asset row. Hyperliquid deducts it from the requested amount. Absent
13
13
  * leaves every row without a fee.
14
+ * @throws {PerpsError} `SDKError` when the fee or a venue figure does not match the
15
+ * decimal pattern.
14
16
  * @public
15
17
  */
16
18
  export declare const hyperliquidWithdrawableBalances: (abstraction: HlAbstractionMode | null, state: HlClearinghouseState, spotState: HlSpotClearinghouseState, quoteAssetId: string, withdrawalFee?: string) => ProviderWithdrawableBalance[];
@@ -1 +1 @@
1
- {"version":3,"file":"withdrawableBalances.d.ts","sourceRoot":"","sources":["../../../src/utils/withdrawableBalances.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,2BAA2B,EACjC,MAAM,iBAAiB,CAAA;AACxB,OAAO,KAAK,EACV,iBAAiB,EACjB,oBAAoB,EACpB,wBAAwB,EACzB,MAAM,mBAAmB,CAAA;AAK1B;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,+BAA+B,GAC1C,aAAa,iBAAiB,GAAG,IAAI,EACrC,OAAO,oBAAoB,EAC3B,WAAW,wBAAwB,EACnC,cAAc,MAAM,EACpB,gBAAgB,MAAM,KACrB,2BAA2B,EA8C7B,CAAA"}
1
+ {"version":3,"file":"withdrawableBalances.d.ts","sourceRoot":"","sources":["../../../src/utils/withdrawableBalances.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,2BAA2B,EAGjC,MAAM,iBAAiB,CAAA;AAExB,OAAO,KAAK,EACV,iBAAiB,EACjB,oBAAoB,EACpB,wBAAwB,EACzB,MAAM,mBAAmB,CAAA;AAI1B;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,+BAA+B,GAC1C,aAAa,iBAAiB,GAAG,IAAI,EACrC,OAAO,oBAAoB,EAC3B,WAAW,wBAAwB,EACnC,cAAc,MAAM,EACpB,gBAAgB,MAAM,KACrB,2BAA2B,EA2D7B,CAAA"}
@@ -1,25 +1,27 @@
1
- import { calculateWithdrawMax, } from '@lifi/perps-sdk';
1
+ import { calculateWithdrawMax, isDecimalStringGreaterThan, subtractDecimalString, unknownToDecimalString, } from '@lifi/perps-sdk';
2
+ import { PROVIDER_KEY, SPOT_MARKET_ID } from '../constants.js';
2
3
  import { isUnifiedAbstraction } from './abstractionMode.js';
3
4
  import { assetIsOutcome } from './assetId.js';
4
- import { toWireBig } from './decimal.js';
5
5
  /**
6
- * Split a Hyperliquid account's venue figures into the routes a withdrawal
7
- * draws on. A unified or portfolio-margin account holds its collateral in spot,
6
+ * Split a Hyperliquid account's venue figures into the categories a
7
+ * withdrawal draws on. A unified or portfolio-margin account holds its collateral in spot,
8
8
  * so each spot token adds the part of `total` that no order or margin holds. A
9
- * route with nothing left to draw carries no row, and the caller applies the
9
+ * category with nothing left to draw carries no row, and the caller applies the
10
10
  * per-asset venue minimum.
11
11
  *
12
- * @param quoteAssetId - `Asset.id` the perps-route row is keyed by.
12
+ * @param quoteAssetId - `Asset.id` the perps-category row is keyed by.
13
13
  * @param withdrawalFee - Flat venue fee in quote-asset units, set on every
14
14
  * quote-asset row. Hyperliquid deducts it from the requested amount. Absent
15
15
  * leaves every row without a fee.
16
+ * @throws {PerpsError} `SDKError` when the fee or a venue figure does not match the
17
+ * decimal pattern.
16
18
  * @public
17
19
  */
18
20
  export const hyperliquidWithdrawableBalances = (abstraction, state, spotState, quoteAssetId, withdrawalFee) => {
19
21
  const rows = [];
20
22
  const fee = withdrawalFee === undefined
21
23
  ? undefined
22
- : toWireBig(withdrawalFee, 'providers.withdrawalFeeUsd').toFixed();
24
+ : unknownToDecimalString(withdrawalFee, 'providers.withdrawalFeeUsd', PROVIDER_KEY);
23
25
  const feeFor = (assetId) => fee === undefined || assetId !== quoteAssetId
24
26
  ? {}
25
27
  : { withdrawalFee: fee, isFeeDeducted: true };
@@ -28,25 +30,25 @@ export const hyperliquidWithdrawableBalances = (abstraction, state, spotState, q
28
30
  if (assetIsOutcome(balance.coin)) {
29
31
  continue;
30
32
  }
31
- const spot = toWireBig(balance.total, 'spotBalance.total').minus(toWireBig(balance.hold, 'spotBalance.hold'));
32
- if (spot.gt(0)) {
33
+ const spot = subtractDecimalString(unknownToDecimalString(balance.total, 'spotBalance.total', PROVIDER_KEY), unknownToDecimalString(balance.hold, 'spotBalance.hold', PROVIDER_KEY));
34
+ if (isDecimalStringGreaterThan(spot, '0')) {
33
35
  const assetId = String(balance.token);
34
36
  const row = {
35
37
  assetId,
36
- route: 'spot',
37
- available: spot.toFixed(),
38
+ categoryId: SPOT_MARKET_ID,
39
+ available: spot,
38
40
  ...feeFor(assetId),
39
41
  };
40
42
  rows.push({ ...row, max: calculateWithdrawMax(row) });
41
43
  }
42
44
  }
43
45
  }
44
- const perps = toWireBig(state.withdrawable, 'clearinghouseState.withdrawable');
45
- if (perps.gt(0)) {
46
+ const perps = unknownToDecimalString(state.withdrawable, 'clearinghouseState.withdrawable', PROVIDER_KEY);
47
+ if (isDecimalStringGreaterThan(perps, '0')) {
46
48
  const row = {
47
49
  assetId: quoteAssetId,
48
- route: 'perps',
49
- available: perps.toFixed(),
50
+ categoryId: PROVIDER_KEY,
51
+ available: perps,
50
52
  ...feeFor(quoteAssetId),
51
53
  };
52
54
  rows.push({ ...row, max: calculateWithdrawMax(row) });
@@ -1 +1 @@
1
- {"version":3,"file":"withdrawableBalances.js","sourceRoot":"","sources":["../../../src/utils/withdrawableBalances.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,oBAAoB,GAErB,MAAM,iBAAiB,CAAA;AAMxB,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAA;AAC3D,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAA;AAExC;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,MAAM,+BAA+B,GAAG,CAC7C,WAAqC,EACrC,KAA2B,EAC3B,SAAmC,EACnC,YAAoB,EACpB,aAAsB,EACS,EAAE;IACjC,MAAM,IAAI,GAAkC,EAAE,CAAA;IAC9C,MAAM,GAAG,GACP,aAAa,KAAK,SAAS;QACzB,CAAC,CAAC,SAAS;QACX,CAAC,CAAC,SAAS,CAAC,aAAa,EAAE,4BAA4B,CAAC,CAAC,OAAO,EAAE,CAAA;IACtE,MAAM,MAAM,GAAG,CACb,OAAe,EACuD,EAAE,CACxE,GAAG,KAAK,SAAS,IAAI,OAAO,KAAK,YAAY;QAC3C,CAAC,CAAC,EAAE;QACJ,CAAC,CAAC,EAAE,aAAa,EAAE,GAAG,EAAE,aAAa,EAAE,IAAI,EAAE,CAAA;IAEjD,IAAI,oBAAoB,CAAC,WAAW,CAAC,EAAE,CAAC;QACtC,KAAK,MAAM,OAAO,IAAI,SAAS,CAAC,QAAQ,EAAE,CAAC;YACzC,IAAI,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;gBACjC,SAAQ;YACV,CAAC;YACD,MAAM,IAAI,GAAG,SAAS,CAAC,OAAO,CAAC,KAAK,EAAE,mBAAmB,CAAC,CAAC,KAAK,CAC9D,SAAS,CAAC,OAAO,CAAC,IAAI,EAAE,kBAAkB,CAAC,CAC5C,CAAA;YACD,IAAI,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACf,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;gBACrC,MAAM,GAAG,GAAG;oBACV,OAAO;oBACP,KAAK,EAAE,MAAe;oBACtB,SAAS,EAAE,IAAI,CAAC,OAAO,EAAE;oBACzB,GAAG,MAAM,CAAC,OAAO,CAAC;iBACnB,CAAA;gBACD,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,oBAAoB,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;YACvD,CAAC;QACH,CAAC;IACH,CAAC;IAED,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,YAAY,EAAE,iCAAiC,CAAC,CAAA;IAC9E,IAAI,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAChB,MAAM,GAAG,GAAG;YACV,OAAO,EAAE,YAAY;YACrB,KAAK,EAAE,OAAgB;YACvB,SAAS,EAAE,KAAK,CAAC,OAAO,EAAE;YAC1B,GAAG,MAAM,CAAC,YAAY,CAAC;SACxB,CAAA;QACD,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,oBAAoB,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;IACvD,CAAC;IAED,OAAO,IAAI,CAAA;AACb,CAAC,CAAA"}
1
+ {"version":3,"file":"withdrawableBalances.js","sourceRoot":"","sources":["../../../src/utils/withdrawableBalances.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,oBAAoB,EACpB,0BAA0B,EAE1B,qBAAqB,EACrB,sBAAsB,GACvB,MAAM,iBAAiB,CAAA;AACxB,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAA;AAM9D,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAA;AAC3D,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAE7C;;;;;;;;;;;;;;GAcG;AACH,MAAM,CAAC,MAAM,+BAA+B,GAAG,CAC7C,WAAqC,EACrC,KAA2B,EAC3B,SAAmC,EACnC,YAAoB,EACpB,aAAsB,EACS,EAAE;IACjC,MAAM,IAAI,GAAkC,EAAE,CAAA;IAC9C,MAAM,GAAG,GACP,aAAa,KAAK,SAAS;QACzB,CAAC,CAAC,SAAS;QACX,CAAC,CAAC,sBAAsB,CACpB,aAAa,EACb,4BAA4B,EAC5B,YAAY,CACb,CAAA;IACP,MAAM,MAAM,GAAG,CACb,OAAe,EACuD,EAAE,CACxE,GAAG,KAAK,SAAS,IAAI,OAAO,KAAK,YAAY;QAC3C,CAAC,CAAC,EAAE;QACJ,CAAC,CAAC,EAAE,aAAa,EAAE,GAAG,EAAE,aAAa,EAAE,IAAI,EAAE,CAAA;IAEjD,IAAI,oBAAoB,CAAC,WAAW,CAAC,EAAE,CAAC;QACtC,KAAK,MAAM,OAAO,IAAI,SAAS,CAAC,QAAQ,EAAE,CAAC;YACzC,IAAI,cAAc,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;gBACjC,SAAQ;YACV,CAAC;YACD,MAAM,IAAI,GAAG,qBAAqB,CAChC,sBAAsB,CACpB,OAAO,CAAC,KAAK,EACb,mBAAmB,EACnB,YAAY,CACb,EACD,sBAAsB,CAAC,OAAO,CAAC,IAAI,EAAE,kBAAkB,EAAE,YAAY,CAAC,CACvE,CAAA;YACD,IAAI,0BAA0B,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE,CAAC;gBAC1C,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;gBACrC,MAAM,GAAG,GAAG;oBACV,OAAO;oBACP,UAAU,EAAE,cAAc;oBAC1B,SAAS,EAAE,IAAI;oBACf,GAAG,MAAM,CAAC,OAAO,CAAC;iBACnB,CAAA;gBACD,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,oBAAoB,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;YACvD,CAAC;QACH,CAAC;IACH,CAAC;IAED,MAAM,KAAK,GAAG,sBAAsB,CAClC,KAAK,CAAC,YAAY,EAClB,iCAAiC,EACjC,YAAY,CACb,CAAA;IACD,IAAI,0BAA0B,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE,CAAC;QAC3C,MAAM,GAAG,GAAG;YACV,OAAO,EAAE,YAAY;YACrB,UAAU,EAAE,YAAY;YACxB,SAAS,EAAE,KAAK;YAChB,GAAG,MAAM,CAAC,YAAY,CAAC;SACxB,CAAA;QACD,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,GAAG,EAAE,GAAG,EAAE,oBAAoB,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;IACvD,CAAC;IAED,OAAO,IAAI,CAAA;AACb,CAAC,CAAA"}
@@ -114,6 +114,8 @@ export declare class HyperliquidWsProvider extends WsProviderBase<object> {
114
114
  private handleActiveAssetCtx;
115
115
  private handleActiveSpotAssetCtx;
116
116
  /** Latest mid per `Market.id` across asset-context and fast feeds. */
117
+ /** Latest mid per `Market.id` across asset-context and fast feeds; a mid
118
+ * that does not match the decimal pattern is left out. */
117
119
  private mergedMids;
118
120
  private orderbookReferencePrice;
119
121
  private handleL2Book;
@@ -123,6 +125,7 @@ export declare class HyperliquidWsProvider extends WsProviderBase<object> {
123
125
  private handleCandle;
124
126
  private handleTrades;
125
127
  private handleOrderUpdates;
128
+ private readOrderDetail;
126
129
  private handleUserFills;
127
130
  private handleAllDexsClearinghouseState;
128
131
  /** Whether the mode's collateral lives per-dex, making the perps-only
@@ -1 +1 @@
1
- {"version":3,"file":"HyperliquidWsProvider.d.ts","sourceRoot":"","sources":["../../../src/websocket/HyperliquidWsProvider.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"HyperliquidWsProvider.d.ts","sourceRoot":"","sources":["../../../src/websocket/HyperliquidWsProvider.ts"],"names":[],"mappings":"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"}