@catalyst-team/poly-sdk 0.1.1 → 0.2.1
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/LICENSE +1 -1
- package/README.en.md +502 -0
- package/README.md +6 -1
- package/README.zh-CN.md +502 -0
- package/dist/__tests__/clob-api.test.d.ts +5 -0
- package/dist/__tests__/clob-api.test.d.ts.map +1 -0
- package/dist/__tests__/clob-api.test.js +240 -0
- package/dist/__tests__/clob-api.test.js.map +1 -0
- package/dist/__tests__/integration/bridge-client.integration.test.d.ts +11 -0
- package/dist/__tests__/integration/bridge-client.integration.test.d.ts.map +1 -0
- package/dist/__tests__/integration/bridge-client.integration.test.js +260 -0
- package/dist/__tests__/integration/bridge-client.integration.test.js.map +1 -0
- package/dist/__tests__/integration/clob-api.integration.test.d.ts +13 -0
- package/dist/__tests__/integration/clob-api.integration.test.d.ts.map +1 -0
- package/dist/__tests__/integration/clob-api.integration.test.js +170 -0
- package/dist/__tests__/integration/clob-api.integration.test.js.map +1 -0
- package/dist/__tests__/integration/ctf-client.integration.test.d.ts +17 -0
- package/dist/__tests__/integration/ctf-client.integration.test.d.ts.map +1 -0
- package/dist/__tests__/integration/ctf-client.integration.test.js +234 -0
- package/dist/__tests__/integration/ctf-client.integration.test.js.map +1 -0
- package/dist/__tests__/integration/data-api.integration.test.d.ts +9 -0
- package/dist/__tests__/integration/data-api.integration.test.d.ts.map +1 -0
- package/dist/__tests__/integration/data-api.integration.test.js +161 -0
- package/dist/__tests__/integration/data-api.integration.test.js.map +1 -0
- package/dist/__tests__/integration/gamma-api.integration.test.d.ts +9 -0
- package/dist/__tests__/integration/gamma-api.integration.test.d.ts.map +1 -0
- package/dist/__tests__/integration/gamma-api.integration.test.js +170 -0
- package/dist/__tests__/integration/gamma-api.integration.test.js.map +1 -0
- package/dist/__tests__/test-utils.d.ts +92 -0
- package/dist/__tests__/test-utils.d.ts.map +1 -0
- package/dist/__tests__/test-utils.js +143 -0
- package/dist/__tests__/test-utils.js.map +1 -0
- package/dist/clients/bridge-client.d.ts +388 -0
- package/dist/clients/bridge-client.d.ts.map +1 -0
- package/dist/clients/bridge-client.js +587 -0
- package/dist/clients/bridge-client.js.map +1 -0
- package/dist/clients/clob-api.d.ts +318 -0
- package/dist/clients/clob-api.d.ts.map +1 -0
- package/dist/clients/clob-api.js +388 -0
- package/dist/clients/clob-api.js.map +1 -0
- package/dist/clients/ctf-client.d.ts +473 -0
- package/dist/clients/ctf-client.d.ts.map +1 -0
- package/dist/clients/ctf-client.js +915 -0
- package/dist/clients/ctf-client.js.map +1 -0
- package/dist/clients/data-api.d.ts +134 -0
- package/dist/clients/data-api.d.ts.map +1 -0
- package/dist/clients/data-api.js +265 -0
- package/dist/clients/data-api.js.map +1 -0
- package/dist/clients/gamma-api.d.ts +401 -0
- package/dist/clients/gamma-api.d.ts.map +1 -0
- package/dist/clients/gamma-api.js +352 -0
- package/dist/clients/gamma-api.js.map +1 -0
- package/dist/clients/trading-client.d.ts +252 -0
- package/dist/clients/trading-client.d.ts.map +1 -0
- package/dist/clients/trading-client.js +543 -0
- package/dist/clients/trading-client.js.map +1 -0
- package/dist/clients/websocket-manager.d.ts +100 -0
- package/dist/clients/websocket-manager.d.ts.map +1 -0
- package/dist/clients/websocket-manager.js +193 -0
- package/dist/clients/websocket-manager.js.map +1 -0
- package/dist/core/cache-adapter-bridge.d.ts +36 -0
- package/dist/core/cache-adapter-bridge.d.ts.map +1 -0
- package/dist/core/cache-adapter-bridge.js +81 -0
- package/dist/core/cache-adapter-bridge.js.map +1 -0
- package/dist/core/cache.d.ts +40 -0
- package/dist/core/cache.d.ts.map +1 -0
- package/dist/core/cache.js +71 -0
- package/dist/core/cache.js.map +1 -0
- package/dist/core/errors.d.ts +38 -0
- package/dist/core/errors.d.ts.map +1 -0
- package/dist/core/errors.js +84 -0
- package/dist/core/errors.js.map +1 -0
- package/dist/core/rate-limiter.d.ts +31 -0
- package/dist/core/rate-limiter.d.ts.map +1 -0
- package/dist/core/rate-limiter.js +70 -0
- package/dist/core/rate-limiter.js.map +1 -0
- package/{src/core/types.ts → dist/core/types.d.ts} +169 -215
- package/dist/core/types.d.ts.map +1 -0
- package/dist/core/types.js +19 -0
- package/dist/core/types.js.map +1 -0
- package/dist/core/unified-cache.d.ts +63 -0
- package/dist/core/unified-cache.d.ts.map +1 -0
- package/dist/core/unified-cache.js +114 -0
- package/dist/core/unified-cache.js.map +1 -0
- package/dist/index.d.ts +93 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +255 -0
- package/dist/index.js.map +1 -0
- package/dist/services/arbitrage-service.d.ts +408 -0
- package/dist/services/arbitrage-service.d.ts.map +1 -0
- package/dist/services/arbitrage-service.js +1422 -0
- package/dist/services/arbitrage-service.js.map +1 -0
- package/dist/services/authorization-service.d.ts +97 -0
- package/dist/services/authorization-service.d.ts.map +1 -0
- package/dist/services/authorization-service.js +279 -0
- package/dist/services/authorization-service.js.map +1 -0
- package/dist/services/market-service.d.ts +108 -0
- package/dist/services/market-service.d.ts.map +1 -0
- package/dist/services/market-service.js +458 -0
- package/dist/services/market-service.js.map +1 -0
- package/dist/services/realtime-service.d.ts +82 -0
- package/dist/services/realtime-service.d.ts.map +1 -0
- package/dist/services/realtime-service.js +150 -0
- package/dist/services/realtime-service.js.map +1 -0
- package/dist/services/swap-service.d.ts +217 -0
- package/dist/services/swap-service.d.ts.map +1 -0
- package/dist/services/swap-service.js +695 -0
- package/dist/services/swap-service.js.map +1 -0
- package/dist/services/wallet-service.d.ts +94 -0
- package/dist/services/wallet-service.d.ts.map +1 -0
- package/dist/services/wallet-service.js +173 -0
- package/dist/services/wallet-service.js.map +1 -0
- package/dist/utils/price-utils.d.ts +153 -0
- package/dist/utils/price-utils.d.ts.map +1 -0
- package/dist/utils/price-utils.js +236 -0
- package/dist/utils/price-utils.js.map +1 -0
- package/package.json +7 -2
- package/docs/00-design.md +0 -760
- package/docs/02-API.md +0 -1148
- package/docs/arbitrage.md +0 -754
- package/docs/reports/smart-money-analysis-2025-12-23-cn.md +0 -840
- package/examples/01-basic-usage.ts +0 -68
- package/examples/02-smart-money.ts +0 -95
- package/examples/03-market-analysis.ts +0 -108
- package/examples/04-kline-aggregation.ts +0 -158
- package/examples/05-follow-wallet-strategy.ts +0 -156
- package/examples/06-services-demo.ts +0 -124
- package/examples/07-realtime-websocket.ts +0 -117
- package/examples/08-trading-orders.ts +0 -278
- package/examples/09-rewards-tracking.ts +0 -187
- package/examples/10-ctf-operations.ts +0 -336
- package/examples/11-live-arbitrage-scan.ts +0 -221
- package/examples/12-trending-arb-monitor.ts +0 -406
- package/examples/13-arbitrage-service.ts +0 -211
- package/examples/README.md +0 -179
- package/scripts/README.md +0 -163
- package/scripts/approvals/approve-erc1155.ts +0 -129
- package/scripts/approvals/approve-neg-risk-erc1155.ts +0 -149
- package/scripts/approvals/approve-neg-risk.ts +0 -102
- package/scripts/approvals/check-all-allowances.ts +0 -150
- package/scripts/approvals/check-allowance.ts +0 -129
- package/scripts/approvals/check-ctf-approval.ts +0 -158
- package/scripts/arb/faze-bo3-arb.ts +0 -385
- package/scripts/arb/settle-position.ts +0 -190
- package/scripts/arb/token-rebalancer.ts +0 -420
- package/scripts/datas/001-report.md +0 -486
- package/scripts/datas/clone-modal-screenshot.png +0 -0
- package/scripts/deposit/deposit-native-usdc.ts +0 -179
- package/scripts/deposit/deposit-usdc.ts +0 -155
- package/scripts/deposit/swap-usdc-to-usdce.ts +0 -375
- package/scripts/research/research-markets.ts +0 -166
- package/scripts/trading/check-orders.ts +0 -50
- package/scripts/trading/sell-nvidia-positions.ts +0 -206
- package/scripts/trading/test-order.ts +0 -172
- package/scripts/verify/test-approve-trading.ts +0 -98
- package/scripts/verify/test-provider-fix.ts +0 -43
- package/scripts/verify/test-search-mcp.ts +0 -113
- package/scripts/verify/verify-all-apis.ts +0 -160
- package/scripts/wallet/check-wallet-balances.ts +0 -75
- package/scripts/wallet/test-wallet-operations.ts +0 -191
- package/scripts/wallet/verify-wallet-tools.ts +0 -124
- package/src/__tests__/clob-api.test.ts +0 -301
- package/src/__tests__/integration/bridge-client.integration.test.ts +0 -314
- package/src/__tests__/integration/clob-api.integration.test.ts +0 -218
- package/src/__tests__/integration/ctf-client.integration.test.ts +0 -331
- package/src/__tests__/integration/data-api.integration.test.ts +0 -194
- package/src/__tests__/integration/gamma-api.integration.test.ts +0 -206
- package/src/__tests__/test-utils.ts +0 -170
- package/src/clients/bridge-client.ts +0 -841
- package/src/clients/clob-api.ts +0 -629
- package/src/clients/ctf-client.ts +0 -1216
- package/src/clients/data-api.ts +0 -469
- package/src/clients/gamma-api.ts +0 -597
- package/src/clients/trading-client.ts +0 -749
- package/src/clients/websocket-manager.ts +0 -267
- package/src/core/cache-adapter-bridge.ts +0 -94
- package/src/core/cache.ts +0 -85
- package/src/core/errors.ts +0 -117
- package/src/core/rate-limiter.ts +0 -74
- package/src/core/unified-cache.ts +0 -153
- package/src/index.ts +0 -461
- package/src/services/arbitrage-service.ts +0 -1807
- package/src/services/authorization-service.ts +0 -357
- package/src/services/market-service.ts +0 -544
- package/src/services/realtime-service.ts +0 -196
- package/src/services/swap-service.ts +0 -896
- package/src/services/wallet-service.ts +0 -259
- package/src/utils/price-utils.ts +0 -307
- package/tsconfig.json +0 -8
- package/vitest.config.ts +0 -19
- package/vitest.integration.config.ts +0 -18
|
@@ -1,196 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Realtime Service
|
|
3
|
-
*
|
|
4
|
-
* High-level wrapper for WebSocket subscriptions:
|
|
5
|
-
* - Market subscription management
|
|
6
|
-
* - Price caching and access
|
|
7
|
-
* - Event handler registration
|
|
8
|
-
*/
|
|
9
|
-
|
|
10
|
-
import { WebSocketManager } from '../clients/websocket-manager.js';
|
|
11
|
-
import type { PriceUpdate, BookUpdate } from '../core/types.js';
|
|
12
|
-
|
|
13
|
-
export interface Subscription {
|
|
14
|
-
id: string;
|
|
15
|
-
assetIds: string[];
|
|
16
|
-
unsubscribe: () => Promise<void>;
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
export interface MarketSubscriptionHandlers {
|
|
20
|
-
onPriceUpdate?: (update: PriceUpdate) => void;
|
|
21
|
-
onBookUpdate?: (update: BookUpdate) => void;
|
|
22
|
-
onLastTrade?: (trade: { assetId: string; price: number; side: 'BUY' | 'SELL'; size: number; timestamp: number }) => void;
|
|
23
|
-
onError?: (error: Error) => void;
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
export class RealtimeService {
|
|
27
|
-
private wsManager: WebSocketManager;
|
|
28
|
-
private subscriptions: Map<string, Subscription> = new Map();
|
|
29
|
-
private subscriptionIdCounter = 0;
|
|
30
|
-
|
|
31
|
-
constructor(wsManager?: WebSocketManager) {
|
|
32
|
-
this.wsManager = wsManager || new WebSocketManager();
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
// ===== Market Subscriptions =====
|
|
36
|
-
|
|
37
|
-
/**
|
|
38
|
-
* Subscribe to market price updates
|
|
39
|
-
* @param assetIds - Token IDs to subscribe to
|
|
40
|
-
* @param handlers - Event handlers
|
|
41
|
-
* @returns Subscription object with unsubscribe method
|
|
42
|
-
*/
|
|
43
|
-
async subscribeMarkets(
|
|
44
|
-
assetIds: string[],
|
|
45
|
-
handlers: MarketSubscriptionHandlers
|
|
46
|
-
): Promise<Subscription> {
|
|
47
|
-
const subscriptionId = `sub_${++this.subscriptionIdCounter}`;
|
|
48
|
-
|
|
49
|
-
// Register event handlers (filtered by assetIds)
|
|
50
|
-
const priceHandler = (update: PriceUpdate) => {
|
|
51
|
-
if (assetIds.includes(update.assetId)) {
|
|
52
|
-
handlers.onPriceUpdate?.(update);
|
|
53
|
-
}
|
|
54
|
-
};
|
|
55
|
-
|
|
56
|
-
const bookHandler = (update: BookUpdate) => {
|
|
57
|
-
if (assetIds.includes(update.assetId)) {
|
|
58
|
-
handlers.onBookUpdate?.(update);
|
|
59
|
-
}
|
|
60
|
-
};
|
|
61
|
-
|
|
62
|
-
const tradeHandler = (trade: { assetId: string; price: number; side: 'BUY' | 'SELL'; size: number; timestamp: number }) => {
|
|
63
|
-
if (assetIds.includes(trade.assetId)) {
|
|
64
|
-
handlers.onLastTrade?.(trade);
|
|
65
|
-
}
|
|
66
|
-
};
|
|
67
|
-
|
|
68
|
-
const errorHandler = (error: Error) => {
|
|
69
|
-
handlers.onError?.(error);
|
|
70
|
-
};
|
|
71
|
-
|
|
72
|
-
// Attach listeners
|
|
73
|
-
this.wsManager.on('priceUpdate', priceHandler);
|
|
74
|
-
this.wsManager.on('bookUpdate', bookHandler);
|
|
75
|
-
this.wsManager.on('lastTrade', tradeHandler);
|
|
76
|
-
this.wsManager.on('error', errorHandler);
|
|
77
|
-
|
|
78
|
-
// Subscribe to WebSocket
|
|
79
|
-
await this.wsManager.subscribe(assetIds);
|
|
80
|
-
|
|
81
|
-
// Create subscription object
|
|
82
|
-
const subscription: Subscription = {
|
|
83
|
-
id: subscriptionId,
|
|
84
|
-
assetIds,
|
|
85
|
-
unsubscribe: async () => {
|
|
86
|
-
this.wsManager.off('priceUpdate', priceHandler);
|
|
87
|
-
this.wsManager.off('bookUpdate', bookHandler);
|
|
88
|
-
this.wsManager.off('lastTrade', tradeHandler);
|
|
89
|
-
this.wsManager.off('error', errorHandler);
|
|
90
|
-
await this.wsManager.unsubscribe(assetIds);
|
|
91
|
-
this.subscriptions.delete(subscriptionId);
|
|
92
|
-
},
|
|
93
|
-
};
|
|
94
|
-
|
|
95
|
-
this.subscriptions.set(subscriptionId, subscription);
|
|
96
|
-
return subscription;
|
|
97
|
-
}
|
|
98
|
-
|
|
99
|
-
/**
|
|
100
|
-
* Subscribe to a single market (both YES and NO tokens)
|
|
101
|
-
* @param yesTokenId - YES token ID
|
|
102
|
-
* @param noTokenId - NO token ID
|
|
103
|
-
* @param handlers - Event handlers
|
|
104
|
-
*/
|
|
105
|
-
async subscribeMarket(
|
|
106
|
-
yesTokenId: string,
|
|
107
|
-
noTokenId: string,
|
|
108
|
-
handlers: MarketSubscriptionHandlers & {
|
|
109
|
-
onPairUpdate?: (update: { yes: PriceUpdate; no: PriceUpdate; spread: number }) => void;
|
|
110
|
-
}
|
|
111
|
-
): Promise<Subscription> {
|
|
112
|
-
let lastYesUpdate: PriceUpdate | undefined;
|
|
113
|
-
let lastNoUpdate: PriceUpdate | undefined;
|
|
114
|
-
|
|
115
|
-
const checkPairUpdate = () => {
|
|
116
|
-
if (lastYesUpdate && lastNoUpdate && handlers.onPairUpdate) {
|
|
117
|
-
handlers.onPairUpdate({
|
|
118
|
-
yes: lastYesUpdate,
|
|
119
|
-
no: lastNoUpdate,
|
|
120
|
-
spread: lastYesUpdate.price + lastNoUpdate.price,
|
|
121
|
-
});
|
|
122
|
-
}
|
|
123
|
-
};
|
|
124
|
-
|
|
125
|
-
return this.subscribeMarkets([yesTokenId, noTokenId], {
|
|
126
|
-
onPriceUpdate: (update) => {
|
|
127
|
-
if (update.assetId === yesTokenId) {
|
|
128
|
-
lastYesUpdate = update;
|
|
129
|
-
} else if (update.assetId === noTokenId) {
|
|
130
|
-
lastNoUpdate = update;
|
|
131
|
-
}
|
|
132
|
-
handlers.onPriceUpdate?.(update);
|
|
133
|
-
checkPairUpdate();
|
|
134
|
-
},
|
|
135
|
-
onBookUpdate: handlers.onBookUpdate,
|
|
136
|
-
onLastTrade: handlers.onLastTrade,
|
|
137
|
-
onError: handlers.onError,
|
|
138
|
-
});
|
|
139
|
-
}
|
|
140
|
-
|
|
141
|
-
// ===== Price Access =====
|
|
142
|
-
|
|
143
|
-
/**
|
|
144
|
-
* Get cached price for an asset
|
|
145
|
-
*/
|
|
146
|
-
getPrice(assetId: string): PriceUpdate | undefined {
|
|
147
|
-
return this.wsManager.getPrice(assetId);
|
|
148
|
-
}
|
|
149
|
-
|
|
150
|
-
/**
|
|
151
|
-
* Get all cached prices
|
|
152
|
-
*/
|
|
153
|
-
getAllPrices(): Map<string, PriceUpdate> {
|
|
154
|
-
return this.wsManager.getAllPrices();
|
|
155
|
-
}
|
|
156
|
-
|
|
157
|
-
/**
|
|
158
|
-
* Get cached order book for an asset
|
|
159
|
-
*/
|
|
160
|
-
getBook(assetId: string): BookUpdate | undefined {
|
|
161
|
-
return this.wsManager.getBook(assetId);
|
|
162
|
-
}
|
|
163
|
-
|
|
164
|
-
// ===== State Management =====
|
|
165
|
-
|
|
166
|
-
/**
|
|
167
|
-
* Get all active subscriptions
|
|
168
|
-
*/
|
|
169
|
-
getActiveSubscriptions(): Subscription[] {
|
|
170
|
-
return Array.from(this.subscriptions.values());
|
|
171
|
-
}
|
|
172
|
-
|
|
173
|
-
/**
|
|
174
|
-
* Get subscription by ID
|
|
175
|
-
*/
|
|
176
|
-
getSubscription(id: string): Subscription | undefined {
|
|
177
|
-
return this.subscriptions.get(id);
|
|
178
|
-
}
|
|
179
|
-
|
|
180
|
-
/**
|
|
181
|
-
* Unsubscribe from all markets
|
|
182
|
-
*/
|
|
183
|
-
async unsubscribeAll(): Promise<void> {
|
|
184
|
-
for (const sub of this.subscriptions.values()) {
|
|
185
|
-
await sub.unsubscribe();
|
|
186
|
-
}
|
|
187
|
-
this.subscriptions.clear();
|
|
188
|
-
}
|
|
189
|
-
|
|
190
|
-
/**
|
|
191
|
-
* Get WebSocket manager for advanced usage
|
|
192
|
-
*/
|
|
193
|
-
getWebSocketManager(): WebSocketManager {
|
|
194
|
-
return this.wsManager;
|
|
195
|
-
}
|
|
196
|
-
}
|