@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.
Files changed (49) hide show
  1. package/dist/hooks/index.d.ts +3 -0
  2. package/dist/hooks/index.d.ts.map +1 -1
  3. package/dist/hooks/index.js +3 -0
  4. package/dist/hooks/index.js.map +1 -1
  5. package/dist/hooks/useAuth/types.d.ts +8 -2
  6. package/dist/hooks/useAuth/types.d.ts.map +1 -1
  7. package/dist/hooks/useAuth/useAuth.js +2 -2
  8. package/dist/hooks/useAuth/useAuth.js.map +1 -1
  9. package/dist/hooks/useFees/index.d.ts +3 -0
  10. package/dist/hooks/useFees/index.d.ts.map +1 -0
  11. package/dist/hooks/useFees/index.js +2 -0
  12. package/dist/hooks/useFees/index.js.map +1 -0
  13. package/dist/hooks/useFees/types.d.ts +6 -0
  14. package/dist/hooks/useFees/types.d.ts.map +1 -0
  15. package/dist/hooks/useFees/types.js +2 -0
  16. package/dist/hooks/useFees/types.js.map +1 -0
  17. package/dist/hooks/useFees/useFees.d.ts +3 -0
  18. package/dist/hooks/useFees/useFees.d.ts.map +1 -0
  19. package/dist/hooks/useFees/useFees.js +15 -0
  20. package/dist/hooks/useFees/useFees.js.map +1 -0
  21. package/dist/hooks/useOrderbook/index.d.ts +2 -0
  22. package/dist/hooks/useOrderbook/index.d.ts.map +1 -0
  23. package/dist/hooks/useOrderbook/index.js +2 -0
  24. package/dist/hooks/useOrderbook/index.js.map +1 -0
  25. package/dist/hooks/useOrderbook/types.d.ts +26 -0
  26. package/dist/hooks/useOrderbook/types.d.ts.map +1 -0
  27. package/dist/hooks/useOrderbook/types.js +2 -0
  28. package/dist/hooks/useOrderbook/types.js.map +1 -0
  29. package/dist/hooks/useOrderbook/useOrderbook.d.ts +34 -0
  30. package/dist/hooks/useOrderbook/useOrderbook.d.ts.map +1 -0
  31. package/dist/hooks/useOrderbook/useOrderbook.js +138 -0
  32. package/dist/hooks/useOrderbook/useOrderbook.js.map +1 -0
  33. package/dist/hooks/useTradeFeed/index.d.ts +3 -0
  34. package/dist/hooks/useTradeFeed/index.d.ts.map +1 -0
  35. package/dist/hooks/useTradeFeed/index.js +3 -0
  36. package/dist/hooks/useTradeFeed/index.js.map +1 -0
  37. package/dist/hooks/useTradeFeed/types.d.ts +49 -0
  38. package/dist/hooks/useTradeFeed/types.d.ts.map +1 -0
  39. package/dist/hooks/useTradeFeed/types.js +2 -0
  40. package/dist/hooks/useTradeFeed/types.js.map +1 -0
  41. package/dist/hooks/useTradeFeed/useTradeFeed.d.ts +32 -0
  42. package/dist/hooks/useTradeFeed/useTradeFeed.d.ts.map +1 -0
  43. package/dist/hooks/useTradeFeed/useTradeFeed.js +150 -0
  44. package/dist/hooks/useTradeFeed/useTradeFeed.js.map +1 -0
  45. package/dist/hooks/useTradeFeed/utils.d.ts +4 -0
  46. package/dist/hooks/useTradeFeed/utils.d.ts.map +1 -0
  47. package/dist/hooks/useTradeFeed/utils.js +16 -0
  48. package/dist/hooks/useTradeFeed/utils.js.map +1 -0
  49. package/package.json +2 -2
@@ -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"}
@@ -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
@@ -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
- /** Complete authentication flow. Returns AuthState with accessToken and refreshToken. */
9
- login: () => Promise<AuthState>;
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,yFAAyF;IACzF,KAAK,EAAE,MAAM,OAAO,CAAC,SAAS,CAAC,CAAC;IAChC,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"}
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":"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"}
1
+ {"version":3,"file":"useAuth.js","sourceRoot":"","sources":["../../../src/hooks/useAuth/useAuth.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export { useFees } from "./useFees";
2
+ export type { UseFeesReturn } from "./types";
3
+ //# sourceMappingURL=index.d.ts.map
@@ -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,2 @@
1
+ export { useFees } from "./useFees";
2
+ //# sourceMappingURL=index.js.map
@@ -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,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/hooks/useFees/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,3 @@
1
+ import type { UseFeesReturn } from "./types";
2
+ export declare const useFees: () => UseFeesReturn;
3
+ //# sourceMappingURL=useFees.d.ts.map
@@ -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,2 @@
1
+ export { useOrderbook } from "./useOrderbook";
2
+ //# sourceMappingURL=index.d.ts.map
@@ -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,2 @@
1
+ export { useOrderbook } from "./useOrderbook";
2
+ //# sourceMappingURL=index.js.map
@@ -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,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -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,3 @@
1
+ export * from "./types";
2
+ export { useTradeFeed } from "./useTradeFeed";
3
+ //# sourceMappingURL=index.d.ts.map
@@ -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,3 @@
1
+ export * from "./types";
2
+ export { useTradeFeed } from "./useTradeFeed";
3
+ //# sourceMappingURL=index.js.map
@@ -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,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -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,4 @@
1
+ import type { OrderEvent } from "@0xmonaco/types";
2
+ import type { Trade } from "./types";
3
+ export declare function convertOrderEventToTrade(event: OrderEvent): Trade;
4
+ //# sourceMappingURL=utils.d.ts.map
@@ -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.18",
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.10"
12
+ "@0xmonaco/core": "0.2.12"
13
13
  },
14
14
  "devDependencies": {
15
15
  "@types/react": "^19.1.12",