@lifi/perps-sdk-provider-hyperliquid 21.0.0 → 22.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 (104) hide show
  1. package/README.md +15 -0
  2. package/dist/cjs/services/getAccount.d.ts.map +1 -1
  3. package/dist/cjs/services/getAccount.js +3 -1
  4. package/dist/cjs/services/getAccount.js.map +1 -1
  5. package/dist/cjs/services/getAccountExists.d.ts +3 -1
  6. package/dist/cjs/services/getAccountExists.d.ts.map +1 -1
  7. package/dist/cjs/services/getAccountExists.js +27 -6
  8. package/dist/cjs/services/getAccountExists.js.map +1 -1
  9. package/dist/cjs/services/getActivity.d.ts.map +1 -1
  10. package/dist/cjs/services/getActivity.js +3 -1
  11. package/dist/cjs/services/getActivity.js.map +1 -1
  12. package/dist/cjs/services/getAvailableToTrade.d.ts.map +1 -1
  13. package/dist/cjs/services/getAvailableToTrade.js +3 -0
  14. package/dist/cjs/services/getAvailableToTrade.js.map +1 -1
  15. package/dist/cjs/services/getFills.d.ts.map +1 -1
  16. package/dist/cjs/services/getFills.js +3 -1
  17. package/dist/cjs/services/getFills.js.map +1 -1
  18. package/dist/cjs/services/getMarketSettings.d.ts.map +1 -1
  19. package/dist/cjs/services/getMarketSettings.js +3 -0
  20. package/dist/cjs/services/getMarketSettings.js.map +1 -1
  21. package/dist/cjs/services/getOrder.d.ts.map +1 -1
  22. package/dist/cjs/services/getOrder.js +2 -0
  23. package/dist/cjs/services/getOrder.js.map +1 -1
  24. package/dist/cjs/services/getOrders.d.ts.map +1 -1
  25. package/dist/cjs/services/getOrders.js +3 -1
  26. package/dist/cjs/services/getOrders.js.map +1 -1
  27. package/dist/cjs/services/getPortfolioHistory.d.ts.map +1 -1
  28. package/dist/cjs/services/getPortfolioHistory.js +2 -0
  29. package/dist/cjs/services/getPortfolioHistory.js.map +1 -1
  30. package/dist/cjs/services/getPositions.d.ts.map +1 -1
  31. package/dist/cjs/services/getPositions.js +3 -1
  32. package/dist/cjs/services/getPositions.js.map +1 -1
  33. package/dist/cjs/services/getWithdrawableBalances.d.ts.map +1 -1
  34. package/dist/cjs/services/getWithdrawableBalances.js +2 -0
  35. package/dist/cjs/services/getWithdrawableBalances.js.map +1 -1
  36. package/dist/cjs/websocket/HyperliquidWsProvider.d.ts +2 -0
  37. package/dist/cjs/websocket/HyperliquidWsProvider.d.ts.map +1 -1
  38. package/dist/cjs/websocket/HyperliquidWsProvider.js +32 -6
  39. package/dist/cjs/websocket/HyperliquidWsProvider.js.map +1 -1
  40. package/dist/esm/services/getAccount.d.ts.map +1 -1
  41. package/dist/esm/services/getAccount.js +3 -1
  42. package/dist/esm/services/getAccount.js.map +1 -1
  43. package/dist/esm/services/getAccountExists.d.ts +3 -1
  44. package/dist/esm/services/getAccountExists.d.ts.map +1 -1
  45. package/dist/esm/services/getAccountExists.js +29 -9
  46. package/dist/esm/services/getAccountExists.js.map +1 -1
  47. package/dist/esm/services/getActivity.d.ts.map +1 -1
  48. package/dist/esm/services/getActivity.js +3 -1
  49. package/dist/esm/services/getActivity.js.map +1 -1
  50. package/dist/esm/services/getAvailableToTrade.d.ts.map +1 -1
  51. package/dist/esm/services/getAvailableToTrade.js +3 -0
  52. package/dist/esm/services/getAvailableToTrade.js.map +1 -1
  53. package/dist/esm/services/getFills.d.ts.map +1 -1
  54. package/dist/esm/services/getFills.js +3 -1
  55. package/dist/esm/services/getFills.js.map +1 -1
  56. package/dist/esm/services/getMarketSettings.d.ts.map +1 -1
  57. package/dist/esm/services/getMarketSettings.js +3 -0
  58. package/dist/esm/services/getMarketSettings.js.map +1 -1
  59. package/dist/esm/services/getOrder.d.ts.map +1 -1
  60. package/dist/esm/services/getOrder.js +2 -0
  61. package/dist/esm/services/getOrder.js.map +1 -1
  62. package/dist/esm/services/getOrders.d.ts.map +1 -1
  63. package/dist/esm/services/getOrders.js +3 -1
  64. package/dist/esm/services/getOrders.js.map +1 -1
  65. package/dist/esm/services/getPortfolioHistory.d.ts.map +1 -1
  66. package/dist/esm/services/getPortfolioHistory.js +2 -0
  67. package/dist/esm/services/getPortfolioHistory.js.map +1 -1
  68. package/dist/esm/services/getPositions.d.ts.map +1 -1
  69. package/dist/esm/services/getPositions.js +3 -1
  70. package/dist/esm/services/getPositions.js.map +1 -1
  71. package/dist/esm/services/getWithdrawableBalances.d.ts.map +1 -1
  72. package/dist/esm/services/getWithdrawableBalances.js +2 -0
  73. package/dist/esm/services/getWithdrawableBalances.js.map +1 -1
  74. package/dist/esm/websocket/HyperliquidWsProvider.d.ts +2 -0
  75. package/dist/esm/websocket/HyperliquidWsProvider.d.ts.map +1 -1
  76. package/dist/esm/websocket/HyperliquidWsProvider.js +32 -8
  77. package/dist/esm/websocket/HyperliquidWsProvider.js.map +1 -1
  78. package/dist/types/services/getAccount.d.ts.map +1 -1
  79. package/dist/types/services/getAccountExists.d.ts +3 -1
  80. package/dist/types/services/getAccountExists.d.ts.map +1 -1
  81. package/dist/types/services/getActivity.d.ts.map +1 -1
  82. package/dist/types/services/getAvailableToTrade.d.ts.map +1 -1
  83. package/dist/types/services/getFills.d.ts.map +1 -1
  84. package/dist/types/services/getMarketSettings.d.ts.map +1 -1
  85. package/dist/types/services/getOrder.d.ts.map +1 -1
  86. package/dist/types/services/getOrders.d.ts.map +1 -1
  87. package/dist/types/services/getPortfolioHistory.d.ts.map +1 -1
  88. package/dist/types/services/getPositions.d.ts.map +1 -1
  89. package/dist/types/services/getWithdrawableBalances.d.ts.map +1 -1
  90. package/dist/types/websocket/HyperliquidWsProvider.d.ts +2 -0
  91. package/dist/types/websocket/HyperliquidWsProvider.d.ts.map +1 -1
  92. package/package.json +2 -2
  93. package/src/services/getAccount.ts +3 -1
  94. package/src/services/getAccountExists.ts +55 -14
  95. package/src/services/getActivity.ts +3 -1
  96. package/src/services/getAvailableToTrade.ts +7 -0
  97. package/src/services/getFills.ts +3 -1
  98. package/src/services/getMarketSettings.ts +7 -0
  99. package/src/services/getOrder.ts +2 -0
  100. package/src/services/getOrders.ts +3 -1
  101. package/src/services/getPortfolioHistory.ts +2 -0
  102. package/src/services/getPositions.ts +3 -1
  103. package/src/services/getWithdrawableBalances.ts +2 -0
  104. package/src/websocket/HyperliquidWsProvider.ts +41 -11
