@catalyst-team/poly-sdk 0.1.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 (244) hide show
  1. package/.env +0 -0
  2. package/README.md +803 -0
  3. package/dist/__tests__/clob-api.test.d.ts +5 -0
  4. package/dist/__tests__/clob-api.test.d.ts.map +1 -0
  5. package/dist/__tests__/clob-api.test.js +240 -0
  6. package/dist/__tests__/clob-api.test.js.map +1 -0
  7. package/dist/__tests__/integration/bridge-client.integration.test.d.ts +11 -0
  8. package/dist/__tests__/integration/bridge-client.integration.test.d.ts.map +1 -0
  9. package/dist/__tests__/integration/bridge-client.integration.test.js +260 -0
  10. package/dist/__tests__/integration/bridge-client.integration.test.js.map +1 -0
  11. package/dist/__tests__/integration/clob-api.integration.test.d.ts +13 -0
  12. package/dist/__tests__/integration/clob-api.integration.test.d.ts.map +1 -0
  13. package/dist/__tests__/integration/clob-api.integration.test.js +170 -0
  14. package/dist/__tests__/integration/clob-api.integration.test.js.map +1 -0
  15. package/dist/__tests__/integration/ctf-client.integration.test.d.ts +17 -0
  16. package/dist/__tests__/integration/ctf-client.integration.test.d.ts.map +1 -0
  17. package/dist/__tests__/integration/ctf-client.integration.test.js +234 -0
  18. package/dist/__tests__/integration/ctf-client.integration.test.js.map +1 -0
  19. package/dist/__tests__/integration/data-api.integration.test.d.ts +9 -0
  20. package/dist/__tests__/integration/data-api.integration.test.d.ts.map +1 -0
  21. package/dist/__tests__/integration/data-api.integration.test.js +161 -0
  22. package/dist/__tests__/integration/data-api.integration.test.js.map +1 -0
  23. package/dist/__tests__/integration/gamma-api.integration.test.d.ts +9 -0
  24. package/dist/__tests__/integration/gamma-api.integration.test.d.ts.map +1 -0
  25. package/dist/__tests__/integration/gamma-api.integration.test.js +170 -0
  26. package/dist/__tests__/integration/gamma-api.integration.test.js.map +1 -0
  27. package/dist/__tests__/test-utils.d.ts +92 -0
  28. package/dist/__tests__/test-utils.d.ts.map +1 -0
  29. package/dist/__tests__/test-utils.js +143 -0
  30. package/dist/__tests__/test-utils.js.map +1 -0
  31. package/dist/clients/bridge-client.d.ts +388 -0
  32. package/dist/clients/bridge-client.d.ts.map +1 -0
  33. package/dist/clients/bridge-client.js +587 -0
  34. package/dist/clients/bridge-client.js.map +1 -0
  35. package/dist/clients/clob-api.d.ts +318 -0
  36. package/dist/clients/clob-api.d.ts.map +1 -0
  37. package/dist/clients/clob-api.js +388 -0
  38. package/dist/clients/clob-api.js.map +1 -0
  39. package/dist/clients/ctf-client.d.ts +473 -0
  40. package/dist/clients/ctf-client.d.ts.map +1 -0
  41. package/dist/clients/ctf-client.js +915 -0
  42. package/dist/clients/ctf-client.js.map +1 -0
  43. package/dist/clients/data-api.d.ts +134 -0
  44. package/dist/clients/data-api.d.ts.map +1 -0
  45. package/dist/clients/data-api.js +265 -0
  46. package/dist/clients/data-api.js.map +1 -0
  47. package/dist/clients/gamma-api.d.ts +401 -0
  48. package/dist/clients/gamma-api.d.ts.map +1 -0
  49. package/dist/clients/gamma-api.js +352 -0
  50. package/dist/clients/gamma-api.js.map +1 -0
  51. package/dist/clients/trading-client.d.ts +252 -0
  52. package/dist/clients/trading-client.d.ts.map +1 -0
  53. package/dist/clients/trading-client.js +543 -0
  54. package/dist/clients/trading-client.js.map +1 -0
  55. package/dist/clients/websocket-manager.d.ts +100 -0
  56. package/dist/clients/websocket-manager.d.ts.map +1 -0
  57. package/dist/clients/websocket-manager.js +193 -0
  58. package/dist/clients/websocket-manager.js.map +1 -0
  59. package/dist/core/cache-adapter-bridge.d.ts +36 -0
  60. package/dist/core/cache-adapter-bridge.d.ts.map +1 -0
  61. package/dist/core/cache-adapter-bridge.js +81 -0
  62. package/dist/core/cache-adapter-bridge.js.map +1 -0
  63. package/dist/core/cache.d.ts +40 -0
  64. package/dist/core/cache.d.ts.map +1 -0
  65. package/dist/core/cache.js +71 -0
  66. package/dist/core/cache.js.map +1 -0
  67. package/dist/core/errors.d.ts +38 -0
  68. package/dist/core/errors.d.ts.map +1 -0
  69. package/dist/core/errors.js +84 -0
  70. package/dist/core/errors.js.map +1 -0
  71. package/dist/core/rate-limiter.d.ts +31 -0
  72. package/dist/core/rate-limiter.d.ts.map +1 -0
  73. package/dist/core/rate-limiter.js +70 -0
  74. package/dist/core/rate-limiter.js.map +1 -0
  75. package/dist/core/types.d.ts +314 -0
  76. package/dist/core/types.d.ts.map +1 -0
  77. package/dist/core/types.js +19 -0
  78. package/dist/core/types.js.map +1 -0
  79. package/dist/core/unified-cache.d.ts +63 -0
  80. package/dist/core/unified-cache.d.ts.map +1 -0
  81. package/dist/core/unified-cache.js +114 -0
  82. package/dist/core/unified-cache.js.map +1 -0
  83. package/dist/index.d.ts +94 -0
  84. package/dist/index.d.ts.map +1 -0
  85. package/dist/index.js +258 -0
  86. package/dist/index.js.map +1 -0
  87. package/dist/mcp/errors.d.ts +33 -0
  88. package/dist/mcp/errors.d.ts.map +1 -0
  89. package/dist/mcp/errors.js +86 -0
  90. package/dist/mcp/errors.js.map +1 -0
  91. package/dist/mcp/index.d.ts +62 -0
  92. package/dist/mcp/index.d.ts.map +1 -0
  93. package/dist/mcp/index.js +173 -0
  94. package/dist/mcp/index.js.map +1 -0
  95. package/dist/mcp/server.d.ts +17 -0
  96. package/dist/mcp/server.d.ts.map +1 -0
  97. package/dist/mcp/server.js +155 -0
  98. package/dist/mcp/server.js.map +1 -0
  99. package/dist/mcp/tools/guide.d.ts +12 -0
  100. package/dist/mcp/tools/guide.d.ts.map +1 -0
  101. package/dist/mcp/tools/guide.js +801 -0
  102. package/dist/mcp/tools/guide.js.map +1 -0
  103. package/dist/mcp/tools/index.d.ts +11 -0
  104. package/dist/mcp/tools/index.d.ts.map +1 -0
  105. package/dist/mcp/tools/index.js +27 -0
  106. package/dist/mcp/tools/index.js.map +1 -0
  107. package/dist/mcp/tools/market.d.ts +11 -0
  108. package/dist/mcp/tools/market.d.ts.map +1 -0
  109. package/dist/mcp/tools/market.js +314 -0
  110. package/dist/mcp/tools/market.js.map +1 -0
  111. package/dist/mcp/tools/order.d.ts +10 -0
  112. package/dist/mcp/tools/order.d.ts.map +1 -0
  113. package/dist/mcp/tools/order.js +258 -0
  114. package/dist/mcp/tools/order.js.map +1 -0
  115. package/dist/mcp/tools/trade.d.ts +38 -0
  116. package/dist/mcp/tools/trade.d.ts.map +1 -0
  117. package/dist/mcp/tools/trade.js +314 -0
  118. package/dist/mcp/tools/trade.js.map +1 -0
  119. package/dist/mcp/tools/trader.d.ts +11 -0
  120. package/dist/mcp/tools/trader.d.ts.map +1 -0
  121. package/dist/mcp/tools/trader.js +277 -0
  122. package/dist/mcp/tools/trader.js.map +1 -0
  123. package/dist/mcp/tools/wallet.d.ts +274 -0
  124. package/dist/mcp/tools/wallet.d.ts.map +1 -0
  125. package/dist/mcp/tools/wallet.js +579 -0
  126. package/dist/mcp/tools/wallet.js.map +1 -0
  127. package/dist/mcp/types.d.ts +413 -0
  128. package/dist/mcp/types.d.ts.map +1 -0
  129. package/dist/mcp/types.js +5 -0
  130. package/dist/mcp/types.js.map +1 -0
  131. package/dist/services/authorization-service.d.ts +97 -0
  132. package/dist/services/authorization-service.d.ts.map +1 -0
  133. package/dist/services/authorization-service.js +279 -0
  134. package/dist/services/authorization-service.js.map +1 -0
  135. package/dist/services/market-service.d.ts +108 -0
  136. package/dist/services/market-service.d.ts.map +1 -0
  137. package/dist/services/market-service.js +458 -0
  138. package/dist/services/market-service.js.map +1 -0
  139. package/dist/services/realtime-service.d.ts +82 -0
  140. package/dist/services/realtime-service.d.ts.map +1 -0
  141. package/dist/services/realtime-service.js +150 -0
  142. package/dist/services/realtime-service.js.map +1 -0
  143. package/dist/services/swap-service.d.ts +217 -0
  144. package/dist/services/swap-service.d.ts.map +1 -0
  145. package/dist/services/swap-service.js +695 -0
  146. package/dist/services/swap-service.js.map +1 -0
  147. package/dist/services/wallet-service.d.ts +94 -0
  148. package/dist/services/wallet-service.d.ts.map +1 -0
  149. package/dist/services/wallet-service.js +173 -0
  150. package/dist/services/wallet-service.js.map +1 -0
  151. package/dist/utils/price-utils.d.ts +153 -0
  152. package/dist/utils/price-utils.d.ts.map +1 -0
  153. package/dist/utils/price-utils.js +236 -0
  154. package/dist/utils/price-utils.js.map +1 -0
  155. package/docs/00-design.md +760 -0
  156. package/docs/01-mcp.md +2041 -0
  157. package/docs/02-API.md +1148 -0
  158. package/docs/e2e/01-trader-tools.md +159 -0
  159. package/docs/e2e/02-market-tools.md +180 -0
  160. package/docs/e2e/03-order-tools.md +166 -0
  161. package/docs/e2e/04-wallet-tools.md +224 -0
  162. package/docs/e2e/05-trading-tools.md +327 -0
  163. package/docs/e2e/06-integration-scenarios.md +481 -0
  164. package/docs/e2e/coordinator.md +376 -0
  165. package/examples/01-basic-usage.ts +68 -0
  166. package/examples/02-smart-money.ts +95 -0
  167. package/examples/03-market-analysis.ts +108 -0
  168. package/examples/04-kline-aggregation.ts +158 -0
  169. package/examples/05-follow-wallet-strategy.ts +156 -0
  170. package/examples/06-services-demo.ts +124 -0
  171. package/examples/07-realtime-websocket.ts +117 -0
  172. package/examples/08-trading-orders.ts +278 -0
  173. package/examples/09-rewards-tracking.ts +187 -0
  174. package/examples/10-ctf-operations.ts +336 -0
  175. package/examples/11-live-arbitrage-scan.ts +221 -0
  176. package/examples/12-trending-arb-monitor.ts +406 -0
  177. package/examples/README.md +179 -0
  178. package/package.json +62 -0
  179. package/scripts/README.md +163 -0
  180. package/scripts/approvals/approve-erc1155.ts +129 -0
  181. package/scripts/approvals/approve-neg-risk-erc1155.ts +149 -0
  182. package/scripts/approvals/approve-neg-risk.ts +102 -0
  183. package/scripts/approvals/check-all-allowances.ts +150 -0
  184. package/scripts/approvals/check-allowance.ts +129 -0
  185. package/scripts/approvals/check-ctf-approval.ts +158 -0
  186. package/scripts/datas/001-report.md +486 -0
  187. package/scripts/datas/clone-modal-screenshot.png +0 -0
  188. package/scripts/deposit/deposit-native-usdc.ts +179 -0
  189. package/scripts/deposit/deposit-usdc.ts +155 -0
  190. package/scripts/deposit/swap-usdc-to-usdce.ts +375 -0
  191. package/scripts/research/research-markets.ts +166 -0
  192. package/scripts/trading/check-orders.ts +50 -0
  193. package/scripts/trading/sell-nvidia-positions.ts +206 -0
  194. package/scripts/trading/test-order.ts +172 -0
  195. package/scripts/truth.md +440 -0
  196. package/scripts/verify/test-approve-trading.ts +98 -0
  197. package/scripts/verify/test-provider-fix.ts +43 -0
  198. package/scripts/verify/test-search-mcp.ts +113 -0
  199. package/scripts/verify/verify-all-apis.ts +160 -0
  200. package/scripts/wallet/check-wallet-balances.ts +75 -0
  201. package/scripts/wallet/test-wallet-operations.ts +191 -0
  202. package/scripts/wallet/verify-wallet-tools.ts +124 -0
  203. package/src/__tests__/clob-api.test.ts +301 -0
  204. package/src/__tests__/integration/bridge-client.integration.test.ts +314 -0
  205. package/src/__tests__/integration/clob-api.integration.test.ts +218 -0
  206. package/src/__tests__/integration/ctf-client.integration.test.ts +331 -0
  207. package/src/__tests__/integration/data-api.integration.test.ts +194 -0
  208. package/src/__tests__/integration/gamma-api.integration.test.ts +206 -0
  209. package/src/__tests__/test-utils.ts +170 -0
  210. package/src/clients/bridge-client.ts +841 -0
  211. package/src/clients/clob-api.ts +629 -0
  212. package/src/clients/ctf-client.ts +1216 -0
  213. package/src/clients/data-api.ts +469 -0
  214. package/src/clients/gamma-api.ts +597 -0
  215. package/src/clients/trading-client.ts +749 -0
  216. package/src/clients/websocket-manager.ts +267 -0
  217. package/src/core/cache-adapter-bridge.ts +94 -0
  218. package/src/core/cache.ts +85 -0
  219. package/src/core/errors.ts +117 -0
  220. package/src/core/rate-limiter.ts +74 -0
  221. package/src/core/types.ts +360 -0
  222. package/src/core/unified-cache.ts +153 -0
  223. package/src/index.ts +455 -0
  224. package/src/mcp/README.md +380 -0
  225. package/src/mcp/errors.ts +124 -0
  226. package/src/mcp/index.ts +309 -0
  227. package/src/mcp/server.ts +183 -0
  228. package/src/mcp/tools/guide.ts +821 -0
  229. package/src/mcp/tools/index.ts +73 -0
  230. package/src/mcp/tools/market.ts +363 -0
  231. package/src/mcp/tools/order.ts +326 -0
  232. package/src/mcp/tools/trade.ts +417 -0
  233. package/src/mcp/tools/trader.ts +322 -0
  234. package/src/mcp/tools/wallet.ts +683 -0
  235. package/src/mcp/types.ts +472 -0
  236. package/src/services/authorization-service.ts +357 -0
  237. package/src/services/market-service.ts +544 -0
  238. package/src/services/realtime-service.ts +196 -0
  239. package/src/services/swap-service.ts +896 -0
  240. package/src/services/wallet-service.ts +259 -0
  241. package/src/utils/price-utils.ts +307 -0
  242. package/tsconfig.json +8 -0
  243. package/vitest.config.ts +19 -0
  244. package/vitest.integration.config.ts +18 -0
