@0xmonaco/react 0.0.0-develop-20260120180031

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 (166) hide show
  1. package/README.md +381 -0
  2. package/dist/hooks/index.d.ts +12 -0
  3. package/dist/hooks/index.d.ts.map +1 -0
  4. package/dist/hooks/index.js +12 -0
  5. package/dist/hooks/index.js.map +1 -0
  6. package/dist/hooks/useAuth/index.d.ts +3 -0
  7. package/dist/hooks/useAuth/index.d.ts.map +1 -0
  8. package/dist/hooks/useAuth/index.js +2 -0
  9. package/dist/hooks/useAuth/index.js.map +1 -0
  10. package/dist/hooks/useAuth/types.d.ts +31 -0
  11. package/dist/hooks/useAuth/types.d.ts.map +1 -0
  12. package/dist/hooks/useAuth/types.js +2 -0
  13. package/dist/hooks/useAuth/types.js.map +1 -0
  14. package/dist/hooks/useAuth/useAuth.d.ts +3 -0
  15. package/dist/hooks/useAuth/useAuth.d.ts.map +1 -0
  16. package/dist/hooks/useAuth/useAuth.js +150 -0
  17. package/dist/hooks/useAuth/useAuth.js.map +1 -0
  18. package/dist/hooks/useFees/index.d.ts +3 -0
  19. package/dist/hooks/useFees/index.d.ts.map +1 -0
  20. package/dist/hooks/useFees/index.js +2 -0
  21. package/dist/hooks/useFees/index.js.map +1 -0
  22. package/dist/hooks/useFees/types.d.ts +6 -0
  23. package/dist/hooks/useFees/types.d.ts.map +1 -0
  24. package/dist/hooks/useFees/types.js +2 -0
  25. package/dist/hooks/useFees/types.js.map +1 -0
  26. package/dist/hooks/useFees/useFees.d.ts +3 -0
  27. package/dist/hooks/useFees/useFees.d.ts.map +1 -0
  28. package/dist/hooks/useFees/useFees.js +15 -0
  29. package/dist/hooks/useFees/useFees.js.map +1 -0
  30. package/dist/hooks/useMarket/index.d.ts +3 -0
  31. package/dist/hooks/useMarket/index.d.ts.map +1 -0
  32. package/dist/hooks/useMarket/index.js +2 -0
  33. package/dist/hooks/useMarket/index.js.map +1 -0
  34. package/dist/hooks/useMarket/types.d.ts +24 -0
  35. package/dist/hooks/useMarket/types.d.ts.map +1 -0
  36. package/dist/hooks/useMarket/types.js +2 -0
  37. package/dist/hooks/useMarket/types.js.map +1 -0
  38. package/dist/hooks/useMarket/useMarket.d.ts +3 -0
  39. package/dist/hooks/useMarket/useMarket.d.ts.map +1 -0
  40. package/dist/hooks/useMarket/useMarket.js +44 -0
  41. package/dist/hooks/useMarket/useMarket.js.map +1 -0
  42. package/dist/hooks/useMonaco/index.d.ts +3 -0
  43. package/dist/hooks/useMonaco/index.d.ts.map +1 -0
  44. package/dist/hooks/useMonaco/index.js +2 -0
  45. package/dist/hooks/useMonaco/index.js.map +1 -0
  46. package/dist/hooks/useMonaco/types.d.ts +14 -0
  47. package/dist/hooks/useMonaco/types.d.ts.map +1 -0
  48. package/dist/hooks/useMonaco/types.js +2 -0
  49. package/dist/hooks/useMonaco/types.js.map +1 -0
  50. package/dist/hooks/useMonaco/useMonaco.d.ts +3 -0
  51. package/dist/hooks/useMonaco/useMonaco.d.ts.map +1 -0
  52. package/dist/hooks/useMonaco/useMonaco.js +14 -0
  53. package/dist/hooks/useMonaco/useMonaco.js.map +1 -0
  54. package/dist/hooks/useOrderbook/index.d.ts +3 -0
  55. package/dist/hooks/useOrderbook/index.d.ts.map +1 -0
  56. package/dist/hooks/useOrderbook/index.js +2 -0
  57. package/dist/hooks/useOrderbook/index.js.map +1 -0
  58. package/dist/hooks/useOrderbook/types.d.ts +28 -0
  59. package/dist/hooks/useOrderbook/types.d.ts.map +1 -0
  60. package/dist/hooks/useOrderbook/types.js +2 -0
  61. package/dist/hooks/useOrderbook/types.js.map +1 -0
  62. package/dist/hooks/useOrderbook/useOrderbook.d.ts +4 -0
  63. package/dist/hooks/useOrderbook/useOrderbook.d.ts.map +1 -0
  64. package/dist/hooks/useOrderbook/useOrderbook.js +32 -0
  65. package/dist/hooks/useOrderbook/useOrderbook.js.map +1 -0
  66. package/dist/hooks/useProfile/index.d.ts +3 -0
  67. package/dist/hooks/useProfile/index.d.ts.map +1 -0
  68. package/dist/hooks/useProfile/index.js +2 -0
  69. package/dist/hooks/useProfile/index.js.map +1 -0
  70. package/dist/hooks/useProfile/types.d.ts +14 -0
  71. package/dist/hooks/useProfile/types.d.ts.map +1 -0
  72. package/dist/hooks/useProfile/types.js +2 -0
  73. package/dist/hooks/useProfile/types.js.map +1 -0
  74. package/dist/hooks/useProfile/useProfile.d.ts +3 -0
  75. package/dist/hooks/useProfile/useProfile.d.ts.map +1 -0
  76. package/dist/hooks/useProfile/useProfile.js +46 -0
  77. package/dist/hooks/useProfile/useProfile.js.map +1 -0
  78. package/dist/hooks/useTokenLifecycle/index.d.ts +3 -0
  79. package/dist/hooks/useTokenLifecycle/index.d.ts.map +1 -0
  80. package/dist/hooks/useTokenLifecycle/index.js +2 -0
  81. package/dist/hooks/useTokenLifecycle/index.js.map +1 -0
  82. package/dist/hooks/useTokenLifecycle/types.d.ts +24 -0
  83. package/dist/hooks/useTokenLifecycle/types.d.ts.map +1 -0
  84. package/dist/hooks/useTokenLifecycle/types.js +2 -0
  85. package/dist/hooks/useTokenLifecycle/types.js.map +1 -0
  86. package/dist/hooks/useTokenLifecycle/useTokenLifecycle.d.ts +21 -0
  87. package/dist/hooks/useTokenLifecycle/useTokenLifecycle.d.ts.map +1 -0
  88. package/dist/hooks/useTokenLifecycle/useTokenLifecycle.js +126 -0
  89. package/dist/hooks/useTokenLifecycle/useTokenLifecycle.js.map +1 -0
  90. package/dist/hooks/useTokenLifecycle/utils.d.ts +8 -0
  91. package/dist/hooks/useTokenLifecycle/utils.d.ts.map +1 -0
  92. package/dist/hooks/useTokenLifecycle/utils.js +16 -0
  93. package/dist/hooks/useTokenLifecycle/utils.js.map +1 -0
  94. package/dist/hooks/useTrade/index.d.ts +3 -0
  95. package/dist/hooks/useTrade/index.d.ts.map +1 -0
  96. package/dist/hooks/useTrade/index.js +2 -0
  97. package/dist/hooks/useTrade/index.js.map +1 -0
  98. package/dist/hooks/useTrade/types.d.ts +29 -0
  99. package/dist/hooks/useTrade/types.d.ts.map +1 -0
  100. package/dist/hooks/useTrade/types.js +2 -0
  101. package/dist/hooks/useTrade/types.js.map +1 -0
  102. package/dist/hooks/useTrade/useTrade.d.ts +3 -0
  103. package/dist/hooks/useTrade/useTrade.d.ts.map +1 -0
  104. package/dist/hooks/useTrade/useTrade.js +89 -0
  105. package/dist/hooks/useTrade/useTrade.js.map +1 -0
  106. package/dist/hooks/useTradeFeed/index.d.ts +3 -0
  107. package/dist/hooks/useTradeFeed/index.d.ts.map +1 -0
  108. package/dist/hooks/useTradeFeed/index.js +3 -0
  109. package/dist/hooks/useTradeFeed/index.js.map +1 -0
  110. package/dist/hooks/useTradeFeed/types.d.ts +15 -0
  111. package/dist/hooks/useTradeFeed/types.d.ts.map +1 -0
  112. package/dist/hooks/useTradeFeed/types.js +2 -0
  113. package/dist/hooks/useTradeFeed/types.js.map +1 -0
  114. package/dist/hooks/useTradeFeed/useTradeFeed.d.ts +9 -0
  115. package/dist/hooks/useTradeFeed/useTradeFeed.d.ts.map +1 -0
  116. package/dist/hooks/useTradeFeed/useTradeFeed.js +47 -0
  117. package/dist/hooks/useTradeFeed/useTradeFeed.js.map +1 -0
  118. package/dist/hooks/useUserMovements/index.d.ts +3 -0
  119. package/dist/hooks/useUserMovements/index.d.ts.map +1 -0
  120. package/dist/hooks/useUserMovements/index.js +3 -0
  121. package/dist/hooks/useUserMovements/index.js.map +1 -0
  122. package/dist/hooks/useUserMovements/types.d.ts +17 -0
  123. package/dist/hooks/useUserMovements/types.d.ts.map +1 -0
  124. package/dist/hooks/useUserMovements/types.js +2 -0
  125. package/dist/hooks/useUserMovements/types.js.map +1 -0
  126. package/dist/hooks/useUserMovements/useUserMovements.d.ts +12 -0
  127. package/dist/hooks/useUserMovements/useUserMovements.d.ts.map +1 -0
  128. package/dist/hooks/useUserMovements/useUserMovements.js +92 -0
  129. package/dist/hooks/useUserMovements/useUserMovements.js.map +1 -0
  130. package/dist/hooks/useVault/index.d.ts +3 -0
  131. package/dist/hooks/useVault/index.d.ts.map +1 -0
  132. package/dist/hooks/useVault/index.js +2 -0
  133. package/dist/hooks/useVault/index.js.map +1 -0
  134. package/dist/hooks/useVault/types.d.ts +16 -0
  135. package/dist/hooks/useVault/types.d.ts.map +1 -0
  136. package/dist/hooks/useVault/types.js +2 -0
  137. package/dist/hooks/useVault/types.js.map +1 -0
  138. package/dist/hooks/useVault/useVault.d.ts +3 -0
  139. package/dist/hooks/useVault/useVault.d.ts.map +1 -0
  140. package/dist/hooks/useVault/useVault.js +66 -0
  141. package/dist/hooks/useVault/useVault.js.map +1 -0
  142. package/dist/index.d.ts +4 -0
  143. package/dist/index.d.ts.map +1 -0
  144. package/dist/index.js +4 -0
  145. package/dist/index.js.map +1 -0
  146. package/dist/provider/MonacoProvider.d.ts +4 -0
  147. package/dist/provider/MonacoProvider.d.ts.map +1 -0
  148. package/dist/provider/MonacoProvider.js +103 -0
  149. package/dist/provider/MonacoProvider.js.map +1 -0
  150. package/dist/provider/index.d.ts +3 -0
  151. package/dist/provider/index.d.ts.map +1 -0
  152. package/dist/provider/index.js +3 -0
  153. package/dist/provider/index.js.map +1 -0
  154. package/dist/provider/types.d.ts +46 -0
  155. package/dist/provider/types.d.ts.map +1 -0
  156. package/dist/provider/types.js +10 -0
  157. package/dist/provider/types.js.map +1 -0
  158. package/dist/utils/index.d.ts +2 -0
  159. package/dist/utils/index.d.ts.map +1 -0
  160. package/dist/utils/index.js +2 -0
  161. package/dist/utils/index.js.map +1 -0
  162. package/dist/utils/tokenStorage.d.ts +39 -0
  163. package/dist/utils/tokenStorage.d.ts.map +1 -0
  164. package/dist/utils/tokenStorage.js +103 -0
  165. package/dist/utils/tokenStorage.js.map +1 -0
  166. package/package.json +39 -0
