@catalyst-team/poly-sdk 0.2.1 → 0.4.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.
Files changed (277) hide show
  1. package/README.md +665 -807
  2. package/README.zh-CN.md +645 -342
  3. package/dist/__tests__/integration/arbitrage-service.integration.test.d.ts +12 -0
  4. package/dist/__tests__/integration/arbitrage-service.integration.test.d.ts.map +1 -0
  5. package/dist/__tests__/integration/arbitrage-service.integration.test.js +267 -0
  6. package/dist/__tests__/integration/arbitrage-service.integration.test.js.map +1 -0
  7. package/dist/__tests__/integration/data-api.integration.test.js +6 -3
  8. package/dist/__tests__/integration/data-api.integration.test.js.map +1 -1
  9. package/dist/__tests__/integration/market-service.integration.test.d.ts +10 -0
  10. package/dist/__tests__/integration/market-service.integration.test.d.ts.map +1 -0
  11. package/dist/__tests__/integration/market-service.integration.test.js +173 -0
  12. package/dist/__tests__/integration/market-service.integration.test.js.map +1 -0
  13. package/dist/__tests__/integration/realtime-service-v2.integration.test.d.ts +10 -0
  14. package/dist/__tests__/integration/realtime-service-v2.integration.test.d.ts.map +1 -0
  15. package/dist/__tests__/integration/realtime-service-v2.integration.test.js +307 -0
  16. package/dist/__tests__/integration/realtime-service-v2.integration.test.js.map +1 -0
  17. package/dist/__tests__/integration/trading-service.integration.test.d.ts +10 -0
  18. package/dist/__tests__/integration/trading-service.integration.test.d.ts.map +1 -0
  19. package/dist/__tests__/integration/trading-service.integration.test.js +58 -0
  20. package/dist/__tests__/integration/trading-service.integration.test.js.map +1 -0
  21. package/dist/clients/clob-api.d.ts +73 -0
  22. package/dist/clients/clob-api.d.ts.map +1 -1
  23. package/dist/clients/clob-api.js +60 -0
  24. package/dist/clients/clob-api.js.map +1 -1
  25. package/dist/clients/ctf-client.d.ts +6 -4
  26. package/dist/clients/ctf-client.d.ts.map +1 -1
  27. package/dist/clients/ctf-client.js.map +1 -1
  28. package/dist/clients/data-api.d.ts +333 -15
  29. package/dist/clients/data-api.d.ts.map +1 -1
  30. package/dist/clients/data-api.js +398 -26
  31. package/dist/clients/data-api.js.map +1 -1
  32. package/dist/clients/gamma-api.d.ts +5 -0
  33. package/dist/clients/gamma-api.d.ts.map +1 -1
  34. package/dist/clients/gamma-api.js +2 -0
  35. package/dist/clients/gamma-api.js.map +1 -1
  36. package/dist/clients/subgraph.d.ts +196 -0
  37. package/dist/clients/subgraph.d.ts.map +1 -0
  38. package/dist/clients/subgraph.js +332 -0
  39. package/dist/clients/subgraph.js.map +1 -0
  40. package/dist/clients/websocket-manager.d.ts +3 -0
  41. package/dist/clients/websocket-manager.d.ts.map +1 -1
  42. package/dist/clients/websocket-manager.js +10 -3
  43. package/dist/clients/websocket-manager.js.map +1 -1
  44. package/dist/core/cache.d.ts +3 -0
  45. package/dist/core/cache.d.ts.map +1 -1
  46. package/dist/core/cache.js +5 -0
  47. package/dist/core/cache.js.map +1 -1
  48. package/dist/core/errors.d.ts +2 -1
  49. package/dist/core/errors.d.ts.map +1 -1
  50. package/dist/core/errors.js +2 -0
  51. package/dist/core/errors.js.map +1 -1
  52. package/dist/core/rate-limiter.d.ts +3 -1
  53. package/dist/core/rate-limiter.d.ts.map +1 -1
  54. package/dist/core/rate-limiter.js +12 -0
  55. package/dist/core/rate-limiter.js.map +1 -1
  56. package/dist/core/types.d.ts +205 -13
  57. package/dist/core/types.d.ts.map +1 -1
  58. package/dist/core/types.js +30 -0
  59. package/dist/core/types.js.map +1 -1
  60. package/dist/core/types.test.d.ts +7 -0
  61. package/dist/core/types.test.d.ts.map +1 -0
  62. package/dist/core/types.test.js +122 -0
  63. package/dist/core/types.test.js.map +1 -0
  64. package/dist/index.d.ts +84 -18
  65. package/dist/index.d.ts.map +1 -1
  66. package/dist/index.js +139 -132
  67. package/dist/index.js.map +1 -1
  68. package/dist/scripts/dip-arb/auto-trade.d.ts +20 -0
  69. package/dist/scripts/dip-arb/auto-trade.d.ts.map +1 -0
  70. package/dist/scripts/dip-arb/auto-trade.js +373 -0
  71. package/dist/scripts/dip-arb/auto-trade.js.map +1 -0
  72. package/dist/scripts/dip-arb/example-basic.d.ts +30 -0
  73. package/dist/scripts/dip-arb/example-basic.d.ts.map +1 -0
  74. package/dist/scripts/dip-arb/example-basic.js +222 -0
  75. package/dist/scripts/dip-arb/example-basic.js.map +1 -0
  76. package/dist/scripts/dip-arb/redeem-positions.d.ts +11 -0
  77. package/dist/scripts/dip-arb/redeem-positions.d.ts.map +1 -0
  78. package/dist/scripts/dip-arb/redeem-positions.js +201 -0
  79. package/dist/scripts/dip-arb/redeem-positions.js.map +1 -0
  80. package/dist/scripts/dip-arb/scan-markets.d.ts +6 -0
  81. package/dist/scripts/dip-arb/scan-markets.d.ts.map +1 -0
  82. package/dist/scripts/dip-arb/scan-markets.js +73 -0
  83. package/dist/scripts/dip-arb/scan-markets.js.map +1 -0
  84. package/dist/services/arbitrage-service.d.ts +3 -2
  85. package/dist/services/arbitrage-service.d.ts.map +1 -1
  86. package/dist/services/arbitrage-service.js +71 -43
  87. package/dist/services/arbitrage-service.js.map +1 -1
  88. package/dist/services/binance-service.d.ts +154 -0
  89. package/dist/services/binance-service.d.ts.map +1 -0
  90. package/dist/services/binance-service.js +266 -0
  91. package/dist/services/binance-service.js.map +1 -0
  92. package/dist/services/dip-arb-service.d.ts +209 -0
  93. package/dist/services/dip-arb-service.d.ts.map +1 -0
  94. package/dist/services/dip-arb-service.js +1602 -0
  95. package/dist/services/dip-arb-service.js.map +1 -0
  96. package/dist/services/dip-arb-types.d.ts +553 -0
  97. package/dist/services/dip-arb-types.d.ts.map +1 -0
  98. package/dist/services/dip-arb-types.js +164 -0
  99. package/dist/services/dip-arb-types.js.map +1 -0
  100. package/dist/services/market-service.d.ts +267 -8
  101. package/dist/services/market-service.d.ts.map +1 -1
  102. package/dist/services/market-service.js +771 -42
  103. package/dist/services/market-service.js.map +1 -1
  104. package/dist/services/onchain-service.d.ts +309 -0
  105. package/dist/services/onchain-service.d.ts.map +1 -0
  106. package/dist/services/onchain-service.js +417 -0
  107. package/dist/services/onchain-service.js.map +1 -0
  108. package/dist/services/realtime-service-v2.d.ts +362 -0
  109. package/dist/services/realtime-service-v2.d.ts.map +1 -0
  110. package/dist/services/realtime-service-v2.js +858 -0
  111. package/dist/services/realtime-service-v2.js.map +1 -0
  112. package/dist/services/realtime-service.d.ts +17 -17
  113. package/dist/services/realtime-service.d.ts.map +1 -1
  114. package/dist/services/realtime-service.js +91 -59
  115. package/dist/services/realtime-service.js.map +1 -1
  116. package/dist/services/smart-money-service.d.ts +352 -0
  117. package/dist/services/smart-money-service.d.ts.map +1 -0
  118. package/dist/services/smart-money-service.js +582 -0
  119. package/dist/services/smart-money-service.js.map +1 -0
  120. package/dist/services/trading-service.d.ts +177 -0
  121. package/dist/services/trading-service.d.ts.map +1 -0
  122. package/dist/services/trading-service.js +422 -0
  123. package/dist/services/trading-service.js.map +1 -0
  124. package/dist/services/wallet-service.d.ts +225 -3
  125. package/dist/services/wallet-service.d.ts.map +1 -1
  126. package/dist/services/wallet-service.js +511 -3
  127. package/dist/services/wallet-service.js.map +1 -1
  128. package/dist/src/__tests__/integration/arbitrage-service.integration.test.d.ts +12 -0
  129. package/dist/src/__tests__/integration/arbitrage-service.integration.test.d.ts.map +1 -0
  130. package/dist/src/__tests__/integration/arbitrage-service.integration.test.js +267 -0
  131. package/dist/src/__tests__/integration/arbitrage-service.integration.test.js.map +1 -0
  132. package/dist/src/__tests__/integration/bridge-client.integration.test.d.ts +11 -0
  133. package/dist/src/__tests__/integration/bridge-client.integration.test.d.ts.map +1 -0
  134. package/dist/src/__tests__/integration/bridge-client.integration.test.js +260 -0
  135. package/dist/src/__tests__/integration/bridge-client.integration.test.js.map +1 -0
  136. package/dist/src/__tests__/integration/ctf-client.integration.test.d.ts +17 -0
  137. package/dist/src/__tests__/integration/ctf-client.integration.test.d.ts.map +1 -0
  138. package/dist/src/__tests__/integration/ctf-client.integration.test.js +234 -0
  139. package/dist/src/__tests__/integration/ctf-client.integration.test.js.map +1 -0
  140. package/dist/src/__tests__/integration/data-api.integration.test.d.ts +9 -0
  141. package/dist/src/__tests__/integration/data-api.integration.test.d.ts.map +1 -0
  142. package/dist/src/__tests__/integration/data-api.integration.test.js +164 -0
  143. package/dist/src/__tests__/integration/data-api.integration.test.js.map +1 -0
  144. package/dist/src/__tests__/integration/gamma-api.integration.test.d.ts +9 -0
  145. package/dist/src/__tests__/integration/gamma-api.integration.test.d.ts.map +1 -0
  146. package/dist/src/__tests__/integration/gamma-api.integration.test.js +170 -0
  147. package/dist/src/__tests__/integration/gamma-api.integration.test.js.map +1 -0
  148. package/dist/src/__tests__/integration/market-service.integration.test.d.ts +10 -0
  149. package/dist/src/__tests__/integration/market-service.integration.test.d.ts.map +1 -0
  150. package/dist/src/__tests__/integration/market-service.integration.test.js +180 -0
  151. package/dist/src/__tests__/integration/market-service.integration.test.js.map +1 -0
  152. package/dist/src/__tests__/integration/realtime-service-v2.integration.test.d.ts +10 -0
  153. package/dist/src/__tests__/integration/realtime-service-v2.integration.test.d.ts.map +1 -0
  154. package/dist/src/__tests__/integration/realtime-service-v2.integration.test.js +307 -0
  155. package/dist/src/__tests__/integration/realtime-service-v2.integration.test.js.map +1 -0
  156. package/dist/src/__tests__/integration/trading-service.integration.test.d.ts +10 -0
  157. package/dist/src/__tests__/integration/trading-service.integration.test.d.ts.map +1 -0
  158. package/dist/src/__tests__/integration/trading-service.integration.test.js +58 -0
  159. package/dist/src/__tests__/integration/trading-service.integration.test.js.map +1 -0
  160. package/dist/src/__tests__/test-utils.d.ts +92 -0
  161. package/dist/src/__tests__/test-utils.d.ts.map +1 -0
  162. package/dist/src/__tests__/test-utils.js +143 -0
  163. package/dist/src/__tests__/test-utils.js.map +1 -0
  164. package/dist/src/clients/bridge-client.d.ts +388 -0
  165. package/dist/src/clients/bridge-client.d.ts.map +1 -0
  166. package/dist/src/clients/bridge-client.js +587 -0
  167. package/dist/src/clients/bridge-client.js.map +1 -0
  168. package/dist/src/clients/ctf-client.d.ts +475 -0
  169. package/dist/src/clients/ctf-client.d.ts.map +1 -0
  170. package/dist/src/clients/ctf-client.js +915 -0
  171. package/dist/src/clients/ctf-client.js.map +1 -0
  172. package/dist/src/clients/data-api.d.ts +452 -0
  173. package/dist/src/clients/data-api.d.ts.map +1 -0
  174. package/dist/src/clients/data-api.js +637 -0
  175. package/dist/src/clients/data-api.js.map +1 -0
  176. package/dist/src/clients/gamma-api.d.ts +421 -0
  177. package/dist/src/clients/gamma-api.d.ts.map +1 -0
  178. package/dist/src/clients/gamma-api.js +359 -0
  179. package/dist/src/clients/gamma-api.js.map +1 -0
  180. package/dist/src/clients/subgraph.d.ts +196 -0
  181. package/dist/src/clients/subgraph.d.ts.map +1 -0
  182. package/dist/src/clients/subgraph.js +332 -0
  183. package/dist/src/clients/subgraph.js.map +1 -0
  184. package/dist/src/core/cache-adapter-bridge.d.ts +36 -0
  185. package/dist/src/core/cache-adapter-bridge.d.ts.map +1 -0
  186. package/dist/src/core/cache-adapter-bridge.js +81 -0
  187. package/dist/src/core/cache-adapter-bridge.js.map +1 -0
  188. package/dist/src/core/cache.d.ts +43 -0
  189. package/dist/src/core/cache.d.ts.map +1 -0
  190. package/dist/src/core/cache.js +76 -0
  191. package/dist/src/core/cache.js.map +1 -0
  192. package/dist/src/core/errors.d.ts +39 -0
  193. package/dist/src/core/errors.d.ts.map +1 -0
  194. package/dist/src/core/errors.js +86 -0
  195. package/dist/src/core/errors.js.map +1 -0
  196. package/dist/src/core/rate-limiter.d.ts +33 -0
  197. package/dist/src/core/rate-limiter.d.ts.map +1 -0
  198. package/dist/src/core/rate-limiter.js +82 -0
  199. package/dist/src/core/rate-limiter.js.map +1 -0
  200. package/dist/src/core/types.d.ts +506 -0
  201. package/dist/src/core/types.d.ts.map +1 -0
  202. package/dist/src/core/types.js +49 -0
  203. package/dist/src/core/types.js.map +1 -0
  204. package/dist/src/core/types.test.d.ts +7 -0
  205. package/dist/src/core/types.test.d.ts.map +1 -0
  206. package/dist/src/core/types.test.js +122 -0
  207. package/dist/src/core/types.test.js.map +1 -0
  208. package/dist/src/core/unified-cache.d.ts +63 -0
  209. package/dist/src/core/unified-cache.d.ts.map +1 -0
  210. package/dist/src/core/unified-cache.js +114 -0
  211. package/dist/src/core/unified-cache.js.map +1 -0
  212. package/dist/src/index.d.ts +159 -0
  213. package/dist/src/index.d.ts.map +1 -0
  214. package/dist/src/index.js +262 -0
  215. package/dist/src/index.js.map +1 -0
  216. package/dist/src/services/arbitrage-service.d.ts +409 -0
  217. package/dist/src/services/arbitrage-service.d.ts.map +1 -0
  218. package/dist/src/services/arbitrage-service.js +1450 -0
  219. package/dist/src/services/arbitrage-service.js.map +1 -0
  220. package/dist/src/services/authorization-service.d.ts +97 -0
  221. package/dist/src/services/authorization-service.d.ts.map +1 -0
  222. package/dist/src/services/authorization-service.js +279 -0
  223. package/dist/src/services/authorization-service.js.map +1 -0
  224. package/dist/src/services/binance-service.d.ts +154 -0
  225. package/dist/src/services/binance-service.d.ts.map +1 -0
  226. package/dist/src/services/binance-service.js +266 -0
  227. package/dist/src/services/binance-service.js.map +1 -0
  228. package/dist/src/services/dip-arb-service.d.ts +245 -0
  229. package/dist/src/services/dip-arb-service.d.ts.map +1 -0
  230. package/dist/src/services/dip-arb-service.js +1865 -0
  231. package/dist/src/services/dip-arb-service.js.map +1 -0
  232. package/dist/src/services/dip-arb-types.d.ts +553 -0
  233. package/dist/src/services/dip-arb-types.d.ts.map +1 -0
  234. package/dist/src/services/dip-arb-types.js +164 -0
  235. package/dist/src/services/dip-arb-types.js.map +1 -0
  236. package/dist/src/services/market-service.d.ts +370 -0
  237. package/dist/src/services/market-service.d.ts.map +1 -0
  238. package/dist/src/services/market-service.js +1200 -0
  239. package/dist/src/services/market-service.js.map +1 -0
  240. package/dist/src/services/onchain-service.d.ts +309 -0
  241. package/dist/src/services/onchain-service.d.ts.map +1 -0
  242. package/dist/src/services/onchain-service.js +417 -0
  243. package/dist/src/services/onchain-service.js.map +1 -0
  244. package/dist/src/services/realtime-service-v2.d.ts +367 -0
  245. package/dist/src/services/realtime-service-v2.d.ts.map +1 -0
  246. package/dist/src/services/realtime-service-v2.js +876 -0
  247. package/dist/src/services/realtime-service-v2.js.map +1 -0
  248. package/dist/src/services/smart-money-service.d.ts +352 -0
  249. package/dist/src/services/smart-money-service.d.ts.map +1 -0
  250. package/dist/src/services/smart-money-service.js +582 -0
  251. package/dist/src/services/smart-money-service.js.map +1 -0
  252. package/dist/src/services/swap-service.d.ts +217 -0
  253. package/dist/src/services/swap-service.d.ts.map +1 -0
  254. package/dist/src/services/swap-service.js +695 -0
  255. package/dist/src/services/swap-service.js.map +1 -0
  256. package/dist/src/services/trading-service.d.ts +177 -0
  257. package/dist/src/services/trading-service.d.ts.map +1 -0
  258. package/dist/src/services/trading-service.js +422 -0
  259. package/dist/src/services/trading-service.js.map +1 -0
  260. package/dist/src/services/wallet-service.d.ts +316 -0
  261. package/dist/src/services/wallet-service.d.ts.map +1 -0
  262. package/dist/src/services/wallet-service.js +681 -0
  263. package/dist/src/services/wallet-service.js.map +1 -0
  264. package/dist/src/utils/price-utils.d.ts +153 -0
  265. package/dist/src/utils/price-utils.d.ts.map +1 -0
  266. package/dist/src/utils/price-utils.js +236 -0
  267. package/dist/src/utils/price-utils.js.map +1 -0
  268. package/dist/src/utils/price-utils.test.d.ts +5 -0
  269. package/dist/src/utils/price-utils.test.d.ts.map +1 -0
  270. package/dist/src/utils/price-utils.test.js +192 -0
  271. package/dist/src/utils/price-utils.test.js.map +1 -0
  272. package/dist/utils/price-utils.test.d.ts +5 -0
  273. package/dist/utils/price-utils.test.d.ts.map +1 -0
  274. package/dist/utils/price-utils.test.js +192 -0
  275. package/dist/utils/price-utils.test.js.map +1 -0
  276. package/package.json +6 -5
  277. package/README.en.md +0 -502