@@ -0,0 +1,327 @@
1
+ # Trading Tools E2E Test
2
+
3
+ > 交易执行工具端到端测试
4
+
5
+ ---
6
+
7
+ ## 工具清单
8
+
9
+ | 工具 | 功能 | 认证 | 优先级 |
10
+ |------|------|------|--------|
11
+ | `place_limit_order` | 下限价单 | 私钥 | P2 |
12
+ | `place_market_order` | 下市价单 | 私钥 | P2 |
13
+ | `cancel_order` | 取消订单 | 私钥 | P2 |
14
+ | `get_my_orders` | 查看我的订单 | 私钥 | P2 |
15
+
16
+ ---
17
+
18
+ ## 前置条件
19
+
20
+ 所有交易工具测试需要:
21
+ 1. **配置 `POLY_PRIVATE_KEY`** - 钱包私钥(API credentials 会自动派生)
22
+ 2. 钱包已完成合约授权 (`approve_trading`)
23
+ 3. 钱包有足够的 USDC.e 余额
24
+
25
+ ### 认证机制
26
+
27
+ Trading Tools 使用 `TradingClient`,它会:
28
+ 1. 从 `POLY_PRIVATE_KEY` 创建 Wallet signer
29
+ 2. 自动调用 `createOrDeriveApiKey()` 派生 API credentials
30
+ 3. 使用 L2 认证进行订单操作
31
+
32
+ 无需手动配置 `POLY_API_KEY`、`POLY_API_SECRET`、`POLY_PASSPHRASE`。
33
+
34
+ ---
35
+
36
+ ## 实现状态
37
+
38
+ ### 2025-12-23 实现完成
39
+
40
+ Trading Tools 已从占位符升级为完整实现:
41
+
42
+ ```
43
+ trade.ts (之前)
44
+ ├── checkTradingEnabled() - 基础检查
45
+ ├── handlePlaceLimitOrder() - 抛出 AUTH_REQUIRED
46
+ ├── handlePlaceMarketOrder() - 抛出 AUTH_REQUIRED
47
+ ├── handleCancelOrder() - 抛出 AUTH_REQUIRED
48
+ └── handleGetMyOrders() - 抛出 AUTH_REQUIRED
49
+
50
+ trade.ts (现在)
51
+ ├── getTradingClient() - 懒加载 TradingClient
52
+ ├── handlePlaceLimitOrder() - 使用 TradingClient.createOrder()
53
+ ├── handlePlaceMarketOrder() - 使用 TradingClient.createMarketOrder()
54
+ ├── handleCancelOrder() - 使用 TradingClient.cancelOrder()
55
+ └── handleGetMyOrders() - 使用 TradingClient.getOpenOrders()
56
+ ```
57
+
58
+ ---
59
+
60
+ ## Test Case 1: get_my_orders (只读)
61
+
62
+ ### 1.1 查看活跃订单
63
+ ```
64
+ 调用: get_my_orders(status="LIVE")
65
+ 预期: 返回当前挂单列表
66
+ 验证:
67
+ - orders 是数组
68
+ - 每个订单有 id, status, tokenId, side, price, originalSize, remainingSize, createdAt
69
+ - count 字段表示订单数量
70
+ ```
71
+
72
+ ### 1.2 查看已成交订单
73
+ ```
74
+ 调用: get_my_orders(status="FILLED")
75
+ 预期: 返回空数组 + 提示信息
76
+ 注意: TradingClient 只支持 LIVE 订单查询
77
+ 历史订单需使用 get_trader_trades
78
+ ```
79
+
80
+ ### 1.3 查看已取消订单
81
+ ```
82
+ 调用: get_my_orders(status="CANCELLED")
83
+ 预期: 返回空数组 + 提示信息
84
+ 注意: 同上
85
+ ```
86
+
87
+ ---
88
+
89
+ ## Test Case 2: place_limit_order (危险操作)
90
+
91
+ > 警告: 此测试会产生真实订单
92
+
93
+ ### 2.1 远离市价的限价单
94
+ ```
95
+ 前置:
96
+ - 获取一个市场的最优价格
97
+ - 设置一个远离市价的限价 (如 bestBid - 0.1)
98
+
99
+ 调用: place_limit_order(
100
+ conditionId=<id>,
101
+ outcome="Yes",
102
+ side="BUY",
103
+ price=0.10, // 远低于市价
104
+ size=10
105
+ )
106
+ 预期: 订单创建成功,但不会立即成交
107
+ 验证:
108
+ - success: true
109
+ - orderId 存在
110
+ - get_my_orders 能看到此订单
111
+ ```
112
+
113
+ ### 返回格式
114
+ ```json
115
+ {
116
+ "success": true,
117
+ "orderId": "0x...",
118
+ "market": {
119
+ "conditionId": "0x...",
120
+ "question": "...",
121
+ "outcome": "Yes"
122
+ },
123
+ "order": {
124
+ "side": "BUY",
125
+ "price": 0.10,
126
+ "size": 10,
127
+ "orderType": "GTC"
128
+ },
129
+ "transactionHashes": ["0x..."]
130
+ }
131
+ ```
132
+
133
+ ---
134
+
135
+ ## Test Case 3: cancel_order
136
+
137
+ ### 3.1 取消未成交订单
138
+ ```
139
+ 前置: 使用 Test 2.1 创建的订单
140
+ 调用: cancel_order(orderId=<orderId>)
141
+ 预期: 订单取消成功
142
+ 验证:
143
+ - success: true
144
+ - message 包含成功信息
145
+ ```
146
+
147
+ ### 3.2 取消不存在的订单
148
+ ```
149
+ 调用: cancel_order(orderId="invalid-order-id")
150
+ 预期: 返回失败
151
+ 验证:
152
+ - success: false
153
+ - 错误信息清晰
154
+ ```
155
+
156
+ ---
157
+
158
+ ## Test Case 4: place_market_order (危险操作)
159
+
160
+ > 警告: 此测试会立即执行交易
161
+
162
+ ### 4.1 小额市价买入
163
+ ```
164
+ 前置:
165
+ - 确认钱包有足够余额
166
+ - 选择高流动性市场
167
+
168
+ 调用: place_market_order(
169
+ conditionId=<id>,
170
+ outcome="Yes",
171
+ side="BUY",
172
+ amount=5 // $5 最小测试金额
173
+ )
174
+ 预期: 立即成交
175
+ 验证:
176
+ - success: true
177
+ - priceLimit 接近当前价格
178
+ ```
179
+
180
+ ### 返回格式
181
+ ```json
182
+ {
183
+ "success": true,
184
+ "orderId": "0x...",
185
+ "market": {
186
+ "conditionId": "0x...",
187
+ "question": "...",
188
+ "outcome": "Yes"
189
+ },
190
+ "order": {
191
+ "side": "BUY",
192
+ "amount": 5,
193
+ "priceLimit": 0.55,
194
+ "maxSlippage": 0.02
195
+ },
196
+ "transactionHashes": ["0x..."]
197
+ }
198
+ ```
199
+
200
+ ---
201
+
202
+ ## 安全测试流程
203
+
204
+ 为了安全测试,建议按以下顺序:
205
+
206
+ ```
207
+ 1. get_my_orders - 验证认证正常
208
+
209
+ 2. place_limit_order (远离市价) - 创建测试订单
210
+
211
+ 3. get_my_orders - 确认订单存在
212
+
213
+ 4. cancel_order - 取消测试订单
214
+
215
+ 5. get_my_orders - 确认订单被取消
216
+
217
+ (可选 - 仅在明确需要时)
218
+ 6. place_market_order (小额) - 测试真实交易
219
+ ```
220
+
221
+ ---
222
+
223
+ ## 执行记录
224
+
225
+ ### 2025-12-23 实现验证
226
+
227
+ | Test Case | 状态 | 结果 | 备注 |
228
+ |-----------|------|------|------|
229
+ | 1.1 get_my_orders LIVE | ✅ PASS | 返回空数组 | API Key 自动派生成功 |
230
+ | 1.2 get_my_orders FILLED | ✅ PASS | 返回提示信息 | 仅支持 LIVE 查询,建议用 get_trader_trades |
231
+ | 1.3 get_my_orders CANCELLED | ✅ PASS | 返回提示信息 | 仅支持 LIVE 查询,建议用 get_trader_trades |
232
+ | 2.1 limit_order 远离市价 | ⚠️ BLOCKED | 需要 USDC | 钱包有 200 MATIC 但无 USDC |
233
+ | 2.2 limit_order 接近市价 | ⚠️ BLOCKED | 需要 USDC | 同上 |
234
+ | 3.1 cancel_order 有效 | ⚠️ BLOCKED | 依赖 2.1 | - |
235
+ | 3.2 cancel_order 无效 | ⚠️ BLOCKED | 依赖 2.1 | - |
236
+ | 4.1 market_order 买入 | ⚠️ BLOCKED | 需要 USDC | - |
237
+ | 4.2 market_order 卖出 | ⚠️ BLOCKED | 需要持仓 | - |
238
+
239
+ **结果**: MCP Server 已正确加载新代码。`get_my_orders` 工具功能正常:
240
+ - API credentials 从 POLY_PRIVATE_KEY 自动派生成功
241
+ - LIVE 状态返回当前挂单(空数组表示无挂单)
242
+ - FILLED/CANCELLED 状态返回提示信息,建议使用 `get_trader_trades` 获取历史
243
+
244
+ ### 2025-12-23 完整交易流程测试 ✅ ALL PASS
245
+
246
+ **测试钱包**: `0xed1050F19F2D5890FF29c2f7416de97e68069171`
247
+
248
+ **准备阶段**:
249
+ | Step | 操作 | 结果 |
250
+ |------|------|------|
251
+ | 1 | swap(MATIC→WMATIC, 50) | ✅ 50 WMATIC |
252
+ | 2 | swap(WMATIC→USDC, 50) | ✅ 5.36 USDC |
253
+ | 3 | deposit_usdc(7, NATIVE_USDC) | ✅ Bridge 成功 |
254
+ | 4 | approve_trading() | ✅ 7 项授权完成 |
255
+
256
+ **最终钱包状态**:
257
+ | Token | Balance |
258
+ |-------|---------|
259
+ | MATIC | 149.88 |
260
+ | USDC.e | 6.99 |
261
+
262
+ **授权状态**: ✅ tradingReady: true
263
+
264
+ **交易测试**:
265
+ | Step | 状态 | 说明 |
266
+ |------|------|------|
267
+ | 1. 搜索市场 | ✅ PASS | Bitcoin $1M 市场 |
268
+ | 2. 下限价单 | ✅ PASS | orderId: `0x621b0e25...` |
269
+ | 3. 验证订单 | ✅ PASS | get_my_orders 确认存在 |
270
+ | 4. 取消订单 | ✅ PASS | 取消成功 |
271
+ | 5. 验证取消 | ✅ PASS | get_my_orders 返回空数组 |
272
+
273
+ **测试详情**:
274
+ - 市场: Will Bitcoin reach $1,000,000 by December 31, 2025?
275
+ - conditionId: `0xd8b9ff369452daebce1ac8cb6a29d6817903e85168356c72812317f38e317613`
276
+ - 订单: BUY Yes @ $0.001, size: 10 (远低于市价 $0.0015)
277
+ - orderId: `0x621b0e252bc9116e6c608ef087d24b45ba12d864def370bbdac5695855a28664`
278
+
279
+ ---
280
+
281
+ ## 发现的问题
282
+
283
+ | ID | 问题描述 | 严重性 | 状态 |
284
+ |----|---------|--------|------|
285
+ | 1 | swap WMATIC→USDC_E 失败 | Low | ✅ WORKAROUND (用 WMATIC→USDC→deposit) |
286
+ | 2 | swap USDC→USDC_E 失败 | Low | ✅ WORKAROUND (直接 deposit USDC) |
287
+
288
+ ### 问题说明
289
+
290
+ QuickSwap V3 没有 WMATIC↔USDC_E 和 USDC↔USDC_E 的直接交易池。
291
+
292
+ **解决方案**: 使用 `deposit_usdc(amount, "NATIVE_USDC")` 通过 Polymarket Bridge 自动转换为 USDC.e
293
+
294
+ ---
295
+
296
+ ## 技术实现细节
297
+
298
+ ### TradingClient 初始化流程
299
+
300
+ ```typescript
301
+ // 1. 从 SDK 的 clobApi 获取 signer
302
+ const signer = sdk.clobApi.signer;
303
+
304
+ // 2. 提取私钥
305
+ const privateKey = signer.privateKey;
306
+
307
+ // 3. 创建 TradingClient
308
+ const tradingClient = new TradingClient(rateLimiter, {
309
+ privateKey,
310
+ chainId: 137
311
+ });
312
+
313
+ // 4. 初始化(自动派生 API credentials)
314
+ await tradingClient.initialize();
315
+ // 内部调用: clobClient.createOrDeriveApiKey()
316
+ ```
317
+
318
+ ### 订单创建流程
319
+
320
+ ```typescript
321
+ // place_limit_order 内部流程
322
+ 1. checkTradingEnabled(sdk) // 验证 signer 存在
323
+ 2. validateConditionId/Outcome/Side/Price/Size // 输入验证
324
+ 3. sdk.clobApi.getMarket() // 获取 tokenId
325
+ 4. getTradingClient(sdk) // 获取或初始化 TradingClient
326
+ 5. client.createOrder({...}) // 调用 @polymarket/clob-client
327
+ ```