@@ -1 +1 @@
1
- {"version":3,"file":"getAccountExists.d.ts","sourceRoot":"","sources":["../../../src/services/getAccountExists.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAA;AACxD,OAAO,EAAE,KAAK,OAAO,EAAe,MAAM,MAAM,CAAA;AAChD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAA;AAIvD;;;;GAIG;AACH,MAAM,WAAW,sBAAsB;IACrC,OAAO,EAAE,OAAO,CAAA;CACjB;AAED;;;;;;;;GAQG;AACH,eAAO,MAAM,gBAAgB,GAC3B,oBAAoB,kBAAkB,EACtC,QAAQ,sBAAsB,EAC9B,UAAU,iBAAiB,KAC1B,OAAO,CAAC,OAAO,CAWjB,CAAA"}
1
+ {"version":3,"file":"getAccountExists.d.ts","sourceRoot":"","sources":["../../../src/services/getAccountExists.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,KAAK,iBAAiB,EAAE,MAAM,iBAAiB,CAAA;AAEpE,OAAO,EAAE,KAAK,OAAO,EAAe,MAAM,MAAM,CAAA;AAEhD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAA;AACvD,OAAO,EAEL,KAAK,kBAAkB,EAExB,MAAM,wBAAwB,CAAA;AAE/B;;;;GAIG;AACH,MAAM,WAAW,sBAAsB;IACrC,OAAO,EAAE,OAAO,CAAA;CACjB;AAgCD;;;;;;;;GAQG;AACH,eAAO,MAAM,gBAAgB,GAC3B,oBAAoB,kBAAkB,EACtC,QAAQ,sBAAsB,EAC9B,UAAU,iBAAiB,KAC1B,OAAO,CAAC,OAAO,CACyD,CAAA;AAE3E,wBAAsB,oBAAoB,CACxC,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,OAAO,EAChB,OAAO,CAAC,EAAE,kBAAkB,GAC3B,OAAO,CAAC,IAAI,CAAC,CAUf"}
@@ -1 +1 @@
1
- {"version":3,"file":"getActivity.d.ts","sourceRoot":"","sources":["../../../src/services/getActivity.ts"],"names":[],"mappings":"AAAA,OAAO,EAKL,KAAK,iBAAiB,EACvB,MAAM,iBAAiB,CAAA;AACxB,OAAO,KAAK,EACV,kBAAkB,EAInB,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EAAE,YAAY,EAAkB,MAAM,mBAAmB,CAAA;AAChE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAA;AAEnC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAA;AA6BvD;;;;GAIG;AACH,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,OAAO,CAAA;IAChB,kEAAkE;IAClE,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,yEAAyE;IACzE,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,yDAAyD;IACzD,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,yDAAyD;IACzD,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,sEAAsE;IACtE,IAAI,CAAC,EAAE,YAAY,EAAE,CAAA;CACtB;AA6KD,6FAA6F;AAC7F,eAAO,MAAM,WAAW,GACtB,oBAAoB,kBAAkB,EACtC,QAAQ,iBAAiB,EACzB,UAAU,iBAAiB,KAC1B,OAAO,CAAC,kBAAkB,CAmD5B,CAAA"}
1
+ {"version":3,"file":"getActivity.d.ts","sourceRoot":"","sources":["../../../src/services/getActivity.ts"],"names":[],"mappings":"AAAA,OAAO,EAKL,KAAK,iBAAiB,EACvB,MAAM,iBAAiB,CAAA;AACxB,OAAO,KAAK,EACV,kBAAkB,EAInB,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EAAE,YAAY,EAAkB,MAAM,mBAAmB,CAAA;AAChE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAA;AAEnC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAA;AA8BvD;;;;GAIG;AACH,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,OAAO,CAAA;IAChB,kEAAkE;IAClE,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,yEAAyE;IACzE,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,yDAAyD;IACzD,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,yDAAyD;IACzD,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,sEAAsE;IACtE,IAAI,CAAC,EAAE,YAAY,EAAE,CAAA;CACtB;AA6KD,6FAA6F;AAC7F,eAAO,MAAM,WAAW,GACtB,oBAAoB,kBAAkB,EACtC,QAAQ,iBAAiB,EACzB,UAAU,iBAAiB,KAC1B,OAAO,CAAC,kBAAkB,CAoD5B,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"getAvailableToTrade.d.ts","sourceRoot":"","sources":["../../../src/services/getAvailableToTrade.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,iBAAiB,EAEvB,MAAM,iBAAiB,CAAA;AACxB,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAA;AAEzD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAA;AAEnC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAA;AAGvD;;;;GAIG;AACH,MAAM,WAAW,yBAAyB;IACxC,OAAO,EAAE,OAAO,CAAA;IAChB,QAAQ,EAAE,MAAM,CAAA;CACjB;AAED;;;;;;;;;;GAUG;AACH,eAAO,MAAM,mBAAmB,GAC9B,SAAS,kBAAkB,EAC3B,QAAQ,yBAAyB,EACjC,UAAU,iBAAiB,KAC1B,OAAO,CAAC,gBAAgB,GAAG,SAAS,CAiCtC,CAAA"}
1
+ {"version":3,"file":"getAvailableToTrade.d.ts","sourceRoot":"","sources":["../../../src/services/getAvailableToTrade.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,iBAAiB,EAEvB,MAAM,iBAAiB,CAAA;AACxB,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAA;AAEzD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAA;AAEnC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAA;AAKvD;;;;GAIG;AACH,MAAM,WAAW,yBAAyB;IACxC,OAAO,EAAE,OAAO,CAAA;IAChB,QAAQ,EAAE,MAAM,CAAA;CACjB;AAED;;;;;;;;;;GAUG;AACH,eAAO,MAAM,mBAAmB,GAC9B,SAAS,kBAAkB,EAC3B,QAAQ,yBAAyB,EACjC,UAAU,iBAAiB,KAC1B,OAAO,CAAC,gBAAgB,GAAG,SAAS,CAsCtC,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"getFills.d.ts","sourceRoot":"","sources":["../../../src/services/getFills.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqB,KAAK,iBAAiB,EAAE,MAAM,iBAAiB,CAAA;AAC3E,OAAO,KAAK,EAAQ,aAAa,EAAE,MAAM,mBAAmB,CAAA;AAC5D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAA;AAEnC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAA;AAMvD;;;;GAIG;AACH,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,OAAO,CAAA;IAChB,kEAAkE;IAClE,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,yEAAyE;IACzE,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,wEAAwE;IACxE,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,wEAAwE;IACxE,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAED,4FAA4F;AAC5F,eAAO,MAAM,QAAQ,GACnB,oBAAoB,kBAAkB,EACtC,QAAQ,cAAc,EACtB,UAAU,iBAAiB,KAC1B,OAAO,CAAC,aAAa,CA8CvB,CAAA"}
1
+ {"version":3,"file":"getFills.d.ts","sourceRoot":"","sources":["../../../src/services/getFills.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqB,KAAK,iBAAiB,EAAE,MAAM,iBAAiB,CAAA;AAC3E,OAAO,KAAK,EAAQ,aAAa,EAAE,MAAM,mBAAmB,CAAA;AAC5D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAA;AAEnC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAA;AAOvD;;;;GAIG;AACH,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,OAAO,CAAA;IAChB,kEAAkE;IAClE,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,yEAAyE;IACzE,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,wEAAwE;IACxE,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,wEAAwE;IACxE,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAED,4FAA4F;AAC5F,eAAO,MAAM,QAAQ,GACnB,oBAAoB,kBAAkB,EACtC,QAAQ,cAAc,EACtB,UAAU,iBAAiB,KAC1B,OAAO,CAAC,aAAa,CA+CvB,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"getMarketSettings.d.ts","sourceRoot":"","sources":["../../../src/services/getMarketSettings.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,KAAK,iBAAiB,EAAE,MAAM,iBAAiB,CAAA;AACpE,OAAO,EAEL,KAAK,SAAS,EACd,KAAK,cAAc,EAEpB,MAAM,mBAAmB,CAAA;AAC1B,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAA;AAEnC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAA;AAGvD;;;;GAIG;AACH,MAAM,WAAW,uBAAuB;IACtC,OAAO,EAAE,OAAO,CAAA;IAChB,MAAM,EAAE,SAAS,CAAA;CAClB;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,iBAAiB,GAC5B,SAAS,kBAAkB,EAC3B,QAAQ,uBAAuB,EAC/B,UAAU,iBAAiB,KAC1B,OAAO,CAAC,cAAc,CA6BxB,CAAA"}
1
+ {"version":3,"file":"getMarketSettings.d.ts","sourceRoot":"","sources":["../../../src/services/getMarketSettings.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,KAAK,iBAAiB,EAAE,MAAM,iBAAiB,CAAA;AACpE,OAAO,EAEL,KAAK,SAAS,EACd,KAAK,cAAc,EAEpB,MAAM,mBAAmB,CAAA;AAC1B,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAA;AAEnC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAA;AAKvD;;;;GAIG;AACH,MAAM,WAAW,uBAAuB;IACtC,OAAO,EAAE,OAAO,CAAA;IAChB,MAAM,EAAE,SAAS,CAAA;CAClB;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,iBAAiB,GAC5B,SAAS,kBAAkB,EAC3B,QAAQ,uBAAuB,EAC/B,UAAU,iBAAiB,KAC1B,OAAO,CAAC,cAAc,CAkCxB,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"getOrder.d.ts","sourceRoot":"","sources":["../../../src/services/getOrder.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,sBAAsB,EAC3B,KAAK,iBAAiB,EACvB,MAAM,iBAAiB,CAAA;AACxB,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAA;AAG9C,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAA;AASvD;;;;GAIG;AACH,MAAM,MAAM,cAAc,GAAG,sBAAsB,CAAA;AAEnD;;;;;GAKG;AACH,eAAO,MAAM,QAAQ,GACnB,oBAAoB,kBAAkB,EACtC,QAAQ,cAAc,EACtB,UAAU,iBAAiB,KAC1B,OAAO,CAAC,KAAK,CAwDf,CAAA"}
1
+ {"version":3,"file":"getOrder.d.ts","sourceRoot":"","sources":["../../../src/services/getOrder.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,sBAAsB,EAC3B,KAAK,iBAAiB,EACvB,MAAM,iBAAiB,CAAA;AACxB,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAA;AAG9C,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAA;AAUvD;;;;GAIG;AACH,MAAM,MAAM,cAAc,GAAG,sBAAsB,CAAA;AAEnD;;;;;GAKG;AACH,eAAO,MAAM,QAAQ,GACnB,oBAAoB,kBAAkB,EACtC,QAAQ,cAAc,EACtB,UAAU,iBAAiB,KAC1B,OAAO,CAAC,KAAK,CAyDf,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"getOrders.d.ts","sourceRoot":"","sources":["../../../src/services/getOrders.ts"],"names":[],"mappings":"AAAA,OAAO,EAOL,KAAK,uBAAuB,EAC5B,KAAK,iBAAiB,EACvB,MAAM,iBAAiB,CAAA;AACxB,OAAO,KAAK,EAAwB,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAE7E,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAA;AAUvD,kEAAkE;AAClE,MAAM,MAAM,eAAe,GAAG,uBAAuB,CAAA;AAqCrD,iFAAiF;AACjF,eAAO,MAAM,SAAS,GACpB,oBAAoB,kBAAkB,EACtC,QAAQ,eAAe,EACvB,UAAU,iBAAiB,KAC1B,OAAO,CAAC,cAAc,CAoGxB,CAAA"}
1
+ {"version":3,"file":"getOrders.d.ts","sourceRoot":"","sources":["../../../src/services/getOrders.ts"],"names":[],"mappings":"AAAA,OAAO,EAOL,KAAK,uBAAuB,EAC5B,KAAK,iBAAiB,EACvB,MAAM,iBAAiB,CAAA;AACxB,OAAO,KAAK,EAAwB,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAE7E,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAA;AAWvD,kEAAkE;AAClE,MAAM,MAAM,eAAe,GAAG,uBAAuB,CAAA;AAqCrD,iFAAiF;AACjF,eAAO,MAAM,SAAS,GACpB,oBAAoB,kBAAkB,EACtC,QAAQ,eAAe,EACvB,UAAU,iBAAiB,KAC1B,OAAO,CAAC,cAAc,CAqGxB,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"getPortfolioHistory.d.ts","sourceRoot":"","sources":["../../../src/services/getPortfolioHistory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,KAAK,iBAAiB,EAAE,MAAM,iBAAiB,CAAA;AACpE,OAAO,EAGL,KAAK,qBAAqB,EAC1B,KAAK,wBAAwB,EAC9B,MAAM,mBAAmB,CAAA;AAC1B,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAA;AACnC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAA;AAUvD,0DAA0D;AAC1D,MAAM,WAAW,yBAAyB;IACxC,OAAO,EAAE,OAAO,CAAA;IAChB,KAAK,EAAE,qBAAqB,CAAA;CAC7B;AAiDD;;;;;;GAMG;AACH,wBAAsB,mBAAmB,CACvC,GAAG,EAAE,kBAAkB,EACvB,MAAM,EAAE,yBAAyB,EACjC,OAAO,CAAC,EAAE,iBAAiB,GAC1B,OAAO,CAAC,wBAAwB,CAAC,CAmCnC"}
1
+ {"version":3,"file":"getPortfolioHistory.d.ts","sourceRoot":"","sources":["../../../src/services/getPortfolioHistory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAc,KAAK,iBAAiB,EAAE,MAAM,iBAAiB,CAAA;AACpE,OAAO,EAGL,KAAK,qBAAqB,EAC1B,KAAK,wBAAwB,EAC9B,MAAM,mBAAmB,CAAA;AAC1B,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAA;AACnC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAA;AAWvD,0DAA0D;AAC1D,MAAM,WAAW,yBAAyB;IACxC,OAAO,EAAE,OAAO,CAAA;IAChB,KAAK,EAAE,qBAAqB,CAAA;CAC7B;AAiDD;;;;;;GAMG;AACH,wBAAsB,mBAAmB,CACvC,GAAG,EAAE,kBAAkB,EACvB,MAAM,EAAE,yBAAyB,EACjC,OAAO,CAAC,EAAE,iBAAiB,GAC1B,OAAO,CAAC,wBAAwB,CAAC,CAoCnC"}
@@ -1 +1 @@
1
- {"version":3,"file":"getPositions.d.ts","sourceRoot":"","sources":["../../../src/services/getPositions.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,iBAAiB,EAEvB,MAAM,iBAAiB,CAAA;AACxB,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAA;AAC1D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAA;AAEnC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAA;AAUvD;;;;GAIG;AACH,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,OAAO,CAAA;IAChB,+DAA+D;IAC/D,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,8EAA8E;IAC9E,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,YAAY,GACvB,oBAAoB,kBAAkB,EACtC,QAAQ,kBAAkB,EAC1B,UAAU,iBAAiB,KAC1B,OAAO,CAAC,iBAAiB,CA4C3B,CAAA"}
1
+ {"version":3,"file":"getPositions.d.ts","sourceRoot":"","sources":["../../../src/services/getPositions.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,iBAAiB,EAEvB,MAAM,iBAAiB,CAAA;AACxB,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAA;AAC1D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAA;AAEnC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAA;AAWvD;;;;GAIG;AACH,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,OAAO,CAAA;IAChB,+DAA+D;IAC/D,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,8EAA8E;IAC9E,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAED;;;;;;;GAOG;AACH,eAAO,MAAM,YAAY,GACvB,oBAAoB,kBAAkB,EACtC,QAAQ,kBAAkB,EAC1B,UAAU,iBAAiB,KAC1B,OAAO,CAAC,iBAAiB,CA6C3B,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"getWithdrawableBalances.d.ts","sourceRoot":"","sources":["../../../src/services/getWithdrawableBalances.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,KAAK,qCAAqC,EAC1C,KAAK,2BAA2B,EAChC,KAAK,iBAAiB,EACvB,MAAM,iBAAiB,CAAA;AAGxB,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAA;AASvD;;;;GAIG;AACH,MAAM,MAAM,6BAA6B,GACvC,qCAAqC,CAAA;AAEvC;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,uBAAuB,GAClC,oBAAoB,kBAAkB,EACtC,QAAQ,6BAA6B,EACrC,UAAU,iBAAiB,KAC1B,OAAO,CAAC,2BAA2B,EAAE,CAgDvC,CAAA"}
1
+ {"version":3,"file":"getWithdrawableBalances.d.ts","sourceRoot":"","sources":["../../../src/services/getWithdrawableBalances.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,KAAK,qCAAqC,EAC1C,KAAK,2BAA2B,EAChC,KAAK,iBAAiB,EACvB,MAAM,iBAAiB,CAAA;AAGxB,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAA;AAUvD;;;;GAIG;AACH,MAAM,MAAM,6BAA6B,GACvC,qCAAqC,CAAA;AAEvC;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,uBAAuB,GAClC,oBAAoB,kBAAkB,EACtC,QAAQ,6BAA6B,EACrC,UAAU,iBAAiB,KAC1B,OAAO,CAAC,2BAA2B,EAAE,CAiDvC,CAAA"}
@@ -31,6 +31,7 @@ export declare class HyperliquidWsProvider extends WsProviderBase<object> {
31
31
  private readonly clearinghouseRefs;
32
32
  private readonly client;
33
33
  private readonly registry;
34
+ private readonly accountChecksByUser;
34
35
  private readonly abstractionByUser;
35
36
  private readonly summaryUsers;
36
37
  private readonly abstractionReadsByUser;
@@ -54,6 +55,7 @@ export declare class HyperliquidWsProvider extends WsProviderBase<object> {
54
55
  private readonly orderbookDecodeChain;
55
56
  private readonly orderUpdateChain;
56
57
  constructor(wsUrl: string, providerKey: string, client?: PerpsSDKClient);
58
+ private ensureAccountExists;
57
59
  subscribe(sub: Subscription, listener: SubscriptionListener, onStatus?: WsStatusListener): Promise<() => void>;
58
60
  subscribeQuote(params: ProviderGetQuoteParams, onQuote: QuoteListener): Promise<() => void>;
59
61
  protected openChannel(sub: Subscription): Promise<() => void>;
@@ -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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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lifi/perps-sdk-provider-hyperliquid",
3
- "version": "21.0.0",
3
+ "version": "22.0.0",
4
4
  "description": "Hyperliquid provider plugin for @lifi/perps-sdk",
5
5
  "homepage": "https://github.com/lifinance/perps-sdk",
6
6
  "bugs": {
@@ -52,7 +52,7 @@
52
52
  "@lifi/perps-types": "^19.0.0"
53
53
  },
54
54
  "peerDependencies": {
55
- "@lifi/perps-sdk": "^21.0.0"
55
+ "@lifi/perps-sdk": "^21.1.0"
56
56
  },
57
57
  "publishConfig": {
58
58
  "access": "public"
@@ -39,6 +39,7 @@ import {
39
39
  } from '../utils/index.js'
40
40
  import { hlInfoOptions, infoRequest } from '../utils/infoClient.js'
41
41
  import { isOpenAssetPosition, mapPosition } from '../utils/mapPosition.js'
42
+ import { requireAccountExists } from './getAccountExists.js'
42
43
 
43
44
  /**
44
45
  * Parameters for {@link getAccount}.
@@ -149,6 +150,8 @@ export const getAccount = async (
149
150
  params: GetAccountParams,
150
151
  options?: SDKRequestOptions
151
152
  ): Promise<AccountResponse> => {
153
+ const infoOpts = hlInfoOptions(client, options)
154
+ await requireAccountExists(apiUrl, params.address, infoOpts)
152
155
  const registry = getMarketRegistry(client, PROVIDER_KEY)
153
156
  const markets = await registry.sync()
154
157
  const dexNames = perpsDexNames(markets)
@@ -156,7 +159,6 @@ export const getAccount = async (
156
159
  const quoteAssetByCategory = new Map(
157
160
  markets.map((m) => [m.categoryId, m.quoteAsset])
158
161
  )
159
- const infoOpts = hlInfoOptions(client, options)
160
162
 
161
163
  const [
162
164
  feesResult,
@@ -1,8 +1,13 @@
1
- import type { SDKRequestOptions } from '@lifi/perps-sdk'
1
+ import { PerpsError, type SDKRequestOptions } from '@lifi/perps-sdk'
2
+ import { PerpsErrorCode } from '@lifi/perps-types'
2
3
  import { type Address, zeroAddress } from 'viem'
4
+ import { PROVIDER_KEY } from '../constants.js'
3
5
  import type { HyperliquidContext } from '../context.js'
4
- import type { HlPreTransferCheck } from '../types/index.js'
5
- import { hlInfoOptions, infoRequest } from '../utils/infoClient.js'
6
+ import {
7
+ hlInfoOptions,
8
+ type InfoRequestOptions,
9
+ infoRequest,
10
+ } from '../utils/infoClient.js'
6
11
 
7
12
  /**
8
13
  * Parameters for {@link getAccountExists}.
@@ -13,6 +18,36 @@ export interface GetAccountExistsParams {
13
18
  address: Address
14
19
  }
15
20
 
21
+ async function readAccountExists(
22
+ apiUrl: string,
23
+ address: Address,
24
+ options?: InfoRequestOptions
25
+ ): Promise<boolean> {
26
+ const response = await infoRequest<unknown>(
27
+ apiUrl,
28
+ {
29
+ type: 'preTransferCheck',
30
+ user: address,
31
+ source: zeroAddress,
32
+ },
33
+ options
34
+ )
35
+ if (
36
+ typeof response === 'object' &&
37
+ response !== null &&
38
+ 'userExists' in response &&
39
+ typeof response.userExists === 'boolean'
40
+ ) {
41
+ return response.userExists
42
+ }
43
+ const error = new PerpsError(
44
+ PerpsErrorCode.ThirdPartyError,
45
+ 'Hyperliquid preTransferCheck response has no boolean userExists field'
46
+ )
47
+ error.tool = PROVIDER_KEY
48
+ throw error
49
+ }
50
+
16
51
  /**
17
52
  * Resolve whether a Hyperliquid Core account exists for `address` via a
18
53
  * `preTransferCheck` info query. An account exists only after its first
@@ -22,19 +57,25 @@ export interface GetAccountExistsParams {
22
57
  * @throws {PerpsError} On Hyperliquid REST error, network, or parsing failures.
23
58
  * @public
24
59
  */
25
- export const getAccountExists = async (
60
+ export const getAccountExists = (
26
61
  { client, apiUrl }: HyperliquidContext,
27
62
  params: GetAccountExistsParams,
28
63
  options?: SDKRequestOptions
29
- ): Promise<boolean> => {
30
- const { userExists } = await infoRequest<HlPreTransferCheck>(
31
- apiUrl,
32
- {
33
- type: 'preTransferCheck',
34
- user: params.address,
35
- source: zeroAddress,
36
- },
37
- hlInfoOptions(client, options)
64
+ ): Promise<boolean> =>
65
+ readAccountExists(apiUrl, params.address, hlInfoOptions(client, options))
66
+
67
+ export async function requireAccountExists(
68
+ apiUrl: string,
69
+ address: Address,
70
+ options?: InfoRequestOptions
71
+ ): Promise<void> {
72
+ if (await readAccountExists(apiUrl, address, options)) {
73
+ return
74
+ }
75
+ const error = new PerpsError(
76
+ PerpsErrorCode.AccountNotFound,
77
+ `No Hyperliquid account found for address: ${address}`
38
78
  )
39
- return userExists
79
+ error.tool = PROVIDER_KEY
80
+ throw error
40
81
  }
@@ -41,6 +41,7 @@ import {
41
41
  type InfoRequestOptions,
42
42
  infoRequest,
43
43
  } from '../utils/infoClient.js'
44
+ import { requireAccountExists } from './getAccountExists.js'
44
45
  import { getHistoryLimit, historyPage } from './historyPagination.js'
45
46
 
46
47
  /**
@@ -240,6 +241,8 @@ export const getActivity = async (
240
241
  options?: SDKRequestOptions
241
242
  ): Promise<ActivitiesResponse> => {
242
243
  const limit = getHistoryLimit(params.limit)
244
+ const infoOpts = hlInfoOptions(client, options)
245
+ await requireAccountExists(apiUrl, params.address, infoOpts)
243
246
  const registry = getMarketRegistry(client, PROVIDER_KEY)
244
247
  // Only funding and liquidation rows carry a market, so a Ledger-only
245
248
  // request must not pull the market list.
@@ -253,7 +256,6 @@ export const getActivity = async (
253
256
  ) {
254
257
  await assetRegistry.sync()
255
258
  }
256
- const infoOpts = hlInfoOptions(client, options)
257
259
 
258
260
  const needLiquidationFills =
259
261
  !params.type || params.type.includes(ActivityType.LIQUIDATION)
@@ -9,7 +9,9 @@ import { PerpsErrorCode } from '@lifi/perps-types'
9
9
  import type { Address } from 'viem'
10
10
  import { PROVIDER_KEY, SPOT_MARKET_ID } from '../constants.js'
11
11
  import type { HyperliquidContext } from '../context.js'
12
+ import { hlInfoOptions } from '../utils/infoClient.js'
12
13
  import { fetchActiveAssetData } from './activeAssetData.js'
14
+ import { requireAccountExists } from './getAccountExists.js'
13
15
 
14
16
  /**
15
17
  * Parameters for {@link getAvailableToTrade}.
@@ -43,6 +45,11 @@ export const getAvailableToTrade = async (
43
45
  if (market.categoryId === SPOT_MARKET_ID) {
44
46
  return undefined
45
47
  }
48
+ await requireAccountExists(
49
+ context.apiUrl,
50
+ params.address,
51
+ hlInfoOptions(context.client, options)
52
+ )
46
53
  const data = await fetchActiveAssetData(
47
54
  context,
48
55
  params.address,
@@ -6,6 +6,7 @@ import type { HyperliquidContext } from '../context.js'
6
6
  import type { HlUserFills } from '../types/index.js'
7
7
  import { assetIsOutcome, mapFill } from '../utils/index.js'
8
8
  import { hlInfoOptions, infoRequest } from '../utils/infoClient.js'
9
+ import { requireAccountExists } from './getAccountExists.js'
9
10
  import { getHistoryLimit, historyPage } from './historyPagination.js'
10
11
 
11
12
  /**
@@ -32,9 +33,10 @@ export const getFills = async (
32
33
  options?: SDKRequestOptions
33
34
  ): Promise<FillsResponse> => {
34
35
  const limit = getHistoryLimit(params.limit)
36
+ const infoOpts = hlInfoOptions(client, options)
37
+ await requireAccountExists(apiUrl, params.address, infoOpts)
35
38
  const registry = getMarketRegistry(client, PROVIDER_KEY)
36
39
  await registry.sync()
37
- const infoOpts = hlInfoOptions(client, options)
38
40
 
39
41
  let useRecent =
40
42
  params.cursor === undefined &&
@@ -8,7 +8,9 @@ import {
8
8
  import type { Address } from 'viem'
9
9
  import { PROVIDER_KEY, SPOT_MARKET_ID } from '../constants.js'
10
10
  import type { HyperliquidContext } from '../context.js'
11
+ import { hlInfoOptions } from '../utils/infoClient.js'
11
12
  import { fetchActiveAssetData } from './activeAssetData.js'
13
+ import { requireAccountExists } from './getAccountExists.js'
12
14
 
13
15
  /**
14
16
  * Parameters for {@link getMarketSettings}.
@@ -41,6 +43,11 @@ export const getMarketSettings = async (
41
43
  error.tool = PROVIDER_KEY
42
44
  throw error
43
45
  }
46
+ await requireAccountExists(
47
+ context.apiUrl,
48
+ params.address,
49
+ hlInfoOptions(context.client, options)
50
+ )
44
51
  const data = await fetchActiveAssetData(
45
52
  context,
46
53
  params.address,
@@ -15,6 +15,7 @@ import type {
15
15
  import { withExplorerLinks } from '../utils/explorer.js'
16
16
  import { assetIsOutcome, mapOrder } from '../utils/index.js'
17
17
  import { hlInfoOptions, infoRequest } from '../utils/infoClient.js'
18
+ import { requireAccountExists } from './getAccountExists.js'
18
19
 
19
20
  /**
20
21
  * Parameters for {@link getOrder}.
@@ -49,6 +50,7 @@ export const getOrder = async (
49
50
  }
50
51
 
51
52
  const infoOpts = hlInfoOptions(client, options)
53
+ await requireAccountExists(apiUrl, params.address, infoOpts)
52
54
  const status = await infoRequest<HlOrderStatusResponse>(
53
55
  apiUrl,
54
56
  { type: 'orderStatus', user: params.address, oid },
@@ -19,6 +19,7 @@ import type {
19
19
  import { withExplorerLinks } from '../utils/explorer.js'
20
20
  import { assetIsOutcome, mapOrder, perpsDexNames } from '../utils/index.js'
21
21
  import { hlInfoOptions, infoRequest } from '../utils/infoClient.js'
22
+ import { requireAccountExists } from './getAccountExists.js'
22
23
 
23
24
  /** Parameters for a lifecycle-filtered Hyperliquid order read. */
24
25
  export type GetOrdersParams = ProviderGetOrdersParams
@@ -65,6 +66,8 @@ export const getOrders = async (
65
66
  options?: SDKRequestOptions
66
67
  ): Promise<OrdersResponse> => {
67
68
  const statuses = params.statuses ?? [...ACTIVE_ORDER_STATUSES]
69
+ const infoOpts = hlInfoOptions(client, options)
70
+ await requireAccountExists(apiUrl, params.address, infoOpts)
68
71
  if (statuses.length === 0) {
69
72
  return {
70
73
  provider: PROVIDER_KEY,
@@ -74,7 +77,6 @@ export const getOrders = async (
74
77
  }
75
78
  const registry = getMarketRegistry(client, PROVIDER_KEY)
76
79
  const markets = await registry.sync()
77
- const infoOpts = hlInfoOptions(client, options)
78
80
  const active = statuses.some(isActiveOrderStatus)
79
81
  const terminal = statuses.some((status) => !isActiveOrderStatus(status))
80
82
  const [open, historical, twaps] = await Promise.all([
@@ -15,6 +15,7 @@ import type {
15
15
  } from '../types/index.js'
16
16
  import { isUnifiedAbstraction } from '../utils/abstractionMode.js'
17
17
  import { hlInfoOptions, infoRequest } from '../utils/infoClient.js'
18
+ import { requireAccountExists } from './getAccountExists.js'
18
19
 
19
20
  /** Parameters for {@link getPortfolioHistory}. @public */
20
21
  export interface GetPortfolioHistoryParams {
@@ -83,6 +84,7 @@ export async function getPortfolioHistory(
83
84
  ): Promise<PortfolioHistoryResponse> {
84
85
  const { client, apiUrl } = ctx
85
86
  const infoOpts = hlInfoOptions(client, options)
87
+ await requireAccountExists(apiUrl, params.address, infoOpts)
86
88
  const [portfolio, abstraction] = await Promise.all([
87
89
  infoRequest<HlPortfolio>(
88
90
  apiUrl,
@@ -15,6 +15,7 @@ import {
15
15
  perpsDexNames,
16
16
  } from '../utils/index.js'
17
17
  import { hlInfoOptions, infoRequest } from '../utils/infoClient.js'
18
+ import { requireAccountExists } from './getAccountExists.js'
18
19
 
19
20
  /**
20
21
  * Parameters for {@link getPositions}.
@@ -42,9 +43,10 @@ export const getPositions = async (
42
43
  params: GetPositionsParams,
43
44
  options?: SDKRequestOptions
44
45
  ): Promise<PositionsResponse> => {
46
+ const infoOpts = hlInfoOptions(client, options)
47
+ await requireAccountExists(apiUrl, params.address, infoOpts)
45
48
  const registry = getMarketRegistry(client, PROVIDER_KEY)
46
49
  const markets = await registry.sync()
47
- const infoOpts = hlInfoOptions(client, options)
48
50
 
49
51
  const stateResults = await Promise.all(
50
52
  perpsDexNames(markets).map((name) =>
@@ -16,6 +16,7 @@ import type {
16
16
  } from '../types/index.js'
17
17
  import { hlInfoOptions, infoRequest } from '../utils/infoClient.js'
18
18
  import { hyperliquidWithdrawableBalances } from '../utils/withdrawableBalances.js'
19
+ import { requireAccountExists } from './getAccountExists.js'
19
20
 
20
21
  /**
21
22
  * Parameters for {@link getWithdrawableBalances}.
@@ -46,6 +47,7 @@ export const getWithdrawableBalances = async (
46
47
  ): Promise<ProviderWithdrawableBalance[]> => {
47
48
  const registry = getMarketRegistry(client, PROVIDER_KEY)
48
49
  const infoOpts = hlInfoOptions(client, options)
50
+ await requireAccountExists(apiUrl, params.address, infoOpts)
49
51
 
50
52
  const [{ providers }, markets, abstraction, state, spotState] =
51
53
  await Promise.all([
@@ -31,12 +31,13 @@ import type {
31
31
  } from '@lifi/perps-types'
32
32
  import { PerpsErrorCode } from '@lifi/perps-types'
33
33
  import Big from 'big.js'
34
- import { isAddress } from 'viem'
34
+ import { type Address, isAddress } from 'viem'
35
35
  import {
36
36
  DEFAULT_HYPERLIQUID_API_URL,
37
37
  HYPERLIQUID_FEE_TIER_FALLBACK,
38
38
  SPOT_MARKET_ID,
39
39
  } from '../constants.js'
40
+ import { requireAccountExists } from '../services/getAccountExists.js'
40
41
  import type {
41
42
  HlActiveAssetData,
42
43
  HlAssetPosition,
@@ -138,6 +139,7 @@ export class HyperliquidWsProvider extends WsProviderBase<object> {
138
139
  private readonly clearinghouseRefs = new Map<string, number>()
139
140
  private readonly client: PerpsSDKClient | undefined
140
141
  private readonly registry: MarketRegistry | undefined
142
+ private readonly accountChecksByUser = new Map<string, Promise<void>>()
141
143
  // Spot-funded modes need both spot valuation and clearinghouse margin state.
142
144
  private readonly abstractionByUser = new Map<
143
145
  string,
@@ -230,6 +232,26 @@ export class HyperliquidWsProvider extends WsProviderBase<object> {
230
232
  this.orderApiUrl = orderApiUrl.origin
231
233
  }
232
234
 
235
+ private ensureAccountExists(address: Address): Promise<void> {
236
+ const user = normalizeHlAddress(address)
237
+ const existing = this.accountChecksByUser.get(user)
238
+ if (existing !== undefined) {
239
+ return existing
240
+ }
241
+ const check = requireAccountExists(
242
+ this.orderApiUrl,
243
+ address,
244
+ this.client === undefined ? undefined : hlInfoOptions(this.client)
245
+ )
246
+ this.accountChecksByUser.set(user, check)
247
+ void check.catch(() => {
248
+ if (this.accountChecksByUser.get(user) === check) {
249
+ this.accountChecksByUser.delete(user)
250
+ }
251
+ })
252
+ return check
253
+ }
254
+
233
255
  override async subscribe(
234
256
  sub: Subscription,
235
257
  listener: SubscriptionListener,
@@ -279,23 +301,19 @@ export class HyperliquidWsProvider extends WsProviderBase<object> {
279
301
  }
280
302
 
281
303
  protected async openChannel(sub: Subscription): Promise<() => void> {
282
- // Must run synchronously, before any await, so two concurrent opens
283
- // cannot both pass the exclusivity check.
284
- if (sub.channel === 'orderUpdates') {
285
- this.claimOrderUpdatesKey(this.toKey(sub))
286
- }
287
-
288
- await this.registry?.sync()
289
-
304
+ const registry = this.registry
305
+ let marketValidated = false
290
306
  if (
291
- this.registry !== undefined &&
307
+ registry !== undefined &&
292
308
  (sub.channel === 'marketContext' ||
293
309
  sub.channel === 'orderbook' ||
294
310
  sub.channel === 'candle' ||
295
311
  sub.channel === 'trades' ||
296
312
  sub.channel === 'availableToTrade')
297
313
  ) {
298
- const market = this.registry.requireActive(sub.marketId)
314
+ await registry.sync()
315
+ marketValidated = true
316
+ const market = registry.requireActive(sub.marketId)
299
317
  if (
300
318
  sub.channel === 'availableToTrade' &&
301
319
  market.categoryId === SPOT_MARKET_ID
@@ -309,6 +327,18 @@ export class HyperliquidWsProvider extends WsProviderBase<object> {
309
327
  }
310
328
  }
311
329
 
330
+ if ('address' in sub) {
331
+ await this.ensureAccountExists(sub.address)
332
+ }
333
+
334
+ if (sub.channel === 'orderUpdates') {
335
+ this.claimOrderUpdatesKey(this.toKey(sub))
336
+ }
337
+
338
+ if (registry !== undefined && !marketValidated) {
339
+ await registry.sync()
340
+ }
341
+
312
342
  // Markets context aggregates slower asset-context feeds with fast mid/mark
313
343
  // ticks from `fastAssetCtxs`.
314
344
  if (sub.channel === 'marketsContext') {