@catalyst-team/poly-sdk 0.2.0 → 0.3.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 (242) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +548 -813
  3. package/README.zh-CN.md +805 -0
  4. package/dist/__tests__/clob-api.test.d.ts +5 -0
  5. package/dist/__tests__/clob-api.test.d.ts.map +1 -0
  6. package/dist/__tests__/clob-api.test.js +240 -0
  7. package/dist/__tests__/clob-api.test.js.map +1 -0
  8. package/dist/__tests__/integration/arbitrage-service.integration.test.d.ts +12 -0
  9. package/dist/__tests__/integration/arbitrage-service.integration.test.d.ts.map +1 -0
  10. package/dist/__tests__/integration/arbitrage-service.integration.test.js +267 -0
  11. package/dist/__tests__/integration/arbitrage-service.integration.test.js.map +1 -0
  12. package/dist/__tests__/integration/bridge-client.integration.test.d.ts +11 -0
  13. package/dist/__tests__/integration/bridge-client.integration.test.d.ts.map +1 -0
  14. package/dist/__tests__/integration/bridge-client.integration.test.js +260 -0
  15. package/dist/__tests__/integration/bridge-client.integration.test.js.map +1 -0
  16. package/dist/__tests__/integration/clob-api.integration.test.d.ts +13 -0
  17. package/dist/__tests__/integration/clob-api.integration.test.d.ts.map +1 -0
  18. package/dist/__tests__/integration/clob-api.integration.test.js +170 -0
  19. package/dist/__tests__/integration/clob-api.integration.test.js.map +1 -0
  20. package/dist/__tests__/integration/ctf-client.integration.test.d.ts +17 -0
  21. package/dist/__tests__/integration/ctf-client.integration.test.d.ts.map +1 -0
  22. package/dist/__tests__/integration/ctf-client.integration.test.js +234 -0
  23. package/dist/__tests__/integration/ctf-client.integration.test.js.map +1 -0
  24. package/dist/__tests__/integration/data-api.integration.test.d.ts +9 -0
  25. package/dist/__tests__/integration/data-api.integration.test.d.ts.map +1 -0
  26. package/dist/__tests__/integration/data-api.integration.test.js +164 -0
  27. package/dist/__tests__/integration/data-api.integration.test.js.map +1 -0
  28. package/dist/__tests__/integration/gamma-api.integration.test.d.ts +9 -0
  29. package/dist/__tests__/integration/gamma-api.integration.test.d.ts.map +1 -0
  30. package/dist/__tests__/integration/gamma-api.integration.test.js +170 -0
  31. package/dist/__tests__/integration/gamma-api.integration.test.js.map +1 -0
  32. package/dist/__tests__/integration/market-service.integration.test.d.ts +10 -0
  33. package/dist/__tests__/integration/market-service.integration.test.d.ts.map +1 -0
  34. package/dist/__tests__/integration/market-service.integration.test.js +173 -0
  35. package/dist/__tests__/integration/market-service.integration.test.js.map +1 -0
  36. package/dist/__tests__/integration/realtime-service-v2.integration.test.d.ts +10 -0
  37. package/dist/__tests__/integration/realtime-service-v2.integration.test.d.ts.map +1 -0
  38. package/dist/__tests__/integration/realtime-service-v2.integration.test.js +307 -0
  39. package/dist/__tests__/integration/realtime-service-v2.integration.test.js.map +1 -0
  40. package/dist/__tests__/integration/trading-service.integration.test.d.ts +10 -0
  41. package/dist/__tests__/integration/trading-service.integration.test.d.ts.map +1 -0
  42. package/dist/__tests__/integration/trading-service.integration.test.js +58 -0
  43. package/dist/__tests__/integration/trading-service.integration.test.js.map +1 -0
  44. package/dist/__tests__/test-utils.d.ts +92 -0
  45. package/dist/__tests__/test-utils.d.ts.map +1 -0
  46. package/dist/__tests__/test-utils.js +143 -0
  47. package/dist/__tests__/test-utils.js.map +1 -0
  48. package/dist/clients/bridge-client.d.ts +388 -0
  49. package/dist/clients/bridge-client.d.ts.map +1 -0
  50. package/dist/clients/bridge-client.js +587 -0
  51. package/dist/clients/bridge-client.js.map +1 -0
  52. package/dist/clients/clob-api.d.ts +391 -0
  53. package/dist/clients/clob-api.d.ts.map +1 -0
  54. package/dist/clients/clob-api.js +448 -0
  55. package/dist/clients/clob-api.js.map +1 -0
  56. package/dist/clients/ctf-client.d.ts +473 -0
  57. package/dist/clients/ctf-client.d.ts.map +1 -0
  58. package/dist/clients/ctf-client.js +915 -0
  59. package/dist/clients/ctf-client.js.map +1 -0
  60. package/dist/clients/data-api.d.ts +439 -0
  61. package/dist/clients/data-api.d.ts.map +1 -0
  62. package/dist/clients/data-api.js +592 -0
  63. package/dist/clients/data-api.js.map +1 -0
  64. package/dist/clients/gamma-api.d.ts +401 -0
  65. package/dist/clients/gamma-api.d.ts.map +1 -0
  66. package/dist/clients/gamma-api.js +352 -0
  67. package/dist/clients/gamma-api.js.map +1 -0
  68. package/dist/clients/subgraph.d.ts +196 -0
  69. package/dist/clients/subgraph.d.ts.map +1 -0
  70. package/dist/clients/subgraph.js +332 -0
  71. package/dist/clients/subgraph.js.map +1 -0
  72. package/dist/clients/trading-client.d.ts +252 -0
  73. package/dist/clients/trading-client.d.ts.map +1 -0
  74. package/dist/clients/trading-client.js +543 -0
  75. package/dist/clients/trading-client.js.map +1 -0
  76. package/dist/clients/websocket-manager.d.ts +103 -0
  77. package/dist/clients/websocket-manager.d.ts.map +1 -0
  78. package/dist/clients/websocket-manager.js +200 -0
  79. package/dist/clients/websocket-manager.js.map +1 -0
  80. package/dist/core/cache-adapter-bridge.d.ts +36 -0
  81. package/dist/core/cache-adapter-bridge.d.ts.map +1 -0
  82. package/dist/core/cache-adapter-bridge.js +81 -0
  83. package/dist/core/cache-adapter-bridge.js.map +1 -0
  84. package/dist/core/cache.d.ts +41 -0
  85. package/dist/core/cache.d.ts.map +1 -0
  86. package/dist/core/cache.js +72 -0
  87. package/dist/core/cache.js.map +1 -0
  88. package/dist/core/errors.d.ts +39 -0
  89. package/dist/core/errors.d.ts.map +1 -0
  90. package/dist/core/errors.js +86 -0
  91. package/dist/core/errors.js.map +1 -0
  92. package/dist/core/rate-limiter.d.ts +32 -0
  93. package/dist/core/rate-limiter.d.ts.map +1 -0
  94. package/dist/core/rate-limiter.js +75 -0
  95. package/dist/core/rate-limiter.js.map +1 -0
  96. package/dist/core/types.d.ts +402 -0
  97. package/dist/core/types.d.ts.map +1 -0
  98. package/dist/core/types.js +19 -0
  99. package/dist/core/types.js.map +1 -0
  100. package/dist/core/types.test.d.ts +7 -0
  101. package/dist/core/types.test.d.ts.map +1 -0
  102. package/dist/core/types.test.js +122 -0
  103. package/dist/core/types.test.js.map +1 -0
  104. package/dist/core/unified-cache.d.ts +63 -0
  105. package/dist/core/unified-cache.d.ts.map +1 -0
  106. package/dist/core/unified-cache.js +114 -0
  107. package/dist/core/unified-cache.js.map +1 -0
  108. package/dist/index.d.ts +151 -0
  109. package/dist/index.d.ts.map +1 -0
  110. package/dist/index.js +248 -0
  111. package/dist/index.js.map +1 -0
  112. package/dist/services/arbitrage-service.d.ts +409 -0
  113. package/dist/services/arbitrage-service.d.ts.map +1 -0
  114. package/dist/services/arbitrage-service.js +1440 -0
  115. package/dist/services/arbitrage-service.js.map +1 -0
  116. package/dist/services/authorization-service.d.ts +97 -0
  117. package/dist/services/authorization-service.d.ts.map +1 -0
  118. package/dist/services/authorization-service.js +279 -0
  119. package/dist/services/authorization-service.js.map +1 -0
  120. package/dist/services/market-service.d.ts +208 -0
  121. package/dist/services/market-service.d.ts.map +1 -0
  122. package/dist/services/market-service.js +774 -0
  123. package/dist/services/market-service.js.map +1 -0
  124. package/dist/services/onchain-service.d.ts +309 -0
  125. package/dist/services/onchain-service.d.ts.map +1 -0
  126. package/dist/services/onchain-service.js +417 -0
  127. package/dist/services/onchain-service.js.map +1 -0
  128. package/dist/services/realtime-service-v2.d.ts +361 -0
  129. package/dist/services/realtime-service-v2.d.ts.map +1 -0
  130. package/dist/services/realtime-service-v2.js +840 -0
  131. package/dist/services/realtime-service-v2.js.map +1 -0
  132. package/dist/services/realtime-service.d.ts +82 -0
  133. package/dist/services/realtime-service.d.ts.map +1 -0
  134. package/dist/services/realtime-service.js +182 -0
  135. package/dist/services/realtime-service.js.map +1 -0
  136. package/dist/services/smart-money-service.d.ts +196 -0
  137. package/dist/services/smart-money-service.d.ts.map +1 -0
  138. package/dist/services/smart-money-service.js +358 -0
  139. package/dist/services/smart-money-service.js.map +1 -0
  140. package/dist/services/swap-service.d.ts +217 -0
  141. package/dist/services/swap-service.d.ts.map +1 -0
  142. package/dist/services/swap-service.js +695 -0
  143. package/dist/services/swap-service.js.map +1 -0
  144. package/dist/services/trading-service.d.ts +156 -0
  145. package/dist/services/trading-service.d.ts.map +1 -0
  146. package/dist/services/trading-service.js +356 -0
  147. package/dist/services/trading-service.js.map +1 -0
  148. package/dist/services/wallet-service.d.ts +275 -0
  149. package/dist/services/wallet-service.d.ts.map +1 -0
  150. package/dist/services/wallet-service.js +630 -0
  151. package/dist/services/wallet-service.js.map +1 -0
  152. package/dist/utils/price-utils.d.ts +153 -0
  153. package/dist/utils/price-utils.d.ts.map +1 -0
  154. package/dist/utils/price-utils.js +236 -0
  155. package/dist/utils/price-utils.js.map +1 -0
  156. package/dist/utils/price-utils.test.d.ts +5 -0
  157. package/dist/utils/price-utils.test.d.ts.map +1 -0
  158. package/dist/utils/price-utils.test.js +192 -0
  159. package/dist/utils/price-utils.test.js.map +1 -0
  160. package/package.json +10 -4
  161. package/README.en.md +0 -538
  162. package/docs/00-design.md +0 -760
  163. package/docs/02-API.md +0 -1148
  164. package/docs/arb/test-plan.md +0 -387
  165. package/docs/arb/test-results.md +0 -336
  166. package/docs/arbitrage.md +0 -754
  167. package/docs/reports/smart-money-analysis-2025-12-23-cn.md +0 -840
  168. package/examples/01-basic-usage.ts +0 -68
  169. package/examples/02-smart-money.ts +0 -95
  170. package/examples/03-market-analysis.ts +0 -108
  171. package/examples/04-kline-aggregation.ts +0 -158
  172. package/examples/05-follow-wallet-strategy.ts +0 -156
  173. package/examples/06-services-demo.ts +0 -124
  174. package/examples/07-realtime-websocket.ts +0 -117
  175. package/examples/08-trading-orders.ts +0 -278
  176. package/examples/09-rewards-tracking.ts +0 -187
  177. package/examples/10-ctf-operations.ts +0 -336
  178. package/examples/11-live-arbitrage-scan.ts +0 -221
  179. package/examples/12-trending-arb-monitor.ts +0 -406
  180. package/examples/13-arbitrage-service.ts +0 -211
  181. package/examples/README.md +0 -179
  182. package/scripts/README.md +0 -163
  183. package/scripts/approvals/approve-erc1155.ts +0 -129
  184. package/scripts/approvals/approve-neg-risk-erc1155.ts +0 -149
  185. package/scripts/approvals/approve-neg-risk.ts +0 -102
  186. package/scripts/approvals/check-all-allowances.ts +0 -150
  187. package/scripts/approvals/check-allowance.ts +0 -129
  188. package/scripts/approvals/check-ctf-approval.ts +0 -158
  189. package/scripts/arb/faze-bo3-arb.ts +0 -385
  190. package/scripts/arb/settle-position.ts +0 -190
  191. package/scripts/arb/token-rebalancer.ts +0 -420
  192. package/scripts/arb-tests/01-unit-tests.ts +0 -495
  193. package/scripts/arb-tests/02-integration-tests.ts +0 -412
  194. package/scripts/arb-tests/03-e2e-tests.ts +0 -503
  195. package/scripts/arb-tests/README.md +0 -109
  196. package/scripts/datas/001-report.md +0 -486
  197. package/scripts/datas/clone-modal-screenshot.png +0 -0
  198. package/scripts/deposit/deposit-native-usdc.ts +0 -179
  199. package/scripts/deposit/deposit-usdc.ts +0 -155
  200. package/scripts/deposit/swap-usdc-to-usdce.ts +0 -375
  201. package/scripts/research/research-markets.ts +0 -166
  202. package/scripts/trading/check-orders.ts +0 -50
  203. package/scripts/trading/sell-nvidia-positions.ts +0 -206
  204. package/scripts/trading/test-order.ts +0 -172
  205. package/scripts/verify/test-approve-trading.ts +0 -98
  206. package/scripts/verify/test-provider-fix.ts +0 -43
  207. package/scripts/verify/test-search-mcp.ts +0 -113
  208. package/scripts/verify/verify-all-apis.ts +0 -160
  209. package/scripts/wallet/check-wallet-balances.ts +0 -75
  210. package/scripts/wallet/test-wallet-operations.ts +0 -191
  211. package/scripts/wallet/verify-wallet-tools.ts +0 -124
  212. package/src/__tests__/clob-api.test.ts +0 -301
  213. package/src/__tests__/integration/bridge-client.integration.test.ts +0 -314
  214. package/src/__tests__/integration/clob-api.integration.test.ts +0 -218
  215. package/src/__tests__/integration/ctf-client.integration.test.ts +0 -331
  216. package/src/__tests__/integration/data-api.integration.test.ts +0 -194
  217. package/src/__tests__/integration/gamma-api.integration.test.ts +0 -206
  218. package/src/__tests__/test-utils.ts +0 -170
  219. package/src/clients/bridge-client.ts +0 -841
  220. package/src/clients/clob-api.ts +0 -629
  221. package/src/clients/ctf-client.ts +0 -1216
  222. package/src/clients/data-api.ts +0 -469
  223. package/src/clients/gamma-api.ts +0 -597
  224. package/src/clients/trading-client.ts +0 -749
  225. package/src/clients/websocket-manager.ts +0 -267
  226. package/src/core/cache-adapter-bridge.ts +0 -94
  227. package/src/core/cache.ts +0 -85
  228. package/src/core/errors.ts +0 -117
  229. package/src/core/rate-limiter.ts +0 -74
  230. package/src/core/types.ts +0 -360
  231. package/src/core/unified-cache.ts +0 -153
  232. package/src/index.ts +0 -461
  233. package/src/services/arbitrage-service.ts +0 -1807
  234. package/src/services/authorization-service.ts +0 -357
  235. package/src/services/market-service.ts +0 -544
  236. package/src/services/realtime-service.ts +0 -196
  237. package/src/services/swap-service.ts +0 -896
  238. package/src/services/wallet-service.ts +0 -259
  239. package/src/utils/price-utils.ts +0 -307
  240. package/tsconfig.json +0 -8
  241. package/vitest.config.ts +0 -19
  242. package/vitest.integration.config.ts +0 -18
