@0xmonaco/core 0.1.6 → 0.2.0
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 +183 -108
- package/dist/api/auth/api.d.ts +10 -10
- package/dist/api/auth/api.d.ts.map +1 -1
- package/dist/api/auth/api.js +20 -12
- package/dist/api/auth/api.js.map +1 -1
- package/dist/api/index.d.ts +1 -0
- package/dist/api/index.d.ts.map +1 -1
- package/dist/api/index.js +1 -0
- package/dist/api/index.js.map +1 -1
- package/dist/api/market/api.d.ts +13 -0
- package/dist/api/market/api.d.ts.map +1 -0
- package/dist/api/market/api.js +46 -0
- package/dist/api/market/api.js.map +1 -0
- package/dist/api/market/index.d.ts +3 -0
- package/dist/api/market/index.d.ts.map +1 -0
- package/dist/api/market/index.js +2 -0
- package/dist/api/market/index.js.map +1 -0
- package/dist/api/trading/api.d.ts +23 -30
- package/dist/api/trading/api.d.ts.map +1 -1
- package/dist/api/trading/api.js +42 -43
- package/dist/api/trading/api.js.map +1 -1
- package/dist/api/vault/api.d.ts +86 -36
- package/dist/api/vault/api.d.ts.map +1 -1
- package/dist/api/vault/api.js +206 -98
- package/dist/api/vault/api.js.map +1 -1
- package/dist/api/websocket/base-ws-client.d.ts +59 -0
- package/dist/api/websocket/base-ws-client.d.ts.map +1 -0
- package/dist/api/websocket/{client.js → base-ws-client.js} +21 -17
- package/dist/api/websocket/base-ws-client.js.map +1 -0
- package/dist/api/websocket/index.d.ts +4 -2
- package/dist/api/websocket/index.d.ts.map +1 -1
- package/dist/api/websocket/index.js +4 -2
- package/dist/api/websocket/index.js.map +1 -1
- package/dist/api/websocket/ohlcv-ws-client.d.ts +48 -0
- package/dist/api/websocket/ohlcv-ws-client.d.ts.map +1 -0
- package/dist/api/websocket/ohlcv-ws-client.js +123 -0
- package/dist/api/websocket/ohlcv-ws-client.js.map +1 -0
- package/dist/api/websocket/orders-ws-client.d.ts +47 -0
- package/dist/api/websocket/orders-ws-client.d.ts.map +1 -0
- package/dist/api/websocket/orders-ws-client.js +131 -0
- package/dist/api/websocket/orders-ws-client.js.map +1 -0
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/sdk.d.ts +6 -2
- package/dist/sdk.d.ts.map +1 -1
- package/dist/sdk.js +23 -15
- package/dist/sdk.js.map +1 -1
- package/package.json +16 -6
- package/dist/api/websocket/client.d.ts +0 -57
- package/dist/api/websocket/client.d.ts.map +0 -1
- package/dist/api/websocket/client.js.map +0 -1
package/README.md
CHANGED
|
@@ -11,7 +11,7 @@ This package is currently in **early development** (v0.1.0).
|
|
|
11
11
|
|
|
12
12
|
---
|
|
13
13
|
|
|
14
|
-
Core SDK implementation for interacting with Monaco Protocol. This SDK provides a comprehensive implementation with Vault and
|
|
14
|
+
Core SDK implementation for interacting with Monaco Protocol. This SDK provides a comprehensive implementation with Authentication, Vault, Trading, Market, and Profile APIs, featuring JWT authentication and secure API Gateway integration.
|
|
15
15
|
|
|
16
16
|
## Installation
|
|
17
17
|
|
|
@@ -21,25 +21,38 @@ npm install @0xmonaco/core
|
|
|
21
21
|
|
|
22
22
|
## Features
|
|
23
23
|
|
|
24
|
+
### 🔐 **Authentication**
|
|
25
|
+
- **JWT-based Authentication**: Secure token-based authentication
|
|
26
|
+
- **Wallet Signature Verification**: EIP-712 signature-based login
|
|
27
|
+
- **Token Refresh**: Automatic token refresh and management
|
|
28
|
+
- **Session Management**: Secure session handling
|
|
29
|
+
|
|
24
30
|
### 🏦 **Vault Operations**
|
|
25
31
|
- **Token Approvals**: ERC20 token approvals for vault usage
|
|
26
|
-
- **Deposits**: Secure token deposits with
|
|
32
|
+
- **Deposits**: Secure token deposits with signature validation
|
|
27
33
|
- **Withdrawals**: Token withdrawals with cryptographic validation
|
|
28
34
|
- **Balance Queries**: Real-time vault balance tracking
|
|
29
|
-
- **Allowance Management**: Efficient approval checking and management
|
|
30
35
|
|
|
31
36
|
### 📈 **Trading Operations**
|
|
32
|
-
- **Order Types**: Limit
|
|
33
|
-
- **Order Management**: Place, replace
|
|
34
|
-
- **
|
|
35
|
-
- **
|
|
36
|
-
|
|
37
|
+
- **Order Types**: Limit and Market orders
|
|
38
|
+
- **Order Management**: Place, replace, and cancel orders
|
|
39
|
+
- **Order Queries**: Paginated orders, order history, and individual order details
|
|
40
|
+
- **Real-time Updates**: WebSocket support for live order updates
|
|
41
|
+
|
|
42
|
+
### 📊 **Market Data**
|
|
43
|
+
- **Trading Pairs**: Complete trading pair metadata
|
|
44
|
+
- **Market Information**: Fees, tick sizes, order limits
|
|
45
|
+
- **Pair Discovery**: Search and filter available markets
|
|
46
|
+
|
|
47
|
+
### 👤 **Profile Management**
|
|
48
|
+
- **User Profiles**: Account information and settings
|
|
49
|
+
- **Sub-accounts**: Multi-account management
|
|
50
|
+
- **Balance Tracking**: Cross-platform balance monitoring
|
|
37
51
|
|
|
38
52
|
### 🔐 **Security Features**
|
|
39
|
-
- **
|
|
40
|
-
- **
|
|
53
|
+
- **JWT Authentication**: Secure API access with token validation
|
|
54
|
+
- **EIP-712 Signatures**: Type-safe, structured data signing for authentication
|
|
41
55
|
- **API Gateway Integration**: Secure communication with Monaco backend
|
|
42
|
-
- **Nonce Protection**: Replay attack prevention
|
|
43
56
|
- **TLS Encryption**: Secure API communications
|
|
44
57
|
|
|
45
58
|
## Test Setup
|
|
@@ -110,80 +123,103 @@ const testnetConfig = NETWORK_ENDPOINTS.testnet; // Atlantic-2 testnet
|
|
|
110
123
|
|
|
111
124
|
```typescript
|
|
112
125
|
import { MonacoSDK } from "@0xmonaco/core";
|
|
126
|
+
import { createWalletClient, http } from "viem";
|
|
127
|
+
import { privateKeyToAccount } from "viem/accounts";
|
|
128
|
+
|
|
129
|
+
// Initialize the SDK with wallet client
|
|
130
|
+
const account = privateKeyToAccount("0x...");
|
|
131
|
+
const walletClient = createWalletClient({
|
|
132
|
+
account,
|
|
133
|
+
transport: http()
|
|
134
|
+
});
|
|
113
135
|
|
|
114
|
-
// Initialize the SDK with private key
|
|
115
136
|
const monaco = new MonacoSDK({
|
|
116
|
-
|
|
137
|
+
walletClient,
|
|
117
138
|
network: "mainnet", // or "testnet"
|
|
118
139
|
});
|
|
119
140
|
|
|
141
|
+
// Authentication
|
|
142
|
+
async function authExample() {
|
|
143
|
+
// Login with client ID
|
|
144
|
+
const authState = await monaco.login("your-client-id");
|
|
145
|
+
console.log("Authenticated:", authState.user);
|
|
146
|
+
|
|
147
|
+
// Check authentication status
|
|
148
|
+
console.log("Is authenticated:", monaco.isAuthenticated());
|
|
149
|
+
}
|
|
150
|
+
|
|
151
|
+
// Market Data
|
|
152
|
+
async function marketExample() {
|
|
153
|
+
// Get all trading pairs
|
|
154
|
+
const pairs = await monaco.market.getTradingPairs();
|
|
155
|
+
console.log("Available pairs:", pairs.length);
|
|
156
|
+
|
|
157
|
+
// Get specific trading pair
|
|
158
|
+
const btcPair = await monaco.market.getTradingPairBySymbol("BTC/USDC");
|
|
159
|
+
console.log("BTC pair:", btcPair?.symbol, btcPair?.maker_fee_bps);
|
|
160
|
+
}
|
|
161
|
+
|
|
120
162
|
// Vault Operations
|
|
121
163
|
async function vaultExample() {
|
|
122
164
|
// Check vault balance
|
|
123
165
|
const balance = await monaco.vault.getBalance("0x..."); // token address
|
|
124
166
|
console.log("Vault balance:", balance.formatted, balance.symbol);
|
|
125
167
|
|
|
126
|
-
//
|
|
127
|
-
const
|
|
128
|
-
|
|
129
|
-
// Approve vault to spend tokens
|
|
130
|
-
const approval = await monaco.vault.approve("0x...", parseEther("1000"));
|
|
131
|
-
console.log("Approval transaction:", approval.hash);
|
|
132
|
-
}
|
|
168
|
+
// Approve vault to spend tokens
|
|
169
|
+
const approval = await monaco.vault.approve("0x...", parseEther("1000"));
|
|
170
|
+
console.log("Approval transaction:", approval.hash);
|
|
133
171
|
|
|
134
172
|
// Deposit tokens
|
|
135
173
|
const result = await monaco.vault.deposit("0x...", parseEther("100"));
|
|
136
174
|
console.log("Deposit transaction:", result.hash);
|
|
175
|
+
|
|
176
|
+
// Withdraw tokens
|
|
177
|
+
const withdrawal = await monaco.vault.withdraw("0x...", parseEther("50"));
|
|
178
|
+
console.log("Withdrawal transaction:", withdrawal.hash);
|
|
137
179
|
}
|
|
138
180
|
|
|
139
181
|
// Trading Operations
|
|
140
182
|
async function tradingExample() {
|
|
141
183
|
// Place a limit order
|
|
142
184
|
const order = await monaco.trading.placeLimitOrder(
|
|
143
|
-
"
|
|
144
|
-
"
|
|
145
|
-
|
|
146
|
-
|
|
185
|
+
"BTC/USDC", // market
|
|
186
|
+
"BUY", // side
|
|
187
|
+
"0.001", // quantity
|
|
188
|
+
"50000" // price
|
|
147
189
|
);
|
|
148
|
-
console.log("Order placed:", order.
|
|
190
|
+
console.log("Order placed:", order.order_id);
|
|
149
191
|
|
|
150
|
-
// Place a market order
|
|
192
|
+
// Place a market order
|
|
151
193
|
const marketOrder = await monaco.trading.placeMarketOrder(
|
|
152
|
-
"
|
|
153
|
-
"
|
|
154
|
-
|
|
155
|
-
{ slippageToleranceBps: 50 } // 0.5% max slippage (50 basis points)
|
|
156
|
-
);
|
|
157
|
-
console.log("Market order placed:", marketOrder.orderId);
|
|
158
|
-
|
|
159
|
-
// Place a limit order with IOC time in force
|
|
160
|
-
const iocOrder = await monaco.trading.placeLimitOrder(
|
|
161
|
-
"ETH-USDC",
|
|
162
|
-
"buy",
|
|
163
|
-
parseEther("1.0"),
|
|
164
|
-
parseUnits("2000", 6),
|
|
165
|
-
{ timeInForce: "IOC" } // Immediate-or-Cancel
|
|
194
|
+
"BTC/USDC",
|
|
195
|
+
"SELL",
|
|
196
|
+
"0.001"
|
|
166
197
|
);
|
|
167
|
-
console.log("
|
|
168
|
-
|
|
169
|
-
// Get
|
|
170
|
-
const
|
|
171
|
-
|
|
198
|
+
console.log("Market order placed:", marketOrder.order_id);
|
|
199
|
+
|
|
200
|
+
// Get paginated orders
|
|
201
|
+
const orders = await monaco.trading.getPaginatedOrders({
|
|
202
|
+
status: "PENDING",
|
|
203
|
+
trading_pair: "BTC/USDC",
|
|
204
|
+
page: 1,
|
|
205
|
+
page_size: 10
|
|
206
|
+
});
|
|
207
|
+
console.log("Orders:", orders.data.length);
|
|
172
208
|
|
|
173
|
-
// Replace an order
|
|
209
|
+
// Replace an order
|
|
174
210
|
const replaceResult = await monaco.trading.replaceOrder("order-id", {
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
size: parseEther("2.0"),
|
|
178
|
-
price: parseUnits("2100", 6),
|
|
179
|
-
type: "limit",
|
|
180
|
-
timeInForce: "FOK" // Fill-or-Kill
|
|
211
|
+
quantity: "0.002",
|
|
212
|
+
price: "51000"
|
|
181
213
|
});
|
|
182
|
-
console.log("Order replaced:", replaceResult.
|
|
214
|
+
console.log("Order replaced:", replaceResult.order_id);
|
|
183
215
|
|
|
184
216
|
// Cancel an order
|
|
185
217
|
const cancelResult = await monaco.trading.cancelOrder("order-id");
|
|
186
218
|
console.log("Order cancelled:", cancelResult.status);
|
|
219
|
+
|
|
220
|
+
// Get specific order
|
|
221
|
+
const orderDetails = await monaco.trading.getOrder("order-id");
|
|
222
|
+
console.log("Order details:", orderDetails.order);
|
|
187
223
|
}
|
|
188
224
|
```
|
|
189
225
|
|
|
@@ -195,12 +231,34 @@ The main SDK class that provides access to all protocol features.
|
|
|
195
231
|
|
|
196
232
|
```typescript
|
|
197
233
|
class MonacoSDK {
|
|
234
|
+
readonly applications: ApplicationsAPI;
|
|
235
|
+
readonly auth: AuthAPI;
|
|
198
236
|
readonly vault: VaultAPI;
|
|
199
237
|
readonly trading: TradingAPI;
|
|
238
|
+
readonly market: MarketAPI;
|
|
239
|
+
readonly profile: ProfileAPI;
|
|
240
|
+
readonly websocket: {
|
|
241
|
+
orders: OrdersWebSocketClient;
|
|
242
|
+
ohlcv: OHLCVWebSocketClient;
|
|
243
|
+
};
|
|
200
244
|
readonly walletClient: WalletClient;
|
|
201
245
|
readonly publicClient: PublicClient;
|
|
202
246
|
|
|
203
247
|
constructor(config: SDKConfig);
|
|
248
|
+
|
|
249
|
+
// Authentication
|
|
250
|
+
login(clientId: string): Promise<AuthState>;
|
|
251
|
+
logout(): Promise<void>;
|
|
252
|
+
refreshAuth(): Promise<AuthState>;
|
|
253
|
+
getAuthState(): AuthState | undefined;
|
|
254
|
+
isAuthenticated(): boolean;
|
|
255
|
+
|
|
256
|
+
// Network utilities
|
|
257
|
+
isConnected(): boolean;
|
|
258
|
+
getAccountAddress(): string;
|
|
259
|
+
getNetwork(): Network;
|
|
260
|
+
getChainId(): number;
|
|
261
|
+
waitForTransaction(hash: string, confirmations?: number, timeout?: number): Promise<TransactionReceipt>;
|
|
204
262
|
}
|
|
205
263
|
```
|
|
206
264
|
|
|
@@ -208,17 +266,14 @@ class MonacoSDK {
|
|
|
208
266
|
|
|
209
267
|
```typescript
|
|
210
268
|
interface SDKConfig {
|
|
211
|
-
/**
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
/** Viem Account for advanced account management */
|
|
215
|
-
signer?: PrivateKeyAccount;
|
|
216
|
-
|
|
217
|
-
/** Custom Account implementation (overrides privateKey/signer) */
|
|
218
|
-
account?: Account;
|
|
269
|
+
/** Wallet client for signing operations */
|
|
270
|
+
walletClient: WalletClient;
|
|
219
271
|
|
|
220
272
|
/** Optional network override (defaults to 'mainnet') */
|
|
221
273
|
network?: Network;
|
|
274
|
+
|
|
275
|
+
/** Optional transport for the public client */
|
|
276
|
+
transport?: Transport;
|
|
222
277
|
}
|
|
223
278
|
```
|
|
224
279
|
|
|
@@ -227,58 +282,73 @@ interface SDKConfig {
|
|
|
227
282
|
The vault API provides secure token management operations:
|
|
228
283
|
|
|
229
284
|
```typescript
|
|
230
|
-
interface VaultAPI {
|
|
231
|
-
//
|
|
232
|
-
|
|
285
|
+
interface VaultAPI extends BaseAPI {
|
|
286
|
+
// Vault address management
|
|
287
|
+
setVaultAddress(vaultAddress: Address): void;
|
|
288
|
+
getVaultAddress(): Address | undefined;
|
|
233
289
|
|
|
234
|
-
//
|
|
235
|
-
|
|
236
|
-
|
|
290
|
+
// Token operations
|
|
291
|
+
approve(token: string, amount: bigint, autoWait?: boolean): Promise<TransactionResult>;
|
|
292
|
+
deposit(token: string, amount: bigint, autoWait?: boolean): Promise<TransactionResult>;
|
|
293
|
+
withdraw(token: string, amount: bigint, autoWait?: boolean): Promise<TransactionResult>;
|
|
237
294
|
|
|
238
|
-
// Balance
|
|
295
|
+
// Balance queries
|
|
239
296
|
getBalance(token: string): Promise<Balance>;
|
|
240
|
-
getAllowance(token: string): Promise<bigint>;
|
|
241
|
-
needsApproval(token: string, amount: bigint): Promise<boolean>;
|
|
242
297
|
}
|
|
243
298
|
```
|
|
244
299
|
|
|
245
300
|
### Trading API
|
|
246
301
|
|
|
247
|
-
The trading API provides comprehensive order management
|
|
248
|
-
|
|
249
|
-
#### Order Types and Execution Policies
|
|
250
|
-
|
|
251
|
-
- **Limit Orders**: Standard limit orders with optional `timeInForce` parameter
|
|
252
|
-
- `GTC` (Good Till Cancelled): Default behavior, order stays active until filled or cancelled
|
|
253
|
-
- `IOC` (Immediate or Cancel): Order fills what it can immediately, then cancels the rest
|
|
254
|
-
- `FOK` (Fill or Kill): Order must fill completely or not at all
|
|
255
|
-
|
|
256
|
-
- **Market Orders**: Immediate execution with optional slippage protection
|
|
257
|
-
- **Post-Only Orders**: Limit orders that never execute immediately, only add liquidity
|
|
258
|
-
|
|
259
|
-
#### Order Management
|
|
260
|
-
|
|
261
|
-
- **Replace Orders**: Cancel existing order and place a new one (atomic operation)
|
|
262
|
-
- **Cancel Orders**: Cancel any open order by ID
|
|
302
|
+
The trading API provides comprehensive order management:
|
|
263
303
|
|
|
264
304
|
```typescript
|
|
265
|
-
interface TradingAPI {
|
|
305
|
+
interface TradingAPI extends BaseAPI {
|
|
266
306
|
// Order placement
|
|
267
|
-
placeLimitOrder(
|
|
268
|
-
|
|
269
|
-
|
|
307
|
+
placeLimitOrder(
|
|
308
|
+
market: string,
|
|
309
|
+
side: OrderSide,
|
|
310
|
+
quantity: string,
|
|
311
|
+
price: string,
|
|
312
|
+
options?: {
|
|
313
|
+
tradingMode?: string;
|
|
314
|
+
useMasterBalance?: boolean;
|
|
315
|
+
expirationDate?: string;
|
|
316
|
+
}
|
|
317
|
+
): Promise<CreateOrderResponse>;
|
|
318
|
+
|
|
319
|
+
placeMarketOrder(
|
|
320
|
+
market: string,
|
|
321
|
+
side: OrderSide,
|
|
322
|
+
quantity: string,
|
|
323
|
+
options?: { tradingMode?: string; }
|
|
324
|
+
): Promise<CreateOrderResponse>;
|
|
270
325
|
|
|
271
326
|
// Order management
|
|
272
|
-
replaceOrder(originalOrderId: string, newOrder: { market: string; side: OrderSide; size: bigint; price?: bigint; type: OrderType; timeInForce?: TimeInForce }): Promise<OrderResponse>;
|
|
273
327
|
cancelOrder(orderId: string): Promise<CancelOrderResponse>;
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
328
|
+
replaceOrder(
|
|
329
|
+
orderId: string,
|
|
330
|
+
newOrder: {
|
|
331
|
+
price?: string;
|
|
332
|
+
quantity: string;
|
|
333
|
+
useMasterBalance?: boolean;
|
|
334
|
+
}
|
|
335
|
+
): Promise<ReplaceOrderResponse>;
|
|
277
336
|
|
|
278
337
|
// Order queries
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
338
|
+
getPaginatedOrders(params?: GetPaginatedOrdersParams): Promise<GetPaginatedOrdersResponse>;
|
|
339
|
+
getOrder(orderId: string): Promise<GetOrderResponse>;
|
|
340
|
+
}
|
|
341
|
+
```
|
|
342
|
+
|
|
343
|
+
### Market API
|
|
344
|
+
|
|
345
|
+
The market API provides access to trading pair metadata:
|
|
346
|
+
|
|
347
|
+
```typescript
|
|
348
|
+
interface MarketAPI extends BaseAPI {
|
|
349
|
+
// Market data
|
|
350
|
+
getTradingPairs(): Promise<TradingPair[]>;
|
|
351
|
+
getTradingPairBySymbol(symbol: string): Promise<TradingPair | undefined>;
|
|
282
352
|
}
|
|
283
353
|
```
|
|
284
354
|
|
|
@@ -322,11 +392,16 @@ try {
|
|
|
322
392
|
packages/core/
|
|
323
393
|
├── src/ # Source code
|
|
324
394
|
│ ├── api/ # API implementations
|
|
395
|
+
│ │ ├── applications/ # Applications API
|
|
396
|
+
│ │ ├── auth/ # Authentication API
|
|
397
|
+
│ │ ├── base.ts # Base API class
|
|
398
|
+
│ │ ├── market/ # Market data API
|
|
399
|
+
│ │ ├── profile/ # Profile management API
|
|
400
|
+
│ │ ├── trading/ # Trading operations API
|
|
325
401
|
│ │ ├── vault/ # Vault operations API
|
|
326
|
-
│ │
|
|
327
|
-
│ │ └──
|
|
328
|
-
│
|
|
329
|
-
│ ├── chains.ts # Chain definitions (Sei mainnet/testnet)
|
|
402
|
+
│ │ ├── websocket/ # WebSocket client
|
|
403
|
+
│ │ └── index.ts # API exports
|
|
404
|
+
│ ├── constants/ # Constants and configurations
|
|
330
405
|
│ ├── errors.ts # Error classes and codes
|
|
331
406
|
│ ├── networks.ts # Network endpoint configurations
|
|
332
407
|
│ ├── sdk.ts # Main SDK implementation
|
|
@@ -371,22 +446,22 @@ pnpm lint --filter @0xmonaco/core
|
|
|
371
446
|
|
|
372
447
|
## Security Features
|
|
373
448
|
|
|
374
|
-
###
|
|
375
|
-
- **
|
|
376
|
-
- **
|
|
377
|
-
- **
|
|
378
|
-
- **
|
|
449
|
+
### JWT Authentication
|
|
450
|
+
- **Token-based security**: Secure JWT tokens for API access
|
|
451
|
+
- **EIP-712 login**: Wallet signature-based authentication
|
|
452
|
+
- **Automatic refresh**: Seamless token renewal
|
|
453
|
+
- **Session management**: Secure session handling
|
|
379
454
|
|
|
380
455
|
### API Gateway Integration
|
|
381
456
|
- **Secure communication**: TLS encryption for all API calls
|
|
382
|
-
- **
|
|
457
|
+
- **Token validation**: Backend validates all JWT tokens
|
|
383
458
|
- **Rate limiting**: Protection against abuse
|
|
384
459
|
- **Audit logging**: Complete transaction history
|
|
385
460
|
|
|
386
461
|
### On-chain Security
|
|
387
462
|
- **Smart contract validation**: All operations validated on-chain
|
|
463
|
+
- **Signature verification**: EIP-712 signatures for authentication
|
|
388
464
|
- **Multi-signature support**: Advanced security for institutional users
|
|
389
|
-
- **Emergency stops**: Circuit breakers for critical situations
|
|
390
465
|
|
|
391
466
|
## Performance Considerations
|
|
392
467
|
|
package/dist/api/auth/api.d.ts
CHANGED
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
*
|
|
10
10
|
* @example
|
|
11
11
|
* ```typescript
|
|
12
|
-
* const authAPI = new AuthAPIImpl(walletClient,
|
|
12
|
+
* const authAPI = new AuthAPIImpl(walletClient, chain, apiUrl);
|
|
13
13
|
*
|
|
14
14
|
* // Complete authentication flow
|
|
15
15
|
* const authResult = await authAPI.authenticate(clientId);
|
|
@@ -30,18 +30,18 @@
|
|
|
30
30
|
*/
|
|
31
31
|
import type { AuthAPI, BackendAuthResponse, ChallengeResponse, TokenRefreshResponse, VerifyResponse } from "@0xmonaco/types";
|
|
32
32
|
import type { Chain, WalletClient } from "viem";
|
|
33
|
-
|
|
33
|
+
import { BaseAPI } from "../base";
|
|
34
|
+
export declare class AuthAPIImpl extends BaseAPI implements AuthAPI {
|
|
34
35
|
private readonly walletClient;
|
|
35
|
-
private readonly apiUrl;
|
|
36
36
|
private readonly chain;
|
|
37
37
|
/**
|
|
38
38
|
* Creates a new AuthAPI instance.
|
|
39
39
|
*
|
|
40
40
|
* @param walletClient - The viem wallet client for signing operations
|
|
41
|
-
* @param apiUrl - The base URL for the Monaco API Gateway
|
|
42
41
|
* @param chain - The blockchain network configuration
|
|
42
|
+
* @param apiUrl - The base URL for the Monaco API Gateway
|
|
43
43
|
*/
|
|
44
|
-
constructor(walletClient: WalletClient,
|
|
44
|
+
constructor(walletClient: WalletClient, chain: Chain, apiUrl: string);
|
|
45
45
|
/**
|
|
46
46
|
* Complete authentication flow for frontend applications.
|
|
47
47
|
*
|
|
@@ -177,22 +177,22 @@ export declare class AuthAPIImpl implements AuthAPI {
|
|
|
177
177
|
*/
|
|
178
178
|
refreshToken(refreshToken: string): Promise<TokenRefreshResponse>;
|
|
179
179
|
/**
|
|
180
|
-
* Revokes a
|
|
180
|
+
* Revokes a refresh token.
|
|
181
181
|
*
|
|
182
|
-
* Invalidates a
|
|
182
|
+
* Invalidates a refresh token, preventing it from being used to obtain
|
|
183
183
|
* new access tokens. This is useful for logout functionality or when
|
|
184
184
|
* a token has been compromised.
|
|
185
185
|
*
|
|
186
|
-
* @param
|
|
186
|
+
* @param refreshToken - The refresh token to revoke
|
|
187
187
|
* @returns Promise resolving when the token is revoked
|
|
188
188
|
* @throws {APIError} When token revocation fails
|
|
189
189
|
*
|
|
190
190
|
* @example
|
|
191
191
|
* ```typescript
|
|
192
|
-
* await authAPI.revokeToken(
|
|
192
|
+
* await authAPI.revokeToken(refreshToken);
|
|
193
193
|
* console.log("Token revoked successfully");
|
|
194
194
|
* ```
|
|
195
195
|
*/
|
|
196
|
-
revokeToken(
|
|
196
|
+
revokeToken(refreshToken: string): Promise<void>;
|
|
197
197
|
}
|
|
198
198
|
//# sourceMappingURL=api.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../../src/api/auth/api.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAEH,OAAO,KAAK,EACX,OAAO,EACP,mBAAmB,EACnB,iBAAiB,EACjB,oBAAoB,EACpB,cAAc,EACd,MAAM,iBAAiB,CAAC;AACzB,OAAO,KAAK,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../../src/api/auth/api.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAEH,OAAO,KAAK,EACX,OAAO,EACP,mBAAmB,EACnB,iBAAiB,EACjB,oBAAoB,EACpB,cAAc,EACd,MAAM,iBAAiB,CAAC;AACzB,OAAO,KAAK,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,MAAM,CAAC;AAEhD,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAElC,qBAAa,WAAY,SAAQ,OAAQ,YAAW,OAAO;IASzD,OAAO,CAAC,QAAQ,CAAC,YAAY;IAC7B,OAAO,CAAC,QAAQ,CAAC,KAAK;IATvB;;;;;;OAMG;gBAEe,YAAY,EAAE,YAAY,EAC1B,KAAK,EAAE,KAAK,EAC7B,MAAM,EAAE,MAAM;IAKf;;;;;;;;;;;;;;;;;;;;OAoBG;IACG,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;IAgC7D;;;;;;;;;;;;;;;;;OAiBG;IACG,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IA0BrD;;;;;;;;;;;;;;;;;;;;OAoBG;IACG,eAAe,CACpB,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,GACd,OAAO,CAAC,iBAAiB,CAAC;IAqC7B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAgCG;IACG,eAAe,CACpB,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,MAAM,GACd,OAAO,CAAC,cAAc,CAAC;IA4C1B;;;;;;;;;;;;;;;;OAgBG;IACG,mBAAmB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAwC1E;;;;;;;;;;;;;;;;;OAiBG;IACG,YAAY,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAkCvE;;;;;;;;;;;;;;;;OAgBG;IACG,WAAW,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CAuCtD"}
|
package/dist/api/auth/api.js
CHANGED
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
*
|
|
10
10
|
* @example
|
|
11
11
|
* ```typescript
|
|
12
|
-
* const authAPI = new AuthAPIImpl(walletClient,
|
|
12
|
+
* const authAPI = new AuthAPIImpl(walletClient, chain, apiUrl);
|
|
13
13
|
*
|
|
14
14
|
* // Complete authentication flow
|
|
15
15
|
* const authResult = await authAPI.authenticate(clientId);
|
|
@@ -29,17 +29,18 @@
|
|
|
29
29
|
* ```
|
|
30
30
|
*/
|
|
31
31
|
import { APIError, InvalidConfigError } from "../../errors";
|
|
32
|
-
|
|
32
|
+
import { BaseAPI } from "../base";
|
|
33
|
+
export class AuthAPIImpl extends BaseAPI {
|
|
33
34
|
/**
|
|
34
35
|
* Creates a new AuthAPI instance.
|
|
35
36
|
*
|
|
36
37
|
* @param walletClient - The viem wallet client for signing operations
|
|
37
|
-
* @param apiUrl - The base URL for the Monaco API Gateway
|
|
38
38
|
* @param chain - The blockchain network configuration
|
|
39
|
+
* @param apiUrl - The base URL for the Monaco API Gateway
|
|
39
40
|
*/
|
|
40
|
-
constructor(walletClient,
|
|
41
|
+
constructor(walletClient, chain, apiUrl) {
|
|
42
|
+
super(apiUrl);
|
|
41
43
|
this.walletClient = walletClient;
|
|
42
|
-
this.apiUrl = apiUrl;
|
|
43
44
|
this.chain = chain;
|
|
44
45
|
}
|
|
45
46
|
/**
|
|
@@ -320,31 +321,36 @@ export class AuthAPIImpl {
|
|
|
320
321
|
}
|
|
321
322
|
}
|
|
322
323
|
/**
|
|
323
|
-
* Revokes a
|
|
324
|
+
* Revokes a refresh token.
|
|
324
325
|
*
|
|
325
|
-
* Invalidates a
|
|
326
|
+
* Invalidates a refresh token, preventing it from being used to obtain
|
|
326
327
|
* new access tokens. This is useful for logout functionality or when
|
|
327
328
|
* a token has been compromised.
|
|
328
329
|
*
|
|
329
|
-
* @param
|
|
330
|
+
* @param refreshToken - The refresh token to revoke
|
|
330
331
|
* @returns Promise resolving when the token is revoked
|
|
331
332
|
* @throws {APIError} When token revocation fails
|
|
332
333
|
*
|
|
333
334
|
* @example
|
|
334
335
|
* ```typescript
|
|
335
|
-
* await authAPI.revokeToken(
|
|
336
|
+
* await authAPI.revokeToken(refreshToken);
|
|
336
337
|
* console.log("Token revoked successfully");
|
|
337
338
|
* ```
|
|
338
339
|
*/
|
|
339
|
-
async revokeToken(
|
|
340
|
+
async revokeToken(refreshToken) {
|
|
341
|
+
const accessToken = this.getAccessToken();
|
|
342
|
+
if (!accessToken) {
|
|
343
|
+
throw new APIError("Access token not set. Cannot revoke token without authentication.", `${this.apiUrl}/api/v1/auth/revoke`, 401);
|
|
344
|
+
}
|
|
340
345
|
try {
|
|
341
346
|
const response = await fetch(`${this.apiUrl}/api/v1/auth/revoke`, {
|
|
342
347
|
method: "POST",
|
|
343
348
|
headers: {
|
|
344
349
|
"Content-Type": "application/json",
|
|
350
|
+
"Authorization": `Bearer ${accessToken}`,
|
|
345
351
|
},
|
|
346
352
|
body: JSON.stringify({
|
|
347
|
-
|
|
353
|
+
refresh_token: refreshToken,
|
|
348
354
|
}),
|
|
349
355
|
});
|
|
350
356
|
if (!response.ok) {
|
|
@@ -352,7 +358,9 @@ export class AuthAPIImpl {
|
|
|
352
358
|
}
|
|
353
359
|
}
|
|
354
360
|
catch (error) {
|
|
355
|
-
|
|
361
|
+
// For other errors (network, etc.), provide more context
|
|
362
|
+
const errorMessage = error instanceof Error ? error.message : "Unknown error";
|
|
363
|
+
throw new APIError(`Failed to revoke token: ${errorMessage}`, `${this.apiUrl}/api/v1/auth/revoke`, undefined);
|
|
356
364
|
}
|
|
357
365
|
}
|
|
358
366
|
}
|
package/dist/api/auth/api.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api.js","sourceRoot":"","sources":["../../../src/api/auth/api.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAUH,OAAO,EAAE,QAAQ,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"api.js","sourceRoot":"","sources":["../../../src/api/auth/api.ts"],"names":[],"mappings":"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"}
|
package/dist/api/index.d.ts
CHANGED
package/dist/api/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/api/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,gBAAgB,CAAC;AAC/B,cAAc,QAAQ,CAAC;AACvB,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,SAAS,CAAC;AACxB,cAAc,aAAa,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/api/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,gBAAgB,CAAC;AAC/B,cAAc,QAAQ,CAAC;AACvB,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,UAAU,CAAA;AACxB,cAAc,SAAS,CAAC;AACxB,cAAc,aAAa,CAAC"}
|
package/dist/api/index.js
CHANGED
package/dist/api/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/api/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,gBAAgB,CAAC;AAC/B,cAAc,QAAQ,CAAC;AACvB,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,SAAS,CAAC;AACxB,cAAc,aAAa,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/api/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,cAAc,gBAAgB,CAAC;AAC/B,cAAc,QAAQ,CAAC;AACvB,cAAc,WAAW,CAAC;AAC1B,cAAc,WAAW,CAAC;AAC1B,cAAc,UAAU,CAAA;AACxB,cAAc,SAAS,CAAC;AACxB,cAAc,aAAa,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { MarketAPI, TradingPair, Candlestick, CandlestickInterval } from "@0xmonaco/types";
|
|
2
|
+
import { BaseAPI } from "../base";
|
|
3
|
+
/**
|
|
4
|
+
* Market API Implementation
|
|
5
|
+
*
|
|
6
|
+
* Provides read-only market metadata endpoints such as trading pair listings.
|
|
7
|
+
*/
|
|
8
|
+
export declare class MarketAPIImpl extends BaseAPI implements MarketAPI {
|
|
9
|
+
getTradingPairs(): Promise<TradingPair[]>;
|
|
10
|
+
getTradingPairBySymbol(symbol: string): Promise<TradingPair | undefined>;
|
|
11
|
+
getCandlesticks(symbol: string, interval: CandlestickInterval, startTime: number, endTime: number): Promise<Candlestick[]>;
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=api.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../../src/api/market/api.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,SAAS,EACT,WAAW,EAGX,WAAW,EACX,mBAAmB,EACpB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAElC;;;;GAIG;AACH,qBAAa,aAAc,SAAQ,OAAQ,YAAW,SAAS;IACvD,eAAe,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;IAczC,sBAAsB,CAC1B,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC;IAc7B,eAAe,CACnB,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,mBAAmB,EAC7B,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,WAAW,EAAE,CAAC;CAyB1B"}
|