@0xmonaco/react 0.5.3 → 0.5.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +12 -18
- 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/useAuth.d.ts.map +1 -1
- package/dist/hooks/useAuth/useAuth.js +3 -5
- package/dist/hooks/useAuth/useAuth.js.map +1 -1
- package/dist/hooks/useMonaco/useMonaco.js +1 -1
- package/dist/hooks/useMonaco/useMonaco.js.map +1 -1
- package/dist/hooks/useOHLCV/index.d.ts +3 -0
- package/dist/hooks/useOHLCV/index.d.ts.map +1 -0
- package/dist/hooks/useOHLCV/index.js +3 -0
- package/dist/hooks/useOHLCV/index.js.map +1 -0
- package/dist/hooks/useOHLCV/types.d.ts +30 -0
- package/dist/hooks/useOHLCV/types.d.ts.map +1 -0
- package/dist/hooks/useOHLCV/types.js +2 -0
- package/dist/hooks/useOHLCV/types.js.map +1 -0
- package/dist/hooks/useOHLCV/useOHLCV.d.ts +12 -0
- package/dist/hooks/useOHLCV/useOHLCV.d.ts.map +1 -0
- package/dist/hooks/useOHLCV/useOHLCV.js +77 -0
- package/dist/hooks/useOHLCV/useOHLCV.js.map +1 -0
- package/dist/hooks/useOrderbook/useOrderbook.d.ts.map +1 -1
- package/dist/hooks/useOrderbook/useOrderbook.js +1 -1
- package/dist/hooks/useOrderbook/useOrderbook.js.map +1 -1
- package/dist/hooks/useTrade/types.d.ts +6 -1
- package/dist/hooks/useTrade/types.d.ts.map +1 -1
- package/dist/hooks/useTrade/useTrade.d.ts.map +1 -1
- package/dist/hooks/useTrade/useTrade.js +9 -0
- package/dist/hooks/useTrade/useTrade.js.map +1 -1
- package/dist/hooks/useTradeFeed/types.d.ts +3 -3
- package/dist/hooks/useTradeFeed/types.d.ts.map +1 -1
- package/dist/hooks/useTradeFeed/useTradeFeed.d.ts +6 -2
- package/dist/hooks/useTradeFeed/useTradeFeed.d.ts.map +1 -1
- package/dist/hooks/useTradeFeed/useTradeFeed.js +20 -34
- package/dist/hooks/useTradeFeed/useTradeFeed.js.map +1 -1
- package/dist/hooks/useUserMovements/index.d.ts +3 -0
- package/dist/hooks/useUserMovements/index.d.ts.map +1 -0
- package/dist/hooks/useUserMovements/index.js +3 -0
- package/dist/hooks/useUserMovements/index.js.map +1 -0
- package/dist/hooks/useUserMovements/types.d.ts +17 -0
- package/dist/hooks/useUserMovements/types.d.ts.map +1 -0
- package/dist/hooks/useUserMovements/types.js +2 -0
- package/dist/hooks/useUserMovements/types.js.map +1 -0
- package/dist/hooks/useUserMovements/useUserMovements.d.ts +12 -0
- package/dist/hooks/useUserMovements/useUserMovements.d.ts.map +1 -0
- package/dist/hooks/useUserMovements/useUserMovements.js +111 -0
- package/dist/hooks/useUserMovements/useUserMovements.js.map +1 -0
- package/dist/hooks/useUserOrders/index.d.ts +3 -0
- package/dist/hooks/useUserOrders/index.d.ts.map +1 -0
- package/dist/hooks/useUserOrders/index.js +3 -0
- package/dist/hooks/useUserOrders/index.js.map +1 -0
- package/dist/hooks/useUserOrders/types.d.ts +19 -0
- package/dist/hooks/useUserOrders/types.d.ts.map +1 -0
- package/dist/hooks/useUserOrders/types.js +2 -0
- package/dist/hooks/useUserOrders/types.js.map +1 -0
- package/dist/hooks/useUserOrders/useUserOrders.d.ts +12 -0
- package/dist/hooks/useUserOrders/useUserOrders.d.ts.map +1 -0
- package/dist/hooks/useUserOrders/useUserOrders.js +192 -0
- package/dist/hooks/useUserOrders/useUserOrders.js.map +1 -0
- package/dist/hooks/useVault/types.d.ts +1 -3
- package/dist/hooks/useVault/types.d.ts.map +1 -1
- package/dist/hooks/useVault/useVault.d.ts.map +1 -1
- package/dist/hooks/useVault/useVault.js +1 -9
- package/dist/hooks/useVault/useVault.js.map +1 -1
- package/dist/provider/MonacoProvider.d.ts +1 -1
- package/dist/provider/MonacoProvider.d.ts.map +1 -1
- package/dist/provider/MonacoProvider.js +62 -20
- package/dist/provider/MonacoProvider.js.map +1 -1
- package/dist/provider/TradeFeedProvider.d.ts +23 -0
- package/dist/provider/TradeFeedProvider.d.ts.map +1 -0
- package/dist/provider/TradeFeedProvider.js +144 -0
- package/dist/provider/TradeFeedProvider.js.map +1 -0
- package/dist/provider/index.d.ts +1 -0
- package/dist/provider/index.d.ts.map +1 -1
- package/dist/provider/index.js +1 -0
- package/dist/provider/index.js.map +1 -1
- package/dist/provider/types.d.ts +8 -0
- package/dist/provider/types.d.ts.map +1 -1
- package/dist/provider/types.js.map +1 -1
- package/package.json +40 -38
package/README.md
CHANGED
|
@@ -8,8 +8,8 @@ React hooks and components for the Monaco Protocol. Build trading applications w
|
|
|
8
8
|
# Install the React SDK and its dependencies
|
|
9
9
|
npm install @0xmonaco/react react wagmi@^2.17.5 viem@^2.31.7
|
|
10
10
|
|
|
11
|
-
# Or with
|
|
12
|
-
|
|
11
|
+
# Or with bun
|
|
12
|
+
bun add @0xmonaco/react react wagmi@^2.17.5 viem@^2.31.7
|
|
13
13
|
|
|
14
14
|
# Or with yarn
|
|
15
15
|
yarn add @0xmonaco/react react wagmi@^2.17.5 viem@^2.31.7
|
|
@@ -162,7 +162,7 @@ await cancelOrder(orderId);
|
|
|
162
162
|
|
|
163
163
|
// Get orders
|
|
164
164
|
const { data: orders } = await getPaginatedOrders({
|
|
165
|
-
status: "
|
|
165
|
+
status: "SUBMITTED",
|
|
166
166
|
trading_pair: "BTC/USDC",
|
|
167
167
|
});
|
|
168
168
|
```
|
|
@@ -205,15 +205,16 @@ const trades = await getTradeFeed("BTC/USDC", { limit: 50 });
|
|
|
205
205
|
Manage token deposits and withdrawals using asset IDs.
|
|
206
206
|
|
|
207
207
|
```tsx
|
|
208
|
-
const { deposit, withdraw, approve,
|
|
208
|
+
const { deposit, withdraw, approve, needsApproval } = useVault();
|
|
209
|
+
const { getUserBalanceByAssetId } = useProfile();
|
|
209
210
|
|
|
210
211
|
// Get asset ID from trading pair
|
|
211
212
|
const pair = await getTradingPairBySymbol("USDC/USDT");
|
|
212
213
|
const assetId = pair.base_asset_id;
|
|
213
214
|
|
|
214
215
|
// Check balance
|
|
215
|
-
const balance = await
|
|
216
|
-
console.log(`Balance: ${balance.
|
|
216
|
+
const balance = await getUserBalanceByAssetId(assetId);
|
|
217
|
+
console.log(`Balance: ${balance.total_balance} ${balance.symbol}`);
|
|
217
218
|
|
|
218
219
|
// Check if approval is needed
|
|
219
220
|
if (await needsApproval(assetId, amount)) {
|
|
@@ -338,37 +339,30 @@ For optimal type inference, use these TypeScript settings:
|
|
|
338
339
|
}
|
|
339
340
|
```
|
|
340
341
|
|
|
341
|
-
## Examples
|
|
342
|
-
|
|
343
|
-
Check out the [`examples/react-vite-app`](../../examples/react-vite-app) directory for a complete React application using the Monaco SDK.
|
|
344
|
-
|
|
345
342
|
## Development
|
|
346
343
|
|
|
347
344
|
### Build
|
|
348
345
|
|
|
349
346
|
```bash
|
|
350
|
-
|
|
347
|
+
bun run build
|
|
351
348
|
```
|
|
352
349
|
|
|
353
350
|
### Watch Mode
|
|
354
351
|
|
|
355
352
|
```bash
|
|
356
|
-
|
|
353
|
+
bun run dev
|
|
357
354
|
```
|
|
358
355
|
|
|
359
356
|
### Lint
|
|
360
357
|
|
|
361
358
|
```bash
|
|
362
|
-
|
|
359
|
+
bun run lint
|
|
363
360
|
```
|
|
364
361
|
|
|
365
|
-
## Contributing
|
|
366
|
-
|
|
367
|
-
We welcome contributions! Please see our [Contributing Guide](../../docs/contributing.mdx) for details.
|
|
368
362
|
|
|
369
363
|
## License
|
|
370
364
|
|
|
371
|
-
This project is licensed under the MIT License
|
|
365
|
+
This project is licensed under the MIT License.
|
|
372
366
|
|
|
373
367
|
## Support
|
|
374
368
|
|
|
@@ -377,5 +371,5 @@ For support, please:
|
|
|
377
371
|
- Open an issue on GitHub
|
|
378
372
|
- Join our [Discord community](https://discord.gg/monaco)
|
|
379
373
|
- Visit our [documentation site](https://docs.monaco.xyz)
|
|
380
|
-
- Check our [API documentation](
|
|
374
|
+
- Check our [API documentation](https://docs.0xmonaco.com)
|
|
381
375
|
|
package/dist/hooks/index.d.ts
CHANGED
|
@@ -2,10 +2,13 @@ export * from "./useAuth";
|
|
|
2
2
|
export * from "./useFees";
|
|
3
3
|
export * from "./useMarket";
|
|
4
4
|
export * from "./useMonaco";
|
|
5
|
+
export * from "./useOHLCV";
|
|
5
6
|
export * from "./useOrderbook";
|
|
6
7
|
export * from "./useProfile";
|
|
7
8
|
export * from "./useTokenLifecycle";
|
|
8
9
|
export * from "./useTrade";
|
|
9
10
|
export * from "./useTradeFeed";
|
|
11
|
+
export * from "./useUserMovements";
|
|
12
|
+
export * from "./useUserOrders";
|
|
10
13
|
export * from "./useVault";
|
|
11
14
|
//# 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,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,qBAAqB,CAAC;AACpC,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC;AAC/B,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,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,qBAAqB,CAAC;AACpC,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,oBAAoB,CAAC;AACnC,cAAc,iBAAiB,CAAC;AAChC,cAAc,YAAY,CAAC"}
|
package/dist/hooks/index.js
CHANGED
|
@@ -2,10 +2,13 @@ export * from "./useAuth";
|
|
|
2
2
|
export * from "./useFees";
|
|
3
3
|
export * from "./useMarket";
|
|
4
4
|
export * from "./useMonaco";
|
|
5
|
+
export * from "./useOHLCV";
|
|
5
6
|
export * from "./useOrderbook";
|
|
6
7
|
export * from "./useProfile";
|
|
7
8
|
export * from "./useTokenLifecycle";
|
|
8
9
|
export * from "./useTrade";
|
|
9
10
|
export * from "./useTradeFeed";
|
|
11
|
+
export * from "./useUserMovements";
|
|
12
|
+
export * from "./useUserOrders";
|
|
10
13
|
export * from "./useVault";
|
|
11
14
|
//# 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,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,qBAAqB,CAAC;AACpC,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC;AAC/B,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,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,qBAAqB,CAAC;AACpC,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,oBAAoB,CAAC;AACnC,cAAc,iBAAiB,CAAC;AAChC,cAAc,YAAY,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useAuth.d.ts","sourceRoot":"","sources":["../../../src/hooks/useAuth/useAuth.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"useAuth.d.ts","sourceRoot":"","sources":["../../../src/hooks/useAuth/useAuth.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAE7C,eAAO,MAAM,OAAO,QAAO,aAwK1B,CAAC"}
|
|
@@ -1,15 +1,13 @@
|
|
|
1
1
|
import { useCallback } from "react";
|
|
2
|
-
import { useWalletClient } from "wagmi";
|
|
3
2
|
import { AuthenticationStatus, useMonacoContext } from "../../provider";
|
|
4
3
|
import { useMonacoSDK } from "../useMonaco";
|
|
5
4
|
export const useAuth = () => {
|
|
6
5
|
const { sdk, clientId } = useMonacoSDK();
|
|
7
|
-
const { authenticationStatus, setAuthenticationStatus, tokenLifecycle } = useMonacoContext();
|
|
8
|
-
const { data: walletClient } = useWalletClient();
|
|
6
|
+
const { authenticationStatus, setAuthenticationStatus, tokenLifecycle, isWalletConnected } = useMonacoContext();
|
|
9
7
|
const login = useCallback(async () => {
|
|
10
8
|
if (!sdk)
|
|
11
9
|
throw new Error("SDK not available");
|
|
12
|
-
if (!
|
|
10
|
+
if (!isWalletConnected)
|
|
13
11
|
throw new Error("Wallet not connected");
|
|
14
12
|
setAuthenticationStatus(AuthenticationStatus.AUTHENTICATING);
|
|
15
13
|
try {
|
|
@@ -24,7 +22,7 @@ export const useAuth = () => {
|
|
|
24
22
|
setAuthenticationStatus(AuthenticationStatus.UNAUTHENTICATED);
|
|
25
23
|
throw error;
|
|
26
24
|
}
|
|
27
|
-
}, [sdk,
|
|
25
|
+
}, [sdk, isWalletConnected, clientId, setAuthenticationStatus, tokenLifecycle]);
|
|
28
26
|
const logout = useCallback(async () => {
|
|
29
27
|
if (!sdk)
|
|
30
28
|
throw new Error("SDK not available");
|
|
@@ -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,
|
|
1
|
+
{"version":3,"file":"useAuth.js","sourceRoot":"","sources":["../../../src/hooks/useAuth/useAuth.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { useCallback } from "react";
|
|
2
|
-
import { useMonacoContext } from "../../provider
|
|
2
|
+
import { useMonacoContext } from "../../provider";
|
|
3
3
|
export const useMonacoSDK = () => {
|
|
4
4
|
const { sdk, clientId, error, setError } = useMonacoContext();
|
|
5
5
|
const clearError = useCallback(() => setError(null), [setError]);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useMonaco.js","sourceRoot":"","sources":["../../../src/hooks/useMonaco/useMonaco.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AACpC,OAAO,EAAE,gBAAgB,EAAE,MAAM
|
|
1
|
+
{"version":3,"file":"useMonaco.js","sourceRoot":"","sources":["../../../src/hooks/useMonaco/useMonaco.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AACpC,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAGlD,MAAM,CAAC,MAAM,YAAY,GAAG,GAAoB,EAAE;IAChD,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,gBAAgB,EAAE,CAAC;IAE9D,MAAM,UAAU,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC;IAEjE,OAAO;QACL,GAAG;QACH,QAAQ;QACR,KAAK;QACL,UAAU;QACV,QAAQ;KACT,CAAC;AACJ,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/hooks/useOHLCV/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/hooks/useOHLCV/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import type { Candlestick, GetCandlesticksParams, Interval, TradingMode } from "@0xmonaco/types";
|
|
2
|
+
/**
|
|
3
|
+
* Parameters for the useOHLCV hook
|
|
4
|
+
*/
|
|
5
|
+
export interface UseOHLCVParams {
|
|
6
|
+
/** Trading pair UUID */
|
|
7
|
+
tradingPairId: string;
|
|
8
|
+
/** Trading mode (e.g., "CLOB") */
|
|
9
|
+
tradingMode: TradingMode;
|
|
10
|
+
/** Candlestick interval (1m, 5m, 15m, 1h, 4h, 1d) */
|
|
11
|
+
interval: Interval;
|
|
12
|
+
/** Optional parameters for initial candlestick fetch */
|
|
13
|
+
initialFetchParams?: GetCandlesticksParams;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Return type for the useOHLCV hook
|
|
17
|
+
*/
|
|
18
|
+
export interface UseOHLCVReturn {
|
|
19
|
+
/** Array of candlesticks (oldest to newest) */
|
|
20
|
+
candlesticks: Candlestick[];
|
|
21
|
+
/** Whether the initial candlesticks are being fetched */
|
|
22
|
+
loading: boolean;
|
|
23
|
+
/** Whether currently subscribed to WebSocket updates */
|
|
24
|
+
subscribed: boolean;
|
|
25
|
+
/** Any error that occurred during connection or subscription */
|
|
26
|
+
error: Error | null;
|
|
27
|
+
/** Clear the current error */
|
|
28
|
+
clearError: () => void;
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/hooks/useOHLCV/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,qBAAqB,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAEjG;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,wBAAwB;IACxB,aAAa,EAAE,MAAM,CAAC;IACtB,kCAAkC;IAClC,WAAW,EAAE,WAAW,CAAC;IACzB,qDAAqD;IACrD,QAAQ,EAAE,QAAQ,CAAC;IACnB,wDAAwD;IACxD,kBAAkB,CAAC,EAAE,qBAAqB,CAAC;CAC5C;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,+CAA+C;IAC/C,YAAY,EAAE,WAAW,EAAE,CAAC;IAE5B,yDAAyD;IACzD,OAAO,EAAE,OAAO,CAAC;IAEjB,wDAAwD;IACxD,UAAU,EAAE,OAAO,CAAC;IAEpB,gEAAgE;IAChE,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IAEpB,8BAA8B;IAC9B,UAAU,EAAE,MAAM,IAAI,CAAC;CACxB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/hooks/useOHLCV/types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { UseOHLCVParams, UseOHLCVReturn } from "./types";
|
|
2
|
+
/**
|
|
3
|
+
* Hook for subscribing to real-time OHLCV candlestick events via WebSocket (public)
|
|
4
|
+
*
|
|
5
|
+
* Fetches initial candlesticks from the REST API, then subscribes to real-time updates.
|
|
6
|
+
* When a new candlestick event arrives, it either updates the most recent candlestick
|
|
7
|
+
* (if timestamps match) or appends a new one.
|
|
8
|
+
*
|
|
9
|
+
* @param params - Configuration including tradingPairId, tradingMode, interval, and optional fetch params
|
|
10
|
+
*/
|
|
11
|
+
export declare function useOHLCV(params: UseOHLCVParams): UseOHLCVReturn;
|
|
12
|
+
//# sourceMappingURL=useOHLCV.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useOHLCV.d.ts","sourceRoot":"","sources":["../../../src/hooks/useOHLCV/useOHLCV.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAE9D;;;;;;;;GAQG;AACH,wBAAgB,QAAQ,CAAC,MAAM,EAAE,cAAc,GAAG,cAAc,CA2E/D"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import { useCallback, useEffect, useState } from "react";
|
|
2
|
+
import { useMonacoSDK } from "../useMonaco";
|
|
3
|
+
/**
|
|
4
|
+
* Hook for subscribing to real-time OHLCV candlestick events via WebSocket (public)
|
|
5
|
+
*
|
|
6
|
+
* Fetches initial candlesticks from the REST API, then subscribes to real-time updates.
|
|
7
|
+
* When a new candlestick event arrives, it either updates the most recent candlestick
|
|
8
|
+
* (if timestamps match) or appends a new one.
|
|
9
|
+
*
|
|
10
|
+
* @param params - Configuration including tradingPairId, tradingMode, interval, and optional fetch params
|
|
11
|
+
*/
|
|
12
|
+
export function useOHLCV(params) {
|
|
13
|
+
const { tradingPairId, tradingMode, interval, initialFetchParams } = params;
|
|
14
|
+
const { sdk } = useMonacoSDK();
|
|
15
|
+
const [candlesticks, setCandlesticks] = useState([]);
|
|
16
|
+
const [loading, setLoading] = useState(false);
|
|
17
|
+
const [error, setError] = useState(null);
|
|
18
|
+
const [subscribed, setSubscribed] = useState(false);
|
|
19
|
+
const clearError = useCallback(() => setError(null), []);
|
|
20
|
+
useEffect(() => {
|
|
21
|
+
if (!sdk?.ws || !sdk?.market || !tradingPairId || !tradingMode || !interval) {
|
|
22
|
+
setSubscribed(false);
|
|
23
|
+
setLoading(false);
|
|
24
|
+
return;
|
|
25
|
+
}
|
|
26
|
+
setCandlesticks([]);
|
|
27
|
+
setError(null);
|
|
28
|
+
setLoading(true);
|
|
29
|
+
let unsubscribe;
|
|
30
|
+
let cancelled = false;
|
|
31
|
+
sdk.market
|
|
32
|
+
.getCandlesticks(tradingPairId, interval, initialFetchParams)
|
|
33
|
+
.then((initialCandlesticks) => {
|
|
34
|
+
if (cancelled)
|
|
35
|
+
return;
|
|
36
|
+
setCandlesticks(initialCandlesticks);
|
|
37
|
+
try {
|
|
38
|
+
unsubscribe = sdk.ws.ohlcv(tradingPairId, tradingMode, interval, (event) => {
|
|
39
|
+
setCandlesticks((prev) => {
|
|
40
|
+
if (prev.length === 0) {
|
|
41
|
+
return [event.candlestick];
|
|
42
|
+
}
|
|
43
|
+
const lastCandle = prev[prev.length - 1];
|
|
44
|
+
if (lastCandle.T === event.candlestick.T) {
|
|
45
|
+
const updated = [...prev];
|
|
46
|
+
updated[updated.length - 1] = event.candlestick;
|
|
47
|
+
return updated;
|
|
48
|
+
}
|
|
49
|
+
return [...prev, event.candlestick];
|
|
50
|
+
});
|
|
51
|
+
});
|
|
52
|
+
setSubscribed(true);
|
|
53
|
+
}
|
|
54
|
+
catch (err) {
|
|
55
|
+
setError(err instanceof Error ? err : new Error(String(err)));
|
|
56
|
+
setSubscribed(false);
|
|
57
|
+
}
|
|
58
|
+
})
|
|
59
|
+
.catch((err) => {
|
|
60
|
+
if (!cancelled) {
|
|
61
|
+
setError(err instanceof Error ? err : new Error(String(err)));
|
|
62
|
+
}
|
|
63
|
+
})
|
|
64
|
+
.finally(() => {
|
|
65
|
+
if (!cancelled) {
|
|
66
|
+
setLoading(false);
|
|
67
|
+
}
|
|
68
|
+
});
|
|
69
|
+
return () => {
|
|
70
|
+
cancelled = true;
|
|
71
|
+
unsubscribe?.();
|
|
72
|
+
setSubscribed(false);
|
|
73
|
+
};
|
|
74
|
+
}, [sdk?.ws, sdk?.market, tradingPairId, tradingMode, interval, initialFetchParams]);
|
|
75
|
+
return { candlesticks, loading, subscribed, error, clearError };
|
|
76
|
+
}
|
|
77
|
+
//# sourceMappingURL=useOHLCV.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useOHLCV.js","sourceRoot":"","sources":["../../../src/hooks/useOHLCV/useOHLCV.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useOrderbook.d.ts","sourceRoot":"","sources":["../../../src/hooks/useOrderbook/useOrderbook.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"useOrderbook.d.ts","sourceRoot":"","sources":["../../../src/hooks/useOrderbook/useOrderbook.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAkB,sBAAsB,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAG3F,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAElD,wBAAgB,YAAY,CAC1B,aAAa,EAAE,MAAM,EACrB,WAAW,EAAE,WAAW,EACxB,SAAS,EAAE,MAAM,EACjB,aAAa,EAAE,sBAAsB,EACrC,KAAK,SAAK,GACT,kBAAkB,CAoCpB"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { useMonacoSDK } from "@0xmonaco/react";
|
|
2
1
|
import { useCallback, useEffect, useState } from "react";
|
|
2
|
+
import { useMonacoSDK } from "../useMonaco";
|
|
3
3
|
export function useOrderbook(tradingPairId, tradingMode, magnitude, quotationMode, depth = 10) {
|
|
4
4
|
const { sdk } = useMonacoSDK();
|
|
5
5
|
const [orderbook, setOrderbook] = useState(null);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useOrderbook.js","sourceRoot":"","sources":["../../../src/hooks/useOrderbook/useOrderbook.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"useOrderbook.js","sourceRoot":"","sources":["../../../src/hooks/useOrderbook/useOrderbook.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAG5C,MAAM,UAAU,YAAY,CAC1B,aAAqB,EACrB,WAAwB,EACxB,SAAiB,EACjB,aAAqC,EACrC,KAAK,GAAG,EAAE;IAEV,MAAM,EAAE,GAAG,EAAE,GAAG,YAAY,EAAE,CAAC;IAE/B,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAwB,IAAI,CAAC,CAAC;IACxE,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,6CAA6C;IAC7C,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,SAAS,IAAI,CAAC,aAAa,EAAE,CAAC;YAClD,aAAa,CAAC,KAAK,CAAC,CAAC;YACrB,OAAO;QACT,CAAC;QAED,YAAY,CAAC,IAAI,CAAC,CAAC;QACnB,QAAQ,CAAC,IAAI,CAAC,CAAC;QAEf,mCAAmC;QACnC,GAAG,CAAC,SAAS;aACV,YAAY,CAAC,aAAa,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,YAAY,EAAE,aAAa,EAAE,CAAC;aAC3F,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;aACxC,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,2EAA2E;QAC3E,MAAM,WAAW,GAAG,GAAG,CAAC,EAAE,CAAC,SAAS,CAAC,aAAa,EAAE,WAAW,EAAE,SAAS,EAAE,aAAa,EAAE,YAAY,CAAC,CAAC;QACzG,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,SAAS,EAAE,aAAa,EAAE,WAAW,EAAE,SAAS,EAAE,aAAa,EAAE,KAAK,CAAC,CAAC,CAAC;IAE3F,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC;AACtD,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { CancelOrderResponse, CreateOrderResponse, GetOrderResponse, GetPaginatedOrdersParams, GetPaginatedOrdersResponse, OrderSide, ReplaceOrderResponse, TimeInForce, TradingMode } from "@0xmonaco/types";
|
|
1
|
+
import type { BatchCancelOrdersResponse, CancelOrderResponse, CreateOrderResponse, GetOrderResponse, GetPaginatedOrdersParams, GetPaginatedOrdersResponse, OrderSide, ReplaceOrderResponse, TimeInForce, TradingMode } from "@0xmonaco/types";
|
|
2
2
|
export interface UseTradeReturn {
|
|
3
3
|
/** Place a limit order */
|
|
4
4
|
placeLimitOrder: (tradingPairId: string, side: OrderSide, quantity: string, price: string, options?: {
|
|
@@ -15,6 +15,11 @@ export interface UseTradeReturn {
|
|
|
15
15
|
}) => Promise<CreateOrderResponse>;
|
|
16
16
|
/** Cancel an existing order */
|
|
17
17
|
cancelOrder: (orderId: string) => Promise<CancelOrderResponse>;
|
|
18
|
+
/** Batch cancel multiple orders */
|
|
19
|
+
batchCancelOrders: (options: {
|
|
20
|
+
orderIds?: string[];
|
|
21
|
+
cancelAll?: boolean;
|
|
22
|
+
}) => Promise<BatchCancelOrdersResponse>;
|
|
18
23
|
/** Replace an existing order */
|
|
19
24
|
replaceOrder: (orderId: string, newOrder: {
|
|
20
25
|
price?: string;
|
|
@@ -1 +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"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/hooks/useTrade/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,yBAAyB,EACzB,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,mCAAmC;IACnC,iBAAiB,EAAE,CAAC,OAAO,EAAE;QAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;QAAC,SAAS,CAAC,EAAE,OAAO,CAAA;KAAE,KAAK,OAAO,CAAC,yBAAyB,CAAC,CAAC;IAEjH,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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useTrade.d.ts","sourceRoot":"","sources":["../../../src/hooks/useTrade/useTrade.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"useTrade.d.ts","sourceRoot":"","sources":["../../../src/hooks/useTrade/useTrade.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAE9C,eAAO,MAAM,QAAQ,QAAO,cA+H3B,CAAC"}
|
|
@@ -39,6 +39,14 @@ export const useTrade = () => {
|
|
|
39
39
|
throw new Error("Order ID is required and cannot be empty");
|
|
40
40
|
return await sdk.trading.cancelOrder(orderId);
|
|
41
41
|
}, [sdk]);
|
|
42
|
+
const batchCancelOrders = useCallback(async (options) => {
|
|
43
|
+
if (!sdk)
|
|
44
|
+
throw new Error("SDK not available");
|
|
45
|
+
if (!options.cancelAll && (!options.orderIds || options.orderIds.length === 0)) {
|
|
46
|
+
throw new Error("Either orderIds must be provided or cancelAll must be true");
|
|
47
|
+
}
|
|
48
|
+
return await sdk.trading.batchCancelOrders(options);
|
|
49
|
+
}, [sdk]);
|
|
42
50
|
const replaceOrder = useCallback(async (orderId, newOrder) => {
|
|
43
51
|
if (!sdk)
|
|
44
52
|
throw new Error("SDK not available");
|
|
@@ -80,6 +88,7 @@ export const useTrade = () => {
|
|
|
80
88
|
placeMarketOrder,
|
|
81
89
|
// Order management
|
|
82
90
|
cancelOrder,
|
|
91
|
+
batchCancelOrders,
|
|
83
92
|
replaceOrder,
|
|
84
93
|
// Order queries
|
|
85
94
|
getPaginatedOrders,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useTrade.js","sourceRoot":"","sources":["../../../src/hooks/useTrade/useTrade.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"useTrade.js","sourceRoot":"","sources":["../../../src/hooks/useTrade/useTrade.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,11 +5,11 @@ import type { TradeEvent } from "@0xmonaco/types";
|
|
|
5
5
|
export interface UseTradeFeedReturn {
|
|
6
6
|
/** Array of trade events from WebSocket and REST API */
|
|
7
7
|
trades: TradeEvent[];
|
|
8
|
-
/** Whether currently subscribed to a market */
|
|
8
|
+
/** Whether currently subscribed to a market. Will be false if the SDK is not yet initialized. */
|
|
9
9
|
subscribed: boolean;
|
|
10
|
+
/** Whether the initial trades are being fetched */
|
|
11
|
+
fetchingInitialState: boolean;
|
|
10
12
|
/** Any error that occurred during connection or subscription */
|
|
11
13
|
error: Error | null;
|
|
12
|
-
/** Clear the current error state */
|
|
13
|
-
clearError: () => void;
|
|
14
14
|
}
|
|
15
15
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +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
|
|
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,iGAAiG;IACjG,UAAU,EAAE,OAAO,CAAC;IAEpB,mDAAmD;IACnD,oBAAoB,EAAE,OAAO,CAAC;IAE9B,gEAAgE;IAChE,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;CACrB"}
|
|
@@ -2,8 +2,12 @@ import type { UseTradeFeedReturn } from "./types";
|
|
|
2
2
|
/**
|
|
3
3
|
* Hook for subscribing to real-time trade events via WebSocket (public)
|
|
4
4
|
*
|
|
5
|
+
* Subscriptions are shared at the provider level - multiple components using the same
|
|
6
|
+
* tradingPairId will share both the WebSocket connection and the trade state.
|
|
7
|
+
* Initial trades are fetched only once when the first component subscribes.
|
|
8
|
+
* The last 50 trades are kept in state (this limit is fixed and not configurable).
|
|
9
|
+
*
|
|
5
10
|
* @param tradingPairId - The trading pair UUID to subscribe to
|
|
6
|
-
* @param maxTrades - Maximum number of trades to keep in state (default: 50)
|
|
7
11
|
*/
|
|
8
|
-
export declare function useTradeFeed(tradingPairId: string
|
|
12
|
+
export declare function useTradeFeed(tradingPairId: string): UseTradeFeedReturn;
|
|
9
13
|
//# sourceMappingURL=useTradeFeed.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useTradeFeed.d.ts","sourceRoot":"","sources":["../../../src/hooks/useTradeFeed/useTradeFeed.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"useTradeFeed.d.ts","sourceRoot":"","sources":["../../../src/hooks/useTradeFeed/useTradeFeed.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AAElD;;;;;;;;;GASG;AACH,wBAAgB,YAAY,CAAC,aAAa,EAAE,MAAM,GAAG,kBAAkB,CAuBtE"}
|
|
@@ -1,47 +1,33 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { useEffect } from "react";
|
|
2
|
+
import { MAX_TRADES, useTradeFeedContext } from "../../provider";
|
|
2
3
|
import { useMonacoSDK } from "../useMonaco";
|
|
3
4
|
/**
|
|
4
5
|
* Hook for subscribing to real-time trade events via WebSocket (public)
|
|
5
6
|
*
|
|
7
|
+
* Subscriptions are shared at the provider level - multiple components using the same
|
|
8
|
+
* tradingPairId will share both the WebSocket connection and the trade state.
|
|
9
|
+
* Initial trades are fetched only once when the first component subscribes.
|
|
10
|
+
* The last 50 trades are kept in state (this limit is fixed and not configurable).
|
|
11
|
+
*
|
|
6
12
|
* @param tradingPairId - The trading pair UUID to subscribe to
|
|
7
|
-
* @param maxTrades - Maximum number of trades to keep in state (default: 50)
|
|
8
13
|
*/
|
|
9
|
-
export function useTradeFeed(tradingPairId
|
|
14
|
+
export function useTradeFeed(tradingPairId) {
|
|
10
15
|
const { sdk } = useMonacoSDK();
|
|
11
|
-
const
|
|
12
|
-
const
|
|
13
|
-
const [subscribed, setSubscribed] = useState(false);
|
|
14
|
-
const clearError = useCallback(() => setError(null), []);
|
|
15
|
-
// Fetch initial trades and subscribe to WebSocket updates
|
|
16
|
+
const { subscribe, subscriptions } = useTradeFeedContext();
|
|
17
|
+
const subscription = subscriptions.get(tradingPairId);
|
|
16
18
|
useEffect(() => {
|
|
17
19
|
if (!sdk?.ws || !sdk?.trades || !tradingPairId) {
|
|
18
|
-
setSubscribed(false);
|
|
19
20
|
return;
|
|
20
21
|
}
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
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 };
|
|
22
|
+
const fetchInitialTrades = () => sdk.trades.getTrades(tradingPairId, { limit: MAX_TRADES });
|
|
23
|
+
const subscribeToWs = (handler) => sdk.ws.trades(tradingPairId, handler);
|
|
24
|
+
return subscribe(tradingPairId, fetchInitialTrades, subscribeToWs);
|
|
25
|
+
}, [sdk?.ws, sdk?.trades, tradingPairId, subscribe]);
|
|
26
|
+
return {
|
|
27
|
+
trades: subscription?.trades ?? [],
|
|
28
|
+
subscribed: subscription?.subscribed ?? false,
|
|
29
|
+
fetchingInitialState: subscription?.fetchingInitialState ?? false,
|
|
30
|
+
error: subscription?.error ?? null,
|
|
31
|
+
};
|
|
46
32
|
}
|
|
47
33
|
//# sourceMappingURL=useTradeFeed.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useTradeFeed.js","sourceRoot":"","sources":["../../../src/hooks/useTradeFeed/useTradeFeed.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"useTradeFeed.js","sourceRoot":"","sources":["../../../src/hooks/useTradeFeed/useTradeFeed.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAClC,OAAO,EAAE,UAAU,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AACjE,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAG5C;;;;;;;;;GASG;AACH,MAAM,UAAU,YAAY,CAAC,aAAqB;IAChD,MAAM,EAAE,GAAG,EAAE,GAAG,YAAY,EAAE,CAAC;IAC/B,MAAM,EAAE,SAAS,EAAE,aAAa,EAAE,GAAG,mBAAmB,EAAE,CAAC;IAE3D,MAAM,YAAY,GAAG,aAAa,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;IAEtD,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,GAAG,EAAE,EAAE,IAAI,CAAC,GAAG,EAAE,MAAM,IAAI,CAAC,aAAa,EAAE,CAAC;YAC/C,OAAO;QACT,CAAC;QAED,MAAM,kBAAkB,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,aAAa,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC,CAAC;QAC5F,MAAM,aAAa,GAAG,CAAC,OAAoC,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;QAEtG,OAAO,SAAS,CAAC,aAAa,EAAE,kBAAkB,EAAE,aAAa,CAAC,CAAC;IACrE,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,aAAa,EAAE,SAAS,CAAC,CAAC,CAAC;IAErD,OAAO;QACL,MAAM,EAAE,YAAY,EAAE,MAAM,IAAI,EAAE;QAClC,UAAU,EAAE,YAAY,EAAE,UAAU,IAAI,KAAK;QAC7C,oBAAoB,EAAE,YAAY,EAAE,oBAAoB,IAAI,KAAK;QACjE,KAAK,EAAE,YAAY,EAAE,KAAK,IAAI,IAAI;KACnC,CAAC;AACJ,CAAC"}
|
|
@@ -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 @@
|
|
|
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"}
|