@0xmonaco/react 0.1.18 → 0.1.20
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/hooks/index.d.ts +3 -0
- package/dist/hooks/index.d.ts.map +1 -1
- package/dist/hooks/index.js +3 -0
- package/dist/hooks/index.js.map +1 -1
- package/dist/hooks/useAuth/types.d.ts +8 -2
- package/dist/hooks/useAuth/types.d.ts.map +1 -1
- package/dist/hooks/useAuth/useAuth.js +2 -2
- package/dist/hooks/useAuth/useAuth.js.map +1 -1
- package/dist/hooks/useFees/index.d.ts +3 -0
- package/dist/hooks/useFees/index.d.ts.map +1 -0
- package/dist/hooks/useFees/index.js +2 -0
- package/dist/hooks/useFees/index.js.map +1 -0
- package/dist/hooks/useFees/types.d.ts +6 -0
- package/dist/hooks/useFees/types.d.ts.map +1 -0
- package/dist/hooks/useFees/types.js +2 -0
- package/dist/hooks/useFees/types.js.map +1 -0
- package/dist/hooks/useFees/useFees.d.ts +3 -0
- package/dist/hooks/useFees/useFees.d.ts.map +1 -0
- package/dist/hooks/useFees/useFees.js +15 -0
- package/dist/hooks/useFees/useFees.js.map +1 -0
- package/dist/hooks/useOrderbook/index.d.ts +2 -0
- package/dist/hooks/useOrderbook/index.d.ts.map +1 -0
- package/dist/hooks/useOrderbook/index.js +2 -0
- package/dist/hooks/useOrderbook/index.js.map +1 -0
- package/dist/hooks/useOrderbook/types.d.ts +26 -0
- package/dist/hooks/useOrderbook/types.d.ts.map +1 -0
- package/dist/hooks/useOrderbook/types.js +2 -0
- package/dist/hooks/useOrderbook/types.js.map +1 -0
- package/dist/hooks/useOrderbook/useOrderbook.d.ts +34 -0
- package/dist/hooks/useOrderbook/useOrderbook.d.ts.map +1 -0
- package/dist/hooks/useOrderbook/useOrderbook.js +138 -0
- package/dist/hooks/useOrderbook/useOrderbook.js.map +1 -0
- package/dist/hooks/useTradeFeed/index.d.ts +3 -0
- package/dist/hooks/useTradeFeed/index.d.ts.map +1 -0
- package/dist/hooks/useTradeFeed/index.js +3 -0
- package/dist/hooks/useTradeFeed/index.js.map +1 -0
- package/dist/hooks/useTradeFeed/types.d.ts +49 -0
- package/dist/hooks/useTradeFeed/types.d.ts.map +1 -0
- package/dist/hooks/useTradeFeed/types.js +2 -0
- package/dist/hooks/useTradeFeed/types.js.map +1 -0
- package/dist/hooks/useTradeFeed/useTradeFeed.d.ts +32 -0
- package/dist/hooks/useTradeFeed/useTradeFeed.d.ts.map +1 -0
- package/dist/hooks/useTradeFeed/useTradeFeed.js +150 -0
- package/dist/hooks/useTradeFeed/useTradeFeed.js.map +1 -0
- package/dist/hooks/useTradeFeed/utils.d.ts +4 -0
- package/dist/hooks/useTradeFeed/utils.d.ts.map +1 -0
- package/dist/hooks/useTradeFeed/utils.js +16 -0
- package/dist/hooks/useTradeFeed/utils.js.map +1 -0
- package/package.json +2 -2
package/dist/hooks/index.d.ts
CHANGED
|
@@ -1,7 +1,10 @@
|
|
|
1
1
|
export * from "./useAuth";
|
|
2
|
+
export * from "./useFees";
|
|
2
3
|
export * from "./useMarket";
|
|
3
4
|
export * from "./useMonaco";
|
|
5
|
+
export * from "./useOrderbook";
|
|
4
6
|
export * from "./useProfile";
|
|
5
7
|
export * from "./useTrade";
|
|
8
|
+
export * from "./useTradeFeed";
|
|
6
9
|
export * from "./useVault";
|
|
7
10
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/hooks/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/hooks/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC"}
|
package/dist/hooks/index.js
CHANGED
|
@@ -1,7 +1,10 @@
|
|
|
1
1
|
export * from "./useAuth";
|
|
2
|
+
export * from "./useFees";
|
|
2
3
|
export * from "./useMarket";
|
|
3
4
|
export * from "./useMonaco";
|
|
5
|
+
export * from "./useOrderbook";
|
|
4
6
|
export * from "./useProfile";
|
|
5
7
|
export * from "./useTrade";
|
|
8
|
+
export * from "./useTradeFeed";
|
|
6
9
|
export * from "./useVault";
|
|
7
10
|
//# sourceMappingURL=index.js.map
|
package/dist/hooks/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/hooks/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/hooks/index.ts"],"names":[],"mappings":"AAAA,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC"}
|
|
@@ -5,8 +5,14 @@ export interface UseAuthState {
|
|
|
5
5
|
authenticationStatus: AuthenticationStatus;
|
|
6
6
|
}
|
|
7
7
|
export interface UseAuthReturn extends UseAuthState {
|
|
8
|
-
/**
|
|
9
|
-
|
|
8
|
+
/**
|
|
9
|
+
* Complete authentication flow. Returns AuthState with accessToken and refreshToken.
|
|
10
|
+
* @param options - Optional configuration
|
|
11
|
+
* @param options.connectWebSocket - Auto-connect all authenticated WebSocket channels after login (currently Orders) (default: false)
|
|
12
|
+
*/
|
|
13
|
+
login: (options?: {
|
|
14
|
+
connectWebSocket?: boolean;
|
|
15
|
+
}) => Promise<AuthState>;
|
|
10
16
|
/** Logout user and clear state. Revokes the refresh token on the server. */
|
|
11
17
|
logout: () => Promise<void>;
|
|
12
18
|
/** Refresh authentication tokens using the stored refresh token. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/hooks/useAuth/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAC1F,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAE3D,MAAM,WAAW,YAAY;IAC3B,oCAAoC;IACpC,oBAAoB,EAAE,oBAAoB,CAAC;CAC5C;AAED,MAAM,WAAW,aAAc,SAAQ,YAAY;IACjD
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/hooks/useAuth/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAC1F,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAE3D,MAAM,WAAW,YAAY;IAC3B,oCAAoC;IACpC,oBAAoB,EAAE,oBAAoB,CAAC;CAC5C;AAED,MAAM,WAAW,aAAc,SAAQ,YAAY;IACjD;;;;OAIG;IACH,KAAK,EAAE,CAAC,OAAO,CAAC,EAAE;QAAE,gBAAgB,CAAC,EAAE,OAAO,CAAA;KAAE,KAAK,OAAO,CAAC,SAAS,CAAC,CAAC;IACxE,4EAA4E;IAC5E,MAAM,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5B,oEAAoE;IACpE,WAAW,EAAE,MAAM,OAAO,CAAC,SAAS,CAAC,CAAC;IACtC,0DAA0D;IAC1D,aAAa,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IACpD,6DAA6D;IAC7D,eAAe,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,iBAAiB,CAAC,CAAC;IACjE,8DAA8D;IAC9D,YAAY,EAAE,MAAM,OAAO,CAAC,SAAS,CAAC,CAAC;IACvC,kEAAkE;IAClE,YAAY,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,OAAO,CAAC,oBAAoB,CAAC,CAAC;IACtE,yFAAyF;IACzF,WAAW,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACtD"}
|
|
@@ -7,14 +7,14 @@ export const useAuth = () => {
|
|
|
7
7
|
const { sdk, clientId } = useMonacoSDK();
|
|
8
8
|
const { authenticationStatus, setAuthenticationStatus } = useMonacoContext();
|
|
9
9
|
const { data: walletClient } = useWalletClient();
|
|
10
|
-
const login = useCallback(async () => {
|
|
10
|
+
const login = useCallback(async (options) => {
|
|
11
11
|
if (!sdk)
|
|
12
12
|
throw new Error("SDK not available");
|
|
13
13
|
if (!walletClient)
|
|
14
14
|
throw new Error("Wallet not connected");
|
|
15
15
|
setAuthenticationStatus(AuthenticationStatus.AUTHENTICATING);
|
|
16
16
|
try {
|
|
17
|
-
const authState = await sdk.login(clientId);
|
|
17
|
+
const authState = await sdk.login(clientId, options);
|
|
18
18
|
const authenticated = sdk.isAuthenticated();
|
|
19
19
|
setAuthenticationStatus(authenticated ? AuthenticationStatus.AUTHENTICATED : AuthenticationStatus.UNAUTHENTICATED);
|
|
20
20
|
return authState;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useAuth.js","sourceRoot":"","sources":["../../../src/hooks/useAuth/useAuth.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AACpC,OAAO,EAAE,eAAe,EAAE,MAAM,OAAO,CAAC;AACxC,OAAO,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AACtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAG5C,MAAM,CAAC,MAAM,OAAO,GAAG,GAAkB,EAAE;IACzC,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,YAAY,EAAE,CAAC;IACzC,MAAM,EAAE,oBAAoB,EAAE,uBAAuB,EAAE,GAAG,gBAAgB,EAAE,CAAC;IAC7E,MAAM,EAAE,IAAI,EAAE,YAAY,EAAE,GAAG,eAAe,EAAE,CAAC;IAEjD,MAAM,KAAK,GAAG,WAAW,CAAC,KAAK,
|
|
1
|
+
{"version":3,"file":"useAuth.js","sourceRoot":"","sources":["../../../src/hooks/useAuth/useAuth.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/hooks/useFees/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/hooks/useFees/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { SimulateFeeParams, SimulateFeeResponse } from "@0xmonaco/types";
|
|
2
|
+
export interface UseFeesReturn {
|
|
3
|
+
/** Simulate fees for an order before placing it */
|
|
4
|
+
simulateFees: (params: SimulateFeeParams) => Promise<SimulateFeeResponse>;
|
|
5
|
+
}
|
|
6
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/hooks/useFees/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAE9E,MAAM,WAAW,aAAa;IAC5B,mDAAmD;IACnD,YAAY,EAAE,CAAC,MAAM,EAAE,iBAAiB,KAAK,OAAO,CAAC,mBAAmB,CAAC,CAAC;CAC3E"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/hooks/useFees/types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useFees.d.ts","sourceRoot":"","sources":["../../../src/hooks/useFees/useFees.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAE7C,eAAO,MAAM,OAAO,QAAO,aAgB1B,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { useCallback } from "react";
|
|
2
|
+
import { useMonacoSDK } from "../useMonaco";
|
|
3
|
+
export const useFees = () => {
|
|
4
|
+
const { sdk } = useMonacoSDK();
|
|
5
|
+
const simulateFees = useCallback(async (params) => {
|
|
6
|
+
if (!sdk)
|
|
7
|
+
throw new Error("SDK not available");
|
|
8
|
+
// Parameter validation is handled by the SDK core using Zod
|
|
9
|
+
return await sdk.fees.simulateFees(params);
|
|
10
|
+
}, [sdk]);
|
|
11
|
+
return {
|
|
12
|
+
simulateFees,
|
|
13
|
+
};
|
|
14
|
+
};
|
|
15
|
+
//# sourceMappingURL=useFees.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useFees.js","sourceRoot":"","sources":["../../../src/hooks/useFees/useFees.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AACpC,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAG5C,MAAM,CAAC,MAAM,OAAO,GAAG,GAAkB,EAAE;IACzC,MAAM,EAAE,GAAG,EAAE,GAAG,YAAY,EAAE,CAAC;IAE/B,MAAM,YAAY,GAAG,WAAW,CAC9B,KAAK,EAAE,MAAyB,EAAgC,EAAE;QAChE,IAAI,CAAC,GAAG;YAAE,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;QAE/C,4DAA4D;QAC5D,OAAO,MAAM,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;IAC7C,CAAC,EACD,CAAC,GAAG,CAAC,CACN,CAAC;IAEF,OAAO;QACL,YAAY;KACb,CAAC;AACJ,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/hooks/useOrderbook/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/hooks/useOrderbook/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import type { ConnectionStatus, OrderbookEvent, TradingMode } from "@0xmonaco/types";
|
|
2
|
+
/**
|
|
3
|
+
* State structure for current subscription ref
|
|
4
|
+
*/
|
|
5
|
+
export interface OrderbookSubscriptionRef {
|
|
6
|
+
/** The pair subscribed to */
|
|
7
|
+
pair: string;
|
|
8
|
+
/** The mode subscribed to */
|
|
9
|
+
mode: TradingMode;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Return type for the useOrderbook hook
|
|
13
|
+
*/
|
|
14
|
+
export interface UseOrderbookReturn {
|
|
15
|
+
/** Current orderbook snapshot */
|
|
16
|
+
orderbook: OrderbookEvent | null;
|
|
17
|
+
/** WebSocket connection status */
|
|
18
|
+
connectionStatus: ConnectionStatus;
|
|
19
|
+
/** Whether currently subscribed to a market */
|
|
20
|
+
subscribed: boolean;
|
|
21
|
+
/** Any error that occurred during connection or subscription */
|
|
22
|
+
error: Error | null;
|
|
23
|
+
/** Clear the current error state */
|
|
24
|
+
clearError: () => void;
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/hooks/useOrderbook/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAErF;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACvC,6BAA6B;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,6BAA6B;IAC7B,IAAI,EAAE,WAAW,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,iCAAiC;IACjC,SAAS,EAAE,cAAc,GAAG,IAAI,CAAC;IAEjC,kCAAkC;IAClC,gBAAgB,EAAE,gBAAgB,CAAC;IAEnC,+CAA+C;IAC/C,UAAU,EAAE,OAAO,CAAC;IAEpB,gEAAgE;IAChE,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IAEpB,oCAAoC;IACpC,UAAU,EAAE,MAAM,IAAI,CAAC;CACxB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/hooks/useOrderbook/types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { type TradingMode } from "@0xmonaco/types";
|
|
2
|
+
import type { UseOrderbookReturn } from "./types";
|
|
3
|
+
/**
|
|
4
|
+
* React hook to subscribe to and manage the orderbook for a given trading pair and mode.
|
|
5
|
+
*
|
|
6
|
+
* Connects to the Monaco SDK WebSocket orderbook feed, subscribes to updates,
|
|
7
|
+
* and provides the latest orderbook event, connection status, subscription state, and error handling.
|
|
8
|
+
*
|
|
9
|
+
* @param {string | null} tradingPair - The trading pair to subscribe to (e.g., "BTC/USD"). If null, no subscription is made.
|
|
10
|
+
* @param {TradingMode} tradingMode - The trading mode to use for the subscription (e.g., "live", "test").
|
|
11
|
+
* @returns {UseOrderbookReturn} An object containing the latest orderbook event, connection status, subscription state, error, and error clearing function.
|
|
12
|
+
*
|
|
13
|
+
* @example
|
|
14
|
+
* ```tsx
|
|
15
|
+
* import { useOrderbook } from "./useOrderbook";
|
|
16
|
+
*
|
|
17
|
+
* function OrderbookComponent() {
|
|
18
|
+
* const { orderbook, connectionStatus, subscribed, error, clearError } = useOrderbook("BTC/USD", "live");
|
|
19
|
+
*
|
|
20
|
+
* if (error) return <div>Error: {error.message} <button onClick={clearError}>Clear</button></div>;
|
|
21
|
+
* if (!subscribed) return <div>Not subscribed</div>;
|
|
22
|
+
* if (!orderbook) return <div>Loading...</div>;
|
|
23
|
+
*
|
|
24
|
+
* return (
|
|
25
|
+
* <div>
|
|
26
|
+
* <h2>Orderbook ({connectionStatus})</h2>
|
|
27
|
+
* {/** Render orderbook data here }
|
|
28
|
+
* </div>
|
|
29
|
+
* );
|
|
30
|
+
* }
|
|
31
|
+
* ```
|
|
32
|
+
*/
|
|
33
|
+
export declare function useOrderbook(tradingPair: string | null, tradingMode: TradingMode): UseOrderbookReturn;
|
|
34
|
+
//# sourceMappingURL=useOrderbook.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useOrderbook.d.ts","sourceRoot":"","sources":["../../../src/hooks/useOrderbook/useOrderbook.ts"],"names":[],"mappings":"AAAA,OAAO,EAA8C,KAAK,WAAW,EAAmB,MAAM,iBAAiB,CAAC;AAGhH,OAAO,KAAK,EAA4B,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAE5E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,wBAAgB,YAAY,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,EAAE,WAAW,EAAE,WAAW,GAAG,kBAAkB,CAmHrG"}
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
import { WebSocketStatus } from "@0xmonaco/types";
|
|
2
|
+
import { useCallback, useEffect, useMemo, useRef, useState } from "react";
|
|
3
|
+
import { useMonacoSDK } from "../useMonaco";
|
|
4
|
+
/**
|
|
5
|
+
* React hook to subscribe to and manage the orderbook for a given trading pair and mode.
|
|
6
|
+
*
|
|
7
|
+
* Connects to the Monaco SDK WebSocket orderbook feed, subscribes to updates,
|
|
8
|
+
* and provides the latest orderbook event, connection status, subscription state, and error handling.
|
|
9
|
+
*
|
|
10
|
+
* @param {string | null} tradingPair - The trading pair to subscribe to (e.g., "BTC/USD"). If null, no subscription is made.
|
|
11
|
+
* @param {TradingMode} tradingMode - The trading mode to use for the subscription (e.g., "live", "test").
|
|
12
|
+
* @returns {UseOrderbookReturn} An object containing the latest orderbook event, connection status, subscription state, error, and error clearing function.
|
|
13
|
+
*
|
|
14
|
+
* @example
|
|
15
|
+
* ```tsx
|
|
16
|
+
* import { useOrderbook } from "./useOrderbook";
|
|
17
|
+
*
|
|
18
|
+
* function OrderbookComponent() {
|
|
19
|
+
* const { orderbook, connectionStatus, subscribed, error, clearError } = useOrderbook("BTC/USD", "live");
|
|
20
|
+
*
|
|
21
|
+
* if (error) return <div>Error: {error.message} <button onClick={clearError}>Clear</button></div>;
|
|
22
|
+
* if (!subscribed) return <div>Not subscribed</div>;
|
|
23
|
+
* if (!orderbook) return <div>Loading...</div>;
|
|
24
|
+
*
|
|
25
|
+
* return (
|
|
26
|
+
* <div>
|
|
27
|
+
* <h2>Orderbook ({connectionStatus})</h2>
|
|
28
|
+
* {/** Render orderbook data here }
|
|
29
|
+
* </div>
|
|
30
|
+
* );
|
|
31
|
+
* }
|
|
32
|
+
* ```
|
|
33
|
+
*/
|
|
34
|
+
export function useOrderbook(tradingPair, tradingMode) {
|
|
35
|
+
const { sdk } = useMonacoSDK();
|
|
36
|
+
const [orderbook, setOrderbook] = useState(null);
|
|
37
|
+
const [error, setError] = useState(null);
|
|
38
|
+
const [connectionStatus, setConnectionStatus] = useState(WebSocketStatus.Disconnected);
|
|
39
|
+
const currentSubscriptionRef = useRef(null);
|
|
40
|
+
const orderbookWSClient = useMemo(() => sdk?.websocket.orderbook, [sdk?.websocket.orderbook]);
|
|
41
|
+
const subscribed = !!currentSubscriptionRef.current?.pair;
|
|
42
|
+
const isSDKAuthenticated = !!sdk?.getAuthState();
|
|
43
|
+
const clearError = useCallback(() => {
|
|
44
|
+
setError(null);
|
|
45
|
+
}, []);
|
|
46
|
+
const connect = useCallback(async () => {
|
|
47
|
+
if (!orderbookWSClient)
|
|
48
|
+
return;
|
|
49
|
+
if (connectionStatus === WebSocketStatus.Connecting || connectionStatus === WebSocketStatus.Connected)
|
|
50
|
+
return;
|
|
51
|
+
setError(null);
|
|
52
|
+
setConnectionStatus(WebSocketStatus.Connecting);
|
|
53
|
+
try {
|
|
54
|
+
await orderbookWSClient.connect();
|
|
55
|
+
setConnectionStatus(WebSocketStatus.Connected);
|
|
56
|
+
}
|
|
57
|
+
catch (err) {
|
|
58
|
+
setConnectionStatus(WebSocketStatus.Disconnected);
|
|
59
|
+
setError(err instanceof Error ? err : new Error(String(err)));
|
|
60
|
+
}
|
|
61
|
+
}, [orderbookWSClient, connectionStatus]);
|
|
62
|
+
const subscribe = useCallback(async (pair, mode) => {
|
|
63
|
+
if (!orderbookWSClient)
|
|
64
|
+
return;
|
|
65
|
+
if (connectionStatus !== WebSocketStatus.Connected)
|
|
66
|
+
return;
|
|
67
|
+
setOrderbook(null);
|
|
68
|
+
setError(null);
|
|
69
|
+
try {
|
|
70
|
+
const normalizedMode = mode.toLowerCase();
|
|
71
|
+
orderbookWSClient.subscribeToOrderbookEvents(pair, normalizedMode, (event) => {
|
|
72
|
+
setOrderbook(event);
|
|
73
|
+
});
|
|
74
|
+
currentSubscriptionRef.current = { pair, mode: normalizedMode };
|
|
75
|
+
}
|
|
76
|
+
catch (err) {
|
|
77
|
+
setError(err instanceof Error ? err : new Error(String(err)));
|
|
78
|
+
}
|
|
79
|
+
}, [orderbookWSClient, connectionStatus]);
|
|
80
|
+
const unsubscribe = useCallback(() => {
|
|
81
|
+
if (!orderbookWSClient)
|
|
82
|
+
return;
|
|
83
|
+
if (!currentSubscriptionRef.current)
|
|
84
|
+
return;
|
|
85
|
+
if (connectionStatus !== WebSocketStatus.Connected)
|
|
86
|
+
return;
|
|
87
|
+
try {
|
|
88
|
+
const tradingMode = currentSubscriptionRef.current.mode;
|
|
89
|
+
orderbookWSClient.unsubscribeFromOrderbookEvents(currentSubscriptionRef.current.pair, tradingMode);
|
|
90
|
+
currentSubscriptionRef.current = null;
|
|
91
|
+
setOrderbook(null);
|
|
92
|
+
}
|
|
93
|
+
catch (err) {
|
|
94
|
+
setError(err instanceof Error ? err : new Error(String(err)));
|
|
95
|
+
}
|
|
96
|
+
}, [orderbookWSClient, connectionStatus]);
|
|
97
|
+
const disconnect = useCallback(() => {
|
|
98
|
+
if (connectionStatus !== WebSocketStatus.Connected)
|
|
99
|
+
return;
|
|
100
|
+
try {
|
|
101
|
+
orderbookWSClient?.disconnect();
|
|
102
|
+
setConnectionStatus(WebSocketStatus.Disconnected);
|
|
103
|
+
setOrderbook(null);
|
|
104
|
+
setError(null);
|
|
105
|
+
}
|
|
106
|
+
catch (err) {
|
|
107
|
+
setError(err instanceof Error ? err : new Error(String(err)));
|
|
108
|
+
}
|
|
109
|
+
}, [orderbookWSClient, connectionStatus]);
|
|
110
|
+
useEffect(() => {
|
|
111
|
+
if (tradingPair && tradingMode && connectionStatus === WebSocketStatus.Connected) {
|
|
112
|
+
if (tradingPair === currentSubscriptionRef.current?.pair && tradingMode === currentSubscriptionRef.current?.mode)
|
|
113
|
+
return;
|
|
114
|
+
unsubscribe();
|
|
115
|
+
void subscribe(tradingPair, tradingMode);
|
|
116
|
+
}
|
|
117
|
+
}, [tradingPair, tradingMode, connectionStatus, unsubscribe, subscribe]);
|
|
118
|
+
useEffect(() => {
|
|
119
|
+
if (isSDKAuthenticated) {
|
|
120
|
+
void connect(); // Connect when SDK is available
|
|
121
|
+
}
|
|
122
|
+
else {
|
|
123
|
+
// Clear state when SDK is disconnected
|
|
124
|
+
setOrderbook(null);
|
|
125
|
+
setConnectionStatus(WebSocketStatus.Disconnected);
|
|
126
|
+
currentSubscriptionRef.current = null;
|
|
127
|
+
}
|
|
128
|
+
return () => disconnect(); // Disconnect from ws on unmount
|
|
129
|
+
}, [isSDKAuthenticated, connect, disconnect]);
|
|
130
|
+
return {
|
|
131
|
+
orderbook,
|
|
132
|
+
connectionStatus,
|
|
133
|
+
subscribed,
|
|
134
|
+
error,
|
|
135
|
+
clearError,
|
|
136
|
+
};
|
|
137
|
+
}
|
|
138
|
+
//# sourceMappingURL=useOrderbook.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useOrderbook.js","sourceRoot":"","sources":["../../../src/hooks/useOrderbook/useOrderbook.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/hooks/useTradeFeed/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/hooks/useTradeFeed/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import type { ConnectionStatus, OrderSide, TradingMode } from "@0xmonaco/types";
|
|
2
|
+
/**
|
|
3
|
+
* State structure for current subscription ref
|
|
4
|
+
*/
|
|
5
|
+
export interface TradeFeedSubscriptionRef {
|
|
6
|
+
/** The pair subscribed to */
|
|
7
|
+
pair: string;
|
|
8
|
+
/** The mode subscribed to */
|
|
9
|
+
mode: TradingMode;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Standardized trade data extracted from order events
|
|
13
|
+
*/
|
|
14
|
+
export interface Trade {
|
|
15
|
+
/** Execution price of the trade */
|
|
16
|
+
price: string;
|
|
17
|
+
/** Trading pair symbol (e.g., "BTC/USDC") */
|
|
18
|
+
tradingPair: string;
|
|
19
|
+
/** Trading pair ID (UUID) */
|
|
20
|
+
tradingPairId: string | undefined;
|
|
21
|
+
/** Quantity executed in this trade */
|
|
22
|
+
quantity: string;
|
|
23
|
+
/** User ID (UUID) */
|
|
24
|
+
userId: string;
|
|
25
|
+
/** Trading mode (e.g., "Spot", "Margin") */
|
|
26
|
+
tradingMode: TradingMode;
|
|
27
|
+
/** Original order ID */
|
|
28
|
+
orderId: string;
|
|
29
|
+
/** Event timestamp */
|
|
30
|
+
timestamp: string;
|
|
31
|
+
/** Order side ("BUY" or "SELL") */
|
|
32
|
+
side?: OrderSide;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Return type for the useTradeFeed hook
|
|
36
|
+
*/
|
|
37
|
+
export interface UseTradeFeedReturn {
|
|
38
|
+
/** Array of standardized trades received from the WebSocket feed */
|
|
39
|
+
trades: Trade[];
|
|
40
|
+
/** WebSocket connection status */
|
|
41
|
+
connectionStatus: ConnectionStatus;
|
|
42
|
+
/** Whether currently subscribed to a market */
|
|
43
|
+
subscribed: boolean;
|
|
44
|
+
/** Any error that occurred during connection or subscription */
|
|
45
|
+
error: Error | null;
|
|
46
|
+
/** Clear the current error state */
|
|
47
|
+
clearError: () => void;
|
|
48
|
+
}
|
|
49
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/hooks/useTradeFeed/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAEhF;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACvC,6BAA6B;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,6BAA6B;IAC7B,IAAI,EAAE,WAAW,CAAC;CACnB;AACD;;GAEG;AACH,MAAM,WAAW,KAAK;IACpB,mCAAmC;IACnC,KAAK,EAAE,MAAM,CAAC;IACd,6CAA6C;IAC7C,WAAW,EAAE,MAAM,CAAC;IACpB,6BAA6B;IAC7B,aAAa,EAAE,MAAM,GAAG,SAAS,CAAC;IAClC,sCAAsC;IACtC,QAAQ,EAAE,MAAM,CAAC;IACjB,qBAAqB;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,4CAA4C;IAC5C,WAAW,EAAE,WAAW,CAAC;IACzB,wBAAwB;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,sBAAsB;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,mCAAmC;IACnC,IAAI,CAAC,EAAE,SAAS,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,oEAAoE;IACpE,MAAM,EAAE,KAAK,EAAE,CAAC;IAEhB,kCAAkC;IAClC,gBAAgB,EAAE,gBAAgB,CAAC;IAEnC,+CAA+C;IAC/C,UAAU,EAAE,OAAO,CAAC;IAEpB,gEAAgE;IAChE,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IAEpB,oCAAoC;IACpC,UAAU,EAAE,MAAM,IAAI,CAAC;CACxB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/hooks/useTradeFeed/types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { type TradingMode } from "@0xmonaco/types";
|
|
2
|
+
import type { UseTradeFeedReturn } from "./types";
|
|
3
|
+
/**
|
|
4
|
+
* Hook for subscribing to real-time trades events via WebSocket
|
|
5
|
+
*
|
|
6
|
+
* @param tradingPair - Trading pair symbol (e.g., "BTC/USDC") or null to disconnect
|
|
7
|
+
* @param tradingMode - Trading mode (e.g., "spot" or "margin")
|
|
8
|
+
* @param maxEvents - Maximum number of trades to keep in memory (default: 50)
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* ```tsx
|
|
12
|
+
* const { trades, connectionStatus, subscribed, error, clearError } = useTradeFeed("BTC/USDC", "spot");
|
|
13
|
+
*
|
|
14
|
+
* if (error) {
|
|
15
|
+
* return <ErrorMessage error={error} onDismiss={clearError} />;
|
|
16
|
+
* }
|
|
17
|
+
*
|
|
18
|
+
* if (connectionStatus === ConnectionStatus.Connecting) {
|
|
19
|
+
* return <Spinner message="Connecting to WebSocket..." />;
|
|
20
|
+
* }
|
|
21
|
+
*
|
|
22
|
+
* if (connectionStatus === ConnectionStatus.Connected && !subscribed) {
|
|
23
|
+
* return <Spinner message="Subscribing to market..." />;
|
|
24
|
+
* }
|
|
25
|
+
*
|
|
26
|
+
* if (subscribed) {
|
|
27
|
+
* return <TradeFeed trades={trades} />;
|
|
28
|
+
* }
|
|
29
|
+
* ```
|
|
30
|
+
*/
|
|
31
|
+
export declare function useTradeFeed(tradingPair: string | null, tradingMode: TradingMode, maxEvents?: number): UseTradeFeedReturn;
|
|
32
|
+
//# sourceMappingURL=useTradeFeed.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useTradeFeed.d.ts","sourceRoot":"","sources":["../../../src/hooks/useTradeFeed/useTradeFeed.ts"],"names":[],"mappings":"AAAA,OAAO,EAKL,KAAK,WAAW,EAEjB,MAAM,iBAAiB,CAAC;AAGzB,OAAO,KAAK,EAAmC,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAGnF;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,wBAAgB,YAAY,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,EAAE,WAAW,EAAE,WAAW,EAAE,SAAS,GAAE,MAAW,GAAG,kBAAkB,CAmI7H"}
|
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
import { WebSocketStatus, } from "@0xmonaco/types";
|
|
2
|
+
import { useCallback, useEffect, useMemo, useRef, useState } from "react";
|
|
3
|
+
import { useMonacoSDK } from "../useMonaco";
|
|
4
|
+
import { convertOrderEventToTrade } from "./utils";
|
|
5
|
+
/**
|
|
6
|
+
* Hook for subscribing to real-time trades events via WebSocket
|
|
7
|
+
*
|
|
8
|
+
* @param tradingPair - Trading pair symbol (e.g., "BTC/USDC") or null to disconnect
|
|
9
|
+
* @param tradingMode - Trading mode (e.g., "spot" or "margin")
|
|
10
|
+
* @param maxEvents - Maximum number of trades to keep in memory (default: 50)
|
|
11
|
+
*
|
|
12
|
+
* @example
|
|
13
|
+
* ```tsx
|
|
14
|
+
* const { trades, connectionStatus, subscribed, error, clearError } = useTradeFeed("BTC/USDC", "spot");
|
|
15
|
+
*
|
|
16
|
+
* if (error) {
|
|
17
|
+
* return <ErrorMessage error={error} onDismiss={clearError} />;
|
|
18
|
+
* }
|
|
19
|
+
*
|
|
20
|
+
* if (connectionStatus === ConnectionStatus.Connecting) {
|
|
21
|
+
* return <Spinner message="Connecting to WebSocket..." />;
|
|
22
|
+
* }
|
|
23
|
+
*
|
|
24
|
+
* if (connectionStatus === ConnectionStatus.Connected && !subscribed) {
|
|
25
|
+
* return <Spinner message="Subscribing to market..." />;
|
|
26
|
+
* }
|
|
27
|
+
*
|
|
28
|
+
* if (subscribed) {
|
|
29
|
+
* return <TradeFeed trades={trades} />;
|
|
30
|
+
* }
|
|
31
|
+
* ```
|
|
32
|
+
*/
|
|
33
|
+
export function useTradeFeed(tradingPair, tradingMode, maxEvents = 50) {
|
|
34
|
+
const validatedMaxEvents = maxEvents < 1 ? 50 : maxEvents;
|
|
35
|
+
if (maxEvents < 1) {
|
|
36
|
+
console.warn("useTradeFeed: maxEvents must be >= 1, defaulting to 50");
|
|
37
|
+
}
|
|
38
|
+
const { sdk } = useMonacoSDK();
|
|
39
|
+
const [trades, setTrades] = useState([]);
|
|
40
|
+
const [error, setError] = useState(null);
|
|
41
|
+
const [connectionStatus, setConnectionStatus] = useState(WebSocketStatus.Disconnected);
|
|
42
|
+
const currentSubscriptionRef = useRef(null);
|
|
43
|
+
const ordersWSClient = useMemo(() => sdk?.websocket.orders, [sdk?.websocket.orders]);
|
|
44
|
+
const subscribed = !!currentSubscriptionRef.current?.pair;
|
|
45
|
+
const isSDKAuthenticated = !!sdk?.getAuthState();
|
|
46
|
+
const clearError = useCallback(() => {
|
|
47
|
+
setError(null);
|
|
48
|
+
}, []);
|
|
49
|
+
const connect = useCallback(async () => {
|
|
50
|
+
if (!ordersWSClient)
|
|
51
|
+
return;
|
|
52
|
+
if (connectionStatus === WebSocketStatus.Connecting || connectionStatus === WebSocketStatus.Connected)
|
|
53
|
+
return;
|
|
54
|
+
setError(null);
|
|
55
|
+
setConnectionStatus(WebSocketStatus.Connecting);
|
|
56
|
+
try {
|
|
57
|
+
await ordersWSClient.connect();
|
|
58
|
+
setConnectionStatus(WebSocketStatus.Connected);
|
|
59
|
+
}
|
|
60
|
+
catch (err) {
|
|
61
|
+
setConnectionStatus(WebSocketStatus.Disconnected);
|
|
62
|
+
setError(err instanceof Error ? err : new Error(String(err)));
|
|
63
|
+
}
|
|
64
|
+
}, [ordersWSClient, connectionStatus]);
|
|
65
|
+
const subscribe = useCallback(async (pair, mode) => {
|
|
66
|
+
if (!ordersWSClient)
|
|
67
|
+
return;
|
|
68
|
+
if (connectionStatus !== WebSocketStatus.Connected)
|
|
69
|
+
return;
|
|
70
|
+
setTrades([]);
|
|
71
|
+
setError(null);
|
|
72
|
+
try {
|
|
73
|
+
ordersWSClient.subscribeToOrderEvents(pair, mode, (event) => {
|
|
74
|
+
if (event.eventType === "OrderFilled" || event.eventType === "OrderPartiallyFilled") {
|
|
75
|
+
const eventData = event.data;
|
|
76
|
+
// Only include taker trades to avoid duplicates
|
|
77
|
+
if (eventData.role !== "taker") {
|
|
78
|
+
return;
|
|
79
|
+
}
|
|
80
|
+
const trade = convertOrderEventToTrade(event);
|
|
81
|
+
setTrades((prevTrades) => {
|
|
82
|
+
return [trade, ...prevTrades].slice(0, validatedMaxEvents);
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
});
|
|
86
|
+
currentSubscriptionRef.current = { pair, mode };
|
|
87
|
+
}
|
|
88
|
+
catch (err) {
|
|
89
|
+
setError(err instanceof Error ? err : new Error(String(err)));
|
|
90
|
+
}
|
|
91
|
+
}, [ordersWSClient, connectionStatus, validatedMaxEvents]);
|
|
92
|
+
const unsubscribe = useCallback(() => {
|
|
93
|
+
if (!ordersWSClient)
|
|
94
|
+
return;
|
|
95
|
+
if (!currentSubscriptionRef.current)
|
|
96
|
+
return;
|
|
97
|
+
if (connectionStatus !== WebSocketStatus.Connected)
|
|
98
|
+
return;
|
|
99
|
+
try {
|
|
100
|
+
const tradingMode = currentSubscriptionRef.current.mode;
|
|
101
|
+
ordersWSClient.unsubscribeFromOrderEvents(currentSubscriptionRef.current.pair, tradingMode);
|
|
102
|
+
currentSubscriptionRef.current = null;
|
|
103
|
+
setTrades([]);
|
|
104
|
+
}
|
|
105
|
+
catch (err) {
|
|
106
|
+
setError(err instanceof Error ? err : new Error(String(err)));
|
|
107
|
+
}
|
|
108
|
+
}, [ordersWSClient, connectionStatus]);
|
|
109
|
+
const disconnect = useCallback(() => {
|
|
110
|
+
if (connectionStatus !== WebSocketStatus.Connected)
|
|
111
|
+
return;
|
|
112
|
+
try {
|
|
113
|
+
ordersWSClient?.disconnect();
|
|
114
|
+
setConnectionStatus(WebSocketStatus.Disconnected);
|
|
115
|
+
setTrades([]);
|
|
116
|
+
setError(null);
|
|
117
|
+
}
|
|
118
|
+
catch (err) {
|
|
119
|
+
setError(err instanceof Error ? err : new Error(String(err)));
|
|
120
|
+
}
|
|
121
|
+
}, [ordersWSClient, connectionStatus]);
|
|
122
|
+
useEffect(() => {
|
|
123
|
+
if (tradingPair && tradingMode && connectionStatus === WebSocketStatus.Connected) {
|
|
124
|
+
if (tradingPair === currentSubscriptionRef.current?.pair && tradingMode === currentSubscriptionRef.current?.mode)
|
|
125
|
+
return;
|
|
126
|
+
unsubscribe();
|
|
127
|
+
void subscribe(tradingPair, tradingMode);
|
|
128
|
+
}
|
|
129
|
+
}, [tradingPair, tradingMode, connectionStatus, unsubscribe, subscribe]);
|
|
130
|
+
useEffect(() => {
|
|
131
|
+
if (isSDKAuthenticated) {
|
|
132
|
+
void connect(); // Connect when SDK is available
|
|
133
|
+
}
|
|
134
|
+
else {
|
|
135
|
+
// Clear state when SDK is disconnected
|
|
136
|
+
setTrades([]);
|
|
137
|
+
setConnectionStatus(WebSocketStatus.Disconnected);
|
|
138
|
+
currentSubscriptionRef.current = null;
|
|
139
|
+
}
|
|
140
|
+
return () => disconnect(); // Disconnect from ws on unmount
|
|
141
|
+
}, [isSDKAuthenticated, connect, disconnect]);
|
|
142
|
+
return {
|
|
143
|
+
trades,
|
|
144
|
+
connectionStatus,
|
|
145
|
+
subscribed,
|
|
146
|
+
error,
|
|
147
|
+
clearError,
|
|
148
|
+
};
|
|
149
|
+
}
|
|
150
|
+
//# sourceMappingURL=useTradeFeed.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useTradeFeed.js","sourceRoot":"","sources":["../../../src/hooks/useTradeFeed/useTradeFeed.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/hooks/useTradeFeed/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAA4D,MAAM,iBAAiB,CAAC;AAC5G,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAErC,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,UAAU,GAAG,KAAK,CAejE"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export function convertOrderEventToTrade(event) {
|
|
2
|
+
const { orderId, timestamp, data } = event;
|
|
3
|
+
const eventData = data;
|
|
4
|
+
return {
|
|
5
|
+
price: eventData.price ?? eventData.averageFillPrice ?? "0",
|
|
6
|
+
tradingPair: eventData.tradingPair,
|
|
7
|
+
tradingPairId: eventData.tradingPairId,
|
|
8
|
+
quantity: eventData.quantity ?? eventData.totalFilled,
|
|
9
|
+
userId: eventData.userId,
|
|
10
|
+
tradingMode: eventData.tradingMode.toUpperCase(),
|
|
11
|
+
orderId,
|
|
12
|
+
timestamp,
|
|
13
|
+
side: eventData.side,
|
|
14
|
+
};
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/hooks/useTradeFeed/utils.ts"],"names":[],"mappings":"AAGA,MAAM,UAAU,wBAAwB,CAAC,KAAiB;IACxD,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,KAAK,CAAC;IAC3C,MAAM,SAAS,GAAG,IAAoE,CAAC;IAEvF,OAAO;QACL,KAAK,EAAE,SAAS,CAAC,KAAK,IAAI,SAAS,CAAC,gBAAgB,IAAI,GAAG;QAC3D,WAAW,EAAE,SAAS,CAAC,WAAW;QAClC,aAAa,EAAE,SAAS,CAAC,aAAa;QACtC,QAAQ,EAAE,SAAS,CAAC,QAAQ,IAAI,SAAS,CAAC,WAAW;QACrD,MAAM,EAAE,SAAS,CAAC,MAAM;QACxB,WAAW,EAAE,SAAS,CAAC,WAAW,CAAC,WAAW,EAAiB;QAC/D,OAAO;QACP,SAAS;QACT,IAAI,EAAE,SAAS,CAAC,IAAI;KACrB,CAAC;AACJ,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@0xmonaco/react",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.20",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
6
|
"module": "./dist/index.js",
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
"dist"
|
|
10
10
|
],
|
|
11
11
|
"dependencies": {
|
|
12
|
-
"@0xmonaco/core": "0.2.
|
|
12
|
+
"@0xmonaco/core": "0.2.12"
|
|
13
13
|
},
|
|
14
14
|
"devDependencies": {
|
|
15
15
|
"@types/react": "^19.1.12",
|