@@ -0,0 +1,367 @@
1
+ /**
2
+ * RealtimeService V2
3
+ *
4
+ * Comprehensive real-time data service using official @polymarket/real-time-data-client.
5
+ *
6
+ * Supports ALL available topics:
7
+ * - clob_market: price_change, agg_orderbook, last_trade_price, tick_size_change, market_created, market_resolved
8
+ * - clob_user: order, trade (requires authentication)
9
+ * - activity: trades, orders_matched
10
+ * - crypto_prices: update (BTC, ETH, etc.)
11
+ * - equity_prices: update (AAPL, etc.)
12
+ * - comments: comment_created, comment_removed, reaction_created, reaction_removed
13
+ * - rfq: request_*, quote_*
14
+ */
15
+ import { EventEmitter } from 'events';
16
+ import { type ClobApiKeyCreds } from '@polymarket/real-time-data-client';
17
+ import type { PriceUpdate, BookUpdate, Orderbook } from '../core/types.js';
18
+ export interface RealtimeServiceConfig {
19
+ /** Auto-reconnect on disconnect (default: true) */
20
+ autoReconnect?: boolean;
21
+ /** Ping interval in ms (default: 5000) */
22
+ pingInterval?: number;
23
+ /** Enable debug logging (default: false) */
24
+ debug?: boolean;
25
+ }
26
+ /**
27
+ * Extended orderbook snapshot from WebSocket with additional trading parameters.
28
+ * Extends the base Orderbook type from core/types.ts.
29
+ */
30
+ export interface OrderbookSnapshot extends Orderbook {
31
+ /** Token ID (ERC-1155 token identifier, required in WebSocket context) */
32
+ tokenId: string;
33
+ /** @deprecated Use tokenId instead */
34
+ assetId: string;
35
+ /** Market condition ID (required in WebSocket context) */
36
+ market: string;
37
+ /** Tick size for price rounding */
38
+ tickSize: string;
39
+ /** Minimum order size */
40
+ minOrderSize: string;
41
+ /** Hash for change detection (required in WebSocket context) */
42
+ hash: string;
43
+ }
44
+ export interface LastTradeInfo {
45
+ assetId: string;
46
+ price: number;
47
+ side: 'BUY' | 'SELL';
48
+ size: number;
49
+ timestamp: number;
50
+ }
51
+ export interface PriceChange {
52
+ assetId: string;
53
+ changes: Array<{
54
+ price: string;
55
+ size: string;
56
+ }>;
57
+ timestamp: number;
58
+ }
59
+ export interface TickSizeChange {
60
+ assetId: string;
61
+ oldTickSize: string;
62
+ newTickSize: string;
63
+ timestamp: number;
64
+ }
65
+ export interface MarketEvent {
66
+ conditionId: string;
67
+ type: 'created' | 'resolved';
68
+ data: Record<string, unknown>;
69
+ timestamp: number;
70
+ }
71
+ export interface UserOrder {
72
+ orderId: string;
73
+ market: string;
74
+ asset: string;
75
+ side: 'BUY' | 'SELL';
76
+ price: number;
77
+ originalSize: number;
78
+ matchedSize: number;
79
+ eventType: 'PLACEMENT' | 'UPDATE' | 'CANCELLATION';
80
+ timestamp: number;
81
+ }
82
+ export interface UserTrade {
83
+ tradeId: string;
84
+ market: string;
85
+ outcome: string;
86
+ price: number;
87
+ size: number;
88
+ side: 'BUY' | 'SELL';
89
+ status: 'MATCHED' | 'MINED' | 'CONFIRMED' | 'RETRYING' | 'FAILED';
90
+ timestamp: number;
91
+ transactionHash?: string;
92
+ }
93
+ /**
94
+ * Activity trade from WebSocket
95
+ *
96
+ * 实测验证 (2025-12-28):proxyWallet 和 name 是顶层字段,不在 trader 对象里
97
+ */
98
+ export interface ActivityTrade {
99
+ /** Token ID (用于下单) */
100
+ asset: string;
101
+ /** Market condition ID */
102
+ conditionId: string;
103
+ /** Event slug */
104
+ eventSlug: string;
105
+ /** Market slug (可用于过滤) */
106
+ marketSlug: string;
107
+ /** Outcome (Yes/No) */
108
+ outcome: string;
109
+ /** Trade price */
110
+ price: number;
111
+ /** Trade side */
112
+ side: 'BUY' | 'SELL';
113
+ /** Trade size in shares */
114
+ size: number;
115
+ /** Timestamp (Unix seconds) */
116
+ timestamp: number;
117
+ /** Transaction hash */
118
+ transactionHash: string;
119
+ /**
120
+ * Trader info object - 用于 Copy Trading 过滤目标钱包
121
+ *
122
+ * 注意: 实测验证 (2025-12-28) 数据结构为:
123
+ * {
124
+ * trader: { name: "username", address: "0x..." }
125
+ * }
126
+ * 而非顶层 proxyWallet
127
+ */
128
+ trader?: {
129
+ /** 交易者用户名 */
130
+ name?: string;
131
+ /** 交易者钱包地址 - Copy Trading 过滤关键字段! */
132
+ address?: string;
133
+ };
134
+ }
135
+ export interface CryptoPrice {
136
+ symbol: string;
137
+ price: number;
138
+ timestamp: number;
139
+ }
140
+ export interface EquityPrice {
141
+ symbol: string;
142
+ price: number;
143
+ timestamp: number;
144
+ }
145
+ export interface Comment {
146
+ id: string;
147
+ parentEntityId: number;
148
+ parentEntityType: 'Event' | 'Series';
149
+ content?: string;
150
+ author?: string;
151
+ timestamp: number;
152
+ }
153
+ export interface Reaction {
154
+ id: string;
155
+ commentId: string;
156
+ type: string;
157
+ author?: string;
158
+ timestamp: number;
159
+ }
160
+ export interface RFQRequest {
161
+ id: string;
162
+ market: string;
163
+ side: 'BUY' | 'SELL';
164
+ size: number;
165
+ status: 'created' | 'edited' | 'canceled' | 'expired';
166
+ timestamp: number;
167
+ }
168
+ export interface RFQQuote {
169
+ id: string;
170
+ requestId: string;
171
+ price: number;
172
+ size: number;
173
+ status: 'created' | 'edited' | 'canceled' | 'expired';
174
+ timestamp: number;
175
+ }
176
+ export interface Subscription {
177
+ id: string;
178
+ topic: string;
179
+ type: string;
180
+ unsubscribe: () => void;
181
+ }
182
+ export interface MarketSubscription extends Subscription {
183
+ tokenIds: string[];
184
+ }
185
+ export interface MarketDataHandlers {
186
+ onOrderbook?: (book: OrderbookSnapshot) => void;
187
+ onPriceChange?: (change: PriceChange) => void;
188
+ onLastTrade?: (trade: LastTradeInfo) => void;
189
+ onTickSizeChange?: (change: TickSizeChange) => void;
190
+ onMarketEvent?: (event: MarketEvent) => void;
191
+ onError?: (error: Error) => void;
192
+ }
193
+ export interface UserDataHandlers {
194
+ onOrder?: (order: UserOrder) => void;
195
+ onTrade?: (trade: UserTrade) => void;
196
+ onError?: (error: Error) => void;
197
+ }
198
+ export interface ActivityHandlers {
199
+ onTrade?: (trade: ActivityTrade) => void;
200
+ onError?: (error: Error) => void;
201
+ }
202
+ export interface CryptoPriceHandlers {
203
+ onPrice?: (price: CryptoPrice) => void;
204
+ onError?: (error: Error) => void;
205
+ }
206
+ export interface EquityPriceHandlers {
207
+ onPrice?: (price: EquityPrice) => void;
208
+ onError?: (error: Error) => void;
209
+ }
210
+ export declare class RealtimeServiceV2 extends EventEmitter {
211
+ private client;
212
+ private config;
213
+ private subscriptions;
214
+ private subscriptionIdCounter;
215
+ private connected;
216
+ private subscriptionMessages;
217
+ private priceCache;
218
+ private bookCache;
219
+ private lastTradeCache;
220
+ constructor(config?: RealtimeServiceConfig);
221
+ /**
222
+ * Connect to WebSocket server
223
+ */
224
+ connect(): this;
225
+ /**
226
+ * Disconnect from WebSocket server
227
+ */
228
+ disconnect(): void;
229
+ /**
230
+ * Check if connected
231
+ */
232
+ isConnected(): boolean;
233
+ /**
234
+ * Subscribe to market data (orderbook, prices, trades)
235
+ * @param tokenIds - Array of token IDs to subscribe to
236
+ * @param handlers - Event handlers
237
+ */
238
+ subscribeMarkets(tokenIds: string[], handlers?: MarketDataHandlers): MarketSubscription;
239
+ /**
240
+ * Subscribe to a single market (YES + NO tokens)
241
+ * Also emits derived price updates compatible with old API
242
+ */
243
+ subscribeMarket(yesTokenId: string, noTokenId: string, handlers?: MarketDataHandlers & {
244
+ onPriceUpdate?: (update: PriceUpdate) => void;
245
+ onBookUpdate?: (update: BookUpdate) => void;
246
+ onPairUpdate?: (update: {
247
+ yes: PriceUpdate;
248
+ no: PriceUpdate;
249
+ spread: number;
250
+ }) => void;
251
+ }): MarketSubscription;
252
+ /**
253
+ * Subscribe to market lifecycle events (creation, resolution)
254
+ */
255
+ subscribeMarketEvents(handlers: {
256
+ onMarketEvent?: (event: MarketEvent) => void;
257
+ }): Subscription;
258
+ /**
259
+ * Subscribe to user order and trade events
260
+ * @param credentials - CLOB API credentials
261
+ * @param handlers - Event handlers
262
+ */
263
+ subscribeUserEvents(credentials: ClobApiKeyCreds, handlers?: UserDataHandlers): Subscription;
264
+ /**
265
+ * Subscribe to trading activity for a market or event
266
+ * @param filter - Event or market slug (optional - if empty, subscribes to all activity)
267
+ * @param handlers - Event handlers
268
+ */
269
+ subscribeActivity(filter?: {
270
+ eventSlug?: string;
271
+ marketSlug?: string;
272
+ }, handlers?: ActivityHandlers): Subscription;
273
+ /**
274
+ * Subscribe to ALL trading activity across all markets (no filtering)
275
+ * This is useful for Copy Trading - monitoring Smart Money across the platform
276
+ * @param handlers - Event handlers
277
+ */
278
+ subscribeAllActivity(handlers?: ActivityHandlers): Subscription;
279
+ /**
280
+ * Subscribe to crypto price updates
281
+ * @param symbols - Array of symbols (e.g., ['BTCUSDT', 'ETHUSDT'])
282
+ * @param handlers - Event handlers
283
+ */
284
+ subscribeCryptoPrices(symbols: string[], handlers?: CryptoPriceHandlers): Subscription;
285
+ /**
286
+ * Subscribe to Chainlink crypto prices
287
+ * @param symbols - Array of symbols (e.g., ['ETH/USD', 'BTC/USD'])
288
+ */
289
+ subscribeCryptoChainlinkPrices(symbols: string[], handlers?: CryptoPriceHandlers): Subscription;
290
+ /**
291
+ * Subscribe to equity price updates
292
+ * @param symbols - Array of symbols (e.g., ['AAPL', 'GOOGL'])
293
+ * @param handlers - Event handlers
294
+ */
295
+ subscribeEquityPrices(symbols: string[], handlers?: EquityPriceHandlers): Subscription;
296
+ /**
297
+ * Subscribe to comment and reaction events
298
+ */
299
+ subscribeComments(filter: {
300
+ parentEntityId: number;
301
+ parentEntityType: 'Event' | 'Series';
302
+ }, handlers?: {
303
+ onComment?: (comment: Comment) => void;
304
+ onReaction?: (reaction: Reaction) => void;
305
+ }): Subscription;
306
+ /**
307
+ * Subscribe to RFQ (Request for Quote) events
308
+ */
309
+ subscribeRFQ(handlers?: {
310
+ onRequest?: (request: RFQRequest) => void;
311
+ onQuote?: (quote: RFQQuote) => void;
312
+ }): Subscription;
313
+ /**
314
+ * Get cached derived price for an asset
315
+ */
316
+ getPrice(assetId: string): PriceUpdate | undefined;
317
+ /**
318
+ * Get all cached prices
319
+ */
320
+ getAllPrices(): Map<string, PriceUpdate>;
321
+ /**
322
+ * Get cached orderbook for an asset
323
+ */
324
+ getBook(assetId: string): OrderbookSnapshot | undefined;
325
+ /**
326
+ * Get cached last trade for an asset
327
+ */
328
+ getLastTrade(assetId: string): LastTradeInfo | undefined;
329
+ /**
330
+ * Get all active subscriptions
331
+ */
332
+ getActiveSubscriptions(): Subscription[];
333
+ /**
334
+ * Unsubscribe from all
335
+ */
336
+ unsubscribeAll(): void;
337
+ private handleConnect;
338
+ private handleStatusChange;
339
+ private handleMessage;
340
+ private handleMarketMessage;
341
+ private handleUserMessage;
342
+ private handleActivityMessage;
343
+ private handleCryptoPriceMessage;
344
+ private handleCryptoChainlinkPriceMessage;
345
+ private handleEquityPriceMessage;
346
+ private handleCommentMessage;
347
+ private handleRFQMessage;
348
+ private parseOrderbook;
349
+ private parsePriceChange;
350
+ private parseLastTrade;
351
+ private parseTickSizeChange;
352
+ /**
353
+ * Calculate derived price using Polymarket's display logic:
354
+ * - If spread <= 0.10: use midpoint
355
+ * - If spread > 0.10: use last trade price
356
+ */
357
+ private calculateDerivedPrice;
358
+ private sendSubscription;
359
+ private sendUnsubscription;
360
+ private log;
361
+ /**
362
+ * Normalize timestamp to milliseconds
363
+ * Polymarket WebSocket returns timestamps in seconds, need to convert to milliseconds
364
+ */
365
+ private normalizeTimestamp;
366
+ }
367
+ //# sourceMappingURL=realtime-service-v2.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"realtime-service-v2.d.ts","sourceRoot":"","sources":["../../../src/services/realtime-service-v2.ts"],"names":[],"mappings":"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"}