@hyperix/hooks 0.1.12 → 0.1.14
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/dist/index.d.ts +2 -0
- package/dist/index.js +2 -0
- package/dist/use-all-dexs-clearing-house-state.d.ts +8 -0
- package/dist/use-all-dexs-clearing-house-state.js +26 -0
- package/dist/use-open-orders.js +21 -6
- package/dist/use-positions.d.ts +4 -0
- package/dist/use-positions.js +15 -0
- package/package.json +1 -1
package/dist/index.d.ts
CHANGED
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
export * from "./use-l2-book.js";
|
|
2
|
+
export * from "./use-all-dexs-clearing-house-state.js";
|
|
2
3
|
export * from "./use-historical-orders.js";
|
|
3
4
|
export * from "./use-open-orders.js";
|
|
4
5
|
export * from "./use-trade-history.js";
|
|
5
6
|
export * from "./use-trades.js";
|
|
6
7
|
export * from "./use-order-history.js";
|
|
8
|
+
export * from "./use-positions.js";
|
|
7
9
|
export * from "./use-user-fundings.js";
|
|
8
10
|
export * from "./use-user-fills.js";
|
|
9
11
|
export * from "./use-user-non-funding-ledger-updates.js";
|
package/dist/index.js
CHANGED
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
export * from "./use-l2-book.js";
|
|
2
|
+
export * from "./use-all-dexs-clearing-house-state.js";
|
|
2
3
|
export * from "./use-historical-orders.js";
|
|
3
4
|
export * from "./use-open-orders.js";
|
|
4
5
|
export * from "./use-trade-history.js";
|
|
5
6
|
export * from "./use-trades.js";
|
|
6
7
|
export * from "./use-order-history.js";
|
|
8
|
+
export * from "./use-positions.js";
|
|
7
9
|
export * from "./use-user-fundings.js";
|
|
8
10
|
export * from "./use-user-fills.js";
|
|
9
11
|
export * from "./use-user-non-funding-ledger-updates.js";
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { type UseSubscribeState } from "@outofgas/react-stream";
|
|
2
|
+
import type { AllDexsClearinghouseStateEvent } from "@nktkas/hyperliquid/api/subscription";
|
|
3
|
+
export type AllDexsClearingHouseStateData = AllDexsClearinghouseStateEvent;
|
|
4
|
+
export type UseAllDexsClearingHouseStateOptions = {
|
|
5
|
+
enabled?: boolean;
|
|
6
|
+
onUpdate?: (event: AllDexsClearinghouseStateEvent) => void;
|
|
7
|
+
};
|
|
8
|
+
export declare function useAllDexsClearingHouseState(user: `0x${string}`, options?: UseAllDexsClearingHouseStateOptions): UseSubscribeState<AllDexsClearingHouseStateData>;
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { useSubscribe } from "@outofgas/react-stream";
|
|
2
|
+
import { wsClient } from "./config/hl.js";
|
|
3
|
+
export function useAllDexsClearingHouseState(user, options = {}) {
|
|
4
|
+
const { enabled: enabledOverride, onUpdate } = options;
|
|
5
|
+
const enabled = enabledOverride ?? Boolean(user);
|
|
6
|
+
return useSubscribe({
|
|
7
|
+
key: ["all-dexs-clearing-house-state", user],
|
|
8
|
+
enabled,
|
|
9
|
+
subscribe: async ({ onData, onError }) => {
|
|
10
|
+
const subscription = await wsClient.allDexsClearinghouseState({ user }, (event) => {
|
|
11
|
+
try {
|
|
12
|
+
onUpdate?.(event);
|
|
13
|
+
onData(event);
|
|
14
|
+
}
|
|
15
|
+
catch (error) {
|
|
16
|
+
onError(error instanceof Error
|
|
17
|
+
? error
|
|
18
|
+
: new Error("Failed to process all dexs clearing house state event"));
|
|
19
|
+
}
|
|
20
|
+
});
|
|
21
|
+
return {
|
|
22
|
+
unsubscribe: () => subscription.unsubscribe(),
|
|
23
|
+
};
|
|
24
|
+
},
|
|
25
|
+
});
|
|
26
|
+
}
|
package/dist/use-open-orders.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { useMemo } from "react";
|
|
1
2
|
import { useSubscribe } from "@outofgas/react-stream";
|
|
2
3
|
import { wsClient } from "./config/hl.js";
|
|
3
4
|
import { useSymbolConverter } from "./use-symbol-converter.js";
|
|
@@ -24,11 +25,11 @@ function formatOpenOrder(order, displayCoin, assetId) {
|
|
|
24
25
|
assetId,
|
|
25
26
|
};
|
|
26
27
|
}
|
|
27
|
-
function formatOpenOrders(
|
|
28
|
+
function formatOpenOrders(data, symbolConverter) {
|
|
28
29
|
return {
|
|
29
|
-
dex:
|
|
30
|
-
user:
|
|
31
|
-
orders: [...
|
|
30
|
+
dex: data.dex,
|
|
31
|
+
user: data.user,
|
|
32
|
+
orders: [...data.orders]
|
|
32
33
|
.map((order) => {
|
|
33
34
|
const displayCoin = symbolConverter?.getSpotByPairId(order.coin);
|
|
34
35
|
return formatOpenOrder(order, displayCoin, symbolConverter?.getAssetId(displayCoin ?? order.coin));
|
|
@@ -40,14 +41,18 @@ export function useOpenOrders(user, options = {}) {
|
|
|
40
41
|
const { dex = DEFAULT_DEX, enabled: enabledOverride, onUpdate } = options;
|
|
41
42
|
const enabled = enabledOverride ?? Boolean(user);
|
|
42
43
|
const symbolConverter = useSymbolConverter();
|
|
43
|
-
|
|
44
|
+
const openOrdersState = useSubscribe({
|
|
44
45
|
key: ["open-orders", user, dex ?? ""],
|
|
45
46
|
enabled,
|
|
46
47
|
subscribe: async ({ onData, onError }) => {
|
|
47
48
|
const subscription = await wsClient.openOrders({ user, dex }, (event) => {
|
|
48
49
|
try {
|
|
49
50
|
onUpdate?.(event);
|
|
50
|
-
onData(
|
|
51
|
+
onData({
|
|
52
|
+
dex: event.dex,
|
|
53
|
+
user: event.user,
|
|
54
|
+
orders: event.orders,
|
|
55
|
+
});
|
|
51
56
|
}
|
|
52
57
|
catch (error) {
|
|
53
58
|
onError(error instanceof Error
|
|
@@ -60,4 +65,14 @@ export function useOpenOrders(user, options = {}) {
|
|
|
60
65
|
};
|
|
61
66
|
},
|
|
62
67
|
});
|
|
68
|
+
const data = useMemo(() => {
|
|
69
|
+
if (!openOrdersState.data) {
|
|
70
|
+
return undefined;
|
|
71
|
+
}
|
|
72
|
+
return formatOpenOrders(openOrdersState.data, symbolConverter);
|
|
73
|
+
}, [openOrdersState.data, symbolConverter]);
|
|
74
|
+
return {
|
|
75
|
+
...openOrdersState,
|
|
76
|
+
data,
|
|
77
|
+
};
|
|
63
78
|
}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { UseSubscribeState } from "@outofgas/react-stream";
|
|
2
|
+
import { type AllDexsClearingHouseStateData, type UseAllDexsClearingHouseStateOptions } from "./use-all-dexs-clearing-house-state.js";
|
|
3
|
+
export type Position = AllDexsClearingHouseStateData["clearinghouseStates"][number][1]["assetPositions"][number];
|
|
4
|
+
export declare function usePositions(user: `0x${string}`, options?: UseAllDexsClearingHouseStateOptions): UseSubscribeState<Position[]>;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { useMemo } from "react";
|
|
2
|
+
import { useAllDexsClearingHouseState, } from "./use-all-dexs-clearing-house-state.js";
|
|
3
|
+
export function usePositions(user, options = {}) {
|
|
4
|
+
const positionsState = useAllDexsClearingHouseState(user, options);
|
|
5
|
+
const data = useMemo(() => {
|
|
6
|
+
return positionsState.data?.clearinghouseStates
|
|
7
|
+
.map(([, state]) => state.assetPositions)
|
|
8
|
+
.flatMap((positions) => positions)
|
|
9
|
+
.sort((left, right) => Number(left.position.positionValue) < Number(right.position.positionValue) ? 1 : -1);
|
|
10
|
+
}, [positionsState.data]);
|
|
11
|
+
return {
|
|
12
|
+
...positionsState,
|
|
13
|
+
data,
|
|
14
|
+
};
|
|
15
|
+
}
|