@@ -0,0 +1,805 @@
1
+ # @catalyst-team/poly-sdk
2
+
3
+ [![npm version](https://img.shields.io/npm/v/@catalyst-team/poly-sdk.svg)](https://www.npmjs.com/package/@catalyst-team/poly-sdk)
4
+ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
5
+
6
+ **Polymarket 统一 TypeScript SDK** - 交易、市场数据、聪明钱分析和链上操作。
7
+
8
+ **开发者**: [@hhhx402](https://x.com/hhhx402) | **项目**: [Catalyst.fun](https://x.com/catalystdotfun)
9
+
10
+ [English](README.md)
11
+
12
+ ---
13
+
14
+ ## 目录
15
+
16
+ - [概览](#概览)
17
+ - [安装](#安装)
18
+ - [架构](#架构)
19
+ - [快速开始](#快速开始)
20
+ - [服务指南](#服务指南)
21
+ - [PolymarketSDK (入口)](#polymarketsdk-入口)
22
+ - [TradingService](#tradingservice)
23
+ - [MarketService](#marketservice)
24
+ - [OnchainService](#onchainservice)
25
+ - [RealtimeServiceV2](#realtimeservicev2)
26
+ - [WalletService](#walletservice)
27
+ - [SmartMoneyService](#smartmoneyservice)
28
+ - [ArbitrageService](#arbitrageservice)
29
+ - [底层客户端](#底层客户端)
30
+ - [破坏性变更 (v0.3.0)](#破坏性变更-v030)
31
+ - [示例](#示例)
32
+ - [API 参考](#api-参考)
33
+ - [许可证](#许可证)
34
+
35
+ ---
36
+
37
+ ## 概览
38
+
39
+ `@catalyst-team/poly-sdk` 是一个全面的 TypeScript SDK,提供:
40
+
41
+ - **交易** - 下限价单/市价单 (GTC, GTD, FOK, FAK)
42
+ - **市场数据** - 实时价格、订单簿、K线、历史成交
43
+ - **聪明钱分析** - 追踪顶级交易者、计算聪明分数、跟单策略
44
+ - **链上操作** - CTF (split/merge/redeem)、授权、DEX 交换
45
+ - **套利检测** - 实时套利扫描和执行
46
+ - **WebSocket 推送** - 实时价格和订单簿更新
47
+
48
+ ### 核心功能
49
+
50
+ | 功能 | 描述 |
51
+ |------|------|
52
+ | **统一 API** | 单一 SDK 访问所有 Polymarket API |
53
+ | **类型安全** | 完整的 TypeScript 支持和类型定义 |
54
+ | **速率限制** | 按 API 端点内置速率限制 |
55
+ | **缓存** | 基于 TTL 的缓存,支持可插拔适配器 |
56
+ | **错误处理** | 结构化错误和自动重试 |
57
+
58
+ ---
59
+
60
+ ## 安装
61
+
62
+ ```bash
63
+ pnpm add @catalyst-team/poly-sdk
64
+
65
+ # 或
66
+ npm install @catalyst-team/poly-sdk
67
+
68
+ # 或
69
+ yarn add @catalyst-team/poly-sdk
70
+ ```
71
+
72
+ ---
73
+
74
+ ## 架构
75
+
76
+ SDK 分为三层:
77
+
78
+ ```
79
+ poly-sdk 架构
80
+ ================================================================================
81
+
82
+ ┌──────────────────────────────────────────────────────────────────────────────┐
83
+ │ PolymarketSDK │
84
+ │ (入口点) │
85
+ ├──────────────────────────────────────────────────────────────────────────────┤
86
+ │ │
87
+ │ 第三层: 高级服务 (推荐使用) │
88
+ │ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ │
89
+ │ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐ │
90
+ │ │ TradingService │ │ MarketService │ │ OnchainService │ │
91
+ │ │ ────────────── │ │ ────────────── │ │ ────────────── │ │
92
+ │ │ • 限价单 │ │ • K线 │ │ • Split/Merge │ │
93
+ │ │ • 市价单 │ │ • 订单簿 │ │ • Redeem │ │
94
+ │ │ • 订单管理 │ │ • 价格历史 │ │ • 授权 │ │
95
+ │ │ • 奖励 │ │ • 套利检测 │ │ • 交换 │ │
96
+ │ └─────────────────┘ └─────────────────┘ └─────────────────┘ │
97
+ │ │
98
+ │ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐ │
99
+ │ │RealtimeServiceV2│ │ WalletService │ │SmartMoneyService│ │
100
+ │ │ ────────────── │ │ ────────────── │ │ ────────────── │ │
101
+ │ │ • WebSocket │ │ • 用户画像 │ │ • 顶级交易者 │ │
102
+ │ │ • 价格推送 │ │ • 聪明分数 │ │ • 跟单交易 │ │
103
+ │ │ • 订单簿更新 │ │ • 卖出检测 │ │ • 信号检测 │ │
104
+ │ │ • 用户事件 │ │ • PnL 计算 │ │ • 排行榜 │ │
105
+ │ └─────────────────┘ └─────────────────┘ └─────────────────┘ │
106
+ │ │
107
+ │ ┌─────────────────────────────────────────────────────────────────────────┐ │
108
+ │ │ ArbitrageService │ │
109
+ │ │ ───────────────────────────────────────────────────────────────────── │ │
110
+ │ │ • 市场扫描 • 自动执行 • 再平衡器 • 智能清仓 │ │
111
+ │ └─────────────────────────────────────────────────────────────────────────┘ │
112
+ │ │
113
+ ├──────────────────────────────────────────────────────────────────────────────┤
114
+ │ │
115
+ │ 第二层: 底层客户端 (高级用户 / 原始 API 访问) │
116
+ │ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ │
117
+ │ ┌────────────┐ ┌────────────┐ ┌────────────┐ ┌────────────┐ ┌────────────┐ │
118
+ │ │GammaApiClnt│ │DataApiClnt │ │SubgraphClnt│ │ CTFClient │ │BridgeClient│ │
119
+ │ │ ────────── │ │ ────────── │ │ ────────── │ │ ────────── │ │ ────────── │ │
120
+ │ │ • 市场 │ │ • 持仓 │ │ • 链上数据 │ │ • Split │ │ • 跨链 │ │
121
+ │ │ • 事件 │ │ • 交易 │ │ • PnL │ │ • Merge │ │ 充值 │ │
122
+ │ │ • 搜索 │ │ • 活动 │ │ • OI │ │ • Redeem │ │ │ │
123
+ │ └────────────┘ └────────────┘ └────────────┘ └────────────┘ └────────────┘ │
124
+ │ │
125
+ │ 使用官方 Polymarket 客户端: │
126
+ │ • @polymarket/clob-client - 交易、订单簿、市场数据 │
127
+ │ • @polymarket/real-time-data-client - WebSocket 实时更新 │
128
+ │ │
129
+ ├──────────────────────────────────────────────────────────────────────────────┤
130
+ │ │
131
+ │ 第一层: 核心基础设施 │
132
+ │ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━ │
133
+ │ ┌────────────┐ ┌────────────┐ ┌────────────┐ ┌────────────┐ ┌────────────┐ │
134
+ │ │ 速率限制器 │ │ 缓存 │ │ 错误 │ │ 类型 │ │ 价格工具 │ │
135
+ │ │ ────────── │ │ ────────── │ │ ────────── │ │ ────────── │ │ ────────── │ │
136
+ │ │ • 按 API │ │ • 基于 TTL │ │ • 重试 │ │ • 统一 │ │ • 套利计算 │ │
137
+ │ │ • Bottleneck│ │ • 可插拔 │ │ • 错误码 │ │ • K线 │ │ • 舍入 │ │
138
+ │ └────────────┘ └────────────┘ └────────────┘ └────────────┘ └────────────┘ │
139
+ │ │
140
+ └──────────────────────────────────────────────────────────────────────────────┘
141
+ ```
142
+
143
+ ### 服务职责
144
+
145
+ | 服务 | 职责 |
146
+ |------|------|
147
+ | **PolymarketSDK** | 入口点,整合所有服务 |
148
+ | **TradingService** | 订单管理(下单/撤单/查询)|
149
+ | **MarketService** | 市场数据(订单簿/K线/搜索)|
150
+ | **OnchainService** | 链上操作(split/merge/redeem/授权/交换)|
151
+ | **RealtimeServiceV2** | WebSocket 实时数据 |
152
+ | **WalletService** | 钱包/交易者分析 |
153
+ | **SmartMoneyService** | 聪明钱跟踪 |
154
+ | **ArbitrageService** | 套利检测与执行 |
155
+
156
+ ---
157
+
158
+ ## 快速开始
159
+
160
+ ### 基础用法(只读)
161
+
162
+ ```typescript
163
+ import { PolymarketSDK } from '@catalyst-team/poly-sdk';
164
+
165
+ // 只读操作无需认证
166
+ const sdk = new PolymarketSDK();
167
+
168
+ // 通过 slug 或 condition ID 获取市场
169
+ const market = await sdk.getMarket('will-trump-win-2024');
170
+ console.log(`${market.question}`);
171
+ console.log(`YES: ${market.tokens.find(t => t.outcome === 'Yes')?.price}`);
172
+ console.log(`NO: ${market.tokens.find(t => t.outcome === 'No')?.price}`);
173
+
174
+ // 获取处理后的订单簿(含分析数据)
175
+ const orderbook = await sdk.getOrderbook(market.conditionId);
176
+ console.log(`多头套利利润: ${orderbook.summary.longArbProfit}`);
177
+ console.log(`空头套利利润: ${orderbook.summary.shortArbProfit}`);
178
+
179
+ // 检测套利机会
180
+ const arb = await sdk.detectArbitrage(market.conditionId);
181
+ if (arb) {
182
+ console.log(`${arb.type.toUpperCase()} 套利: ${(arb.profit * 100).toFixed(2)}% 利润`);
183
+ console.log(arb.action);
184
+ }
185
+ ```
186
+
187
+ ### 带认证(交易)
188
+
189
+ ```typescript
190
+ import { PolymarketSDK } from '@catalyst-team/poly-sdk';
191
+
192
+ // 推荐: 使用静态工厂方法(一行代码启动)
193
+ const sdk = await PolymarketSDK.create({
194
+ privateKey: process.env.POLYMARKET_PRIVATE_KEY!,
195
+ });
196
+ // 准备好交易 - SDK 已初始化并连接 WebSocket
197
+
198
+ // 下限价单
199
+ const order = await sdk.tradingService.createLimitOrder({
200
+ tokenId: yesTokenId,
201
+ side: 'BUY',
202
+ price: 0.45,
203
+ size: 10,
204
+ orderType: 'GTC',
205
+ });
206
+ console.log(`订单已下: ${order.id}`);
207
+
208
+ // 获取未成交订单
209
+ const openOrders = await sdk.tradingService.getOpenOrders();
210
+ console.log(`未成交订单: ${openOrders.length}`);
211
+
212
+ // 完成后清理
213
+ sdk.stop();
214
+ ```
215
+
216
+ ---
217
+
218
+ ## 服务指南
219
+
220
+ ### PolymarketSDK (入口)
221
+
222
+ 整合所有服务的主 SDK 类。
223
+
224
+ ```typescript
225
+ import { PolymarketSDK } from '@catalyst-team/poly-sdk';
226
+
227
+ // ===== 方式 1: 静态工厂方法(推荐)=====
228
+ // 一行搞定: new + initialize + connect + waitForConnection
229
+ const sdk = await PolymarketSDK.create({
230
+ privateKey: '0x...', // 可选: 用于交易
231
+ chainId: 137, // 可选: Polygon 主网(默认)
232
+ });
233
+
234
+ // ===== 方式 2: 使用 start() =====
235
+ // const sdk = new PolymarketSDK({ privateKey: '0x...' });
236
+ // await sdk.start(); // initialize + connect + waitForConnection
237
+
238
+ // ===== 方式 3: 手动分步(完全控制)=====
239
+ // const sdk = new PolymarketSDK({ privateKey: '0x...' });
240
+ // await sdk.initialize(); // 初始化交易服务
241
+ // sdk.connect(); // 连接 WebSocket
242
+ // await sdk.waitForConnection(); // 等待连接完成
243
+
244
+ // 访问服务
245
+ sdk.tradingService // 交易操作
246
+ sdk.markets // 市场数据
247
+ sdk.wallets // 钱包分析
248
+ sdk.realtime // WebSocket 实时数据
249
+ sdk.smartMoney // 聪明钱跟踪和跟单交易
250
+ sdk.dataApi // 直接访问 Data API
251
+ sdk.gammaApi // 直接访问 Gamma API
252
+ sdk.subgraph // 通过 Goldsky 访问链上数据
253
+
254
+ // 便捷方法
255
+ await sdk.getMarket(identifier); // 获取统一市场
256
+ await sdk.getOrderbook(conditionId); // 获取处理后的订单簿
257
+ await sdk.detectArbitrage(conditionId); // 检测套利机会
258
+
259
+ // 清理
260
+ sdk.stop(); // 断开所有服务
261
+ ```
262
+
263
+ ---
264
+
265
+ ### TradingService
266
+
267
+ 使用 `@polymarket/clob-client` 进行订单管理。
268
+
269
+ ```typescript
270
+ import { TradingService } from '@catalyst-team/poly-sdk';
271
+
272
+ const trading = new TradingService(rateLimiter, cache, {
273
+ privateKey: process.env.POLYMARKET_PRIVATE_KEY!,
274
+ });
275
+ await trading.initialize();
276
+
277
+ // ===== 限价单 =====
278
+
279
+ // GTC: 一直有效直到取消
280
+ const gtcOrder = await trading.createLimitOrder({
281
+ tokenId: yesTokenId,
282
+ side: 'BUY',
283
+ price: 0.45,
284
+ size: 10,
285
+ orderType: 'GTC',
286
+ });
287
+
288
+ // GTD: 有效期至指定时间
289
+ const gtdOrder = await trading.createLimitOrder({
290
+ tokenId: yesTokenId,
291
+ side: 'BUY',
292
+ price: 0.45,
293
+ size: 10,
294
+ orderType: 'GTD',
295
+ expiration: Math.floor(Date.now() / 1000) + 3600, // 1 小时
296
+ });
297
+
298
+ // ===== 市价单 =====
299
+
300
+ // FOK: 全部成交或取消
301
+ const fokOrder = await trading.createMarketOrder({
302
+ tokenId: yesTokenId,
303
+ side: 'BUY',
304
+ amount: 10, // $10 USDC
305
+ orderType: 'FOK',
306
+ });
307
+
308
+ // FAK: 部分成交也可以
309
+ const fakOrder = await trading.createMarketOrder({
310
+ tokenId: yesTokenId,
311
+ side: 'SELL',
312
+ amount: 10, // 10 份额
313
+ orderType: 'FAK',
314
+ });
315
+
316
+ // ===== 订单管理 =====
317
+ const openOrders = await trading.getOpenOrders();
318
+ await trading.cancelOrder(orderId);
319
+ await trading.cancelAllOrders();
320
+
321
+ // ===== 奖励(做市激励)=====
322
+ const isScoring = await trading.isOrderScoring(orderId);
323
+ const rewards = await trading.getCurrentRewards();
324
+ const earnings = await trading.getEarnings('2024-12-07');
325
+ ```
326
+
327
+ ---
328
+
329
+ ### MarketService
330
+
331
+ 市场数据、K线、订单簿分析。
332
+
333
+ ```typescript
334
+ import { MarketService } from '@catalyst-team/poly-sdk';
335
+
336
+ // 获取统一市场
337
+ const market = await sdk.markets.getMarket('btc-100k-2024');
338
+
339
+ // 获取 K 线
340
+ const klines = await sdk.markets.getKLines(conditionId, '1h', { limit: 100 });
341
+
342
+ // 获取双 K 线(YES + NO)含价差分析
343
+ const dual = await sdk.markets.getDualKLines(conditionId, '1h');
344
+ console.log(dual.yes); // YES 代币蜡烛图
345
+ console.log(dual.no); // NO 代币蜡烛图
346
+ console.log(dual.spreadAnalysis); // 历史价差(成交价)
347
+ console.log(dual.realtimeSpread); // 实时价差(订单簿)
348
+
349
+ // 获取处理后的订单簿
350
+ const orderbook = await sdk.markets.getProcessedOrderbook(conditionId);
351
+
352
+ // 快速实时价差检查
353
+ const spread = await sdk.markets.getRealtimeSpread(conditionId);
354
+ if (spread.longArbProfit > 0.005) {
355
+ console.log(`多头套利: 买 YES@${spread.yesAsk} + NO@${spread.noAsk}`);
356
+ }
357
+
358
+ // 检测市场信号
359
+ const signals = await sdk.markets.detectMarketSignals(conditionId);
360
+ ```
361
+
362
+ #### 理解 Polymarket 订单簿
363
+
364
+ **重要**: Polymarket 订单簿有镜像特性:
365
+
366
+ ```
367
+ 买 YES @ P = 卖 NO @ (1-P)
368
+ ```
369
+
370
+ 这意味着**同一订单会出现在两个订单簿中**。简单相加会导致重复计算:
371
+
372
+ ```typescript
373
+ // 错误: 重复计算镜像订单
374
+ const askSum = YES.ask + NO.ask; // ~1.998, 而非 ~1.0
375
+
376
+ // 正确: 使用有效价格
377
+ import { getEffectivePrices, checkArbitrage } from '@catalyst-team/poly-sdk';
378
+
379
+ const effective = getEffectivePrices(yesAsk, yesBid, noAsk, noBid);
380
+ // effective.effectiveBuyYes = min(YES.ask, 1 - NO.bid)
381
+ // effective.effectiveBuyNo = min(NO.ask, 1 - YES.bid)
382
+
383
+ const arb = checkArbitrage(yesAsk, noAsk, yesBid, noBid);
384
+ if (arb) {
385
+ console.log(`${arb.type} 套利: ${(arb.profit * 100).toFixed(2)}% 利润`);
386
+ }
387
+ ```
388
+
389
+ ---
390
+
391
+ ### OnchainService
392
+
393
+ 链上操作的统一接口:CTF + 授权 + 交换。
394
+
395
+ ```typescript
396
+ import { OnchainService } from '@catalyst-team/poly-sdk';
397
+
398
+ const onchain = new OnchainService({
399
+ privateKey: process.env.POLYMARKET_PRIVATE_KEY!,
400
+ rpcUrl: 'https://polygon-rpc.com', // 可选
401
+ });
402
+
403
+ // 检查是否准备好进行 CTF 交易
404
+ const status = await onchain.checkReadyForCTF('100');
405
+ if (!status.ready) {
406
+ console.log('问题:', status.issues);
407
+ await onchain.approveAll();
408
+ }
409
+
410
+ // ===== CTF 操作 =====
411
+
412
+ // Split: USDC -> YES + NO 代币
413
+ const splitResult = await onchain.split(conditionId, '100');
414
+
415
+ // Merge: YES + NO -> USDC(用于套利)
416
+ const mergeResult = await onchain.mergeByTokenIds(conditionId, tokenIds, '100');
417
+
418
+ // Redeem: 获胜代币 -> USDC(结算后)
419
+ const redeemResult = await onchain.redeemByTokenIds(conditionId, tokenIds);
420
+
421
+ // ===== DEX 交换 (QuickSwap V3) =====
422
+
423
+ // 将 MATIC 交换为 USDC.e(CTF 需要)
424
+ await onchain.swap('MATIC', 'USDC_E', '50');
425
+
426
+ // 获取余额
427
+ const balances = await onchain.getBalances();
428
+ console.log(`USDC.e: ${balances.usdcE}`);
429
+ ```
430
+
431
+ **注意**: Polymarket CTF 需要 **USDC.e** (0x2791...),不是原生 USDC。
432
+
433
+ ---
434
+
435
+ ### RealtimeServiceV2
436
+
437
+ 使用 `@polymarket/real-time-data-client` 的 WebSocket 实时数据。
438
+
439
+ ```typescript
440
+ import { RealtimeServiceV2 } from '@catalyst-team/poly-sdk';
441
+
442
+ const realtime = new RealtimeServiceV2({
443
+ autoReconnect: true,
444
+ pingInterval: 5000,
445
+ });
446
+
447
+ // 连接并订阅
448
+ realtime.connect();
449
+ realtime.subscribeMarket([yesTokenId, noTokenId]);
450
+
451
+ // 事件 API
452
+ realtime.on('priceUpdate', (update) => {
453
+ console.log(`${update.assetId}: ${update.price}`);
454
+ console.log(`中间价: ${update.midpoint}, 价差: ${update.spread}`);
455
+ });
456
+
457
+ realtime.on('bookUpdate', (update) => {
458
+ // 订单簿自动规范化:
459
+ // bids: 降序(最佳在前), asks: 升序(最佳在前)
460
+ console.log(`最佳买价: ${update.bids[0]?.price}`);
461
+ console.log(`最佳卖价: ${update.asks[0]?.price}`);
462
+ });
463
+
464
+ realtime.on('lastTrade', (trade) => {
465
+ console.log(`成交: ${trade.side} ${trade.size} @ ${trade.price}`);
466
+ });
467
+
468
+ // 获取缓存价格
469
+ const price = realtime.getPrice(yesTokenId);
470
+ const book = realtime.getBook(yesTokenId);
471
+
472
+ // 清理
473
+ realtime.disconnect();
474
+ ```
475
+
476
+ ---
477
+
478
+ ### WalletService
479
+
480
+ 钱包分析和聪明钱评分。
481
+
482
+ ```typescript
483
+ // 获取顶级交易者
484
+ const traders = await sdk.wallets.getTopTraders(10);
485
+
486
+ // 获取钱包画像(含聪明分数)
487
+ const profile = await sdk.wallets.getWalletProfile('0x...');
488
+ console.log(`聪明分数: ${profile.smartScore}/100`);
489
+ console.log(`胜率: ${profile.winRate}%`);
490
+ console.log(`总 PnL: $${profile.totalPnL}`);
491
+
492
+ // 检测卖出活动(用于跟单策略)
493
+ const sellResult = await sdk.wallets.detectSellActivity(
494
+ '0x...',
495
+ conditionId,
496
+ Date.now() - 24 * 60 * 60 * 1000 // 24小时前
497
+ );
498
+ if (sellResult.isSelling) {
499
+ console.log(`已卖出 ${sellResult.percentageSold}%`);
500
+ }
501
+
502
+ // 跟踪群体卖出比例
503
+ const groupSell = await sdk.wallets.trackGroupSellRatio(
504
+ ['0x...', '0x...'],
505
+ conditionId,
506
+ peakValue,
507
+ sinceTimestamp
508
+ );
509
+ ```
510
+
511
+ ---
512
+
513
+ ### SmartMoneyService
514
+
515
+ 聪明钱检测和**实时自动跟单交易**。
516
+
517
+ ```typescript
518
+ import { PolymarketSDK } from '@catalyst-team/poly-sdk';
519
+
520
+ // 一行代码启动(推荐)
521
+ const sdk = await PolymarketSDK.create({ privateKey: '0x...' });
522
+
523
+ // ===== 自动跟单交易 =====
524
+ // 实时跟单 - 聪明钱一旦交易,立即跟单
525
+
526
+ const subscription = await sdk.smartMoney.startAutoCopyTrading({
527
+ // 目标选择
528
+ topN: 50, // 跟踪排行榜前 50 名
529
+ // targetAddresses: ['0x...'], // 或直接指定地址
530
+
531
+ // 订单设置
532
+ sizeScale: 0.1, // 跟单 10% 的交易量
533
+ maxSizePerTrade: 10, // 每笔最多 $10
534
+ maxSlippage: 0.03, // 3% 滑点容忍度
535
+ orderType: 'FOK', // FOK 或 FAK
536
+
537
+ // 过滤
538
+ minTradeSize: 5, // 只跟单 > $5 的交易
539
+ sideFilter: 'BUY', // 只跟单买入(可选)
540
+
541
+ // 测试模式
542
+ dryRun: true, // 设为 false 执行真实交易
543
+
544
+ // 回调
545
+ onTrade: (trade, result) => {
546
+ console.log(`跟单 ${trade.traderName}: ${result.success ? '✅' : '❌'}`);
547
+ },
548
+ onError: (error) => console.error(error),
549
+ });
550
+ // 停止
551
+ subscription.stop();
552
+ sdk.stop();
553
+
554
+ console.log(`正在跟踪 ${subscription.targetAddresses.length} 个钱包`);
555
+
556
+ // 获取统计
557
+ const stats = subscription.getStats();
558
+ console.log(`检测: ${stats.tradesDetected}, 执行: ${stats.tradesExecuted}`);
559
+
560
+ // 停止
561
+ subscription.stop();
562
+ sdk.stop();
563
+ ```
564
+
565
+ > **注意**: Polymarket 最小订单金额为 **$1**。低于 $1 的订单会被自动跳过。
566
+
567
+ 📁 **完整示例**: 查看 [scripts/smart-money/](scripts/smart-money/) 获取完整可运行的脚本:
568
+ - `04-auto-copy-trading.ts` - 完整功能的自动跟单
569
+ - `05-auto-copy-simple.ts` - 简化的 SDK 用法
570
+ - `06-real-copy-test.ts` - 真实交易测试
571
+
572
+ ---
573
+
574
+ ### ArbitrageService
575
+
576
+ 实时套利检测、执行和仓位管理。
577
+
578
+ ```typescript
579
+ import { ArbitrageService } from '@catalyst-team/poly-sdk';
580
+
581
+ const arbService = new ArbitrageService({
582
+ privateKey: process.env.POLY_PRIVKEY,
583
+ profitThreshold: 0.005, // 最小 0.5% 利润
584
+ minTradeSize: 5, // 最小 $5
585
+ maxTradeSize: 100, // 最大 $100
586
+ autoExecute: true, // 自动执行机会
587
+
588
+ // 再平衡器: 自动维持 USDC/代币比例
589
+ enableRebalancer: true,
590
+ minUsdcRatio: 0.2, // 最小 20% USDC
591
+ maxUsdcRatio: 0.8, // 最大 80% USDC
592
+ targetUsdcRatio: 0.5, // 再平衡目标
593
+
594
+ // 执行安全
595
+ sizeSafetyFactor: 0.8, // 使用 80% 订单簿深度
596
+ autoFixImbalance: true, // 自动修复部分成交
597
+ });
598
+
599
+ // 监听事件
600
+ arbService.on('opportunity', (opp) => {
601
+ console.log(`${opp.type.toUpperCase()} 套利: ${opp.profitPercent.toFixed(2)}%`);
602
+ });
603
+
604
+ arbService.on('execution', (result) => {
605
+ if (result.success) {
606
+ console.log(`已执行: $${result.profit.toFixed(2)} 利润`);
607
+ }
608
+ });
609
+
610
+ // ===== 工作流程 =====
611
+
612
+ // 1. 扫描市场寻找机会
613
+ const results = await arbService.scanMarkets({ minVolume24h: 5000 }, 0.005);
614
+
615
+ // 2. 开始监控最佳市场
616
+ const best = await arbService.findAndStart(0.005);
617
+ console.log(`已启动: ${best.market.name} (+${best.profitPercent.toFixed(2)}%)`);
618
+
619
+ // 3. 运行一段时间...
620
+ await new Promise(r => setTimeout(r, 60 * 60 * 1000)); // 1 小时
621
+
622
+ // 4. 停止并清仓
623
+ await arbService.stop();
624
+ const clearResult = await arbService.clearPositions(best.market, true);
625
+ console.log(`已回收: $${clearResult.totalUsdcRecovered.toFixed(2)}`);
626
+ ```
627
+
628
+ ---
629
+
630
+ ## 底层客户端
631
+
632
+ 高级用户可直接访问 API:
633
+
634
+ ```typescript
635
+ import {
636
+ DataApiClient, // 持仓、交易、排行榜
637
+ GammaApiClient, // 市场、事件、搜索
638
+ SubgraphClient, // 通过 Goldsky 访问链上数据
639
+ CTFClient, // CTF 合约操作
640
+ BridgeClient, // 跨链充值
641
+ SwapService, // Polygon DEX 交换
642
+ } from '@catalyst-team/poly-sdk';
643
+
644
+ // Data API
645
+ const positions = await sdk.dataApi.getPositions('0x...');
646
+ const trades = await sdk.dataApi.getTrades('0x...');
647
+ const leaderboard = await sdk.dataApi.getLeaderboard();
648
+
649
+ // Gamma API
650
+ const markets = await sdk.gammaApi.searchMarkets({ query: 'bitcoin' });
651
+ const trending = await sdk.gammaApi.getTrendingMarkets(10);
652
+ const events = await sdk.gammaApi.getEvents({ limit: 20 });
653
+
654
+ // Subgraph(链上数据)
655
+ const userPositions = await sdk.subgraph.getUserPositions(address);
656
+ const isResolved = await sdk.subgraph.isConditionResolved(conditionId);
657
+ const globalOI = await sdk.subgraph.getGlobalOpenInterest();
658
+ ```
659
+
660
+ ---
661
+
662
+ ## 破坏性变更 (v0.3.0)
663
+
664
+ ### `UnifiedMarket.tokens` 现在是数组
665
+
666
+ **之前 (v0.2.x)**:
667
+ ```typescript
668
+ // 带 yes/no 属性的对象
669
+ const yesPrice = market.tokens.yes.price;
670
+ const noPrice = market.tokens.no.price;
671
+ ```
672
+
673
+ **之后 (v0.3.0)**:
674
+ ```typescript
675
+ // MarketToken 对象数组
676
+ const yesToken = market.tokens.find(t => t.outcome === 'Yes');
677
+ const noToken = market.tokens.find(t => t.outcome === 'No');
678
+
679
+ const yesPrice = yesToken?.price;
680
+ const noPrice = noToken?.price;
681
+ ```
682
+
683
+ ### 迁移指南
684
+
685
+ ```typescript
686
+ // 迁移辅助函数
687
+ function getTokenPrice(market: UnifiedMarket, outcome: 'Yes' | 'No'): number {
688
+ return market.tokens.find(t => t.outcome === outcome)?.price ?? 0;
689
+ }
690
+
691
+ // 使用
692
+ const yesPrice = getTokenPrice(market, 'Yes');
693
+ const noPrice = getTokenPrice(market, 'No');
694
+ ```
695
+
696
+ **为什么改变?** 数组格式更好地支持多结果市场,并且与 Polymarket API 响应格式更一致。
697
+
698
+ ---
699
+
700
+ ## 示例
701
+
702
+ 运行示例:
703
+
704
+ ```bash
705
+ pnpm example:basic # 基础用法
706
+ pnpm example:smart-money # 聪明钱分析
707
+ pnpm example:trading # 交易订单
708
+ pnpm example:realtime # WebSocket 推送
709
+ pnpm example:arb-service # 套利服务
710
+ ```
711
+
712
+ | 示例 | 描述 |
713
+ |------|------|
714
+ | [01-basic-usage.ts](examples/01-basic-usage.ts) | 获取市场、订单簿、检测套利 |
715
+ | [02-smart-money.ts](examples/02-smart-money.ts) | 顶级交易者、钱包画像、聪明分数 |
716
+ | [03-market-analysis.ts](examples/03-market-analysis.ts) | 市场信号、成交量分析 |
717
+ | [04-kline-aggregation.ts](examples/04-kline-aggregation.ts) | 从成交构建 OHLCV 蜡烛图 |
718
+ | [05-follow-wallet-strategy.ts](examples/05-follow-wallet-strategy.ts) | 跟踪聪明钱、检测退出 |
719
+ | [06-services-demo.ts](examples/06-services-demo.ts) | 所有 SDK 服务实战 |
720
+ | [07-realtime-websocket.ts](examples/07-realtime-websocket.ts) | 实时价格推送、订单簿更新 |
721
+ | [08-trading-orders.ts](examples/08-trading-orders.ts) | GTC、GTD、FOK、FAK 订单类型 |
722
+ | [09-rewards-tracking.ts](examples/09-rewards-tracking.ts) | 做市激励、收益 |
723
+ | [10-ctf-operations.ts](examples/10-ctf-operations.ts) | Split、merge、redeem 代币 |
724
+ | [11-live-arbitrage-scan.ts](examples/11-live-arbitrage-scan.ts) | 扫描市场寻找机会 |
725
+ | [12-trending-arb-monitor.ts](examples/12-trending-arb-monitor.ts) | 实时热门监控 |
726
+ | [13-arbitrage-service.ts](examples/13-arbitrage-service.ts) | 完整套利工作流程 |
727
+
728
+ ---
729
+
730
+ ## API 参考
731
+
732
+ 详细 API 文档见:
733
+
734
+ - [docs/00-design.md](docs/00-design.md) - 架构设计
735
+ - [docs/02-API.md](docs/02-API.md) - 完整 API 参考
736
+ - [docs/01-polymarket-orderbook-arbitrage.md](docs/01-polymarket-orderbook-arbitrage.md) - 订单簿镜像与套利
737
+
738
+ ### 类型导出
739
+
740
+ ```typescript
741
+ import type {
742
+ // 核心类型
743
+ UnifiedMarket,
744
+ MarketToken,
745
+ ProcessedOrderbook,
746
+ ArbitrageOpportunity,
747
+ EffectivePrices,
748
+
749
+ // 交易
750
+ Side,
751
+ OrderType,
752
+ Order,
753
+ OrderResult,
754
+ LimitOrderParams,
755
+ MarketOrderParams,
756
+
757
+ // K 线
758
+ KLineInterval,
759
+ KLineCandle,
760
+ DualKLineData,
761
+ SpreadDataPoint,
762
+
763
+ // WebSocket
764
+ PriceUpdate,
765
+ BookUpdate,
766
+ OrderbookSnapshot,
767
+
768
+ // 钱包
769
+ WalletProfile,
770
+ SellActivityResult,
771
+
772
+ // 聪明钱
773
+ SmartMoneyWallet,
774
+ SmartMoneyTrade,
775
+ AutoCopyTradingOptions,
776
+ AutoCopyTradingStats,
777
+ AutoCopyTradingSubscription,
778
+
779
+ // CTF
780
+ SplitResult,
781
+ MergeResult,
782
+ RedeemResult,
783
+
784
+ // 套利
785
+ ArbitrageMarketConfig,
786
+ ArbitrageServiceConfig,
787
+ ScanResult,
788
+ ClearPositionResult,
789
+ } from '@catalyst-team/poly-sdk';
790
+ ```
791
+
792
+ ---
793
+
794
+ ## 依赖
795
+
796
+ - `@polymarket/clob-client` - 官方 CLOB 交易客户端
797
+ - `@polymarket/real-time-data-client` - 官方 WebSocket 客户端
798
+ - `ethers@5` - 区块链交互
799
+ - `bottleneck` - 速率限制
800
+
801
+ ---
802
+
803
+ ## 许可证
804
+
805
+ MIT