@catalyst-team/poly-sdk 0.1.0 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (201) hide show
  1. package/LICENSE +21 -0
  2. package/README.en.md +538 -0
  3. package/README.md +357 -78
  4. package/docs/00-design.md +1 -1
  5. package/docs/02-API.md +21 -21
  6. package/docs/arb/test-plan.md +387 -0
  7. package/docs/arb/test-results.md +336 -0
  8. package/docs/arbitrage.md +754 -0
  9. package/docs/reports/smart-money-analysis-2025-12-23-cn.md +840 -0
  10. package/examples/13-arbitrage-service.ts +211 -0
  11. package/examples/README.md +1 -1
  12. package/package.json +19 -19
  13. package/scripts/arb/faze-bo3-arb.ts +385 -0
  14. package/scripts/arb/settle-position.ts +190 -0
  15. package/scripts/arb/token-rebalancer.ts +420 -0
  16. package/scripts/arb-tests/01-unit-tests.ts +495 -0
  17. package/scripts/arb-tests/02-integration-tests.ts +412 -0
  18. package/scripts/arb-tests/03-e2e-tests.ts +503 -0
  19. package/scripts/arb-tests/README.md +109 -0
  20. package/scripts/verify/verify-all-apis.ts +1 -1
  21. package/src/clients/clob-api.ts +1 -1
  22. package/src/clients/gamma-api.ts +1 -1
  23. package/src/core/cache-adapter-bridge.ts +1 -1
  24. package/src/core/types.ts +3 -3
  25. package/src/core/unified-cache.ts +1 -1
  26. package/src/index.ts +25 -19
  27. package/src/services/arbitrage-service.ts +1807 -0
  28. package/.env +0 -0
  29. package/dist/__tests__/clob-api.test.d.ts +0 -5
  30. package/dist/__tests__/clob-api.test.d.ts.map +0 -1
  31. package/dist/__tests__/clob-api.test.js +0 -240
  32. package/dist/__tests__/clob-api.test.js.map +0 -1
  33. package/dist/__tests__/integration/bridge-client.integration.test.d.ts +0 -11
  34. package/dist/__tests__/integration/bridge-client.integration.test.d.ts.map +0 -1
  35. package/dist/__tests__/integration/bridge-client.integration.test.js +0 -260
  36. package/dist/__tests__/integration/bridge-client.integration.test.js.map +0 -1
  37. package/dist/__tests__/integration/clob-api.integration.test.d.ts +0 -13
  38. package/dist/__tests__/integration/clob-api.integration.test.d.ts.map +0 -1
  39. package/dist/__tests__/integration/clob-api.integration.test.js +0 -170
  40. package/dist/__tests__/integration/clob-api.integration.test.js.map +0 -1
  41. package/dist/__tests__/integration/ctf-client.integration.test.d.ts +0 -17
  42. package/dist/__tests__/integration/ctf-client.integration.test.d.ts.map +0 -1
  43. package/dist/__tests__/integration/ctf-client.integration.test.js +0 -234
  44. package/dist/__tests__/integration/ctf-client.integration.test.js.map +0 -1
  45. package/dist/__tests__/integration/data-api.integration.test.d.ts +0 -9
  46. package/dist/__tests__/integration/data-api.integration.test.d.ts.map +0 -1
  47. package/dist/__tests__/integration/data-api.integration.test.js +0 -161
  48. package/dist/__tests__/integration/data-api.integration.test.js.map +0 -1
  49. package/dist/__tests__/integration/gamma-api.integration.test.d.ts +0 -9
  50. package/dist/__tests__/integration/gamma-api.integration.test.d.ts.map +0 -1
  51. package/dist/__tests__/integration/gamma-api.integration.test.js +0 -170
  52. package/dist/__tests__/integration/gamma-api.integration.test.js.map +0 -1
  53. package/dist/__tests__/test-utils.d.ts +0 -92
  54. package/dist/__tests__/test-utils.d.ts.map +0 -1
  55. package/dist/__tests__/test-utils.js +0 -143
  56. package/dist/__tests__/test-utils.js.map +0 -1
  57. package/dist/clients/bridge-client.d.ts +0 -388
  58. package/dist/clients/bridge-client.d.ts.map +0 -1
  59. package/dist/clients/bridge-client.js +0 -587
  60. package/dist/clients/bridge-client.js.map +0 -1
  61. package/dist/clients/clob-api.d.ts +0 -318
  62. package/dist/clients/clob-api.d.ts.map +0 -1
  63. package/dist/clients/clob-api.js +0 -388
  64. package/dist/clients/clob-api.js.map +0 -1
  65. package/dist/clients/ctf-client.d.ts +0 -473
  66. package/dist/clients/ctf-client.d.ts.map +0 -1
  67. package/dist/clients/ctf-client.js +0 -915
  68. package/dist/clients/ctf-client.js.map +0 -1
  69. package/dist/clients/data-api.d.ts +0 -134
  70. package/dist/clients/data-api.d.ts.map +0 -1
  71. package/dist/clients/data-api.js +0 -265
  72. package/dist/clients/data-api.js.map +0 -1
  73. package/dist/clients/gamma-api.d.ts +0 -401
  74. package/dist/clients/gamma-api.d.ts.map +0 -1
  75. package/dist/clients/gamma-api.js +0 -352
  76. package/dist/clients/gamma-api.js.map +0 -1
  77. package/dist/clients/trading-client.d.ts +0 -252
  78. package/dist/clients/trading-client.d.ts.map +0 -1
  79. package/dist/clients/trading-client.js +0 -543
  80. package/dist/clients/trading-client.js.map +0 -1
  81. package/dist/clients/websocket-manager.d.ts +0 -100
  82. package/dist/clients/websocket-manager.d.ts.map +0 -1
  83. package/dist/clients/websocket-manager.js +0 -193
  84. package/dist/clients/websocket-manager.js.map +0 -1
  85. package/dist/core/cache-adapter-bridge.d.ts +0 -36
  86. package/dist/core/cache-adapter-bridge.d.ts.map +0 -1
  87. package/dist/core/cache-adapter-bridge.js +0 -81
  88. package/dist/core/cache-adapter-bridge.js.map +0 -1
  89. package/dist/core/cache.d.ts +0 -40
  90. package/dist/core/cache.d.ts.map +0 -1
  91. package/dist/core/cache.js +0 -71
  92. package/dist/core/cache.js.map +0 -1
  93. package/dist/core/errors.d.ts +0 -38
  94. package/dist/core/errors.d.ts.map +0 -1
  95. package/dist/core/errors.js +0 -84
  96. package/dist/core/errors.js.map +0 -1
  97. package/dist/core/rate-limiter.d.ts +0 -31
  98. package/dist/core/rate-limiter.d.ts.map +0 -1
  99. package/dist/core/rate-limiter.js +0 -70
  100. package/dist/core/rate-limiter.js.map +0 -1
  101. package/dist/core/types.d.ts +0 -314
  102. package/dist/core/types.d.ts.map +0 -1
  103. package/dist/core/types.js +0 -19
  104. package/dist/core/types.js.map +0 -1
  105. package/dist/core/unified-cache.d.ts +0 -63
  106. package/dist/core/unified-cache.d.ts.map +0 -1
  107. package/dist/core/unified-cache.js +0 -114
  108. package/dist/core/unified-cache.js.map +0 -1
  109. package/dist/index.d.ts +0 -94
  110. package/dist/index.d.ts.map +0 -1
  111. package/dist/index.js +0 -258
  112. package/dist/index.js.map +0 -1
  113. package/dist/mcp/errors.d.ts +0 -33
  114. package/dist/mcp/errors.d.ts.map +0 -1
  115. package/dist/mcp/errors.js +0 -86
  116. package/dist/mcp/errors.js.map +0 -1
  117. package/dist/mcp/index.d.ts +0 -62
  118. package/dist/mcp/index.d.ts.map +0 -1
  119. package/dist/mcp/index.js +0 -173
  120. package/dist/mcp/index.js.map +0 -1
  121. package/dist/mcp/server.d.ts +0 -17
  122. package/dist/mcp/server.d.ts.map +0 -1
  123. package/dist/mcp/server.js +0 -155
  124. package/dist/mcp/server.js.map +0 -1
  125. package/dist/mcp/tools/guide.d.ts +0 -12
  126. package/dist/mcp/tools/guide.d.ts.map +0 -1
  127. package/dist/mcp/tools/guide.js +0 -801
  128. package/dist/mcp/tools/guide.js.map +0 -1
  129. package/dist/mcp/tools/index.d.ts +0 -11
  130. package/dist/mcp/tools/index.d.ts.map +0 -1
  131. package/dist/mcp/tools/index.js +0 -27
  132. package/dist/mcp/tools/index.js.map +0 -1
  133. package/dist/mcp/tools/market.d.ts +0 -11
  134. package/dist/mcp/tools/market.d.ts.map +0 -1
  135. package/dist/mcp/tools/market.js +0 -314
  136. package/dist/mcp/tools/market.js.map +0 -1
  137. package/dist/mcp/tools/order.d.ts +0 -10
  138. package/dist/mcp/tools/order.d.ts.map +0 -1
  139. package/dist/mcp/tools/order.js +0 -258
  140. package/dist/mcp/tools/order.js.map +0 -1
  141. package/dist/mcp/tools/trade.d.ts +0 -38
  142. package/dist/mcp/tools/trade.d.ts.map +0 -1
  143. package/dist/mcp/tools/trade.js +0 -314
  144. package/dist/mcp/tools/trade.js.map +0 -1
  145. package/dist/mcp/tools/trader.d.ts +0 -11
  146. package/dist/mcp/tools/trader.d.ts.map +0 -1
  147. package/dist/mcp/tools/trader.js +0 -277
  148. package/dist/mcp/tools/trader.js.map +0 -1
  149. package/dist/mcp/tools/wallet.d.ts +0 -274
  150. package/dist/mcp/tools/wallet.d.ts.map +0 -1
  151. package/dist/mcp/tools/wallet.js +0 -579
  152. package/dist/mcp/tools/wallet.js.map +0 -1
  153. package/dist/mcp/types.d.ts +0 -413
  154. package/dist/mcp/types.d.ts.map +0 -1
  155. package/dist/mcp/types.js +0 -5
  156. package/dist/mcp/types.js.map +0 -1
  157. package/dist/services/authorization-service.d.ts +0 -97
  158. package/dist/services/authorization-service.d.ts.map +0 -1
  159. package/dist/services/authorization-service.js +0 -279
  160. package/dist/services/authorization-service.js.map +0 -1
  161. package/dist/services/market-service.d.ts +0 -108
  162. package/dist/services/market-service.d.ts.map +0 -1
  163. package/dist/services/market-service.js +0 -458
  164. package/dist/services/market-service.js.map +0 -1
  165. package/dist/services/realtime-service.d.ts +0 -82
  166. package/dist/services/realtime-service.d.ts.map +0 -1
  167. package/dist/services/realtime-service.js +0 -150
  168. package/dist/services/realtime-service.js.map +0 -1
  169. package/dist/services/swap-service.d.ts +0 -217
  170. package/dist/services/swap-service.d.ts.map +0 -1
  171. package/dist/services/swap-service.js +0 -695
  172. package/dist/services/swap-service.js.map +0 -1
  173. package/dist/services/wallet-service.d.ts +0 -94
  174. package/dist/services/wallet-service.d.ts.map +0 -1
  175. package/dist/services/wallet-service.js +0 -173
  176. package/dist/services/wallet-service.js.map +0 -1
  177. package/dist/utils/price-utils.d.ts +0 -153
  178. package/dist/utils/price-utils.d.ts.map +0 -1
  179. package/dist/utils/price-utils.js +0 -236
  180. package/dist/utils/price-utils.js.map +0 -1
  181. package/docs/01-mcp.md +0 -2041
  182. package/docs/e2e/01-trader-tools.md +0 -159
  183. package/docs/e2e/02-market-tools.md +0 -180
  184. package/docs/e2e/03-order-tools.md +0 -166
  185. package/docs/e2e/04-wallet-tools.md +0 -224
  186. package/docs/e2e/05-trading-tools.md +0 -327
  187. package/docs/e2e/06-integration-scenarios.md +0 -481
  188. package/docs/e2e/coordinator.md +0 -376
  189. package/scripts/truth.md +0 -440
  190. package/src/mcp/README.md +0 -380
  191. package/src/mcp/errors.ts +0 -124
  192. package/src/mcp/index.ts +0 -309
  193. package/src/mcp/server.ts +0 -183
  194. package/src/mcp/tools/guide.ts +0 -821
  195. package/src/mcp/tools/index.ts +0 -73
  196. package/src/mcp/tools/market.ts +0 -363
  197. package/src/mcp/tools/order.ts +0 -326
  198. package/src/mcp/tools/trade.ts +0 -417
  199. package/src/mcp/tools/trader.ts +0 -322
  200. package/src/mcp/tools/wallet.ts +0 -683
  201. package/src/mcp/types.ts +0 -472
