@lifi/perps-sdk-provider-hyperliquid 5.1.0 → 6.0.1

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 (263) hide show
  1. package/dist/cjs/HyperliquidProvider.d.ts.map +1 -1
  2. package/dist/cjs/HyperliquidProvider.js +4 -0
  3. package/dist/cjs/HyperliquidProvider.js.map +1 -1
  4. package/dist/cjs/services/getAccount.d.ts.map +1 -1
  5. package/dist/cjs/services/getAccount.js +1 -1
  6. package/dist/cjs/services/getAccount.js.map +1 -1
  7. package/dist/cjs/services/getActivity.d.ts.map +1 -1
  8. package/dist/cjs/services/getActivity.js.map +1 -1
  9. package/dist/cjs/services/getFills.d.ts.map +1 -1
  10. package/dist/cjs/services/getFills.js.map +1 -1
  11. package/dist/cjs/services/getMarketSettings.d.ts +10 -0
  12. package/dist/cjs/services/getMarketSettings.d.ts.map +1 -0
  13. package/dist/cjs/services/getMarketSettings.js +26 -0
  14. package/dist/cjs/services/getMarketSettings.js.map +1 -0
  15. package/dist/cjs/services/getOrders.d.ts.map +1 -1
  16. package/dist/cjs/services/getOrders.js.map +1 -1
  17. package/dist/cjs/services/getPositions.d.ts.map +1 -1
  18. package/dist/cjs/services/getPositions.js +1 -1
  19. package/dist/cjs/services/getPositions.js.map +1 -1
  20. package/dist/cjs/signers/HyperliquidAgentStore.d.ts.map +1 -1
  21. package/dist/cjs/signers/HyperliquidAgentStore.js.map +1 -1
  22. package/dist/cjs/signers/signActions.d.ts.map +1 -1
  23. package/dist/cjs/signers/signActions.js.map +1 -1
  24. package/dist/cjs/types/account.d.ts +11 -0
  25. package/dist/cjs/types/account.d.ts.map +1 -1
  26. package/dist/cjs/types/account.js.map +1 -1
  27. package/dist/cjs/types/action.d.ts.map +1 -1
  28. package/dist/cjs/types/action.js.map +1 -1
  29. package/dist/cjs/types/asset.d.ts +1 -0
  30. package/dist/cjs/types/asset.d.ts.map +1 -1
  31. package/dist/cjs/types/fill.d.ts.map +1 -1
  32. package/dist/cjs/types/ledger.d.ts.map +1 -1
  33. package/dist/cjs/types/ledger.js.map +1 -1
  34. package/dist/cjs/types/order.d.ts.map +1 -1
  35. package/dist/cjs/types/ws.d.ts.map +1 -1
  36. package/dist/cjs/utils/assetId.d.ts.map +1 -1
  37. package/dist/cjs/utils/assetId.js.map +1 -1
  38. package/dist/cjs/utils/assetLogo.d.ts.map +1 -1
  39. package/dist/cjs/utils/assetLogo.js.map +1 -1
  40. package/dist/cjs/utils/decodeFastAssetCtxs.d.ts.map +1 -1
  41. package/dist/cjs/utils/decodeFastAssetCtxs.js.map +1 -1
  42. package/dist/cjs/utils/index.d.ts +1 -0
  43. package/dist/cjs/utils/index.d.ts.map +1 -1
  44. package/dist/cjs/utils/index.js +3 -1
  45. package/dist/cjs/utils/index.js.map +1 -1
  46. package/dist/cjs/utils/infoClient.d.ts.map +1 -1
  47. package/dist/cjs/utils/infoClient.js.map +1 -1
  48. package/dist/cjs/utils/mapActivity.d.ts.map +1 -1
  49. package/dist/cjs/utils/mapActivity.js +13 -10
  50. package/dist/cjs/utils/mapActivity.js.map +1 -1
  51. package/dist/cjs/utils/mapFill.d.ts.map +1 -1
  52. package/dist/cjs/utils/mapFill.js.map +1 -1
  53. package/dist/cjs/utils/mapMarket.d.ts.map +1 -1
  54. package/dist/cjs/utils/mapMarket.js +6 -1
  55. package/dist/cjs/utils/mapMarket.js.map +1 -1
  56. package/dist/cjs/utils/mapOrder.d.ts.map +1 -1
  57. package/dist/cjs/utils/mapOrder.js.map +1 -1
  58. package/dist/cjs/utils/mapPosition.d.ts +2 -2
  59. package/dist/cjs/utils/mapPosition.d.ts.map +1 -1
  60. package/dist/cjs/utils/mapPosition.js +17 -10
  61. package/dist/cjs/utils/mapPosition.js.map +1 -1
  62. package/dist/cjs/utils/spotBalance.d.ts.map +1 -1
  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.map +1 -1
  66. package/dist/cjs/utils/transferMargin.d.ts +3 -0
  67. package/dist/cjs/utils/transferMargin.d.ts.map +1 -0
  68. package/dist/cjs/utils/transferMargin.js +40 -0
  69. package/dist/cjs/utils/transferMargin.js.map +1 -0
  70. package/dist/cjs/websocket/HyperliquidWsProvider.d.ts.map +1 -1
  71. package/dist/cjs/websocket/HyperliquidWsProvider.js +3 -1
  72. package/dist/cjs/websocket/HyperliquidWsProvider.js.map +1 -1
  73. package/dist/esm/HyperliquidProvider.d.ts +14 -4
  74. package/dist/esm/HyperliquidProvider.d.ts.map +1 -1
  75. package/dist/esm/HyperliquidProvider.js +4 -0
  76. package/dist/esm/HyperliquidProvider.js.map +1 -1
  77. package/dist/esm/services/getAccount.d.ts.map +1 -1
  78. package/dist/esm/services/getAccount.js +2 -2
  79. package/dist/esm/services/getAccount.js.map +1 -1
  80. package/dist/esm/services/getActivity.d.ts +5 -1
  81. package/dist/esm/services/getActivity.d.ts.map +1 -1
  82. package/dist/esm/services/getActivity.js.map +1 -1
  83. package/dist/esm/services/getFills.d.ts +4 -3
  84. package/dist/esm/services/getFills.d.ts.map +1 -1
  85. package/dist/esm/services/getFills.js.map +1 -1
  86. package/dist/esm/services/getMarketSettings.d.ts +21 -0
  87. package/dist/esm/services/getMarketSettings.d.ts.map +1 -0
  88. package/dist/esm/services/getMarketSettings.js +29 -0
  89. package/dist/esm/services/getMarketSettings.js.map +1 -0
  90. package/dist/esm/services/getOrders.d.ts +2 -1
  91. package/dist/esm/services/getOrders.d.ts.map +1 -1
  92. package/dist/esm/services/getOrders.js.map +1 -1
  93. package/dist/esm/services/getPositions.d.ts +2 -2
  94. package/dist/esm/services/getPositions.d.ts.map +1 -1
  95. package/dist/esm/services/getPositions.js +2 -2
  96. package/dist/esm/services/getPositions.js.map +1 -1
  97. package/dist/esm/signers/HyperliquidAgentStore.d.ts +3 -3
  98. package/dist/esm/signers/HyperliquidAgentStore.d.ts.map +1 -1
  99. package/dist/esm/signers/HyperliquidAgentStore.js +1 -0
  100. package/dist/esm/signers/HyperliquidAgentStore.js.map +1 -1
  101. package/dist/esm/signers/signActions.d.ts +8 -6
  102. package/dist/esm/signers/signActions.d.ts.map +1 -1
  103. package/dist/esm/signers/signActions.js +8 -6
  104. package/dist/esm/signers/signActions.js.map +1 -1
  105. package/dist/esm/types/account.d.ts +68 -8
  106. package/dist/esm/types/account.d.ts.map +1 -1
  107. package/dist/esm/types/account.js.map +1 -1
  108. package/dist/esm/types/action.d.ts +28 -10
  109. package/dist/esm/types/action.d.ts.map +1 -1
  110. package/dist/esm/types/action.js +7 -7
  111. package/dist/esm/types/action.js.map +1 -1
  112. package/dist/esm/types/asset.d.ts +62 -15
  113. package/dist/esm/types/asset.d.ts.map +1 -1
  114. package/dist/esm/types/fill.d.ts +9 -3
  115. package/dist/esm/types/fill.d.ts.map +1 -1
  116. package/dist/esm/types/ledger.d.ts +24 -6
  117. package/dist/esm/types/ledger.d.ts.map +1 -1
  118. package/dist/esm/types/ledger.js.map +1 -1
  119. package/dist/esm/types/order.d.ts +19 -5
  120. package/dist/esm/types/order.d.ts.map +1 -1
  121. package/dist/esm/types/ws.d.ts +43 -14
  122. package/dist/esm/types/ws.d.ts.map +1 -1
  123. package/dist/esm/utils/assetId.d.ts +7 -7
  124. package/dist/esm/utils/assetId.d.ts.map +1 -1
  125. package/dist/esm/utils/assetId.js +7 -7
  126. package/dist/esm/utils/assetId.js.map +1 -1
  127. package/dist/esm/utils/assetLogo.d.ts +15 -13
  128. package/dist/esm/utils/assetLogo.d.ts.map +1 -1
  129. package/dist/esm/utils/assetLogo.js +15 -13
  130. package/dist/esm/utils/assetLogo.js.map +1 -1
  131. package/dist/esm/utils/decodeFastAssetCtxs.d.ts +7 -1
  132. package/dist/esm/utils/decodeFastAssetCtxs.d.ts.map +1 -1
  133. package/dist/esm/utils/decodeFastAssetCtxs.js +7 -1
  134. package/dist/esm/utils/decodeFastAssetCtxs.js.map +1 -1
  135. package/dist/esm/utils/index.d.ts +1 -0
  136. package/dist/esm/utils/index.d.ts.map +1 -1
  137. package/dist/esm/utils/index.js +1 -0
  138. package/dist/esm/utils/index.js.map +1 -1
  139. package/dist/esm/utils/infoClient.d.ts +6 -1
  140. package/dist/esm/utils/infoClient.d.ts.map +1 -1
  141. package/dist/esm/utils/infoClient.js.map +1 -1
  142. package/dist/esm/utils/mapActivity.d.ts +10 -1
  143. package/dist/esm/utils/mapActivity.d.ts.map +1 -1
  144. package/dist/esm/utils/mapActivity.js +23 -11
  145. package/dist/esm/utils/mapActivity.js.map +1 -1
  146. package/dist/esm/utils/mapFill.d.ts +1 -0
  147. package/dist/esm/utils/mapFill.d.ts.map +1 -1
  148. package/dist/esm/utils/mapFill.js +1 -0
  149. package/dist/esm/utils/mapFill.js.map +1 -1
  150. package/dist/esm/utils/mapMarket.d.ts.map +1 -1
  151. package/dist/esm/utils/mapMarket.js +8 -1
  152. package/dist/esm/utils/mapMarket.js.map +1 -1
  153. package/dist/esm/utils/mapOrder.d.ts +15 -4
  154. package/dist/esm/utils/mapOrder.d.ts.map +1 -1
  155. package/dist/esm/utils/mapOrder.js +15 -4
  156. package/dist/esm/utils/mapOrder.js.map +1 -1
  157. package/dist/esm/utils/mapPosition.d.ts +8 -3
  158. package/dist/esm/utils/mapPosition.d.ts.map +1 -1
  159. package/dist/esm/utils/mapPosition.js +20 -11
  160. package/dist/esm/utils/mapPosition.js.map +1 -1
  161. package/dist/esm/utils/spotBalance.d.ts +9 -10
  162. package/dist/esm/utils/spotBalance.d.ts.map +1 -1
  163. package/dist/esm/utils/spotBalance.js +9 -10
  164. package/dist/esm/utils/spotBalance.js.map +1 -1
  165. package/dist/esm/utils/spotCollateral.d.ts +9 -5
  166. package/dist/esm/utils/spotCollateral.d.ts.map +1 -1
  167. package/dist/esm/utils/spotCollateral.js +4 -4
  168. package/dist/esm/utils/spotCollateral.js.map +1 -1
  169. package/dist/esm/utils/transferMargin.d.ts +14 -0
  170. package/dist/esm/utils/transferMargin.d.ts.map +1 -0
  171. package/dist/esm/utils/transferMargin.js +45 -0
  172. package/dist/esm/utils/transferMargin.js.map +1 -0
  173. package/dist/esm/websocket/HyperliquidWsProvider.d.ts.map +1 -1
  174. package/dist/esm/websocket/HyperliquidWsProvider.js +4 -2
  175. package/dist/esm/websocket/HyperliquidWsProvider.js.map +1 -1
  176. package/dist/types/HyperliquidProvider.d.ts +14 -4
  177. package/dist/types/HyperliquidProvider.d.ts.map +1 -1
  178. package/dist/types/services/getAccount.d.ts.map +1 -1
  179. package/dist/types/services/getActivity.d.ts +5 -1
  180. package/dist/types/services/getActivity.d.ts.map +1 -1
  181. package/dist/types/services/getFills.d.ts +4 -3
  182. package/dist/types/services/getFills.d.ts.map +1 -1
  183. package/dist/types/services/getMarketSettings.d.ts +21 -0
  184. package/dist/types/services/getMarketSettings.d.ts.map +1 -0
  185. package/dist/types/services/getOrders.d.ts +2 -1
  186. package/dist/types/services/getOrders.d.ts.map +1 -1
  187. package/dist/types/services/getPositions.d.ts +2 -2
  188. package/dist/types/services/getPositions.d.ts.map +1 -1
  189. package/dist/types/signers/HyperliquidAgentStore.d.ts +3 -3
  190. package/dist/types/signers/HyperliquidAgentStore.d.ts.map +1 -1
  191. package/dist/types/signers/signActions.d.ts +8 -6
  192. package/dist/types/signers/signActions.d.ts.map +1 -1
  193. package/dist/types/types/account.d.ts +68 -8
  194. package/dist/types/types/account.d.ts.map +1 -1
  195. package/dist/types/types/action.d.ts +28 -10
  196. package/dist/types/types/action.d.ts.map +1 -1
  197. package/dist/types/types/asset.d.ts +62 -15
  198. package/dist/types/types/asset.d.ts.map +1 -1
  199. package/dist/types/types/fill.d.ts +9 -3
  200. package/dist/types/types/fill.d.ts.map +1 -1
  201. package/dist/types/types/ledger.d.ts +24 -6
  202. package/dist/types/types/ledger.d.ts.map +1 -1
  203. package/dist/types/types/order.d.ts +19 -5
  204. package/dist/types/types/order.d.ts.map +1 -1
  205. package/dist/types/types/ws.d.ts +43 -14
  206. package/dist/types/types/ws.d.ts.map +1 -1
  207. package/dist/types/utils/assetId.d.ts +7 -7
  208. package/dist/types/utils/assetId.d.ts.map +1 -1
  209. package/dist/types/utils/assetLogo.d.ts +15 -13
  210. package/dist/types/utils/assetLogo.d.ts.map +1 -1
  211. package/dist/types/utils/decodeFastAssetCtxs.d.ts +7 -1
  212. package/dist/types/utils/decodeFastAssetCtxs.d.ts.map +1 -1
  213. package/dist/types/utils/index.d.ts +1 -0
  214. package/dist/types/utils/index.d.ts.map +1 -1
  215. package/dist/types/utils/infoClient.d.ts +6 -1
  216. package/dist/types/utils/infoClient.d.ts.map +1 -1
  217. package/dist/types/utils/mapActivity.d.ts +10 -1
  218. package/dist/types/utils/mapActivity.d.ts.map +1 -1
  219. package/dist/types/utils/mapFill.d.ts +1 -0
  220. package/dist/types/utils/mapFill.d.ts.map +1 -1
  221. package/dist/types/utils/mapMarket.d.ts.map +1 -1
  222. package/dist/types/utils/mapOrder.d.ts +15 -4
  223. package/dist/types/utils/mapOrder.d.ts.map +1 -1
  224. package/dist/types/utils/mapPosition.d.ts +8 -3
  225. package/dist/types/utils/mapPosition.d.ts.map +1 -1
  226. package/dist/types/utils/spotBalance.d.ts +9 -10
  227. package/dist/types/utils/spotBalance.d.ts.map +1 -1
  228. package/dist/types/utils/spotCollateral.d.ts +9 -5
  229. package/dist/types/utils/spotCollateral.d.ts.map +1 -1
  230. package/dist/types/utils/transferMargin.d.ts +14 -0
  231. package/dist/types/utils/transferMargin.d.ts.map +1 -0
  232. package/dist/types/websocket/HyperliquidWsProvider.d.ts.map +1 -1
  233. package/package.json +3 -3
  234. package/src/HyperliquidProvider.ts +30 -4
  235. package/src/services/getAccount.ts +7 -1
  236. package/src/services/getActivity.ts +5 -1
  237. package/src/services/getFills.ts +4 -3
  238. package/src/services/getMarketSettings.ts +56 -0
  239. package/src/services/getOrders.ts +2 -1
  240. package/src/services/getPositions.ts +13 -4
  241. package/src/signers/HyperliquidAgentStore.ts +3 -3
  242. package/src/signers/signActions.ts +8 -6
  243. package/src/types/account.ts +66 -8
  244. package/src/types/action.ts +28 -10
  245. package/src/types/asset.ts +62 -15
  246. package/src/types/fill.ts +9 -3
  247. package/src/types/ledger.ts +24 -6
  248. package/src/types/order.ts +19 -5
  249. package/src/types/ws.ts +43 -14
  250. package/src/utils/assetId.ts +7 -7
  251. package/src/utils/assetLogo.ts +15 -13
  252. package/src/utils/decodeFastAssetCtxs.ts +7 -1
  253. package/src/utils/index.ts +1 -0
  254. package/src/utils/infoClient.ts +6 -1
  255. package/src/utils/mapActivity.ts +23 -11
  256. package/src/utils/mapFill.ts +1 -0
  257. package/src/utils/mapMarket.ts +10 -1
  258. package/src/utils/mapOrder.ts +15 -4
  259. package/src/utils/mapPosition.ts +24 -15
  260. package/src/utils/spotBalance.ts +9 -10
  261. package/src/utils/spotCollateral.ts +9 -5
  262. package/src/utils/transferMargin.ts +65 -0
  263. package/src/websocket/HyperliquidWsProvider.ts +4 -1