@@ -0,0 +1,126 @@
1
+ import { useCallback, useEffect, useMemo, useRef } from "react";
2
+ import { clearAuthState, getTimeUntilExpiry, isTokenExpired, saveAuthState } from "../../utils";
3
+ import { validateRefreshBuffer } from "./utils";
4
+ /**
5
+ * Hook for managing token lifecycle including automatic refresh and persistence
6
+ *
7
+ * @param sdk - Monaco SDK instance
8
+ * @param config - Configuration options for token lifecycle
9
+ * @returns Token lifecycle management functions
10
+ *
11
+ * @example
12
+ * ```tsx
13
+ * const { initializeTokens, clearTokens, refreshTokens } = useTokenLifecycle(sdk, {
14
+ * autoRefresh: true,
15
+ * persistTokens: true,
16
+ * refreshBufferSeconds: 300, // 5 minutes
17
+ * onRefreshError: (error) => console.error('Token refresh failed:', error),
18
+ * });
19
+ * ```
20
+ */
21
+ export const useTokenLifecycle = (sdk, config = {}) => {
22
+ const { autoRefresh = true, persistTokens = true, onRefreshError, onRefreshSuccess } = config;
23
+ const refreshBufferSeconds = validateRefreshBuffer(config.refreshBufferSeconds);
24
+ const refreshTimerRef = useRef(null);
25
+ const currentAuthStateRef = useRef(null);
26
+ const refreshPromiseRef = useRef(null);
27
+ const clearRefreshTimer = useCallback(() => {
28
+ if (refreshTimerRef.current) {
29
+ clearTimeout(refreshTimerRef.current);
30
+ refreshTimerRef.current = null;
31
+ }
32
+ }, []);
33
+ const isTokenExpiredCheck = useCallback((authState) => {
34
+ if (!authState)
35
+ return true;
36
+ return isTokenExpired(authState, refreshBufferSeconds);
37
+ }, [refreshBufferSeconds]);
38
+ const scheduleRefresh = useCallback((authState) => {
39
+ if (!autoRefresh)
40
+ return;
41
+ clearRefreshTimer();
42
+ const timeUntilExpiry = getTimeUntilExpiry(authState);
43
+ const refreshIn = Math.max(0, timeUntilExpiry - refreshBufferSeconds);
44
+ const refreshInMs = refreshIn * 1000;
45
+ refreshTimerRef.current = setTimeout(() => {
46
+ refreshTokensRef.current?.();
47
+ }, refreshInMs);
48
+ }, [autoRefresh, refreshBufferSeconds, clearRefreshTimer]);
49
+ const refreshTokens = useCallback(async () => {
50
+ if (!sdk)
51
+ return null;
52
+ if (refreshPromiseRef.current) {
53
+ return refreshPromiseRef.current;
54
+ }
55
+ const currentAuthState = currentAuthStateRef.current;
56
+ if (!currentAuthState?.refreshToken) {
57
+ console.warn("No refresh token available for token refresh");
58
+ return null;
59
+ }
60
+ const refreshPromise = (async () => {
61
+ try {
62
+ // Re-check SDK in case it became null during async operations
63
+ if (!sdk) {
64
+ console.warn("SDK became null during token refresh");
65
+ return null;
66
+ }
67
+ const newAuthState = await sdk.refreshAuth();
68
+ currentAuthStateRef.current = newAuthState;
69
+ if (persistTokens) {
70
+ saveAuthState(newAuthState);
71
+ }
72
+ scheduleRefresh(newAuthState);
73
+ onRefreshSuccess?.(newAuthState);
74
+ return newAuthState;
75
+ }
76
+ catch (error) {
77
+ const err = error instanceof Error ? error : new Error(String(error));
78
+ console.error("Failed to refresh tokens:", err);
79
+ if (persistTokens) {
80
+ clearAuthState();
81
+ }
82
+ currentAuthStateRef.current = null;
83
+ clearRefreshTimer();
84
+ onRefreshError?.(err);
85
+ return null;
86
+ }
87
+ finally {
88
+ refreshPromiseRef.current = null;
89
+ }
90
+ })();
91
+ refreshPromiseRef.current = refreshPromise;
92
+ return refreshPromise;
93
+ }, [sdk, persistTokens, onRefreshError, onRefreshSuccess, scheduleRefresh, clearRefreshTimer]);
94
+ const refreshTokensRef = useRef(refreshTokens);
95
+ useEffect(() => {
96
+ refreshTokensRef.current = refreshTokens;
97
+ }, [refreshTokens]);
98
+ const initializeTokens = useCallback((authState) => {
99
+ currentAuthStateRef.current = authState;
100
+ if (persistTokens) {
101
+ saveAuthState(authState);
102
+ }
103
+ if (autoRefresh) {
104
+ scheduleRefresh(authState);
105
+ }
106
+ }, [persistTokens, autoRefresh, scheduleRefresh]);
107
+ const clearTokens = useCallback(() => {
108
+ currentAuthStateRef.current = null;
109
+ clearRefreshTimer();
110
+ if (persistTokens) {
111
+ clearAuthState();
112
+ }
113
+ }, [persistTokens, clearRefreshTimer]);
114
+ useEffect(() => {
115
+ return () => {
116
+ clearRefreshTimer();
117
+ };
118
+ }, [clearRefreshTimer]);
119
+ return useMemo(() => ({
120
+ initializeTokens,
121
+ clearTokens,
122
+ refreshTokens,
123
+ isTokenExpired: isTokenExpiredCheck,
124
+ }), [initializeTokens, clearTokens, refreshTokens, isTokenExpiredCheck]);
125
+ };
126
+ //# sourceMappingURL=useTokenLifecycle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useTokenLifecycle.js","sourceRoot":"","sources":["../../../src/hooks/useTokenLifecycle/useTokenLifecycle.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Validates and returns a safe refreshBufferSeconds value
3
+ *
4
+ * @param value - The refresh buffer value to validate (in seconds)
5
+ * @returns A safe refresh buffer value between 1-3600 seconds
6
+ */
7
+ export declare const validateRefreshBuffer: (value: number | undefined) => number;
8
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/hooks/useTokenLifecycle/utils.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,eAAO,MAAM,qBAAqB,GAAI,OAAO,MAAM,GAAG,SAAS,KAAG,MAUjE,CAAC"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Validates and returns a safe refreshBufferSeconds value
3
+ *
4
+ * @param value - The refresh buffer value to validate (in seconds)
5
+ * @returns A safe refresh buffer value between 1-3600 seconds
6
+ */
7
+ export const validateRefreshBuffer = (value) => {
8
+ const defaultValue = 300;
9
+ const buffer = value ?? defaultValue;
10
+ if (buffer < 1 || buffer > 3600) {
11
+ console.warn(`Invalid refreshBufferSeconds: ${buffer}. Must be between 1-3600 seconds. Using default: ${defaultValue}`);
12
+ return defaultValue;
13
+ }
14
+ return buffer;
15
+ };
16
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/hooks/useTokenLifecycle/utils.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,KAAyB,EAAU,EAAE;IACzE,MAAM,YAAY,GAAG,GAAG,CAAC;IACzB,MAAM,MAAM,GAAG,KAAK,IAAI,YAAY,CAAC;IAErC,IAAI,MAAM,GAAG,CAAC,IAAI,MAAM,GAAG,IAAI,EAAE,CAAC;QAChC,OAAO,CAAC,IAAI,CAAC,iCAAiC,MAAM,oDAAoD,YAAY,EAAE,CAAC,CAAC;QACxH,OAAO,YAAY,CAAC;IACtB,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC"}
@@ -0,0 +1,3 @@
1
+ export type { UseTradeReturn } from "./types";
2
+ export { useTrade } from "./useTrade";
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/hooks/useTrade/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAC9C,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC"}
@@ -0,0 +1,2 @@
1
+ export { useTrade } from "./useTrade";
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/hooks/useTrade/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC"}
@@ -0,0 +1,29 @@
1
+ import type { CancelOrderResponse, CreateOrderResponse, GetOrderResponse, GetPaginatedOrdersParams, GetPaginatedOrdersResponse, OrderSide, ReplaceOrderResponse, TimeInForce, TradingMode } from "@0xmonaco/types";
2
+ export interface UseTradeReturn {
3
+ /** Place a limit order */
4
+ placeLimitOrder: (tradingPairId: string, side: OrderSide, quantity: string, price: string, options?: {
5
+ tradingMode?: TradingMode;
6
+ useMasterBalance?: boolean;
7
+ expirationDate?: string;
8
+ timeInForce?: TimeInForce;
9
+ }) => Promise<CreateOrderResponse>;
10
+ /** Place a market order */
11
+ placeMarketOrder: (tradingPairId: string, side: OrderSide, quantity: string, options?: {
12
+ tradingMode?: TradingMode;
13
+ slippageTolerance?: number;
14
+ timeInForce?: TimeInForce;
15
+ }) => Promise<CreateOrderResponse>;
16
+ /** Cancel an existing order */
17
+ cancelOrder: (orderId: string) => Promise<CancelOrderResponse>;
18
+ /** Replace an existing order */
19
+ replaceOrder: (orderId: string, newOrder: {
20
+ price?: string;
21
+ quantity?: string;
22
+ useMasterBalance?: boolean;
23
+ }) => Promise<ReplaceOrderResponse>;
24
+ /** Get paginated orders */
25
+ getPaginatedOrders: (params?: GetPaginatedOrdersParams) => Promise<GetPaginatedOrdersResponse>;
26
+ /** Get a single order by ID */
27
+ getOrder: (orderId: string) => Promise<GetOrderResponse>;
28
+ }
29
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/hooks/useTrade/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,mBAAmB,EACnB,mBAAmB,EACnB,gBAAgB,EAChB,wBAAwB,EACxB,0BAA0B,EAC1B,SAAS,EACT,oBAAoB,EACpB,WAAW,EACX,WAAW,EACZ,MAAM,iBAAiB,CAAC;AAEzB,MAAM,WAAW,cAAc;IAC7B,0BAA0B;IAC1B,eAAe,EAAE,CACf,aAAa,EAAE,MAAM,EACrB,IAAI,EAAE,SAAS,EACf,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,EACb,OAAO,CAAC,EAAE;QAAE,WAAW,CAAC,EAAE,WAAW,CAAC;QAAC,gBAAgB,CAAC,EAAE,OAAO,CAAC;QAAC,cAAc,CAAC,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,WAAW,CAAA;KAAE,KACpH,OAAO,CAAC,mBAAmB,CAAC,CAAC;IAElC,2BAA2B;IAC3B,gBAAgB,EAAE,CAChB,aAAa,EAAE,MAAM,EACrB,IAAI,EAAE,SAAS,EACf,QAAQ,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE;QAAE,WAAW,CAAC,EAAE,WAAW,CAAC;QAAC,iBAAiB,CAAC,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,WAAW,CAAA;KAAE,KAC3F,OAAO,CAAC,mBAAmB,CAAC,CAAC;IAElC,+BAA+B;IAC/B,WAAW,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,mBAAmB,CAAC,CAAC;IAE/D,gCAAgC;IAChC,YAAY,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,gBAAgB,CAAC,EAAE,OAAO,CAAA;KAAE,KAAK,OAAO,CAAC,oBAAoB,CAAC,CAAC;IAE9I,2BAA2B;IAC3B,kBAAkB,EAAE,CAAC,MAAM,CAAC,EAAE,wBAAwB,KAAK,OAAO,CAAC,0BAA0B,CAAC,CAAC;IAE/F,+BAA+B;IAC/B,QAAQ,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,gBAAgB,CAAC,CAAC;CAC1D"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/hooks/useTrade/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,3 @@
1
+ import type { UseTradeReturn } from "./types";
2
+ export declare const useTrade: () => UseTradeReturn;
3
+ //# sourceMappingURL=useTrade.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useTrade.d.ts","sourceRoot":"","sources":["../../../src/hooks/useTrade/useTrade.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAE9C,eAAO,MAAM,QAAQ,QAAO,cAkH3B,CAAC"}
@@ -0,0 +1,89 @@
1
+ import { useCallback } from "react";
2
+ import { useMonacoSDK } from "../useMonaco";
3
+ export const useTrade = () => {
4
+ const { sdk } = useMonacoSDK();
5
+ const placeLimitOrder = useCallback(async (tradingPairId, side, quantity, price, options) => {
6
+ if (!sdk)
7
+ throw new Error("SDK not available");
8
+ if (!tradingPairId?.trim())
9
+ throw new Error("Trading pair ID is required and cannot be empty");
10
+ if (!side)
11
+ throw new Error("Order side is required");
12
+ if (!quantity?.trim())
13
+ throw new Error("Quantity is required and cannot be empty");
14
+ if (!price?.trim())
15
+ throw new Error("Price is required and cannot be empty");
16
+ if (Number(quantity) <= 0)
17
+ throw new Error("Quantity must be greater than 0");
18
+ if (Number(price) <= 0)
19
+ throw new Error("Price must be greater than 0");
20
+ return await sdk.trading.placeLimitOrder(tradingPairId, side, quantity, price, options);
21
+ }, [sdk]);
22
+ const placeMarketOrder = useCallback(async (tradingPairId, side, quantity, options) => {
23
+ if (!sdk)
24
+ throw new Error("SDK not available");
25
+ if (!tradingPairId?.trim())
26
+ throw new Error("Trading pair ID is required and cannot be empty");
27
+ if (!side)
28
+ throw new Error("Order side is required");
29
+ if (!quantity?.trim())
30
+ throw new Error("Quantity is required and cannot be empty");
31
+ if (Number(quantity) <= 0)
32
+ throw new Error("Quantity must be greater than 0");
33
+ return await sdk.trading.placeMarketOrder(tradingPairId, side, quantity, options);
34
+ }, [sdk]);
35
+ const cancelOrder = useCallback(async (orderId) => {
36
+ if (!sdk)
37
+ throw new Error("SDK not available");
38
+ if (!orderId?.trim())
39
+ throw new Error("Order ID is required and cannot be empty");
40
+ return await sdk.trading.cancelOrder(orderId);
41
+ }, [sdk]);
42
+ const replaceOrder = useCallback(async (orderId, newOrder) => {
43
+ if (!sdk)
44
+ throw new Error("SDK not available");
45
+ if (!orderId?.trim())
46
+ throw new Error("Order ID is required and cannot be empty");
47
+ if (!newOrder)
48
+ throw new Error("New order object is required");
49
+ // Validate quantity only if provided
50
+ if (newOrder.quantity !== undefined) {
51
+ if (!newOrder.quantity?.trim())
52
+ throw new Error("Quantity cannot be empty");
53
+ if (Number(newOrder.quantity) <= 0)
54
+ throw new Error("Quantity must be greater than 0");
55
+ }
56
+ // Validate price only if provided
57
+ if (newOrder.price !== undefined) {
58
+ if (!newOrder.price?.trim())
59
+ throw new Error("Price cannot be empty");
60
+ if (Number(newOrder.price) <= 0)
61
+ throw new Error("Price must be a valid positive number");
62
+ }
63
+ return await sdk.trading.replaceOrder(orderId, newOrder);
64
+ }, [sdk]);
65
+ const getPaginatedOrders = useCallback(async (params) => {
66
+ if (!sdk)
67
+ throw new Error("SDK not available");
68
+ return await sdk.trading.getPaginatedOrders(params);
69
+ }, [sdk]);
70
+ const getOrder = useCallback(async (orderId) => {
71
+ if (!sdk)
72
+ throw new Error("SDK not available");
73
+ if (!orderId?.trim())
74
+ throw new Error("Order ID is required and cannot be empty");
75
+ return await sdk.trading.getOrder(orderId);
76
+ }, [sdk]);
77
+ return {
78
+ // Order placement
79
+ placeLimitOrder,
80
+ placeMarketOrder,
81
+ // Order management
82
+ cancelOrder,
83
+ replaceOrder,
84
+ // Order queries
85
+ getPaginatedOrders,
86
+ getOrder,
87
+ };
88
+ };
89
+ //# sourceMappingURL=useTrade.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useTrade.js","sourceRoot":"","sources":["../../../src/hooks/useTrade/useTrade.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,15 @@
1
+ import type { TradeEvent } from "@0xmonaco/types";
2
+ /**
3
+ * Return type for the useTradeFeed hook
4
+ */
5
+ export interface UseTradeFeedReturn {
6
+ /** Array of trade events from WebSocket and REST API */
7
+ trades: TradeEvent[];
8
+ /** Whether currently subscribed to a market */
9
+ subscribed: boolean;
10
+ /** Any error that occurred during connection or subscription */
11
+ error: Error | null;
12
+ /** Clear the current error state */
13
+ clearError: () => void;
14
+ }
15
+ //# 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,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAElD;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,wDAAwD;IACxD,MAAM,EAAE,UAAU,EAAE,CAAC;IAErB,+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,9 @@
1
+ import type { UseTradeFeedReturn } from "./types";
2
+ /**
3
+ * Hook for subscribing to real-time trade events via WebSocket (public)
4
+ *
5
+ * @param tradingPairId - The trading pair UUID to subscribe to
6
+ * @param maxTrades - Maximum number of trades to keep in state (default: 50)
7
+ */
8
+ export declare function useTradeFeed(tradingPairId: string, maxTrades?: number): UseTradeFeedReturn;
9
+ //# sourceMappingURL=useTradeFeed.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useTradeFeed.d.ts","sourceRoot":"","sources":["../../../src/hooks/useTradeFeed/useTradeFeed.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAElD;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,aAAa,EAAE,MAAM,EAAE,SAAS,SAAK,GAAG,kBAAkB,CA6CtF"}
@@ -0,0 +1,47 @@
1
+ import { useCallback, useEffect, useState } from "react";
2
+ import { useMonacoSDK } from "../useMonaco";
3
+ /**
4
+ * Hook for subscribing to real-time trade events via WebSocket (public)
5
+ *
6
+ * @param tradingPairId - The trading pair UUID to subscribe to
7
+ * @param maxTrades - Maximum number of trades to keep in state (default: 50)
8
+ */
9
+ export function useTradeFeed(tradingPairId, maxTrades = 50) {
10
+ const { sdk } = useMonacoSDK();
11
+ const [trades, setTrades] = useState([]);
12
+ const [error, setError] = useState(null);
13
+ const [subscribed, setSubscribed] = useState(false);
14
+ const clearError = useCallback(() => setError(null), []);
15
+ // Fetch initial trades and subscribe to WebSocket updates
16
+ useEffect(() => {
17
+ if (!sdk?.ws || !sdk?.trades || !tradingPairId) {
18
+ setSubscribed(false);
19
+ return;
20
+ }
21
+ setTrades([]);
22
+ setError(null);
23
+ // Fetch initial trades via REST API
24
+ const limit = Number.isFinite(maxTrades) ? maxTrades : 50;
25
+ sdk.trades
26
+ .getTrades(tradingPairId, { limit })
27
+ .then((initialTrades) => setTrades(initialTrades))
28
+ .catch((err) => setError(err instanceof Error ? err : new Error(String(err))));
29
+ // Subscribe to WebSocket trade updates
30
+ const unsubscribe = sdk.ws.trades(tradingPairId, (event) => {
31
+ setTrades((prev) => {
32
+ // Deduplicate by tradeId and keep newest first
33
+ const exists = prev.some((t) => t.data.tradeId === event.data.tradeId);
34
+ if (exists)
35
+ return prev;
36
+ return [event, ...prev].slice(0, limit);
37
+ });
38
+ });
39
+ setSubscribed(true);
40
+ return () => {
41
+ unsubscribe();
42
+ setSubscribed(false);
43
+ };
44
+ }, [sdk?.ws, sdk?.trades, tradingPairId, maxTrades]);
45
+ return { trades, subscribed, error, clearError };
46
+ }
47
+ //# sourceMappingURL=useTradeFeed.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useTradeFeed.js","sourceRoot":"","sources":["../../../src/hooks/useTradeFeed/useTradeFeed.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAG5C;;;;;GAKG;AACH,MAAM,UAAU,YAAY,CAAC,aAAqB,EAAE,SAAS,GAAG,EAAE;IAChE,MAAM,EAAE,GAAG,EAAE,GAAG,YAAY,EAAE,CAAC;IAE/B,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAe,EAAE,CAAC,CAAC;IACvD,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAe,IAAI,CAAC,CAAC;IACvD,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAEpD,MAAM,UAAU,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;IAEzD,0DAA0D;IAC1D,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;YAC/C,aAAa,CAAC,KAAK,CAAC,CAAC;YACrB,OAAO;QACT,CAAC;QAED,SAAS,CAAC,EAAE,CAAC,CAAC;QACd,QAAQ,CAAC,IAAI,CAAC,CAAC;QAEf,oCAAoC;QACpC,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;QAC1D,GAAG,CAAC,MAAM;aACP,SAAS,CAAC,aAAa,EAAE,EAAE,KAAK,EAAE,CAAC;aACnC,IAAI,CAAC,CAAC,aAAa,EAAE,EAAE,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;aACjD,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,QAAQ,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAEjF,uCAAuC;QACvC,MAAM,WAAW,GAAG,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC,KAAiB,EAAE,EAAE;YACrE,SAAS,CAAC,CAAC,IAAI,EAAE,EAAE;gBACjB,+CAA+C;gBAC/C,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,KAAK,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBACvE,IAAI,MAAM;oBAAE,OAAO,IAAI,CAAC;gBACxB,OAAO,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;YAC1C,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,aAAa,CAAC,IAAI,CAAC,CAAC;QAEpB,OAAO,GAAG,EAAE;YACV,WAAW,EAAE,CAAC;YACd,aAAa,CAAC,KAAK,CAAC,CAAC;QACvB,CAAC,CAAC;IACJ,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,aAAa,EAAE,SAAS,CAAC,CAAC,CAAC;IAErD,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC;AACnD,CAAC"}
@@ -0,0 +1,3 @@
1
+ export * from "./types";
2
+ export { useUserMovements } from "./useUserMovements";
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/hooks/useUserMovements/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC"}
@@ -0,0 +1,3 @@
1
+ export * from "./types";
2
+ export { useUserMovements } from "./useUserMovements";
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/hooks/useUserMovements/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC"}
@@ -0,0 +1,17 @@
1
+ import type { UserMovementEvent } from "@0xmonaco/types";
2
+ /**
3
+ * Return type for the useUserMovements hook
4
+ */
5
+ export interface UseUserMovementsReturn {
6
+ /** Array of user movement events from WebSocket */
7
+ movements: UserMovementEvent[];
8
+ /** Whether initial data is being loaded */
9
+ loading: boolean;
10
+ /** Whether currently subscribed to movements channel */
11
+ subscribed: boolean;
12
+ /** Any error that occurred during connection or subscription */
13
+ error: Error | null;
14
+ /** Clear the current error state */
15
+ clearError: () => void;
16
+ }
17
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/hooks/useUserMovements/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAEzD;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,mDAAmD;IACnD,SAAS,EAAE,iBAAiB,EAAE,CAAC;IAE/B,2CAA2C;IAC3C,OAAO,EAAE,OAAO,CAAC;IAEjB,wDAAwD;IACxD,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/useUserMovements/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,12 @@
1
+ import type { UseUserMovementsReturn } from "./types";
2
+ /**
3
+ * Hook for subscribing to real-time user movement events via WebSocket (authenticated)
4
+ *
5
+ * Fetches initial movements from the REST API, then subscribes to real-time updates.
6
+ * Requires authentication - the user must be logged in with a valid JWT token.
7
+ * User is identified on the backend via the JWT token.
8
+ *
9
+ * @param maxMovements - Maximum number of movements to keep in state (default: 50)
10
+ */
11
+ export declare function useUserMovements(maxMovements?: number): UseUserMovementsReturn;
12
+ //# sourceMappingURL=useUserMovements.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useUserMovements.d.ts","sourceRoot":"","sources":["../../../src/hooks/useUserMovements/useUserMovements.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,SAAS,CAAC;AA4BtD;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,CAAC,YAAY,SAAK,GAAG,sBAAsB,CA+D1E"}
@@ -0,0 +1,92 @@
1
+ import { useCallback, useEffect, useState } from "react";
2
+ import { useMonacoSDK } from "../useMonaco";
3
+ /**
4
+ * Convert a LedgerMovement from the REST API to a UserMovementEvent format
5
+ */
6
+ function ledgerMovementToEvent(movement, userId) {
7
+ return {
8
+ eventType: "movement",
9
+ userId,
10
+ data: {
11
+ id: movement.id,
12
+ entryType: movement.entry_type,
13
+ transactionType: movement.transaction_type,
14
+ tokenAddress: movement.token,
15
+ amount: movement.amount,
16
+ balanceBefore: movement.balance_before ?? undefined,
17
+ balanceAfter: movement.balance_after ?? undefined,
18
+ lockedBefore: movement.locked_before ?? undefined,
19
+ lockedAfter: movement.locked_after ?? undefined,
20
+ referenceId: movement.reference_id ?? undefined,
21
+ referenceType: movement.reference_type ?? undefined,
22
+ description: movement.description ?? undefined,
23
+ txHash: movement.tx_hash ?? undefined,
24
+ createdAt: movement.created_at ?? undefined,
25
+ },
26
+ };
27
+ }
28
+ /**
29
+ * Hook for subscribing to real-time user movement events via WebSocket (authenticated)
30
+ *
31
+ * Fetches initial movements from the REST API, then subscribes to real-time updates.
32
+ * Requires authentication - the user must be logged in with a valid JWT token.
33
+ * User is identified on the backend via the JWT token.
34
+ *
35
+ * @param maxMovements - Maximum number of movements to keep in state (default: 50)
36
+ */
37
+ export function useUserMovements(maxMovements = 50) {
38
+ const { sdk } = useMonacoSDK();
39
+ const [movements, setMovements] = useState([]);
40
+ const [loading, setLoading] = useState(false);
41
+ const [error, setError] = useState(null);
42
+ const [subscribed, setSubscribed] = useState(false);
43
+ const clearError = useCallback(() => setError(null), []);
44
+ useEffect(() => {
45
+ if (!sdk?.ws || !sdk?.profile) {
46
+ setSubscribed(false);
47
+ return;
48
+ }
49
+ setMovements([]);
50
+ setError(null);
51
+ setLoading(true);
52
+ const limit = Number.isFinite(maxMovements) ? maxMovements : 50;
53
+ // Fetch initial movements via REST API, then subscribe to WebSocket updates
54
+ let unsubscribe;
55
+ sdk.profile
56
+ .getProfile()
57
+ .then((profile) => {
58
+ return sdk.profile.getPaginatedUserMovements({ limit }).then((response) => {
59
+ const initialMovements = response.movements.map((m) => ledgerMovementToEvent(m, profile.id));
60
+ setMovements(initialMovements);
61
+ // Subscribe to WebSocket movement updates after initial data is loaded
62
+ // This prevents race conditions where WS events could be overwritten by REST response
63
+ try {
64
+ unsubscribe = sdk.ws.movements((event) => {
65
+ setMovements((prev) => {
66
+ // Deduplicate by id and keep newest first
67
+ const exists = prev.some((m) => m.data.id === event.data.id);
68
+ if (exists) {
69
+ // Update existing movement
70
+ return prev.map((m) => (m.data.id === event.data.id ? event : m));
71
+ }
72
+ return [event, ...prev].slice(0, limit);
73
+ });
74
+ });
75
+ setSubscribed(true);
76
+ }
77
+ catch (err) {
78
+ setError(err instanceof Error ? err : new Error(String(err)));
79
+ setSubscribed(false);
80
+ }
81
+ });
82
+ })
83
+ .catch((err) => setError(err instanceof Error ? err : new Error(String(err))))
84
+ .finally(() => setLoading(false));
85
+ return () => {
86
+ unsubscribe?.();
87
+ setSubscribed(false);
88
+ };
89
+ }, [sdk?.ws, sdk?.profile, maxMovements]);
90
+ return { movements, loading, subscribed, error, clearError };
91
+ }
92
+ //# sourceMappingURL=useUserMovements.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useUserMovements.js","sourceRoot":"","sources":["../../../src/hooks/useUserMovements/useUserMovements.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export type { UseVaultReturn } from "./types";
2
+ export { useVault } from "./useVault";
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/hooks/useVault/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAC9C,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC"}