@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.
Files changed (81) hide show
  1. package/README.md +12 -18
  2. package/dist/hooks/index.d.ts +3 -0
  3. package/dist/hooks/index.d.ts.map +1 -1
  4. package/dist/hooks/index.js +3 -0
  5. package/dist/hooks/index.js.map +1 -1
  6. package/dist/hooks/useAuth/useAuth.d.ts.map +1 -1
  7. package/dist/hooks/useAuth/useAuth.js +3 -5
  8. package/dist/hooks/useAuth/useAuth.js.map +1 -1
  9. package/dist/hooks/useMonaco/useMonaco.js +1 -1
  10. package/dist/hooks/useMonaco/useMonaco.js.map +1 -1
  11. package/dist/hooks/useOHLCV/index.d.ts +3 -0
  12. package/dist/hooks/useOHLCV/index.d.ts.map +1 -0
  13. package/dist/hooks/useOHLCV/index.js +3 -0
  14. package/dist/hooks/useOHLCV/index.js.map +1 -0
  15. package/dist/hooks/useOHLCV/types.d.ts +30 -0
  16. package/dist/hooks/useOHLCV/types.d.ts.map +1 -0
  17. package/dist/hooks/useOHLCV/types.js +2 -0
  18. package/dist/hooks/useOHLCV/types.js.map +1 -0
  19. package/dist/hooks/useOHLCV/useOHLCV.d.ts +12 -0
  20. package/dist/hooks/useOHLCV/useOHLCV.d.ts.map +1 -0
  21. package/dist/hooks/useOHLCV/useOHLCV.js +77 -0
  22. package/dist/hooks/useOHLCV/useOHLCV.js.map +1 -0
  23. package/dist/hooks/useOrderbook/useOrderbook.d.ts.map +1 -1
  24. package/dist/hooks/useOrderbook/useOrderbook.js +1 -1
  25. package/dist/hooks/useOrderbook/useOrderbook.js.map +1 -1
  26. package/dist/hooks/useTrade/types.d.ts +6 -1
  27. package/dist/hooks/useTrade/types.d.ts.map +1 -1
  28. package/dist/hooks/useTrade/useTrade.d.ts.map +1 -1
  29. package/dist/hooks/useTrade/useTrade.js +9 -0
  30. package/dist/hooks/useTrade/useTrade.js.map +1 -1
  31. package/dist/hooks/useTradeFeed/types.d.ts +3 -3
  32. package/dist/hooks/useTradeFeed/types.d.ts.map +1 -1
  33. package/dist/hooks/useTradeFeed/useTradeFeed.d.ts +6 -2
  34. package/dist/hooks/useTradeFeed/useTradeFeed.d.ts.map +1 -1
  35. package/dist/hooks/useTradeFeed/useTradeFeed.js +20 -34
  36. package/dist/hooks/useTradeFeed/useTradeFeed.js.map +1 -1
  37. package/dist/hooks/useUserMovements/index.d.ts +3 -0
  38. package/dist/hooks/useUserMovements/index.d.ts.map +1 -0
  39. package/dist/hooks/useUserMovements/index.js +3 -0
  40. package/dist/hooks/useUserMovements/index.js.map +1 -0
  41. package/dist/hooks/useUserMovements/types.d.ts +17 -0
  42. package/dist/hooks/useUserMovements/types.d.ts.map +1 -0
  43. package/dist/hooks/useUserMovements/types.js +2 -0
  44. package/dist/hooks/useUserMovements/types.js.map +1 -0
  45. package/dist/hooks/useUserMovements/useUserMovements.d.ts +12 -0
  46. package/dist/hooks/useUserMovements/useUserMovements.d.ts.map +1 -0
  47. package/dist/hooks/useUserMovements/useUserMovements.js +111 -0
  48. package/dist/hooks/useUserMovements/useUserMovements.js.map +1 -0
  49. package/dist/hooks/useUserOrders/index.d.ts +3 -0
  50. package/dist/hooks/useUserOrders/index.d.ts.map +1 -0
  51. package/dist/hooks/useUserOrders/index.js +3 -0
  52. package/dist/hooks/useUserOrders/index.js.map +1 -0
  53. package/dist/hooks/useUserOrders/types.d.ts +19 -0
  54. package/dist/hooks/useUserOrders/types.d.ts.map +1 -0
  55. package/dist/hooks/useUserOrders/types.js +2 -0
  56. package/dist/hooks/useUserOrders/types.js.map +1 -0
  57. package/dist/hooks/useUserOrders/useUserOrders.d.ts +12 -0
  58. package/dist/hooks/useUserOrders/useUserOrders.d.ts.map +1 -0
  59. package/dist/hooks/useUserOrders/useUserOrders.js +192 -0
  60. package/dist/hooks/useUserOrders/useUserOrders.js.map +1 -0
  61. package/dist/hooks/useVault/types.d.ts +1 -3
  62. package/dist/hooks/useVault/types.d.ts.map +1 -1
  63. package/dist/hooks/useVault/useVault.d.ts.map +1 -1
  64. package/dist/hooks/useVault/useVault.js +1 -9
  65. package/dist/hooks/useVault/useVault.js.map +1 -1
  66. package/dist/provider/MonacoProvider.d.ts +1 -1
  67. package/dist/provider/MonacoProvider.d.ts.map +1 -1
  68. package/dist/provider/MonacoProvider.js +62 -20
  69. package/dist/provider/MonacoProvider.js.map +1 -1
  70. package/dist/provider/TradeFeedProvider.d.ts +23 -0
  71. package/dist/provider/TradeFeedProvider.d.ts.map +1 -0
  72. package/dist/provider/TradeFeedProvider.js +144 -0
  73. package/dist/provider/TradeFeedProvider.js.map +1 -0
  74. package/dist/provider/index.d.ts +1 -0
  75. package/dist/provider/index.d.ts.map +1 -1
  76. package/dist/provider/index.js +1 -0
  77. package/dist/provider/index.js.map +1 -1
  78. package/dist/provider/types.d.ts +8 -0
  79. package/dist/provider/types.d.ts.map +1 -1
  80. package/dist/provider/types.js.map +1 -1
  81. package/package.json +40 -38
