@0xmonaco/react 0.0.0-develop-20260120180031 → 0.0.0-develop-20260128053451
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 +6 -6
- package/dist/hooks/index.d.ts +1 -0
- package/dist/hooks/index.d.ts.map +1 -1
- package/dist/hooks/index.js +1 -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 +31 -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 +64 -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/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/provider/MonacoProvider.d.ts +1 -1
- package/dist/provider/MonacoProvider.d.ts.map +1 -1
- package/dist/provider/MonacoProvider.js +29 -19
- 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/dist/utils/wagmi.d.ts +11 -0
- package/dist/utils/wagmi.d.ts.map +1 -0
- package/dist/utils/wagmi.js +17 -0
- package/dist/utils/wagmi.js.map +1 -0
- package/package.json +36 -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
|
```
|
|
@@ -347,19 +347,19 @@ Check out the [`examples/react-vite-app`](../../examples/react-vite-app) directo
|
|
|
347
347
|
### Build
|
|
348
348
|
|
|
349
349
|
```bash
|
|
350
|
-
|
|
350
|
+
bun run build
|
|
351
351
|
```
|
|
352
352
|
|
|
353
353
|
### Watch Mode
|
|
354
354
|
|
|
355
355
|
```bash
|
|
356
|
-
|
|
356
|
+
bun run dev
|
|
357
357
|
```
|
|
358
358
|
|
|
359
359
|
### Lint
|
|
360
360
|
|
|
361
361
|
```bash
|
|
362
|
-
|
|
362
|
+
bun run lint
|
|
363
363
|
```
|
|
364
364
|
|
|
365
365
|
## Contributing
|
package/dist/hooks/index.d.ts
CHANGED
|
@@ -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,oBAAoB,CAAC;AACnC,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,YAAY,CAAC"}
|
package/dist/hooks/index.js
CHANGED
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,oBAAoB,CAAC;AACnC,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,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":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AACpC,OAAO,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AACxE,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAG5C,MAAM,CAAC,MAAM,OAAO,GAAG,GAAkB,EAAE;IACzC,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,YAAY,EAAE,CAAC;IACzC,MAAM,EAAE,oBAAoB,EAAE,uBAAuB,EAAE,cAAc,EAAE,iBAAiB,EAAE,GAAG,gBAAgB,EAAE,CAAC;IAEhH,MAAM,KAAK,GAAG,WAAW,CAAC,KAAK,IAAI,EAAE;QACnC,IAAI,CAAC,GAAG;YAAE,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;QAC/C,IAAI,CAAC,iBAAiB;YAAE,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;QAEhE,uBAAuB,CAAC,oBAAoB,CAAC,cAAc,CAAC,CAAC;QAE7D,IAAI,CAAC;YACH,MAAM,SAAS,GAAG,MAAM,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;YAE5C,iEAAiE;YACjE,cAAc,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;YAE3C,MAAM,aAAa,GAAG,GAAG,CAAC,eAAe,EAAE,CAAC;YAC5C,uBAAuB,CAAC,aAAa,CAAC,CAAC,CAAC,oBAAoB,CAAC,aAAa,CAAC,CAAC,CAAC,oBAAoB,CAAC,eAAe,CAAC,CAAC;YACnH,OAAO,SAAS,CAAC;QACnB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,uBAAuB,CAAC,oBAAoB,CAAC,eAAe,CAAC,CAAC;YAC9D,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC,EAAE,CAAC,GAAG,EAAE,iBAAiB,EAAE,QAAQ,EAAE,uBAAuB,EAAE,cAAc,CAAC,CAAC,CAAC;IAEhF,MAAM,MAAM,GAAG,WAAW,CAAC,KAAK,IAAI,EAAE;QACpC,IAAI,CAAC,GAAG;YAAE,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;QAE/C,uBAAuB,CAAC,oBAAoB,CAAC,cAAc,CAAC,CAAC;QAE7D,IAAI,CAAC;YACH,MAAM,GAAG,CAAC,MAAM,EAAE,CAAC;YAEnB,4CAA4C;YAC5C,cAAc,CAAC,WAAW,EAAE,CAAC;YAE7B,uBAAuB,CAAC,oBAAoB,CAAC,eAAe,CAAC,CAAC;QAChE,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,oCAAoC;YACpC,cAAc,CAAC,WAAW,EAAE,CAAC;YAC7B,uBAAuB,CAAC,oBAAoB,CAAC,eAAe,CAAC,CAAC;YAC9D,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC,EAAE,CAAC,GAAG,EAAE,uBAAuB,EAAE,cAAc,CAAC,CAAC,CAAC;IAEnD,MAAM,WAAW,GAAG,WAAW,CAAC,KAAK,IAAI,EAAE;QACzC,IAAI,CAAC,GAAG;YAAE,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;QAE/C,uBAAuB,CAAC,oBAAoB,CAAC,cAAc,CAAC,CAAC;QAE7D,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,WAAW,EAAE,CAAC;YAEvC,mDAAmD;YACnD,cAAc,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;YAExC,MAAM,aAAa,GAAG,GAAG,CAAC,eAAe,EAAE,CAAC;YAC5C,uBAAuB,CAAC,aAAa,CAAC,CAAC,CAAC,oBAAoB,CAAC,aAAa,CAAC,CAAC,CAAC,oBAAoB,CAAC,eAAe,CAAC,CAAC;YACnH,OAAO,MAAM,CAAC;QAChB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,cAAc,CAAC,WAAW,EAAE,CAAC;YAC7B,uBAAuB,CAAC,oBAAoB,CAAC,eAAe,CAAC,CAAC;YAC9D,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC,EAAE,CAAC,GAAG,EAAE,uBAAuB,EAAE,cAAc,CAAC,CAAC,CAAC;IAEnD,MAAM,aAAa,GAAG,WAAW,CAC/B,KAAK,EAAE,OAAe,EAAE,EAAE;QACxB,IAAI,CAAC,GAAG;YAAE,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;QAC/C,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE;YAAE,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;QAEjF,OAAO,MAAM,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;IAC/C,CAAC,EACD,CAAC,GAAG,CAAC,CACN,CAAC;IAEF,MAAM,eAAe,GAAG,WAAW,CACjC,KAAK,EAAE,OAAe,EAAE,EAAE;QACxB,IAAI,CAAC,GAAG;YAAE,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;QAC/C,IAAI,CAAC,OAAO,EAAE,IAAI,EAAE;YAAE,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;QACjF,IAAI,CAAC,QAAQ,EAAE,IAAI,EAAE;YAAE,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;QAEpF,OAAO,MAAM,GAAG,CAAC,IAAI,CAAC,eAAe,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IAC3D,CAAC,EACD,CAAC,GAAG,EAAE,QAAQ,CAAC,CAChB,CAAC;IAEF,MAAM,YAAY,GAAG,WAAW,CAAC,KAAK,IAAI,EAAE;QAC1C,IAAI,CAAC,GAAG;YAAE,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;QAC/C,IAAI,CAAC,QAAQ,EAAE,IAAI,EAAE;YAAE,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;QAEpF,uBAAuB,CAAC,oBAAoB,CAAC,cAAc,CAAC,CAAC;QAE7D,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;YAErD,MAAM,aAAa,GAAG,GAAG,CAAC,eAAe,EAAE,CAAC;YAC5C,uBAAuB,CAAC,aAAa,CAAC,CAAC,CAAC,oBAAoB,CAAC,aAAa,CAAC,CAAC,CAAC,oBAAoB,CAAC,eAAe,CAAC,CAAC;YAEnH,OAAO;gBACL,WAAW,EAAE,MAAM,CAAC,WAAW;gBAC/B,YAAY,EAAE,MAAM,CAAC,YAAY;gBACjC,SAAS,EAAE,MAAM,CAAC,SAAS;gBAC3B,IAAI,EAAE,MAAM,CAAC,IAAI;aAClB,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,uBAAuB,CAAC,oBAAoB,CAAC,eAAe,CAAC,CAAC;YAC9D,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC,EAAE,CAAC,GAAG,EAAE,QAAQ,EAAE,uBAAuB,CAAC,CAAC,CAAC;IAE7C,MAAM,YAAY,GAAG,WAAW,CAC9B,KAAK,EAAE,KAAa,EAAE,EAAE;QACtB,IAAI,CAAC,GAAG;YAAE,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;QAC/C,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE;YAAE,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAC;QAErF,uBAAuB,CAAC,oBAAoB,CAAC,cAAc,CAAC,CAAC;QAE7D,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;YAClD,MAAM,aAAa,GAAG,GAAG,CAAC,eAAe,EAAE,CAAC;YAC5C,uBAAuB,CAAC,aAAa,CAAC,CAAC,CAAC,oBAAoB,CAAC,aAAa,CAAC,CAAC,CAAC,oBAAoB,CAAC,eAAe,CAAC,CAAC;YACnH,OAAO,MAAM,CAAC;QAChB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,uBAAuB,CAAC,oBAAoB,CAAC,eAAe,CAAC,CAAC;YAC9D,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC,EACD,CAAC,GAAG,EAAE,uBAAuB,CAAC,CAC/B,CAAC;IAEF,MAAM,WAAW,GAAG,WAAW,CAC7B,KAAK,EAAE,KAAa,EAAE,EAAE;QACtB,IAAI,CAAC,GAAG;YAAE,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;QAC/C,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE;YAAE,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAC;QAErF,uBAAuB,CAAC,oBAAoB,CAAC,cAAc,CAAC,CAAC;QAE7D,IAAI,CAAC;YACH,MAAM,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;YAClC,MAAM,aAAa,GAAG,GAAG,CAAC,eAAe,EAAE,CAAC;YAC5C,uBAAuB,CAAC,aAAa,CAAC,CAAC,CAAC,oBAAoB,CAAC,aAAa,CAAC,CAAC,CAAC,oBAAoB,CAAC,eAAe,CAAC,CAAC;QACrH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,uBAAuB,CAAC,oBAAoB,CAAC,eAAe,CAAC,CAAC;YAC9D,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC,EACD,CAAC,GAAG,EAAE,uBAAuB,CAAC,CAC/B,CAAC;IAEF,OAAO;QACL,QAAQ;QACR,oBAAoB;QAEpB,uBAAuB;QACvB,KAAK;QACL,MAAM;QAEN,mBAAmB;QACnB,WAAW;QACX,YAAY;QACZ,WAAW;QAEX,2BAA2B;QAC3B,YAAY;QACZ,aAAa;QACb,eAAe;KAChB,CAAC;AACJ,CAAC,CAAC"}
|
|
@@ -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,31 @@
|
|
|
1
|
+
import type { Candlestick, GetCandlesticksParams, Interval } from "@0xmonaco/types";
|
|
2
|
+
import type { TradingMode } from "@0xmonaco/types";
|
|
3
|
+
/**
|
|
4
|
+
* Parameters for the useOHLCV hook
|
|
5
|
+
*/
|
|
6
|
+
export interface UseOHLCVParams {
|
|
7
|
+
/** Trading pair UUID */
|
|
8
|
+
tradingPairId: string;
|
|
9
|
+
/** Trading mode (e.g., "CLOB") */
|
|
10
|
+
tradingMode: TradingMode;
|
|
11
|
+
/** Candlestick interval (1m, 5m, 15m, 1h, 4h, 1d) */
|
|
12
|
+
interval: Interval;
|
|
13
|
+
/** Optional parameters for initial candlestick fetch */
|
|
14
|
+
initialFetchParams?: GetCandlesticksParams;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Return type for the useOHLCV hook
|
|
18
|
+
*/
|
|
19
|
+
export interface UseOHLCVReturn {
|
|
20
|
+
/** Array of candlesticks (oldest to newest) */
|
|
21
|
+
candlesticks: Candlestick[];
|
|
22
|
+
/** Whether the initial candlesticks are being fetched */
|
|
23
|
+
loading: boolean;
|
|
24
|
+
/** Whether currently subscribed to WebSocket updates */
|
|
25
|
+
subscribed: boolean;
|
|
26
|
+
/** Any error that occurred during connection or subscription */
|
|
27
|
+
error: Error | null;
|
|
28
|
+
/** Clear the current error */
|
|
29
|
+
clearError: () => void;
|
|
30
|
+
}
|
|
31
|
+
//# 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,MAAM,iBAAiB,CAAC;AACpF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAEnD;;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,CA8D/D"}
|
|
@@ -0,0 +1,64 @@
|
|
|
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
|
+
return;
|
|
24
|
+
}
|
|
25
|
+
setCandlesticks([]);
|
|
26
|
+
setError(null);
|
|
27
|
+
setLoading(true);
|
|
28
|
+
let unsubscribe;
|
|
29
|
+
sdk.market
|
|
30
|
+
.getCandlesticks(tradingPairId, interval, initialFetchParams)
|
|
31
|
+
.then((initialCandlesticks) => {
|
|
32
|
+
setCandlesticks(initialCandlesticks);
|
|
33
|
+
try {
|
|
34
|
+
unsubscribe = sdk.ws.ohlcv(tradingPairId, tradingMode, interval, (event) => {
|
|
35
|
+
setCandlesticks((prev) => {
|
|
36
|
+
if (prev.length === 0) {
|
|
37
|
+
return [event.candlestick];
|
|
38
|
+
}
|
|
39
|
+
const lastCandle = prev[prev.length - 1];
|
|
40
|
+
if (lastCandle.T === event.candlestick.T) {
|
|
41
|
+
const updated = [...prev];
|
|
42
|
+
updated[updated.length - 1] = event.candlestick;
|
|
43
|
+
return updated;
|
|
44
|
+
}
|
|
45
|
+
return [...prev, event.candlestick];
|
|
46
|
+
});
|
|
47
|
+
});
|
|
48
|
+
setSubscribed(true);
|
|
49
|
+
}
|
|
50
|
+
catch (err) {
|
|
51
|
+
setError(err instanceof Error ? err : new Error(String(err)));
|
|
52
|
+
setSubscribed(false);
|
|
53
|
+
}
|
|
54
|
+
})
|
|
55
|
+
.catch((err) => setError(err instanceof Error ? err : new Error(String(err))))
|
|
56
|
+
.finally(() => setLoading(false));
|
|
57
|
+
return () => {
|
|
58
|
+
unsubscribe?.();
|
|
59
|
+
setSubscribed(false);
|
|
60
|
+
};
|
|
61
|
+
}, [sdk?.ws, sdk?.market, tradingPairId, tradingMode, interval, initialFetchParams]);
|
|
62
|
+
return { candlesticks, loading, subscribed, error, clearError };
|
|
63
|
+
}
|
|
64
|
+
//# 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"}
|
|
@@ -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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import { type MonacoContextValue, type MonacoProviderProps } from "./types";
|
|
2
|
-
export declare const MonacoProvider: ({ children, clientId, network, seiRpcUrl, wsUrl, tokenLifecycle: tokenLifecycleConfig }: MonacoProviderProps) => import("react/jsx-runtime").JSX.Element;
|
|
2
|
+
export declare const MonacoProvider: ({ children, clientId, network, seiRpcUrl, wsUrl, walletClient, tokenLifecycle: tokenLifecycleConfig }: MonacoProviderProps) => import("react/jsx-runtime").JSX.Element;
|
|
3
3
|
export declare const useMonacoContext: () => MonacoContextValue;
|
|
4
4
|
//# sourceMappingURL=MonacoProvider.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MonacoProvider.d.ts","sourceRoot":"","sources":["../../src/provider/MonacoProvider.tsx"],"names":[],"mappings":"AAMA,OAAO,EAAwB,KAAK,kBAAkB,EAAE,KAAK,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAIlG,eAAO,MAAM,cAAc,GAAI,
|
|
1
|
+
{"version":3,"file":"MonacoProvider.d.ts","sourceRoot":"","sources":["../../src/provider/MonacoProvider.tsx"],"names":[],"mappings":"AAMA,OAAO,EAAwB,KAAK,kBAAkB,EAAE,KAAK,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAIlG,eAAO,MAAM,cAAc,GAAI,uGAAuG,mBAAmB,4CAgHxJ,CAAC;AAEF,eAAO,MAAM,gBAAgB,QAAO,kBAQnC,CAAC"}
|
|
@@ -1,42 +1,51 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
2
|
import { MonacoSDK } from "@0xmonaco/core";
|
|
3
|
-
import { createContext, useContext, useEffect, useMemo, useState } from "react";
|
|
4
|
-
import { useWalletClient } from "wagmi";
|
|
3
|
+
import { createContext, useContext, useEffect, useMemo, useRef, useState } from "react";
|
|
5
4
|
import { useTokenLifecycle } from "../hooks";
|
|
6
5
|
import { loadAuthState } from "../utils";
|
|
6
|
+
import { TradeFeedProvider } from "./TradeFeedProvider";
|
|
7
7
|
import { AuthenticationStatus } from "./types";
|
|
8
8
|
const MonacoContext = createContext(null);
|
|
9
|
-
export const MonacoProvider = ({ children, clientId, network, seiRpcUrl, wsUrl, tokenLifecycle: tokenLifecycleConfig }) => {
|
|
10
|
-
const { data: walletClient } = useWalletClient();
|
|
9
|
+
export const MonacoProvider = ({ children, clientId, network, seiRpcUrl, wsUrl, walletClient, tokenLifecycle: tokenLifecycleConfig }) => {
|
|
11
10
|
const [sdk, setSdk] = useState(null);
|
|
12
11
|
const [error, setError] = useState(null);
|
|
12
|
+
const sdkRef = useRef(null);
|
|
13
13
|
// Global authentication state (shared across all components)
|
|
14
14
|
const [authenticationStatus, setAuthenticationStatus] = useState(AuthenticationStatus.UNAUTHENTICATED);
|
|
15
15
|
// Token lifecycle management
|
|
16
16
|
const tokenLifecycle = useTokenLifecycle(sdk, tokenLifecycleConfig);
|
|
17
|
+
// Initialize SDK without wallet (for public APIs)
|
|
17
18
|
useEffect(() => {
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
return;
|
|
22
|
-
}
|
|
19
|
+
if (sdkRef.current)
|
|
20
|
+
return; // Already initialized
|
|
21
|
+
try {
|
|
23
22
|
setError(null);
|
|
24
23
|
const sdkConfig = {
|
|
25
|
-
walletClient,
|
|
26
24
|
network,
|
|
27
25
|
seiRpcUrl,
|
|
28
|
-
wsUrl
|
|
26
|
+
wsUrl,
|
|
29
27
|
};
|
|
30
28
|
const newSdk = new MonacoSDK(sdkConfig);
|
|
29
|
+
sdkRef.current = newSdk;
|
|
31
30
|
setSdk(newSdk);
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
|
|
31
|
+
}
|
|
32
|
+
catch (err) {
|
|
33
|
+
const normalizedError = err instanceof Error ? err : new Error(String(err));
|
|
34
|
+
setError(normalizedError);
|
|
35
|
+
}
|
|
36
|
+
}, [network, seiRpcUrl, wsUrl]);
|
|
37
|
+
// Update wallet client when it changes
|
|
38
|
+
useEffect(() => {
|
|
39
|
+
if (!sdkRef.current || !walletClient)
|
|
40
|
+
return;
|
|
41
|
+
try {
|
|
42
|
+
sdkRef.current.setWalletClient(walletClient);
|
|
43
|
+
}
|
|
44
|
+
catch (err) {
|
|
35
45
|
const normalizedError = err instanceof Error ? err : new Error(String(err));
|
|
36
46
|
setError(normalizedError);
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
}, [network, walletClient, seiRpcUrl, wsUrl]);
|
|
47
|
+
}
|
|
48
|
+
}, [walletClient]);
|
|
40
49
|
// Restore cached tokens when the provider mounts
|
|
41
50
|
useEffect(() => {
|
|
42
51
|
if (!sdk)
|
|
@@ -82,6 +91,7 @@ export const MonacoProvider = ({ children, clientId, network, seiRpcUrl, wsUrl,
|
|
|
82
91
|
const contextValue = useMemo(() => ({
|
|
83
92
|
sdk,
|
|
84
93
|
clientId,
|
|
94
|
+
isWalletConnected: !!walletClient,
|
|
85
95
|
error,
|
|
86
96
|
// Global authentication state
|
|
87
97
|
authenticationStatus,
|
|
@@ -90,8 +100,8 @@ export const MonacoProvider = ({ children, clientId, network, seiRpcUrl, wsUrl,
|
|
|
90
100
|
// Global authentication state setters
|
|
91
101
|
setAuthenticationStatus,
|
|
92
102
|
setError,
|
|
93
|
-
}), [sdk, clientId, error, authenticationStatus, tokenLifecycle]);
|
|
94
|
-
return _jsx(MonacoContext.Provider, { value: contextValue, children: children });
|
|
103
|
+
}), [sdk, clientId, walletClient, error, authenticationStatus, tokenLifecycle]);
|
|
104
|
+
return (_jsx(MonacoContext.Provider, { value: contextValue, children: _jsx(TradeFeedProvider, { children: children }) }));
|
|
95
105
|
};
|
|
96
106
|
export const useMonacoContext = () => {
|
|
97
107
|
const context = useContext(MonacoContext);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MonacoProvider.js","sourceRoot":"","sources":["../../src/provider/MonacoProvider.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE3C,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"MonacoProvider.js","sourceRoot":"","sources":["../../src/provider/MonacoProvider.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { TradeEvent } from "@0xmonaco/types";
|
|
2
|
+
import type { ReactNode } from "react";
|
|
3
|
+
export declare const MAX_TRADES = 50;
|
|
4
|
+
export interface TradeFeedSubscription {
|
|
5
|
+
trades: TradeEvent[];
|
|
6
|
+
error: Error | null;
|
|
7
|
+
subscribed: boolean;
|
|
8
|
+
subscriberCount: number;
|
|
9
|
+
fetchingInitialState: boolean;
|
|
10
|
+
}
|
|
11
|
+
interface TradeFeedContextValue {
|
|
12
|
+
/** Subscribe to a trading pair - returns unsubscribe function */
|
|
13
|
+
subscribe: (tradingPairId: string, fetchInitialTrades: () => Promise<TradeEvent[]>, subscribeToWs: (handler: (event: TradeEvent) => void) => () => void) => () => void;
|
|
14
|
+
/** Get subscription state with reactivity */
|
|
15
|
+
subscriptions: Map<string, TradeFeedSubscription>;
|
|
16
|
+
}
|
|
17
|
+
interface TradeFeedProviderProps {
|
|
18
|
+
children: ReactNode;
|
|
19
|
+
}
|
|
20
|
+
export declare const TradeFeedProvider: ({ children }: TradeFeedProviderProps) => import("react/jsx-runtime").JSX.Element;
|
|
21
|
+
export declare const useTradeFeedContext: () => TradeFeedContextValue;
|
|
22
|
+
export {};
|
|
23
|
+
//# sourceMappingURL=TradeFeedProvider.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TradeFeedProvider.d.ts","sourceRoot":"","sources":["../../src/provider/TradeFeedProvider.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAElD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAEvC,eAAO,MAAM,UAAU,KAAK,CAAC;AAE7B,MAAM,WAAW,qBAAqB;IACpC,MAAM,EAAE,UAAU,EAAE,CAAC;IACrB,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IACpB,UAAU,EAAE,OAAO,CAAC;IACpB,eAAe,EAAE,MAAM,CAAC;IACxB,oBAAoB,EAAE,OAAO,CAAC;CAC/B;AAED,UAAU,qBAAqB;IAC7B,iEAAiE;IACjE,SAAS,EAAE,CACT,aAAa,EAAE,MAAM,EACrB,kBAAkB,EAAE,MAAM,OAAO,CAAC,UAAU,EAAE,CAAC,EAC/C,aAAa,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI,KAAK,MAAM,IAAI,KAChE,MAAM,IAAI,CAAC;IAChB,6CAA6C;IAC7C,aAAa,EAAE,GAAG,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAAC;CACnD;AAID,UAAU,sBAAsB;IAC9B,QAAQ,EAAE,SAAS,CAAC;CACrB;AAED,eAAO,MAAM,iBAAiB,GAAI,cAAc,sBAAsB,4CA4JrE,CAAC;AAEF,eAAO,MAAM,mBAAmB,QAAO,qBAWtC,CAAC"}
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
|
+
import { createContext, useCallback, useContext, useEffect, useMemo, useRef, useState } from "react";
|
|
3
|
+
export const MAX_TRADES = 50;
|
|
4
|
+
const TradeFeedContext = createContext(null);
|
|
5
|
+
export const TradeFeedProvider = ({ children }) => {
|
|
6
|
+
const [subscriptions, setSubscriptions] = useState(new Map());
|
|
7
|
+
// Track active WebSocket unsubscribe functions
|
|
8
|
+
const wsUnsubscribes = useRef(new Map());
|
|
9
|
+
// Cleanup all WebSocket subscriptions when provider unmounts
|
|
10
|
+
useEffect(() => {
|
|
11
|
+
return () => {
|
|
12
|
+
for (const unsubscribe of wsUnsubscribes.current.values()) {
|
|
13
|
+
unsubscribe();
|
|
14
|
+
}
|
|
15
|
+
wsUnsubscribes.current.clear();
|
|
16
|
+
};
|
|
17
|
+
}, []);
|
|
18
|
+
const handleTrade = useCallback((tradingPairId, event) => {
|
|
19
|
+
setSubscriptions((prev) => {
|
|
20
|
+
const current = prev.get(tradingPairId);
|
|
21
|
+
if (!current)
|
|
22
|
+
return prev;
|
|
23
|
+
const exists = current.trades.some((t) => t.data.tradeId === event.data.tradeId);
|
|
24
|
+
if (exists)
|
|
25
|
+
return prev;
|
|
26
|
+
const newSubscriptions = new Map(prev);
|
|
27
|
+
newSubscriptions.set(tradingPairId, {
|
|
28
|
+
...current,
|
|
29
|
+
trades: [event, ...current.trades].slice(0, MAX_TRADES),
|
|
30
|
+
error: null, // Clear error on successful WebSocket event
|
|
31
|
+
});
|
|
32
|
+
return newSubscriptions;
|
|
33
|
+
});
|
|
34
|
+
}, []);
|
|
35
|
+
// Use ref to maintain stable reference to handleTrade for the subscribe callback
|
|
36
|
+
const handleTradeRef = useRef(handleTrade);
|
|
37
|
+
useEffect(() => {
|
|
38
|
+
handleTradeRef.current = handleTrade;
|
|
39
|
+
});
|
|
40
|
+
const subscribe = useCallback((tradingPairId, fetchInitialTrades, subscribeToWs) => {
|
|
41
|
+
setSubscriptions((prev) => {
|
|
42
|
+
const current = prev.get(tradingPairId);
|
|
43
|
+
if (current) {
|
|
44
|
+
// Already subscribed, just increment count
|
|
45
|
+
const newSubscriptions = new Map(prev);
|
|
46
|
+
newSubscriptions.set(tradingPairId, {
|
|
47
|
+
...current,
|
|
48
|
+
subscriberCount: current.subscriberCount + 1,
|
|
49
|
+
});
|
|
50
|
+
return newSubscriptions;
|
|
51
|
+
}
|
|
52
|
+
// First subscriber - create new subscription
|
|
53
|
+
const newSubscriptions = new Map(prev);
|
|
54
|
+
newSubscriptions.set(tradingPairId, {
|
|
55
|
+
trades: [],
|
|
56
|
+
error: null,
|
|
57
|
+
subscribed: true,
|
|
58
|
+
subscriberCount: 1,
|
|
59
|
+
fetchingInitialState: true,
|
|
60
|
+
});
|
|
61
|
+
return newSubscriptions;
|
|
62
|
+
});
|
|
63
|
+
// Check if this is the first subscriber (no existing WS subscription)
|
|
64
|
+
if (!wsUnsubscribes.current.has(tradingPairId)) {
|
|
65
|
+
// Set placeholder immediately to prevent race condition with concurrent subscribers
|
|
66
|
+
wsUnsubscribes.current.set(tradingPairId, () => { });
|
|
67
|
+
// Fetch initial trades
|
|
68
|
+
fetchInitialTrades()
|
|
69
|
+
.then((initialTrades) => {
|
|
70
|
+
setSubscriptions((prev) => {
|
|
71
|
+
const current = prev.get(tradingPairId);
|
|
72
|
+
if (!current)
|
|
73
|
+
return prev;
|
|
74
|
+
const newSubscriptions = new Map(prev);
|
|
75
|
+
newSubscriptions.set(tradingPairId, {
|
|
76
|
+
...current,
|
|
77
|
+
trades: initialTrades.slice(0, MAX_TRADES),
|
|
78
|
+
error: null,
|
|
79
|
+
fetchingInitialState: false,
|
|
80
|
+
});
|
|
81
|
+
return newSubscriptions;
|
|
82
|
+
});
|
|
83
|
+
})
|
|
84
|
+
.catch((err) => {
|
|
85
|
+
setSubscriptions((prev) => {
|
|
86
|
+
const current = prev.get(tradingPairId);
|
|
87
|
+
if (!current)
|
|
88
|
+
return prev;
|
|
89
|
+
const newSubscriptions = new Map(prev);
|
|
90
|
+
newSubscriptions.set(tradingPairId, {
|
|
91
|
+
...current,
|
|
92
|
+
error: err instanceof Error ? err : new Error(String(err)),
|
|
93
|
+
fetchingInitialState: false,
|
|
94
|
+
});
|
|
95
|
+
return newSubscriptions;
|
|
96
|
+
});
|
|
97
|
+
});
|
|
98
|
+
// Subscribe to WebSocket
|
|
99
|
+
const unsubscribe = subscribeToWs((event) => handleTradeRef.current(tradingPairId, event));
|
|
100
|
+
wsUnsubscribes.current.set(tradingPairId, unsubscribe);
|
|
101
|
+
}
|
|
102
|
+
// Return unsubscribe function
|
|
103
|
+
return () => {
|
|
104
|
+
setSubscriptions((prev) => {
|
|
105
|
+
const current = prev.get(tradingPairId);
|
|
106
|
+
if (!current)
|
|
107
|
+
return prev;
|
|
108
|
+
const newCount = current.subscriberCount - 1;
|
|
109
|
+
if (newCount <= 0) {
|
|
110
|
+
// Last subscriber - clean up
|
|
111
|
+
const wsUnsubscribe = wsUnsubscribes.current.get(tradingPairId);
|
|
112
|
+
if (wsUnsubscribe) {
|
|
113
|
+
wsUnsubscribe();
|
|
114
|
+
wsUnsubscribes.current.delete(tradingPairId);
|
|
115
|
+
}
|
|
116
|
+
const newSubscriptions = new Map(prev);
|
|
117
|
+
newSubscriptions.delete(tradingPairId);
|
|
118
|
+
return newSubscriptions;
|
|
119
|
+
}
|
|
120
|
+
// Still have subscribers, just decrement count
|
|
121
|
+
const newSubscriptions = new Map(prev);
|
|
122
|
+
newSubscriptions.set(tradingPairId, {
|
|
123
|
+
...current,
|
|
124
|
+
subscriberCount: newCount,
|
|
125
|
+
});
|
|
126
|
+
return newSubscriptions;
|
|
127
|
+
});
|
|
128
|
+
};
|
|
129
|
+
}, []);
|
|
130
|
+
const contextValue = useMemo(() => ({
|
|
131
|
+
subscribe,
|
|
132
|
+
subscriptions,
|
|
133
|
+
}), [subscribe, subscriptions]);
|
|
134
|
+
return _jsx(TradeFeedContext.Provider, { value: contextValue, children: children });
|
|
135
|
+
};
|
|
136
|
+
export const useTradeFeedContext = () => {
|
|
137
|
+
const context = useContext(TradeFeedContext);
|
|
138
|
+
if (!context) {
|
|
139
|
+
throw new Error("useTradeFeedContext must be used within a TradeFeedProvider. " +
|
|
140
|
+
"Make sure to wrap your app with <MonacoProvider>.");
|
|
141
|
+
}
|
|
142
|
+
return context;
|
|
143
|
+
};
|
|
144
|
+
//# sourceMappingURL=TradeFeedProvider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TradeFeedProvider.js","sourceRoot":"","sources":["../../src/provider/TradeFeedProvider.tsx"],"names":[],"mappings":"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"}
|
package/dist/provider/index.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/provider/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,cAAc,SAAS,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/provider/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,OAAO,EAAE,UAAU,EAAE,KAAK,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAClG,cAAc,SAAS,CAAC"}
|
package/dist/provider/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/provider/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,cAAc,SAAS,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/provider/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,OAAO,EAAE,UAAU,EAA8B,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAClG,cAAc,SAAS,CAAC"}
|
package/dist/provider/types.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { MonacoSDK, Network } from "@0xmonaco/types";
|
|
2
2
|
import type { ReactNode } from "react";
|
|
3
|
+
import type { WalletClient } from "viem";
|
|
3
4
|
import type { TokenLifecycleConfig, UseTokenLifecycleReturn } from "../hooks";
|
|
4
5
|
export declare enum AuthenticationStatus {
|
|
5
6
|
/** User is not authenticated */
|
|
@@ -14,6 +15,8 @@ export interface MonacoContextValue {
|
|
|
14
15
|
sdk: MonacoSDK | null;
|
|
15
16
|
/** Client ID for authentication */
|
|
16
17
|
clientId: string;
|
|
18
|
+
/** Whether a wallet client is connected */
|
|
19
|
+
isWalletConnected: boolean;
|
|
17
20
|
/** Any error that occurred (SDK initialization, authentication, etc.) */
|
|
18
21
|
error: Error | null;
|
|
19
22
|
/** Current authentication status */
|
|
@@ -40,6 +43,11 @@ export interface MonacoProviderProps {
|
|
|
40
43
|
wsUrl: string;
|
|
41
44
|
/** RPC URL for Sei blockchain interactions (required) */
|
|
42
45
|
seiRpcUrl: string;
|
|
46
|
+
/**
|
|
47
|
+
* Optional wallet client for authenticated operations.
|
|
48
|
+
* Can be obtained from wagmi, RainbowKit, ConnectKit, or any viem-compatible wallet provider.
|
|
49
|
+
*/
|
|
50
|
+
walletClient?: WalletClient;
|
|
43
51
|
/** Token lifecycle configuration options */
|
|
44
52
|
tokenLifecycle?: TokenLifecycleConfig;
|
|
45
53
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/provider/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAC1D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,KAAK,EAAE,oBAAoB,EAAE,uBAAuB,EAAE,MAAM,UAAU,CAAC;AAE9E,oBAAY,oBAAoB;IAC9B,gCAAgC;IAChC,eAAe,oBAAoB;IACnC,oCAAoC;IACpC,cAAc,mBAAmB;IACjC,yCAAyC;IACzC,aAAa,kBAAkB;CAChC;AAED,MAAM,WAAW,kBAAkB;IACjC,0BAA0B;IAC1B,GAAG,EAAE,SAAS,GAAG,IAAI,CAAC;IACtB,mCAAmC;IACnC,QAAQ,EAAE,MAAM,CAAC;IACjB,yEAAyE;IACzE,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IAEpB,oCAAoC;IACpC,oBAAoB,EAAE,oBAAoB,CAAC;IAG3C,8BAA8B;IAC9B,cAAc,EAAE,uBAAuB,CAAC;IAGxC,+CAA+C;IAC/C,uBAAuB,EAAE,CAAC,MAAM,EAAE,oBAAoB,KAAK,IAAI,CAAC;IAChE,+BAA+B;IAC/B,QAAQ,EAAE,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI,KAAK,IAAI,CAAC;CACzC;AAED,MAAM,WAAW,mBAAmB;IAClC,uBAAuB;IACvB,QAAQ,EAAE,SAAS,CAAC;IACpB,mCAAmC;IACnC,QAAQ,EAAE,MAAM,CAAC;IACjB;;;;OAIG;IACH,OAAO,EAAE,OAAO,CAAC;IACjB,0CAA0C;IAC1C,KAAK,EAAE,MAAM,CAAC;IACd,yDAAyD;IACzD,SAAS,EAAE,MAAM,CAAC;IAClB,4CAA4C;IAC5C,cAAc,CAAC,EAAE,oBAAoB,CAAC;CACvC"}
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/provider/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAC1D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACvC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,MAAM,CAAC;AACzC,OAAO,KAAK,EAAE,oBAAoB,EAAE,uBAAuB,EAAE,MAAM,UAAU,CAAC;AAE9E,oBAAY,oBAAoB;IAC9B,gCAAgC;IAChC,eAAe,oBAAoB;IACnC,oCAAoC;IACpC,cAAc,mBAAmB;IACjC,yCAAyC;IACzC,aAAa,kBAAkB;CAChC;AAED,MAAM,WAAW,kBAAkB;IACjC,0BAA0B;IAC1B,GAAG,EAAE,SAAS,GAAG,IAAI,CAAC;IACtB,mCAAmC;IACnC,QAAQ,EAAE,MAAM,CAAC;IACjB,2CAA2C;IAC3C,iBAAiB,EAAE,OAAO,CAAC;IAC3B,yEAAyE;IACzE,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IAEpB,oCAAoC;IACpC,oBAAoB,EAAE,oBAAoB,CAAC;IAG3C,8BAA8B;IAC9B,cAAc,EAAE,uBAAuB,CAAC;IAGxC,+CAA+C;IAC/C,uBAAuB,EAAE,CAAC,MAAM,EAAE,oBAAoB,KAAK,IAAI,CAAC;IAChE,+BAA+B;IAC/B,QAAQ,EAAE,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI,KAAK,IAAI,CAAC;CACzC;AAED,MAAM,WAAW,mBAAmB;IAClC,uBAAuB;IACvB,QAAQ,EAAE,SAAS,CAAC;IACpB,mCAAmC;IACnC,QAAQ,EAAE,MAAM,CAAC;IACjB;;;;OAIG;IACH,OAAO,EAAE,OAAO,CAAC;IACjB,0CAA0C;IAC1C,KAAK,EAAE,MAAM,CAAC;IACd,yDAAyD;IACzD,SAAS,EAAE,MAAM,CAAC;IAClB;;;OAGG;IACH,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,4CAA4C;IAC5C,cAAc,CAAC,EAAE,oBAAoB,CAAC;CACvC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/provider/types.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/provider/types.ts"],"names":[],"mappings":"AAKA,MAAM,CAAN,IAAY,oBAOX;AAPD,WAAY,oBAAoB;IAC9B,gCAAgC;IAChC,2DAAmC,CAAA;IACnC,oCAAoC;IACpC,yDAAiC,CAAA;IACjC,yCAAyC;IACzC,uDAA+B,CAAA;AACjC,CAAC,EAPW,oBAAoB,KAApB,oBAAoB,QAO/B"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { WalletClient } from "viem";
|
|
2
|
+
/**
|
|
3
|
+
* A safe wrapper around wagmi's useWalletClient hook that handles
|
|
4
|
+
* cases where WagmiProvider is not present in the component tree.
|
|
5
|
+
*
|
|
6
|
+
* @returns Object with data property containing WalletClient or undefined
|
|
7
|
+
*/
|
|
8
|
+
export declare const useWalletClientSafe: () => {
|
|
9
|
+
data: WalletClient | undefined;
|
|
10
|
+
};
|
|
11
|
+
//# sourceMappingURL=wagmi.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wagmi.d.ts","sourceRoot":"","sources":["../../src/utils/wagmi.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,MAAM,CAAC;AAGzC;;;;;GAKG;AACH,eAAO,MAAM,mBAAmB,QAAO;IAAE,IAAI,EAAE,YAAY,GAAG,SAAS,CAAA;CAOtE,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { useConfig, useWalletClient } from "wagmi";
|
|
2
|
+
/**
|
|
3
|
+
* A safe wrapper around wagmi's useWalletClient hook that handles
|
|
4
|
+
* cases where WagmiProvider is not present in the component tree.
|
|
5
|
+
*
|
|
6
|
+
* @returns Object with data property containing WalletClient or undefined
|
|
7
|
+
*/
|
|
8
|
+
export const useWalletClientSafe = () => {
|
|
9
|
+
try {
|
|
10
|
+
useConfig();
|
|
11
|
+
return useWalletClient();
|
|
12
|
+
}
|
|
13
|
+
catch {
|
|
14
|
+
return { data: undefined };
|
|
15
|
+
}
|
|
16
|
+
};
|
|
17
|
+
//# sourceMappingURL=wagmi.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wagmi.js","sourceRoot":"","sources":["../../src/utils/wagmi.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,OAAO,CAAC;AAEnD;;;;;GAKG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,GAAuC,EAAE;IAC1E,IAAI,CAAC;QACH,SAAS,EAAE,CAAC;QACZ,OAAO,eAAe,EAAwC,CAAC;IACjE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;IAC7B,CAAC;AACH,CAAC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,39 +1,37 @@
|
|
|
1
1
|
{
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
}
|
|
39
|
-
}
|
|
2
|
+
"name": "@0xmonaco/react",
|
|
3
|
+
"version": "0.0.0-develop-20260128053451",
|
|
4
|
+
"type": "module",
|
|
5
|
+
"main": "./dist/index.js",
|
|
6
|
+
"module": "./dist/index.js",
|
|
7
|
+
"types": "./dist/index.d.ts",
|
|
8
|
+
"files": [
|
|
9
|
+
"dist"
|
|
10
|
+
],
|
|
11
|
+
"scripts": {
|
|
12
|
+
"build": "tsc -b",
|
|
13
|
+
"dev": "tsc --watch",
|
|
14
|
+
"clean": "rm -rf dist",
|
|
15
|
+
"lint": "eslint src --ext .ts,.tsx"
|
|
16
|
+
},
|
|
17
|
+
"dependencies": {
|
|
18
|
+
"@0xmonaco/core": "workspace:*",
|
|
19
|
+
"@0xmonaco/types": "workspace:*"
|
|
20
|
+
},
|
|
21
|
+
"devDependencies": {
|
|
22
|
+
"@types/react": "^19.1.12",
|
|
23
|
+
"typescript": "5.9.2",
|
|
24
|
+
"react": "^18.3.1"
|
|
25
|
+
},
|
|
26
|
+
"peerDependencies": {
|
|
27
|
+
"react": "^17.0.0 || ^18.0.0 || ^19.0.0",
|
|
28
|
+
"wagmi": "^2.0.0",
|
|
29
|
+
"viem": "^2.0.0"
|
|
30
|
+
},
|
|
31
|
+
"exports": {
|
|
32
|
+
".": {
|
|
33
|
+
"types": "./dist/index.d.ts",
|
|
34
|
+
"default": "./dist/index.js"
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
}
|