@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.
- package/README.md +15 -0
- package/dist/cjs/services/getAccount.d.ts.map +1 -1
- package/dist/cjs/services/getAccount.js +3 -1
- package/dist/cjs/services/getAccount.js.map +1 -1
- package/dist/cjs/services/getAccountExists.d.ts +3 -1
- package/dist/cjs/services/getAccountExists.d.ts.map +1 -1
- package/dist/cjs/services/getAccountExists.js +27 -6
- package/dist/cjs/services/getAccountExists.js.map +1 -1
- package/dist/cjs/services/getActivity.d.ts.map +1 -1
- package/dist/cjs/services/getActivity.js +3 -1
- package/dist/cjs/services/getActivity.js.map +1 -1
- package/dist/cjs/services/getAvailableToTrade.d.ts.map +1 -1
- package/dist/cjs/services/getAvailableToTrade.js +3 -0
- package/dist/cjs/services/getAvailableToTrade.js.map +1 -1
- package/dist/cjs/services/getFills.d.ts.map +1 -1
- package/dist/cjs/services/getFills.js +3 -1
- package/dist/cjs/services/getFills.js.map +1 -1
- package/dist/cjs/services/getMarketSettings.d.ts.map +1 -1
- package/dist/cjs/services/getMarketSettings.js +3 -0
- package/dist/cjs/services/getMarketSettings.js.map +1 -1
- package/dist/cjs/services/getOrder.d.ts.map +1 -1
- package/dist/cjs/services/getOrder.js +2 -0
- package/dist/cjs/services/getOrder.js.map +1 -1
- package/dist/cjs/services/getOrders.d.ts.map +1 -1
- package/dist/cjs/services/getOrders.js +3 -1
- package/dist/cjs/services/getOrders.js.map +1 -1
- package/dist/cjs/services/getPortfolioHistory.d.ts.map +1 -1
- package/dist/cjs/services/getPortfolioHistory.js +2 -0
- package/dist/cjs/services/getPortfolioHistory.js.map +1 -1
- package/dist/cjs/services/getPositions.d.ts.map +1 -1
- package/dist/cjs/services/getPositions.js +3 -1
- package/dist/cjs/services/getPositions.js.map +1 -1
- package/dist/cjs/services/getWithdrawableBalances.d.ts.map +1 -1
- package/dist/cjs/services/getWithdrawableBalances.js +2 -0
- package/dist/cjs/services/getWithdrawableBalances.js.map +1 -1
- package/dist/cjs/websocket/HyperliquidWsProvider.d.ts +2 -0
- package/dist/cjs/websocket/HyperliquidWsProvider.d.ts.map +1 -1
- package/dist/cjs/websocket/HyperliquidWsProvider.js +32 -6
- package/dist/cjs/websocket/HyperliquidWsProvider.js.map +1 -1
- package/dist/esm/services/getAccount.d.ts.map +1 -1
- package/dist/esm/services/getAccount.js +3 -1
- package/dist/esm/services/getAccount.js.map +1 -1
- package/dist/esm/services/getAccountExists.d.ts +3 -1
- package/dist/esm/services/getAccountExists.d.ts.map +1 -1
- package/dist/esm/services/getAccountExists.js +29 -9
- package/dist/esm/services/getAccountExists.js.map +1 -1
- package/dist/esm/services/getActivity.d.ts.map +1 -1
- package/dist/esm/services/getActivity.js +3 -1
- package/dist/esm/services/getActivity.js.map +1 -1
- package/dist/esm/services/getAvailableToTrade.d.ts.map +1 -1
- package/dist/esm/services/getAvailableToTrade.js +3 -0
- package/dist/esm/services/getAvailableToTrade.js.map +1 -1
- package/dist/esm/services/getFills.d.ts.map +1 -1
- package/dist/esm/services/getFills.js +3 -1
- package/dist/esm/services/getFills.js.map +1 -1
- package/dist/esm/services/getMarketSettings.d.ts.map +1 -1
- package/dist/esm/services/getMarketSettings.js +3 -0
- package/dist/esm/services/getMarketSettings.js.map +1 -1
- package/dist/esm/services/getOrder.d.ts.map +1 -1
- package/dist/esm/services/getOrder.js +2 -0
- package/dist/esm/services/getOrder.js.map +1 -1
- package/dist/esm/services/getOrders.d.ts.map +1 -1
- package/dist/esm/services/getOrders.js +3 -1
- package/dist/esm/services/getOrders.js.map +1 -1
- package/dist/esm/services/getPortfolioHistory.d.ts.map +1 -1
- package/dist/esm/services/getPortfolioHistory.js +2 -0
- package/dist/esm/services/getPortfolioHistory.js.map +1 -1
- package/dist/esm/services/getPositions.d.ts.map +1 -1
- package/dist/esm/services/getPositions.js +3 -1
- package/dist/esm/services/getPositions.js.map +1 -1
- package/dist/esm/services/getWithdrawableBalances.d.ts.map +1 -1
- package/dist/esm/services/getWithdrawableBalances.js +2 -0
- package/dist/esm/services/getWithdrawableBalances.js.map +1 -1
- package/dist/esm/websocket/HyperliquidWsProvider.d.ts +2 -0
- package/dist/esm/websocket/HyperliquidWsProvider.d.ts.map +1 -1
- package/dist/esm/websocket/HyperliquidWsProvider.js +32 -8
- package/dist/esm/websocket/HyperliquidWsProvider.js.map +1 -1
- package/dist/types/services/getAccount.d.ts.map +1 -1
- package/dist/types/services/getAccountExists.d.ts +3 -1
- package/dist/types/services/getAccountExists.d.ts.map +1 -1
- package/dist/types/services/getActivity.d.ts.map +1 -1
- package/dist/types/services/getAvailableToTrade.d.ts.map +1 -1
- package/dist/types/services/getFills.d.ts.map +1 -1
- package/dist/types/services/getMarketSettings.d.ts.map +1 -1
- package/dist/types/services/getOrder.d.ts.map +1 -1
- package/dist/types/services/getOrders.d.ts.map +1 -1
- package/dist/types/services/getPortfolioHistory.d.ts.map +1 -1
- package/dist/types/services/getPositions.d.ts.map +1 -1
- package/dist/types/services/getWithdrawableBalances.d.ts.map +1 -1
- package/dist/types/websocket/HyperliquidWsProvider.d.ts +2 -0
- package/dist/types/websocket/HyperliquidWsProvider.d.ts.map +1 -1
- package/package.json +2 -2
- package/src/services/getAccount.ts +3 -1
- package/src/services/getAccountExists.ts +55 -14
- package/src/services/getActivity.ts +3 -1
- package/src/services/getAvailableToTrade.ts +7 -0
- package/src/services/getFills.ts +3 -1
- package/src/services/getMarketSettings.ts +7 -0
- package/src/services/getOrder.ts +2 -0
- package/src/services/getOrders.ts +3 -1
- package/src/services/getPortfolioHistory.ts +2 -0
- package/src/services/getPositions.ts +3 -1
- package/src/services/getWithdrawableBalances.ts +2 -0
- 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,
|
|
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;
|
|
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;
|
|
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;
|
|
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;
|
|
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;
|
|
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;
|
|
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;
|
|
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;
|
|
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;
|
|
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":"AAAA,OAAO,EAQL,KAAK,cAAc,EACnB,KAAK,sBAAsB,EAC3B,KAAK,aAAa,EAGlB,KAAK,oBAAoB,EAGzB,cAAc,EACd,KAAK,iBAAiB,EAEtB,KAAK,gBAAgB,EAEtB,MAAM,iBAAiB,CAAA;AACxB,OAAO,KAAK,EAOV,YAAY,EACb,MAAM,mBAAmB,CAAA;
|
|
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": "
|
|
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.
|
|
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
|
|
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
|
|
5
|
-
|
|
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 =
|
|
60
|
+
export const getAccountExists = (
|
|
26
61
|
{ client, apiUrl }: HyperliquidContext,
|
|
27
62
|
params: GetAccountExistsParams,
|
|
28
63
|
options?: SDKRequestOptions
|
|
29
|
-
): Promise<boolean> =>
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
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
|
-
|
|
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,
|
package/src/services/getFills.ts
CHANGED
|
@@ -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,
|
package/src/services/getOrder.ts
CHANGED
|
@@ -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
|
-
|
|
283
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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') {
|