@@ -0,0 +1,65 @@
1
+ import { PerpsError } from '@lifi/perps-sdk'
2
+ import {
3
+ PerpsErrorCode,
4
+ type Position,
5
+ type PositionMarginConstraints,
6
+ positionSupportsMarginAdjustment,
7
+ } from '@lifi/perps-types'
8
+ import Big from 'big.js'
9
+
10
+ const NOTIONAL_FLOOR_RATIO = '0.1'
11
+ const AMOUNT_INCREMENT = '0.000001'
12
+
13
+ function positivePositionAmount(value: string, field: string): Big {
14
+ let amount: Big
15
+ try {
16
+ amount = new Big(value)
17
+ } catch {
18
+ throw new PerpsError(
19
+ PerpsErrorCode.ValidationError,
20
+ `Invalid decimal string on Position.${field}: '${value}'`
21
+ )
22
+ }
23
+ if (amount.lte(0)) {
24
+ throw new PerpsError(
25
+ PerpsErrorCode.ValidationError,
26
+ `Position.${field} must be greater than zero.`
27
+ )
28
+ }
29
+ return amount
30
+ }
31
+
32
+ /**
33
+ * Hyperliquid's exact documented transfer-margin requirement:
34
+ * `max(initial_margin_required, 0.1 * total_position_value)`.
35
+ *
36
+ * Strict-isolated markets still return constraints because margin can be
37
+ * added; their market capability prevents removal. Cross positions and
38
+ * markets without individual margin adjustment return `undefined`.
39
+ *
40
+ * @see https://hyperliquid.gitbook.io/hyperliquid-docs/trading/margining
41
+ * @public
42
+ */
43
+ export function positionMarginConstraints(
44
+ position: Position
45
+ ): PositionMarginConstraints | undefined {
46
+ if (!positionSupportsMarginAdjustment(position)) {
47
+ return undefined
48
+ }
49
+ const initialMargin = positivePositionAmount(
50
+ position.initialMarginRequirement,
51
+ 'initialMarginRequirement'
52
+ )
53
+ const notional = positivePositionAmount(position.size, 'size').times(
54
+ positivePositionAmount(position.markPrice, 'markPrice')
55
+ )
56
+ const notionalFloor = notional.times(NOTIONAL_FLOOR_RATIO)
57
+ const minimumMargin = initialMargin.gt(notionalFloor)
58
+ ? initialMargin
59
+ : notionalFloor
60
+
61
+ return {
62
+ minimumMarginRequirement: minimumMargin.toFixed(),
63
+ amountIncrement: AMOUNT_INCREMENT,
64
+ }
65
+ }
@@ -10,6 +10,7 @@ import {
10
10
  resolveSubscribeQuote,
11
11
  type SubscriptionListener,
12
12
  summarizeAccount,
13
+ toPerpsMarketDisplay,
13
14
  WsProviderBase,
14
15
  type WsProviderFactory,
15
16
  type WsStatusListener,
@@ -1060,7 +1061,9 @@ export class HyperliquidWsProvider extends WsProviderBase<object> {
1060
1061
  return []
1061
1062
  }
1062
1063
  const market = this.registry?.get(ap.position.coin)
1063
- return market ? [mapPosition(ap as HlAssetPosition, market)] : []
1064
+ return market
1065
+ ? [mapPosition(ap as HlAssetPosition, toPerpsMarketDisplay(market))]
1066
+ : []
1064
1067
  })
1065
1068
  )
1066
1069
  this.emit(`positions:${data.user.toLowerCase()}`, {