@@ -1,43 +1,84 @@
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
- import { loadAuthState } from "../utils";
5
+ import { clearAuthState, 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
+ const normalizeUrl = (url) => {
10
+ try {
11
+ const parsed = new URL(url);
12
+ return parsed.href.replace(/\/$/, '');
13
+ }
14
+ catch {
15
+ return url;
16
+ }
17
+ };
18
+ export const MonacoProvider = ({ children, clientId, network, seiRpcUrl, wsUrl, walletClient, tokenLifecycle: tokenLifecycleConfig }) => {
11
19
  const [sdk, setSdk] = useState(null);
12
20
  const [error, setError] = useState(null);
21
+ // Track previous network config to detect actual changes vs initial mount
22
+ const prevNetworkRef = useRef(null);
13
23
  // Global authentication state (shared across all components)
14
24
  const [authenticationStatus, setAuthenticationStatus] = useState(AuthenticationStatus.UNAUTHENTICATED);
15
25
  // Token lifecycle management
16
26
  const tokenLifecycle = useTokenLifecycle(sdk, tokenLifecycleConfig);
27
+ // Ref to access tokenLifecycle.clearTokens without adding it to effect dependencies
28
+ // (tokenLifecycle depends on sdk, which would cause a circular dependency)
29
+ const tokenLifecycleRef = useRef(tokenLifecycle);
30
+ useEffect(() => {
31
+ tokenLifecycleRef.current = tokenLifecycle;
32
+ }, [tokenLifecycle]);
33
+ // Initialize SDK without wallet (for public APIs)
17
34
  useEffect(() => {
18
- const initializeSDK = async () => {
19
- if (!walletClient) {
20
- setSdk(null);
21
- return;
22
- }
35
+ const prevNetwork = prevNetworkRef.current;
36
+ const networkChanged = prevNetwork !== null && (prevNetwork.network !== network ||
37
+ normalizeUrl(prevNetwork.seiRpcUrl) !== normalizeUrl(seiRpcUrl) ||
38
+ normalizeUrl(prevNetwork.wsUrl) !== normalizeUrl(wsUrl));
39
+ // Only reset auth state when network actually changes, not on initial mount
40
+ if (networkChanged) {
41
+ setAuthenticationStatus(AuthenticationStatus.UNAUTHENTICATED);
42
+ tokenLifecycleRef.current.clearTokens(); // stop auto-refresh and drop in-memory secrets
43
+ clearAuthState();
44
+ }
45
+ try {
23
46
  setError(null);
24
47
  const sdkConfig = {
25
- walletClient,
26
48
  network,
27
49
  seiRpcUrl,
28
- wsUrl
50
+ wsUrl,
29
51
  };
30
52
  const newSdk = new MonacoSDK(sdkConfig);
31
53
  setSdk(newSdk);
54
+ // Update ref only after successful SDK creation
55
+ prevNetworkRef.current = { network, seiRpcUrl, wsUrl };
56
+ }
57
+ catch (err) {
58
+ const normalizedError = err instanceof Error ? err : new Error(String(err));
59
+ setSdk(null);
60
+ setError(normalizedError);
61
+ }
62
+ }, [network, seiRpcUrl, wsUrl]);
63
+ // Cleanup: disconnect WebSocket when SDK changes or unmounts
64
+ useEffect(() => {
65
+ return () => {
66
+ sdk?.ws.disconnect();
32
67
  };
33
- initializeSDK().catch((err) => {
34
- // Normalize error to "Error" type and clear SDK on failure
68
+ }, [sdk]);
69
+ // Update wallet client when it changes or when SDK is recreated (e.g., network change)
70
+ useEffect(() => {
71
+ if (!sdk || !walletClient)
72
+ return;
73
+ try {
74
+ sdk.setWalletClient(walletClient);
75
+ }
76
+ catch (err) {
35
77
  const normalizedError = err instanceof Error ? err : new Error(String(err));
36
78
  setError(normalizedError);
37
- setSdk(null);
38
- });
39
- }, [network, walletClient, seiRpcUrl, wsUrl]);
40
- // Restore cached tokens when the provider mounts
79
+ }
80
+ }, [sdk, walletClient]);
81
+ // Restore cached tokens when SDK changes (including on mount)
41
82
  useEffect(() => {
42
83
  if (!sdk)
43
84
  return;
@@ -82,6 +123,7 @@ export const MonacoProvider = ({ children, clientId, network, seiRpcUrl, wsUrl,
82
123
  const contextValue = useMemo(() => ({
83
124
  sdk,
84
125
  clientId,
126
+ isWalletConnected: !!walletClient,
85
127
  error,
86
128
  // Global authentication state
87
129
  authenticationStatus,
@@ -90,8 +132,8 @@ export const MonacoProvider = ({ children, clientId, network, seiRpcUrl, wsUrl,
90
132
  // Global authentication state setters
91
133
  setAuthenticationStatus,
92
134
  setError,
93
- }), [sdk, clientId, error, authenticationStatus, tokenLifecycle]);
94
- return _jsx(MonacoContext.Provider, { value: contextValue, children: children });
135
+ }), [sdk, clientId, walletClient, error, authenticationStatus, tokenLifecycle]);
136
+ return (_jsx(MonacoContext.Provider, { value: contextValue, children: _jsx(TradeFeedProvider, { children: children }) }));
95
137
  };
96
138
  export const useMonacoContext = () => {
97
139
  const context = useContext(MonacoContext);
@@ -1 +1 @@
1
- {"version":3,"file":"MonacoProvider.js","sourceRoot":"","sources":["../../src/provider/MonacoProvider.tsx"],"names":[],"mappings":"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"}
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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"}
@@ -1,3 +1,4 @@
1
1
  export * from "./MonacoProvider";
2
+ export { MAX_TRADES, TradeFeedProvider, type TradeFeedSubscription, useTradeFeedContext } from "./TradeFeedProvider";
2
3
  export * from "./types";
3
4
  //# sourceMappingURL=index.d.ts.map
@@ -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,iBAAiB,EAAE,KAAK,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AACrH,cAAc,SAAS,CAAC"}
@@ -1,3 +1,4 @@
1
1
  export * from "./MonacoProvider";
2
+ export { MAX_TRADES, TradeFeedProvider, useTradeFeedContext } from "./TradeFeedProvider";
2
3
  export * from "./types";
3
4
  //# sourceMappingURL=index.js.map
@@ -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,EAAE,iBAAiB,EAA8B,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AACrH,cAAc,SAAS,CAAC"}
@@ -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":"AAIA,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"}
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"}
package/package.json CHANGED
@@ -1,39 +1,41 @@
1
1
  {
2
- "name": "@0xmonaco/react",
3
- "version": "0.5.3",
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
- "dependencies": {
12
- "@0xmonaco/core": "0.5.3",
13
- "@0xmonaco/types": "0.5.3"
14
- },
15
- "devDependencies": {
16
- "@types/react": "^19.1.12",
17
- "typescript": "5.9.2",
18
- "react": "^18.3.1",
19
- "wagmi": "^2.17.5",
20
- "viem": "^2.31.7"
21
- },
22
- "peerDependencies": {
23
- "react": "^17.0.0 || ^18.0.0 || ^19.0.0",
24
- "wagmi": "^2.17.5",
25
- "viem": "^2.31.7"
26
- },
27
- "exports": {
28
- ".": {
29
- "types": "./dist/index.d.ts",
30
- "default": "./dist/index.js"
31
- }
32
- },
33
- "scripts": {
34
- "build": "tsc -b",
35
- "dev": "tsc --watch",
36
- "clean": "rm -rf dist",
37
- "lint": "eslint src --ext .ts,.tsx"
38
- }
39
- }
2
+ "name": "@0xmonaco/react",
3
+ "version": "0.5.5",
4
+ "type": "module",
5
+ "repository": {
6
+ "type": "git",
7
+ "url": "https://github.com/Monaco-Research/monaco-sdk.git",
8
+ "directory": "packages/react"
9
+ },
10
+ "main": "./dist/index.js",
11
+ "module": "./dist/index.js",
12
+ "types": "./dist/index.d.ts",
13
+ "files": [
14
+ "dist"
15
+ ],
16
+ "scripts": {
17
+ "build": "tsc -b",
18
+ "dev": "tsc --watch",
19
+ "clean": "rm -rf dist",
20
+ "lint": "eslint src --ext .ts,.tsx"
21
+ },
22
+ "dependencies": {
23
+ "@0xmonaco/core": "*",
24
+ "@0xmonaco/types": "*"
25
+ },
26
+ "devDependencies": {
27
+ "@types/react": "^19.1.12",
28
+ "react": "^18.3.1"
29
+ },
30
+ "peerDependencies": {
31
+ "react": "^17.0.0 || ^18.0.0 || ^19.0.0",
32
+ "wagmi": "^2.0.0 || ^3.0.0",
33
+ "viem": "^2.0.0"
34
+ },
35
+ "exports": {
36
+ ".": {
37
+ "types": "./dist/index.d.ts",
38
+ "default": "./dist/index.js"
39
+ }
40
+ }
41
+ }