@@ -1,417 +0,0 @@
1
- /**
2
- * Trade Tools - MCP tools for trading execution
3
- *
4
- * These tools enable actual trading on Polymarket when private key is configured.
5
- * API credentials are automatically derived from the private key using createOrDeriveApiKey().
6
- *
7
- * Required environment variable:
8
- * - POLY_PRIVATE_KEY: Wallet private key for signing transactions
9
- */
10
-
11
- import type { PolymarketSDK } from '../../index.js';
12
- import type { ToolDefinition } from '../types.js';
13
- import {
14
- validateConditionId,
15
- validateOutcome,
16
- validateSide,
17
- validatePrice,
18
- validatePositiveNumber,
19
- wrapError,
20
- McpToolError,
21
- ErrorCode,
22
- } from '../errors.js';
23
- import { TradingClient, type OrderResult } from '../../clients/trading-client.js';
24
- import { RateLimiter } from '../../core/rate-limiter.js';
25
-
26
- // Singleton trading client instance (lazily initialized)
27
- let tradingClient: TradingClient | null = null;
28
- let tradingClientInitialized = false;
29
-
30
- /**
31
- * Get or create the TradingClient instance
32
- * Uses the signer from SDK's clobApi
33
- */
34
- async function getTradingClient(sdk: PolymarketSDK): Promise<TradingClient> {
35
- // Check if signer is available
36
- const sdkAny = sdk as unknown as { clobApi?: { signer?: unknown; config?: { chainId?: number } } };
37
- const signer = sdkAny.clobApi?.signer;
38
-
39
- if (!signer) {
40
- throw new McpToolError(
41
- ErrorCode.AUTH_REQUIRED,
42
- 'Trading requires a private key. Configure POLY_PRIVATE_KEY environment variable.'
43
- );
44
- }
45
-
46
- // Create trading client if not exists
47
- if (!tradingClient) {
48
- const signerAny = signer as { privateKey?: string };
49
- const privateKey = signerAny.privateKey;
50
-
51
- if (!privateKey) {
52
- throw new McpToolError(
53
- ErrorCode.AUTH_REQUIRED,
54
- 'Cannot extract private key from signer. Ensure POLY_PRIVATE_KEY is configured correctly.'
55
- );
56
- }
57
-
58
- const chainId = sdkAny.clobApi?.config?.chainId || 137;
59
- const rateLimiter = new RateLimiter();
60
-
61
- tradingClient = new TradingClient(rateLimiter, {
62
- privateKey,
63
- chainId,
64
- });
65
- }
66
-
67
- // Initialize if needed
68
- if (!tradingClientInitialized) {
69
- await tradingClient.initialize();
70
- tradingClientInitialized = true;
71
- }
72
-
73
- return tradingClient;
74
- }
75
-
76
- export const tradeToolDefinitions: ToolDefinition[] = [
77
- {
78
- name: 'place_limit_order',
79
- description: 'Place a limit order on a market (requires API key)',
80
- inputSchema: {
81
- type: 'object',
82
- properties: {
83
- conditionId: {
84
- type: 'string',
85
- },
86
- outcome: {
87
- type: 'string',
88
- enum: ['Yes', 'No'],
89
- },
90
- side: {
91
- type: 'string',
92
- enum: ['BUY', 'SELL'],
93
- },
94
- price: {
95
- type: 'number',
96
- description: 'Limit price (0.001 to 0.999)',
97
- },
98
- size: {
99
- type: 'number',
100
- description: 'Number of shares',
101
- },
102
- orderType: {
103
- type: 'string',
104
- enum: ['GTC', 'GTD'],
105
- default: 'GTC',
106
- },
107
- },
108
- required: ['conditionId', 'outcome', 'side', 'price', 'size'],
109
- },
110
- },
111
- {
112
- name: 'place_market_order',
113
- description: 'Place a market order on a market (requires API key)',
114
- inputSchema: {
115
- type: 'object',
116
- properties: {
117
- conditionId: {
118
- type: 'string',
119
- },
120
- outcome: {
121
- type: 'string',
122
- enum: ['Yes', 'No'],
123
- },
124
- side: {
125
- type: 'string',
126
- enum: ['BUY', 'SELL'],
127
- },
128
- amount: {
129
- type: 'number',
130
- description: 'Amount in USDC',
131
- },
132
- maxSlippage: {
133
- type: 'number',
134
- description: 'Maximum acceptable slippage (e.g., 0.02 for 2%)',
135
- default: 0.02,
136
- },
137
- },
138
- required: ['conditionId', 'outcome', 'side', 'amount'],
139
- },
140
- },
141
- {
142
- name: 'cancel_order',
143
- description: 'Cancel an open order (requires API key)',
144
- inputSchema: {
145
- type: 'object',
146
- properties: {
147
- orderId: {
148
- type: 'string',
149
- description: 'Order ID to cancel',
150
- },
151
- },
152
- required: ['orderId'],
153
- },
154
- },
155
- {
156
- name: 'get_my_orders',
157
- description: 'Get your open orders (requires API key)',
158
- inputSchema: {
159
- type: 'object',
160
- properties: {
161
- status: {
162
- type: 'string',
163
- enum: ['LIVE', 'FILLED', 'CANCELLED'],
164
- default: 'LIVE',
165
- },
166
- },
167
- },
168
- },
169
- ];
170
-
171
- // Check if trading is configured (basic check)
172
- function checkTradingEnabled(sdk: PolymarketSDK): void {
173
- if (!sdk.clobApi) {
174
- throw new McpToolError(
175
- ErrorCode.AUTH_REQUIRED,
176
- 'Trading requires SDK to be properly initialized'
177
- );
178
- }
179
-
180
- // Check if signer is available
181
- const sdkAny = sdk as unknown as { clobApi?: { signer?: unknown } };
182
- if (!sdkAny.clobApi?.signer) {
183
- throw new McpToolError(
184
- ErrorCode.AUTH_REQUIRED,
185
- 'Trading requires a private key. Configure POLY_PRIVATE_KEY environment variable.'
186
- );
187
- }
188
- }
189
-
190
- export interface PlaceLimitOrderInput {
191
- conditionId: string;
192
- outcome: 'Yes' | 'No';
193
- side: 'BUY' | 'SELL';
194
- price: number;
195
- size: number;
196
- orderType?: 'GTC' | 'GTD';
197
- }
198
-
199
- export interface PlaceMarketOrderInput {
200
- conditionId: string;
201
- outcome: 'Yes' | 'No';
202
- side: 'BUY' | 'SELL';
203
- amount: number;
204
- maxSlippage?: number;
205
- }
206
-
207
- export interface CancelOrderInput {
208
- orderId: string;
209
- }
210
-
211
- export interface GetMyOrdersInput {
212
- status?: 'LIVE' | 'FILLED' | 'CANCELLED';
213
- }
214
-
215
- export async function handlePlaceLimitOrder(
216
- sdk: PolymarketSDK,
217
- input: PlaceLimitOrderInput
218
- ): Promise<unknown> {
219
- checkTradingEnabled(sdk);
220
- validateConditionId(input.conditionId);
221
- validateOutcome(input.outcome);
222
- validateSide(input.side);
223
- validatePrice(input.price);
224
- validatePositiveNumber(input.size, 'size');
225
-
226
- try {
227
- // Get token ID for the outcome
228
- const market = await sdk.clobApi.getMarket(input.conditionId);
229
- const token = market.tokens.find(
230
- (t) => t.outcome.toLowerCase() === input.outcome.toLowerCase()
231
- );
232
-
233
- if (!token) {
234
- throw new McpToolError(
235
- ErrorCode.MARKET_NOT_FOUND,
236
- `Token for outcome ${input.outcome} not found`
237
- );
238
- }
239
-
240
- // Get trading client (lazily initialized)
241
- const client = await getTradingClient(sdk);
242
-
243
- // Place the limit order
244
- const result: OrderResult = await client.createOrder({
245
- tokenId: token.tokenId,
246
- side: input.side,
247
- price: input.price,
248
- size: input.size,
249
- orderType: input.orderType || 'GTC',
250
- });
251
-
252
- return {
253
- success: result.success,
254
- orderId: result.orderId,
255
- orderIds: result.orderIds,
256
- market: {
257
- conditionId: input.conditionId,
258
- question: market.question,
259
- outcome: input.outcome,
260
- },
261
- order: {
262
- side: input.side,
263
- price: input.price,
264
- size: input.size,
265
- orderType: input.orderType || 'GTC',
266
- },
267
- transactionHashes: result.transactionHashes,
268
- errorMsg: result.errorMsg,
269
- };
270
- } catch (err) {
271
- throw wrapError(err);
272
- }
273
- }
274
-
275
- export async function handlePlaceMarketOrder(
276
- sdk: PolymarketSDK,
277
- input: PlaceMarketOrderInput
278
- ): Promise<unknown> {
279
- checkTradingEnabled(sdk);
280
- validateConditionId(input.conditionId);
281
- validateOutcome(input.outcome);
282
- validateSide(input.side);
283
- validatePositiveNumber(input.amount, 'amount');
284
-
285
- try {
286
- // Get token ID for the outcome
287
- const market = await sdk.clobApi.getMarket(input.conditionId);
288
- const token = market.tokens.find(
289
- (t) => t.outcome.toLowerCase() === input.outcome.toLowerCase()
290
- );
291
-
292
- if (!token) {
293
- throw new McpToolError(
294
- ErrorCode.MARKET_NOT_FOUND,
295
- `Token for outcome ${input.outcome} not found`
296
- );
297
- }
298
-
299
- // Get trading client (lazily initialized)
300
- const client = await getTradingClient(sdk);
301
-
302
- // Get current price for slippage calculation
303
- const currentPrice = token.price;
304
- const maxSlippage = input.maxSlippage || 0.02; // Default 2%
305
-
306
- // Calculate price limit based on side and slippage
307
- // For BUY: max price we're willing to pay = current * (1 + slippage)
308
- // For SELL: min price we're willing to accept = current * (1 - slippage)
309
- const priceLimit = input.side === 'BUY'
310
- ? Math.min(currentPrice * (1 + maxSlippage), 0.999)
311
- : Math.max(currentPrice * (1 - maxSlippage), 0.001);
312
-
313
- // Place the market order
314
- const result: OrderResult = await client.createMarketOrder({
315
- tokenId: token.tokenId,
316
- side: input.side,
317
- amount: input.amount,
318
- price: priceLimit,
319
- orderType: 'FOK', // Fill or Kill for market orders
320
- });
321
-
322
- return {
323
- success: result.success,
324
- orderId: result.orderId,
325
- orderIds: result.orderIds,
326
- market: {
327
- conditionId: input.conditionId,
328
- question: market.question,
329
- outcome: input.outcome,
330
- },
331
- order: {
332
- side: input.side,
333
- amount: input.amount,
334
- priceLimit,
335
- maxSlippage,
336
- },
337
- transactionHashes: result.transactionHashes,
338
- errorMsg: result.errorMsg,
339
- };
340
- } catch (err) {
341
- throw wrapError(err);
342
- }
343
- }
344
-
345
- export async function handleCancelOrder(
346
- sdk: PolymarketSDK,
347
- input: CancelOrderInput
348
- ): Promise<unknown> {
349
- checkTradingEnabled(sdk);
350
-
351
- if (!input.orderId) {
352
- throw new McpToolError(ErrorCode.INVALID_INPUT, 'Order ID is required');
353
- }
354
-
355
- try {
356
- // Get trading client (lazily initialized)
357
- const client = await getTradingClient(sdk);
358
-
359
- // Cancel the order
360
- const result: OrderResult = await client.cancelOrder(input.orderId);
361
-
362
- return {
363
- success: result.success,
364
- orderId: input.orderId,
365
- message: result.success
366
- ? `Order ${input.orderId} cancelled successfully`
367
- : `Failed to cancel order ${input.orderId}`,
368
- };
369
- } catch (err) {
370
- throw wrapError(err);
371
- }
372
- }
373
-
374
- export async function handleGetMyOrders(
375
- sdk: PolymarketSDK,
376
- input: GetMyOrdersInput
377
- ): Promise<unknown> {
378
- checkTradingEnabled(sdk);
379
-
380
- try {
381
- // Get trading client (lazily initialized)
382
- const client = await getTradingClient(sdk);
383
-
384
- // Note: TradingClient only supports getting open (LIVE) orders
385
- // For FILLED/CANCELLED, we would need to query trades history
386
- const status = input.status || 'LIVE';
387
-
388
- if (status !== 'LIVE') {
389
- // For non-LIVE orders, return a note about limitation
390
- return {
391
- orders: [],
392
- status,
393
- note: `Currently only LIVE orders are supported. Use get_trader_trades for historical order information.`,
394
- };
395
- }
396
-
397
- // Get open orders
398
- const orders = await client.getOpenOrders();
399
-
400
- return {
401
- orders: orders.map(o => ({
402
- id: o.id,
403
- status: o.status,
404
- tokenId: o.tokenId,
405
- side: o.side,
406
- price: o.price,
407
- originalSize: o.originalSize,
408
- remainingSize: o.remainingSize,
409
- createdAt: o.createdAt,
410
- })),
411
- count: orders.length,
412
- status: 'LIVE',
413
- };
414
- } catch (err) {
415
- throw wrapError(err);
416
- }
417
- }