@0xmonaco/react 0.0.0-develop-20260120180031
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +381 -0
- package/dist/hooks/index.d.ts +12 -0
- package/dist/hooks/index.d.ts.map +1 -0
- package/dist/hooks/index.js +12 -0
- package/dist/hooks/index.js.map +1 -0
- package/dist/hooks/useAuth/index.d.ts +3 -0
- package/dist/hooks/useAuth/index.d.ts.map +1 -0
- package/dist/hooks/useAuth/index.js +2 -0
- package/dist/hooks/useAuth/index.js.map +1 -0
- package/dist/hooks/useAuth/types.d.ts +31 -0
- package/dist/hooks/useAuth/types.d.ts.map +1 -0
- package/dist/hooks/useAuth/types.js +2 -0
- package/dist/hooks/useAuth/types.js.map +1 -0
- package/dist/hooks/useAuth/useAuth.d.ts +3 -0
- package/dist/hooks/useAuth/useAuth.d.ts.map +1 -0
- package/dist/hooks/useAuth/useAuth.js +150 -0
- package/dist/hooks/useAuth/useAuth.js.map +1 -0
- package/dist/hooks/useFees/index.d.ts +3 -0
- package/dist/hooks/useFees/index.d.ts.map +1 -0
- package/dist/hooks/useFees/index.js +2 -0
- package/dist/hooks/useFees/index.js.map +1 -0
- package/dist/hooks/useFees/types.d.ts +6 -0
- package/dist/hooks/useFees/types.d.ts.map +1 -0
- package/dist/hooks/useFees/types.js +2 -0
- package/dist/hooks/useFees/types.js.map +1 -0
- package/dist/hooks/useFees/useFees.d.ts +3 -0
- package/dist/hooks/useFees/useFees.d.ts.map +1 -0
- package/dist/hooks/useFees/useFees.js +15 -0
- package/dist/hooks/useFees/useFees.js.map +1 -0
- package/dist/hooks/useMarket/index.d.ts +3 -0
- package/dist/hooks/useMarket/index.d.ts.map +1 -0
- package/dist/hooks/useMarket/index.js +2 -0
- package/dist/hooks/useMarket/index.js.map +1 -0
- package/dist/hooks/useMarket/types.d.ts +24 -0
- package/dist/hooks/useMarket/types.d.ts.map +1 -0
- package/dist/hooks/useMarket/types.js +2 -0
- package/dist/hooks/useMarket/types.js.map +1 -0
- package/dist/hooks/useMarket/useMarket.d.ts +3 -0
- package/dist/hooks/useMarket/useMarket.d.ts.map +1 -0
- package/dist/hooks/useMarket/useMarket.js +44 -0
- package/dist/hooks/useMarket/useMarket.js.map +1 -0
- package/dist/hooks/useMonaco/index.d.ts +3 -0
- package/dist/hooks/useMonaco/index.d.ts.map +1 -0
- package/dist/hooks/useMonaco/index.js +2 -0
- package/dist/hooks/useMonaco/index.js.map +1 -0
- package/dist/hooks/useMonaco/types.d.ts +14 -0
- package/dist/hooks/useMonaco/types.d.ts.map +1 -0
- package/dist/hooks/useMonaco/types.js +2 -0
- package/dist/hooks/useMonaco/types.js.map +1 -0
- package/dist/hooks/useMonaco/useMonaco.d.ts +3 -0
- package/dist/hooks/useMonaco/useMonaco.d.ts.map +1 -0
- package/dist/hooks/useMonaco/useMonaco.js +14 -0
- package/dist/hooks/useMonaco/useMonaco.js.map +1 -0
- package/dist/hooks/useOrderbook/index.d.ts +3 -0
- package/dist/hooks/useOrderbook/index.d.ts.map +1 -0
- package/dist/hooks/useOrderbook/index.js +2 -0
- package/dist/hooks/useOrderbook/index.js.map +1 -0
- package/dist/hooks/useOrderbook/types.d.ts +28 -0
- package/dist/hooks/useOrderbook/types.d.ts.map +1 -0
- package/dist/hooks/useOrderbook/types.js +2 -0
- package/dist/hooks/useOrderbook/types.js.map +1 -0
- package/dist/hooks/useOrderbook/useOrderbook.d.ts +4 -0
- package/dist/hooks/useOrderbook/useOrderbook.d.ts.map +1 -0
- package/dist/hooks/useOrderbook/useOrderbook.js +32 -0
- package/dist/hooks/useOrderbook/useOrderbook.js.map +1 -0
- package/dist/hooks/useProfile/index.d.ts +3 -0
- package/dist/hooks/useProfile/index.d.ts.map +1 -0
- package/dist/hooks/useProfile/index.js +2 -0
- package/dist/hooks/useProfile/index.js.map +1 -0
- package/dist/hooks/useProfile/types.d.ts +14 -0
- package/dist/hooks/useProfile/types.d.ts.map +1 -0
- package/dist/hooks/useProfile/types.js +2 -0
- package/dist/hooks/useProfile/types.js.map +1 -0
- package/dist/hooks/useProfile/useProfile.d.ts +3 -0
- package/dist/hooks/useProfile/useProfile.d.ts.map +1 -0
- package/dist/hooks/useProfile/useProfile.js +46 -0
- package/dist/hooks/useProfile/useProfile.js.map +1 -0
- package/dist/hooks/useTokenLifecycle/index.d.ts +3 -0
- package/dist/hooks/useTokenLifecycle/index.d.ts.map +1 -0
- package/dist/hooks/useTokenLifecycle/index.js +2 -0
- package/dist/hooks/useTokenLifecycle/index.js.map +1 -0
- package/dist/hooks/useTokenLifecycle/types.d.ts +24 -0
- package/dist/hooks/useTokenLifecycle/types.d.ts.map +1 -0
- package/dist/hooks/useTokenLifecycle/types.js +2 -0
- package/dist/hooks/useTokenLifecycle/types.js.map +1 -0
- package/dist/hooks/useTokenLifecycle/useTokenLifecycle.d.ts +21 -0
- package/dist/hooks/useTokenLifecycle/useTokenLifecycle.d.ts.map +1 -0
- package/dist/hooks/useTokenLifecycle/useTokenLifecycle.js +126 -0
- package/dist/hooks/useTokenLifecycle/useTokenLifecycle.js.map +1 -0
- package/dist/hooks/useTokenLifecycle/utils.d.ts +8 -0
- package/dist/hooks/useTokenLifecycle/utils.d.ts.map +1 -0
- package/dist/hooks/useTokenLifecycle/utils.js +16 -0
- package/dist/hooks/useTokenLifecycle/utils.js.map +1 -0
- package/dist/hooks/useTrade/index.d.ts +3 -0
- package/dist/hooks/useTrade/index.d.ts.map +1 -0
- package/dist/hooks/useTrade/index.js +2 -0
- package/dist/hooks/useTrade/index.js.map +1 -0
- package/dist/hooks/useTrade/types.d.ts +29 -0
- package/dist/hooks/useTrade/types.d.ts.map +1 -0
- package/dist/hooks/useTrade/types.js +2 -0
- package/dist/hooks/useTrade/types.js.map +1 -0
- package/dist/hooks/useTrade/useTrade.d.ts +3 -0
- package/dist/hooks/useTrade/useTrade.d.ts.map +1 -0
- package/dist/hooks/useTrade/useTrade.js +89 -0
- package/dist/hooks/useTrade/useTrade.js.map +1 -0
- package/dist/hooks/useTradeFeed/index.d.ts +3 -0
- package/dist/hooks/useTradeFeed/index.d.ts.map +1 -0
- package/dist/hooks/useTradeFeed/index.js +3 -0
- package/dist/hooks/useTradeFeed/index.js.map +1 -0
- package/dist/hooks/useTradeFeed/types.d.ts +15 -0
- package/dist/hooks/useTradeFeed/types.d.ts.map +1 -0
- package/dist/hooks/useTradeFeed/types.js +2 -0
- package/dist/hooks/useTradeFeed/types.js.map +1 -0
- package/dist/hooks/useTradeFeed/useTradeFeed.d.ts +9 -0
- package/dist/hooks/useTradeFeed/useTradeFeed.d.ts.map +1 -0
- package/dist/hooks/useTradeFeed/useTradeFeed.js +47 -0
- package/dist/hooks/useTradeFeed/useTradeFeed.js.map +1 -0
- 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 +92 -0
- package/dist/hooks/useUserMovements/useUserMovements.js.map +1 -0
- package/dist/hooks/useVault/index.d.ts +3 -0
- package/dist/hooks/useVault/index.d.ts.map +1 -0
- package/dist/hooks/useVault/index.js +2 -0
- package/dist/hooks/useVault/index.js.map +1 -0
- package/dist/hooks/useVault/types.d.ts +16 -0
- package/dist/hooks/useVault/types.d.ts.map +1 -0
- package/dist/hooks/useVault/types.js +2 -0
- package/dist/hooks/useVault/types.js.map +1 -0
- package/dist/hooks/useVault/useVault.d.ts +3 -0
- package/dist/hooks/useVault/useVault.d.ts.map +1 -0
- package/dist/hooks/useVault/useVault.js +66 -0
- package/dist/hooks/useVault/useVault.js.map +1 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -0
- package/dist/provider/MonacoProvider.d.ts +4 -0
- package/dist/provider/MonacoProvider.d.ts.map +1 -0
- package/dist/provider/MonacoProvider.js +103 -0
- package/dist/provider/MonacoProvider.js.map +1 -0
- package/dist/provider/index.d.ts +3 -0
- package/dist/provider/index.d.ts.map +1 -0
- package/dist/provider/index.js +3 -0
- package/dist/provider/index.js.map +1 -0
- package/dist/provider/types.d.ts +46 -0
- package/dist/provider/types.d.ts.map +1 -0
- package/dist/provider/types.js +10 -0
- package/dist/provider/types.js.map +1 -0
- package/dist/utils/index.d.ts +2 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +2 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/tokenStorage.d.ts +39 -0
- package/dist/utils/tokenStorage.d.ts.map +1 -0
- package/dist/utils/tokenStorage.js +103 -0
- package/dist/utils/tokenStorage.js.map +1 -0
- package/package.json +39 -0
package/README.md
ADDED
|
@@ -0,0 +1,381 @@
|
|
|
1
|
+
# Monaco React SDK
|
|
2
|
+
|
|
3
|
+
React hooks and components for the Monaco Protocol. Build trading applications with React using type-safe hooks for authentication, trading, market data, and WebSocket connections.
|
|
4
|
+
|
|
5
|
+
## Installation
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
# Install the React SDK and its dependencies
|
|
9
|
+
npm install @0xmonaco/react react wagmi@^2.17.5 viem@^2.31.7
|
|
10
|
+
|
|
11
|
+
# Or with pnpm
|
|
12
|
+
pnpm add @0xmonaco/react react wagmi@^2.17.5 viem@^2.31.7
|
|
13
|
+
|
|
14
|
+
# Or with yarn
|
|
15
|
+
yarn add @0xmonaco/react react wagmi@^2.17.5 viem@^2.31.7
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
## Features
|
|
19
|
+
|
|
20
|
+
- 🎣 **React Hooks**: Type-safe hooks for all Monaco Protocol operations
|
|
21
|
+
- 🔐 **Authentication**: `useAuth` hook for wallet-based login and session management
|
|
22
|
+
- 📈 **Trading**: `useTrade` hook for placing and managing orders
|
|
23
|
+
- 📊 **Market Data**: `useMarket` hook for trading pairs and candlestick data
|
|
24
|
+
- 👤 **Profile**: `useProfile` hook for user account information
|
|
25
|
+
- 🔄 **WebSocket**: Real-time hooks for orders, OHLCV, and orderbook updates
|
|
26
|
+
- 💼 **Vault**: `useVault` hook for token deposits and withdrawals
|
|
27
|
+
|
|
28
|
+
## Quick Start
|
|
29
|
+
|
|
30
|
+
### 1. Setup the Monaco Provider
|
|
31
|
+
|
|
32
|
+
Wrap your application with the `MonacoProvider`:
|
|
33
|
+
|
|
34
|
+
```tsx
|
|
35
|
+
import { MonacoProvider } from "@0xmonaco/react";
|
|
36
|
+
import { WagmiProvider, createConfig, http } from "wagmi";
|
|
37
|
+
import { seiTestnet } from "wagmi/chains";
|
|
38
|
+
|
|
39
|
+
const wagmiConfig = createConfig({
|
|
40
|
+
chains: [seiTestnet],
|
|
41
|
+
transports: {
|
|
42
|
+
[seiTestnet.id]: http("https://evm-rpc-testnet.sei-apis.com"),
|
|
43
|
+
},
|
|
44
|
+
});
|
|
45
|
+
|
|
46
|
+
function App() {
|
|
47
|
+
return (
|
|
48
|
+
<WagmiProvider config={wagmiConfig}>
|
|
49
|
+
<MonacoProvider
|
|
50
|
+
network="testnet"
|
|
51
|
+
seiRpcUrl="https://evm-rpc-testnet.sei-apis.com"
|
|
52
|
+
>
|
|
53
|
+
<YourApp />
|
|
54
|
+
</MonacoProvider>
|
|
55
|
+
</WagmiProvider>
|
|
56
|
+
);
|
|
57
|
+
}
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
### 2. Use Monaco Hooks
|
|
61
|
+
|
|
62
|
+
```tsx
|
|
63
|
+
import { useMonaco, useAuth, useTrade, useMarket } from "@0xmonaco/react";
|
|
64
|
+
|
|
65
|
+
function TradingComponent() {
|
|
66
|
+
const sdk = useMonaco();
|
|
67
|
+
const { login, logout, isAuthenticated } = useAuth();
|
|
68
|
+
const { placeLimitOrder, placeMarketOrder } = useTrade();
|
|
69
|
+
const { tradingPairs, getTradingPairBySymbol } = useMarket();
|
|
70
|
+
|
|
71
|
+
// Login
|
|
72
|
+
const handleLogin = async () => {
|
|
73
|
+
await login("your-client-id", { connectWebSocket: true });
|
|
74
|
+
};
|
|
75
|
+
|
|
76
|
+
// Place an order
|
|
77
|
+
const handlePlaceOrder = async () => {
|
|
78
|
+
const order = await placeLimitOrder(
|
|
79
|
+
"BTC/USDC",
|
|
80
|
+
"BUY",
|
|
81
|
+
"0.001",
|
|
82
|
+
"50000"
|
|
83
|
+
);
|
|
84
|
+
console.log("Order placed:", order.order_id);
|
|
85
|
+
};
|
|
86
|
+
|
|
87
|
+
return (
|
|
88
|
+
<div>
|
|
89
|
+
<button onClick={handleLogin}>
|
|
90
|
+
{isAuthenticated ? "Logout" : "Login"}
|
|
91
|
+
</button>
|
|
92
|
+
<button onClick={handlePlaceOrder}>Place Order</button>
|
|
93
|
+
</div>
|
|
94
|
+
);
|
|
95
|
+
}
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
## Available Hooks
|
|
99
|
+
|
|
100
|
+
### Core Hooks
|
|
101
|
+
|
|
102
|
+
#### `useMonaco()`
|
|
103
|
+
Access the Monaco SDK instance directly.
|
|
104
|
+
|
|
105
|
+
```tsx
|
|
106
|
+
const sdk = useMonaco();
|
|
107
|
+
const address = sdk.getAccountAddress();
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
#### `useAuth()`
|
|
111
|
+
Authentication and session management.
|
|
112
|
+
|
|
113
|
+
```tsx
|
|
114
|
+
const { login, logout, isAuthenticated, authState } = useAuth();
|
|
115
|
+
|
|
116
|
+
// Login with auto-connect WebSocket
|
|
117
|
+
await login(clientId, { connectWebSocket: true });
|
|
118
|
+
|
|
119
|
+
// Check authentication status
|
|
120
|
+
if (isAuthenticated) {
|
|
121
|
+
console.log("User:", authState?.user);
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
// Logout
|
|
125
|
+
await logout();
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
### Trading Hooks
|
|
129
|
+
|
|
130
|
+
#### `useTrade()`
|
|
131
|
+
Place and manage orders.
|
|
132
|
+
|
|
133
|
+
```tsx
|
|
134
|
+
const {
|
|
135
|
+
placeLimitOrder,
|
|
136
|
+
placeMarketOrder,
|
|
137
|
+
cancelOrder,
|
|
138
|
+
replaceOrder,
|
|
139
|
+
getOrder,
|
|
140
|
+
getPaginatedOrders,
|
|
141
|
+
} = useTrade();
|
|
142
|
+
|
|
143
|
+
// Place a limit order
|
|
144
|
+
const order = await placeLimitOrder(
|
|
145
|
+
"BTC/USDC",
|
|
146
|
+
"BUY",
|
|
147
|
+
"0.001",
|
|
148
|
+
"50000",
|
|
149
|
+
{ timeInForce: "GTC" }
|
|
150
|
+
);
|
|
151
|
+
|
|
152
|
+
// Place a market order
|
|
153
|
+
const marketOrder = await placeMarketOrder(
|
|
154
|
+
"BTC/USDC",
|
|
155
|
+
"SELL",
|
|
156
|
+
"0.001",
|
|
157
|
+
{ slippageTolerance: 0.01 } // 1%
|
|
158
|
+
);
|
|
159
|
+
|
|
160
|
+
// Cancel an order
|
|
161
|
+
await cancelOrder(orderId);
|
|
162
|
+
|
|
163
|
+
// Get orders
|
|
164
|
+
const { data: orders } = await getPaginatedOrders({
|
|
165
|
+
status: "PENDING",
|
|
166
|
+
trading_pair: "BTC/USDC",
|
|
167
|
+
});
|
|
168
|
+
```
|
|
169
|
+
|
|
170
|
+
### Market Data Hooks
|
|
171
|
+
|
|
172
|
+
#### `useMarket()`
|
|
173
|
+
Access trading pair metadata and market data.
|
|
174
|
+
|
|
175
|
+
```tsx
|
|
176
|
+
const { tradingPairs, getTradingPairBySymbol, getCandlestickData } = useMarket();
|
|
177
|
+
|
|
178
|
+
// Get all trading pairs
|
|
179
|
+
const pairs = await tradingPairs();
|
|
180
|
+
|
|
181
|
+
// Get specific pair
|
|
182
|
+
const btcPair = await getTradingPairBySymbol("BTC/USDC");
|
|
183
|
+
|
|
184
|
+
// Get candlestick data
|
|
185
|
+
const candles = await getCandlestickData(
|
|
186
|
+
"BTC/USDC",
|
|
187
|
+
"1h",
|
|
188
|
+
Date.now() - 86400000, // 24h ago
|
|
189
|
+
Date.now()
|
|
190
|
+
);
|
|
191
|
+
```
|
|
192
|
+
|
|
193
|
+
#### `useTradeFeed()`
|
|
194
|
+
Get recent trades for a trading pair.
|
|
195
|
+
|
|
196
|
+
```tsx
|
|
197
|
+
const { getTradeFeed } = useTradeFeed();
|
|
198
|
+
|
|
199
|
+
const trades = await getTradeFeed("BTC/USDC", { limit: 50 });
|
|
200
|
+
```
|
|
201
|
+
|
|
202
|
+
### Vault Hooks
|
|
203
|
+
|
|
204
|
+
#### `useVault()`
|
|
205
|
+
Manage token deposits and withdrawals using asset IDs.
|
|
206
|
+
|
|
207
|
+
```tsx
|
|
208
|
+
const { deposit, withdraw, approve, getBalance, needsApproval } = useVault();
|
|
209
|
+
|
|
210
|
+
// Get asset ID from trading pair
|
|
211
|
+
const pair = await getTradingPairBySymbol("USDC/USDT");
|
|
212
|
+
const assetId = pair.base_asset_id;
|
|
213
|
+
|
|
214
|
+
// Check balance
|
|
215
|
+
const balance = await getBalance(assetId);
|
|
216
|
+
console.log(`Balance: ${balance.formatted} ${balance.symbol}`);
|
|
217
|
+
|
|
218
|
+
// Check if approval is needed
|
|
219
|
+
if (await needsApproval(assetId, amount)) {
|
|
220
|
+
await approve(assetId, amount);
|
|
221
|
+
}
|
|
222
|
+
|
|
223
|
+
// Deposit tokens
|
|
224
|
+
await deposit(assetId, amount);
|
|
225
|
+
|
|
226
|
+
// Withdraw tokens
|
|
227
|
+
await withdraw(assetId, amount);
|
|
228
|
+
```
|
|
229
|
+
|
|
230
|
+
### Profile Hooks
|
|
231
|
+
|
|
232
|
+
#### `useProfile()`
|
|
233
|
+
Access user profile and account information.
|
|
234
|
+
|
|
235
|
+
```tsx
|
|
236
|
+
const { getProfile, getUserBalances, getUserMovements } = useProfile();
|
|
237
|
+
|
|
238
|
+
// Get profile
|
|
239
|
+
const profile = await getProfile();
|
|
240
|
+
|
|
241
|
+
// Get balances
|
|
242
|
+
const balances = await getUserBalances({
|
|
243
|
+
page: 1,
|
|
244
|
+
page_size: 10,
|
|
245
|
+
});
|
|
246
|
+
|
|
247
|
+
// Get movements (transaction history)
|
|
248
|
+
const movements = await getUserMovements({
|
|
249
|
+
page: 1,
|
|
250
|
+
page_size: 20,
|
|
251
|
+
});
|
|
252
|
+
```
|
|
253
|
+
|
|
254
|
+
### WebSocket Hooks
|
|
255
|
+
|
|
256
|
+
#### `useOrderWebSocket()`
|
|
257
|
+
Subscribe to real-time order updates.
|
|
258
|
+
|
|
259
|
+
```tsx
|
|
260
|
+
const { subscribe, unsubscribe, connect, disconnect } = useOrderWebSocket();
|
|
261
|
+
|
|
262
|
+
useEffect(() => {
|
|
263
|
+
// Connect and subscribe
|
|
264
|
+
await connect();
|
|
265
|
+
|
|
266
|
+
subscribe("BTC/USDC", "SPOT", (event) => {
|
|
267
|
+
console.log("Order event:", event.eventType);
|
|
268
|
+
if (event.eventType === "ORDER_FILLED") {
|
|
269
|
+
console.log("Order filled:", event.order);
|
|
270
|
+
}
|
|
271
|
+
});
|
|
272
|
+
|
|
273
|
+
return () => {
|
|
274
|
+
unsubscribe("BTC/USDC", "SPOT");
|
|
275
|
+
disconnect();
|
|
276
|
+
};
|
|
277
|
+
}, []);
|
|
278
|
+
```
|
|
279
|
+
|
|
280
|
+
#### `useOHLCVWebSocket()`
|
|
281
|
+
Subscribe to real-time candlestick data.
|
|
282
|
+
|
|
283
|
+
```tsx
|
|
284
|
+
const { subscribe, unsubscribe, connect, disconnect } = useOHLCVWebSocket();
|
|
285
|
+
|
|
286
|
+
useEffect(() => {
|
|
287
|
+
await connect();
|
|
288
|
+
|
|
289
|
+
subscribe("BTC/USDC", "SPOT", "1m", (event) => {
|
|
290
|
+
console.log("New candle:", event.candlestick);
|
|
291
|
+
});
|
|
292
|
+
|
|
293
|
+
return () => {
|
|
294
|
+
unsubscribe("BTC/USDC", "SPOT", "1m");
|
|
295
|
+
disconnect();
|
|
296
|
+
};
|
|
297
|
+
}, []);
|
|
298
|
+
```
|
|
299
|
+
|
|
300
|
+
#### `useOrderbook()`
|
|
301
|
+
Subscribe to real-time orderbook updates.
|
|
302
|
+
|
|
303
|
+
```tsx
|
|
304
|
+
const { subscribe, unsubscribe, connect, disconnect } = useOrderbook();
|
|
305
|
+
|
|
306
|
+
useEffect(() => {
|
|
307
|
+
await connect();
|
|
308
|
+
|
|
309
|
+
subscribe("BTC/USDC", "SPOT", (event) => {
|
|
310
|
+
console.log("Orderbook:", {
|
|
311
|
+
bids: event.bids.length,
|
|
312
|
+
asks: event.asks.length,
|
|
313
|
+
});
|
|
314
|
+
});
|
|
315
|
+
|
|
316
|
+
return () => {
|
|
317
|
+
unsubscribe("BTC/USDC", "SPOT");
|
|
318
|
+
disconnect();
|
|
319
|
+
};
|
|
320
|
+
}, []);
|
|
321
|
+
```
|
|
322
|
+
|
|
323
|
+
## TypeScript Configuration
|
|
324
|
+
|
|
325
|
+
For optimal type inference, use these TypeScript settings:
|
|
326
|
+
|
|
327
|
+
```json
|
|
328
|
+
{
|
|
329
|
+
"compilerOptions": {
|
|
330
|
+
"target": "ES2020",
|
|
331
|
+
"module": "nodenext",
|
|
332
|
+
"moduleResolution": "nodenext",
|
|
333
|
+
"jsx": "react-jsx",
|
|
334
|
+
"strict": true,
|
|
335
|
+
"esModuleInterop": true,
|
|
336
|
+
"resolveJsonModule": true
|
|
337
|
+
}
|
|
338
|
+
}
|
|
339
|
+
```
|
|
340
|
+
|
|
341
|
+
## Examples
|
|
342
|
+
|
|
343
|
+
Check out the [`examples/react-vite-app`](../../examples/react-vite-app) directory for a complete React application using the Monaco SDK.
|
|
344
|
+
|
|
345
|
+
## Development
|
|
346
|
+
|
|
347
|
+
### Build
|
|
348
|
+
|
|
349
|
+
```bash
|
|
350
|
+
pnpm build
|
|
351
|
+
```
|
|
352
|
+
|
|
353
|
+
### Watch Mode
|
|
354
|
+
|
|
355
|
+
```bash
|
|
356
|
+
pnpm dev
|
|
357
|
+
```
|
|
358
|
+
|
|
359
|
+
### Lint
|
|
360
|
+
|
|
361
|
+
```bash
|
|
362
|
+
pnpm lint
|
|
363
|
+
```
|
|
364
|
+
|
|
365
|
+
## Contributing
|
|
366
|
+
|
|
367
|
+
We welcome contributions! Please see our [Contributing Guide](../../docs/contributing.mdx) for details.
|
|
368
|
+
|
|
369
|
+
## License
|
|
370
|
+
|
|
371
|
+
This project is licensed under the MIT License - see the [LICENSE](../../LICENSE) file for details.
|
|
372
|
+
|
|
373
|
+
## Support
|
|
374
|
+
|
|
375
|
+
For support, please:
|
|
376
|
+
|
|
377
|
+
- Open an issue on GitHub
|
|
378
|
+
- Join our [Discord community](https://discord.gg/monaco)
|
|
379
|
+
- Visit our [documentation site](https://docs.monaco.xyz)
|
|
380
|
+
- Check our [API documentation](../../docs/api-reference.mdx)
|
|
381
|
+
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export * from "./useAuth";
|
|
2
|
+
export * from "./useFees";
|
|
3
|
+
export * from "./useMarket";
|
|
4
|
+
export * from "./useMonaco";
|
|
5
|
+
export * from "./useOrderbook";
|
|
6
|
+
export * from "./useProfile";
|
|
7
|
+
export * from "./useTokenLifecycle";
|
|
8
|
+
export * from "./useTrade";
|
|
9
|
+
export * from "./useTradeFeed";
|
|
10
|
+
export * from "./useUserMovements";
|
|
11
|
+
export * from "./useVault";
|
|
12
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export * from "./useAuth";
|
|
2
|
+
export * from "./useFees";
|
|
3
|
+
export * from "./useMarket";
|
|
4
|
+
export * from "./useMonaco";
|
|
5
|
+
export * from "./useOrderbook";
|
|
6
|
+
export * from "./useProfile";
|
|
7
|
+
export * from "./useTokenLifecycle";
|
|
8
|
+
export * from "./useTrade";
|
|
9
|
+
export * from "./useTradeFeed";
|
|
10
|
+
export * from "./useUserMovements";
|
|
11
|
+
export * from "./useVault";
|
|
12
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/hooks/useAuth/index.ts"],"names":[],"mappings":"AAAA,mBAAmB,SAAS,CAAC;AAC7B,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/hooks/useAuth/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import type { AuthState, ChallengeResponse, TokenRefreshResponse } from "@0xmonaco/types";
|
|
2
|
+
import type { AuthenticationStatus } from "../../provider";
|
|
3
|
+
export interface UseAuthState {
|
|
4
|
+
/** Current authentication status */
|
|
5
|
+
authenticationStatus: AuthenticationStatus;
|
|
6
|
+
}
|
|
7
|
+
export interface UseAuthReturn extends UseAuthState {
|
|
8
|
+
/**
|
|
9
|
+
* Complete authentication flow. Returns AuthState with accessToken and refreshToken.
|
|
10
|
+
* @param options - Optional configuration
|
|
11
|
+
* @param options.connectWebSocket - Auto-connect all authenticated WebSocket channels after login (currently Orders) (default: false)
|
|
12
|
+
*/
|
|
13
|
+
login: (options?: {
|
|
14
|
+
connectWebSocket?: boolean;
|
|
15
|
+
}) => Promise<AuthState>;
|
|
16
|
+
/** Logout user and clear state. Revokes the refresh token on the server. */
|
|
17
|
+
logout: () => Promise<void>;
|
|
18
|
+
/** Refresh authentication tokens using the stored refresh token. */
|
|
19
|
+
refreshAuth: () => Promise<AuthState>;
|
|
20
|
+
/** Sign a challenge message with the connected wallet. */
|
|
21
|
+
signChallenge: (message: string) => Promise<string>;
|
|
22
|
+
/** Create authentication challenge for the given address. */
|
|
23
|
+
createChallenge: (address: string) => Promise<ChallengeResponse>;
|
|
24
|
+
/** Complete authentication with signature. Returns tokens. */
|
|
25
|
+
authenticate: () => Promise<AuthState>;
|
|
26
|
+
/** Refresh access token. Pass the refreshToken from authState. */
|
|
27
|
+
refreshToken: (refreshToken: string) => Promise<TokenRefreshResponse>;
|
|
28
|
+
/** Revoke refresh token. Pass authState.refreshToken from authState.login() response. */
|
|
29
|
+
revokeToken: (refreshToken: string) => Promise<void>;
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/hooks/useAuth/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAC1F,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAE3D,MAAM,WAAW,YAAY;IAC3B,oCAAoC;IACpC,oBAAoB,EAAE,oBAAoB,CAAC;CAC5C;AAED,MAAM,WAAW,aAAc,SAAQ,YAAY;IACjD;;;;OAIG;IACH,KAAK,EAAE,CAAC,OAAO,CAAC,EAAE;QAAE,gBAAgB,CAAC,EAAE,OAAO,CAAA;KAAE,KAAK,OAAO,CAAC,SAAS,CAAC,CAAC;IACxE,4EAA4E;IAC5E,MAAM,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5B,oEAAoE;IACpE,WAAW,EAAE,MAAM,OAAO,CAAC,SAAS,CAAC,CAAC;IACtC,0DAA0D;IAC1D,aAAa,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IACpD,6DAA6D;IAC7D,eAAe,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,iBAAiB,CAAC,CAAC;IACjE,8DAA8D;IAC9D,YAAY,EAAE,MAAM,OAAO,CAAC,SAAS,CAAC,CAAC;IACvC,kEAAkE;IAClE,YAAY,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,OAAO,CAAC,oBAAoB,CAAC,CAAC;IACtE,yFAAyF;IACzF,WAAW,EAAE,CAAC,YAAY,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACtD"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/hooks/useAuth/types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useAuth.d.ts","sourceRoot":"","sources":["../../../src/hooks/useAuth/useAuth.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAE7C,eAAO,MAAM,OAAO,QAAO,aAyK1B,CAAC"}
|
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
import { useCallback } from "react";
|
|
2
|
+
import { useWalletClient } from "wagmi";
|
|
3
|
+
import { AuthenticationStatus, useMonacoContext } from "../../provider";
|
|
4
|
+
import { useMonacoSDK } from "../useMonaco";
|
|
5
|
+
export const useAuth = () => {
|
|
6
|
+
const { sdk, clientId } = useMonacoSDK();
|
|
7
|
+
const { authenticationStatus, setAuthenticationStatus, tokenLifecycle } = useMonacoContext();
|
|
8
|
+
const { data: walletClient } = useWalletClient();
|
|
9
|
+
const login = useCallback(async () => {
|
|
10
|
+
if (!sdk)
|
|
11
|
+
throw new Error("SDK not available");
|
|
12
|
+
if (!walletClient)
|
|
13
|
+
throw new Error("Wallet not connected");
|
|
14
|
+
setAuthenticationStatus(AuthenticationStatus.AUTHENTICATING);
|
|
15
|
+
try {
|
|
16
|
+
const authState = await sdk.login(clientId);
|
|
17
|
+
// Initialize token lifecycle management (caching + auto-refresh)
|
|
18
|
+
tokenLifecycle.initializeTokens(authState);
|
|
19
|
+
const authenticated = sdk.isAuthenticated();
|
|
20
|
+
setAuthenticationStatus(authenticated ? AuthenticationStatus.AUTHENTICATED : AuthenticationStatus.UNAUTHENTICATED);
|
|
21
|
+
return authState;
|
|
22
|
+
}
|
|
23
|
+
catch (error) {
|
|
24
|
+
setAuthenticationStatus(AuthenticationStatus.UNAUTHENTICATED);
|
|
25
|
+
throw error;
|
|
26
|
+
}
|
|
27
|
+
}, [sdk, walletClient, clientId, setAuthenticationStatus, tokenLifecycle]);
|
|
28
|
+
const logout = useCallback(async () => {
|
|
29
|
+
if (!sdk)
|
|
30
|
+
throw new Error("SDK not available");
|
|
31
|
+
setAuthenticationStatus(AuthenticationStatus.AUTHENTICATING);
|
|
32
|
+
try {
|
|
33
|
+
await sdk.logout();
|
|
34
|
+
// Clear cached tokens and stop auto-refresh
|
|
35
|
+
tokenLifecycle.clearTokens();
|
|
36
|
+
setAuthenticationStatus(AuthenticationStatus.UNAUTHENTICATED);
|
|
37
|
+
}
|
|
38
|
+
catch (error) {
|
|
39
|
+
// Clear tokens even if logout fails
|
|
40
|
+
tokenLifecycle.clearTokens();
|
|
41
|
+
setAuthenticationStatus(AuthenticationStatus.UNAUTHENTICATED);
|
|
42
|
+
throw error;
|
|
43
|
+
}
|
|
44
|
+
}, [sdk, setAuthenticationStatus, tokenLifecycle]);
|
|
45
|
+
const refreshAuth = useCallback(async () => {
|
|
46
|
+
if (!sdk)
|
|
47
|
+
throw new Error("SDK not available");
|
|
48
|
+
setAuthenticationStatus(AuthenticationStatus.AUTHENTICATING);
|
|
49
|
+
try {
|
|
50
|
+
const result = await sdk.refreshAuth();
|
|
51
|
+
// Reinitialize the token lifecycle with new tokens
|
|
52
|
+
tokenLifecycle.initializeTokens(result);
|
|
53
|
+
const authenticated = sdk.isAuthenticated();
|
|
54
|
+
setAuthenticationStatus(authenticated ? AuthenticationStatus.AUTHENTICATED : AuthenticationStatus.UNAUTHENTICATED);
|
|
55
|
+
return result;
|
|
56
|
+
}
|
|
57
|
+
catch (error) {
|
|
58
|
+
tokenLifecycle.clearTokens();
|
|
59
|
+
setAuthenticationStatus(AuthenticationStatus.UNAUTHENTICATED);
|
|
60
|
+
throw error;
|
|
61
|
+
}
|
|
62
|
+
}, [sdk, setAuthenticationStatus, tokenLifecycle]);
|
|
63
|
+
const signChallenge = useCallback(async (message) => {
|
|
64
|
+
if (!sdk)
|
|
65
|
+
throw new Error("SDK not available");
|
|
66
|
+
if (!message?.trim())
|
|
67
|
+
throw new Error("Message is required and cannot be empty");
|
|
68
|
+
return await sdk.auth.signChallenge(message);
|
|
69
|
+
}, [sdk]);
|
|
70
|
+
const createChallenge = useCallback(async (address) => {
|
|
71
|
+
if (!sdk)
|
|
72
|
+
throw new Error("SDK not available");
|
|
73
|
+
if (!address?.trim())
|
|
74
|
+
throw new Error("Address is required and cannot be empty");
|
|
75
|
+
if (!clientId?.trim())
|
|
76
|
+
throw new Error("Client ID is required and cannot be empty");
|
|
77
|
+
return await sdk.auth.createChallenge(address, clientId);
|
|
78
|
+
}, [sdk, clientId]);
|
|
79
|
+
const authenticate = useCallback(async () => {
|
|
80
|
+
if (!sdk)
|
|
81
|
+
throw new Error("SDK not available");
|
|
82
|
+
if (!clientId?.trim())
|
|
83
|
+
throw new Error("Client ID is required and cannot be empty");
|
|
84
|
+
setAuthenticationStatus(AuthenticationStatus.AUTHENTICATING);
|
|
85
|
+
try {
|
|
86
|
+
const result = await sdk.auth.authenticate(clientId);
|
|
87
|
+
const authenticated = sdk.isAuthenticated();
|
|
88
|
+
setAuthenticationStatus(authenticated ? AuthenticationStatus.AUTHENTICATED : AuthenticationStatus.UNAUTHENTICATED);
|
|
89
|
+
return {
|
|
90
|
+
accessToken: result.accessToken,
|
|
91
|
+
refreshToken: result.refreshToken,
|
|
92
|
+
expiresAt: result.expiresAt,
|
|
93
|
+
user: result.user,
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
catch (error) {
|
|
97
|
+
setAuthenticationStatus(AuthenticationStatus.UNAUTHENTICATED);
|
|
98
|
+
throw error;
|
|
99
|
+
}
|
|
100
|
+
}, [sdk, clientId, setAuthenticationStatus]);
|
|
101
|
+
const refreshToken = useCallback(async (token) => {
|
|
102
|
+
if (!sdk)
|
|
103
|
+
throw new Error("SDK not available");
|
|
104
|
+
if (!token?.trim())
|
|
105
|
+
throw new Error("Refresh token is required and cannot be empty");
|
|
106
|
+
setAuthenticationStatus(AuthenticationStatus.AUTHENTICATING);
|
|
107
|
+
try {
|
|
108
|
+
const result = await sdk.auth.refreshToken(token);
|
|
109
|
+
const authenticated = sdk.isAuthenticated();
|
|
110
|
+
setAuthenticationStatus(authenticated ? AuthenticationStatus.AUTHENTICATED : AuthenticationStatus.UNAUTHENTICATED);
|
|
111
|
+
return result;
|
|
112
|
+
}
|
|
113
|
+
catch (error) {
|
|
114
|
+
setAuthenticationStatus(AuthenticationStatus.UNAUTHENTICATED);
|
|
115
|
+
throw error;
|
|
116
|
+
}
|
|
117
|
+
}, [sdk, setAuthenticationStatus]);
|
|
118
|
+
const revokeToken = useCallback(async (token) => {
|
|
119
|
+
if (!sdk)
|
|
120
|
+
throw new Error("SDK not available");
|
|
121
|
+
if (!token?.trim())
|
|
122
|
+
throw new Error("Refresh token is required and cannot be empty");
|
|
123
|
+
setAuthenticationStatus(AuthenticationStatus.AUTHENTICATING);
|
|
124
|
+
try {
|
|
125
|
+
await sdk.auth.revokeToken(token);
|
|
126
|
+
const authenticated = sdk.isAuthenticated();
|
|
127
|
+
setAuthenticationStatus(authenticated ? AuthenticationStatus.AUTHENTICATED : AuthenticationStatus.UNAUTHENTICATED);
|
|
128
|
+
}
|
|
129
|
+
catch (error) {
|
|
130
|
+
setAuthenticationStatus(AuthenticationStatus.UNAUTHENTICATED);
|
|
131
|
+
throw error;
|
|
132
|
+
}
|
|
133
|
+
}, [sdk, setAuthenticationStatus]);
|
|
134
|
+
return {
|
|
135
|
+
// State
|
|
136
|
+
authenticationStatus,
|
|
137
|
+
// Primary auth actions
|
|
138
|
+
login,
|
|
139
|
+
logout,
|
|
140
|
+
// Token management
|
|
141
|
+
refreshAuth,
|
|
142
|
+
refreshToken,
|
|
143
|
+
revokeToken,
|
|
144
|
+
// Low-level auth functions
|
|
145
|
+
authenticate,
|
|
146
|
+
signChallenge,
|
|
147
|
+
createChallenge,
|
|
148
|
+
};
|
|
149
|
+
};
|
|
150
|
+
//# sourceMappingURL=useAuth.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useAuth.js","sourceRoot":"","sources":["../../../src/hooks/useAuth/useAuth.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/hooks/useFees/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC7C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/hooks/useFees/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { SimulateFeeParams, SimulateFeeResponse } from "@0xmonaco/types";
|
|
2
|
+
export interface UseFeesReturn {
|
|
3
|
+
/** Simulate fees for an order before placing it */
|
|
4
|
+
simulateFees: (params: SimulateFeeParams) => Promise<SimulateFeeResponse>;
|
|
5
|
+
}
|
|
6
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/hooks/useFees/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,iBAAiB,CAAC;AAE9E,MAAM,WAAW,aAAa;IAC5B,mDAAmD;IACnD,YAAY,EAAE,CAAC,MAAM,EAAE,iBAAiB,KAAK,OAAO,CAAC,mBAAmB,CAAC,CAAC;CAC3E"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/hooks/useFees/types.ts"],"names":[],"mappings":""}
|