@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
|
@@ -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
|
-
|
|
10
|
-
|
|
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
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
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
|
-
|
|
34
|
-
|
|
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
|
-
|
|
38
|
-
|
|
39
|
-
|
|
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":";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,iBAAiB,EAAE,KAAK,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AACrH,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,EAAE,iBAAiB,EAA8B,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AACrH,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"}
|
package/package.json
CHANGED
|
@@ -1,39 +1,41 @@
|
|
|
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.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
|
+
}
|