@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,94 @@
1
+ /**
2
+ * @prediction-router/poly-sdk
3
+ *
4
+ * Unified SDK for Polymarket APIs
5
+ * - Data API (positions, activity, trades, leaderboard)
6
+ * - Gamma API (markets, events, trending)
7
+ * - CLOB API (orderbook, market info, trading)
8
+ * - Services (WalletService, MarketService)
9
+ */
10
+ export { RateLimiter, ApiType } from './core/rate-limiter.js';
11
+ export { Cache, CACHE_TTL } from './core/cache.js';
12
+ export { PolymarketError, ErrorCode, withRetry } from './core/errors.js';
13
+ export * from './core/types.js';
14
+ export type { UnifiedCache } from './core/unified-cache.js';
15
+ export { createUnifiedCache } from './core/unified-cache.js';
16
+ export { DataApiClient } from './clients/data-api.js';
17
+ export type { Position, Activity, Trade, LeaderboardEntry, LeaderboardPage, } from './clients/data-api.js';
18
+ export { GammaApiClient } from './clients/gamma-api.js';
19
+ export type { GammaMarket, GammaEvent, MarketSearchParams, } from './clients/gamma-api.js';
20
+ export { ClobApiClient } from './clients/clob-api.js';
21
+ export type { ClobMarket, ClobToken, Orderbook, OrderbookLevel, } from './clients/clob-api.js';
22
+ export { WalletService } from './services/wallet-service.js';
23
+ export type { WalletProfile, WalletActivitySummary, SellActivityResult, } from './services/wallet-service.js';
24
+ export { MarketService, getIntervalMs as getIntervalMsService } from './services/market-service.js';
25
+ export { WebSocketManager } from './clients/websocket-manager.js';
26
+ export type { WebSocketManagerConfig, WebSocketManagerEvents } from './clients/websocket-manager.js';
27
+ export { RealtimeService } from './services/realtime-service.js';
28
+ export type { Subscription, MarketSubscriptionHandlers } from './services/realtime-service.js';
29
+ export { TradingClient, POLYGON_MAINNET, POLYGON_AMOY } from './clients/trading-client.js';
30
+ export type { Side, OrderType, ApiCredentials, OrderParams, MarketOrderParams, Order, OrderResult, TradeInfo, TradingClientConfig, UserEarning, MarketReward, OrderScoring, } from './clients/trading-client.js';
31
+ export { CTFClient, CTF_CONTRACT, USDC_CONTRACT, // USDC.e (0x2791...) - Required for CTF
32
+ NATIVE_USDC_CONTRACT, // Native USDC (0x3c49...) - NOT for CTF
33
+ NEG_RISK_CTF_EXCHANGE, NEG_RISK_ADAPTER, USDC_DECIMALS, calculateConditionId, parseUsdc, formatUsdc, } from './clients/ctf-client.js';
34
+ export type { CTFConfig, SplitResult, MergeResult, RedeemResult, PositionBalance, MarketResolution, GasEstimate, TransactionStatus, TokenIds, } from './clients/ctf-client.js';
35
+ export { RevertReason } from './clients/ctf-client.js';
36
+ export { BridgeClient, SUPPORTED_CHAINS, BRIDGE_TOKENS, estimateBridgeOutput, getExplorerUrl, depositUsdc, swapAndDeposit, getSupportedDepositTokens, } from './clients/bridge-client.js';
37
+ export type { BridgeSupportedAsset, DepositAddress, CreateDepositResponse, DepositStatus, BridgeConfig, DepositResult, DepositOptions, SwapAndDepositOptions, SwapAndDepositResult, } from './clients/bridge-client.js';
38
+ export { SwapService, QUICKSWAP_ROUTER, POLYGON_TOKENS, TOKEN_DECIMALS, } from './services/swap-service.js';
39
+ export type { SupportedToken, SwapQuote, SwapResult, TokenBalance, TransferResult, } from './services/swap-service.js';
40
+ export { AuthorizationService } from './services/authorization-service.js';
41
+ export type { AllowanceInfo, AllowancesResult, ApprovalTxResult, ApprovalsResult, AuthorizationServiceConfig, } from './services/authorization-service.js';
42
+ export { roundPrice, roundSize, validatePrice, validateSize, calculateBuyAmount, calculateSellPayout, calculateSharesForAmount, calculateSpread, calculateMidpoint, formatPrice, formatUSDC, calculatePnL, checkArbitrage, getEffectivePrices, ROUNDING_CONFIG, } from './utils/price-utils.js';
43
+ export type { TickSize } from './utils/price-utils.js';
44
+ export { createMcpHandler, registerMcpTools, getToolDefinitions, allToolDefinitions, } from './mcp/index.js';
45
+ export type { ToolHandler, ToolDefinition, McpErrorResponse, } from './mcp/index.js';
46
+ export { McpToolError, ErrorCode as McpErrorCode } from './mcp/errors.js';
47
+ import { DataApiClient } from './clients/data-api.js';
48
+ import { GammaApiClient } from './clients/gamma-api.js';
49
+ import { ClobApiClient } from './clients/clob-api.js';
50
+ import { WalletService } from './services/wallet-service.js';
51
+ import { MarketService } from './services/market-service.js';
52
+ import type { UnifiedMarket, ProcessedOrderbook, ArbitrageOpportunity, PolySDKOptions } from './core/types.js';
53
+ export interface PolymarketSDKConfig extends PolySDKOptions {
54
+ }
55
+ export declare class PolymarketSDK {
56
+ private rateLimiter;
57
+ private cache;
58
+ readonly dataApi: DataApiClient;
59
+ readonly gammaApi: GammaApiClient;
60
+ readonly clobApi: ClobApiClient;
61
+ readonly wallets: WalletService;
62
+ readonly markets: MarketService;
63
+ constructor(config?: PolymarketSDKConfig);
64
+ /**
65
+ * Get market by slug or condition ID
66
+ * Uses Gamma for slug, CLOB for conditionId
67
+ */
68
+ getMarket(identifier: string): Promise<UnifiedMarket>;
69
+ private getMarketBySlug;
70
+ private getMarketByConditionId;
71
+ /**
72
+ * Get processed orderbook with analytics
73
+ */
74
+ getOrderbook(conditionId: string): Promise<ProcessedOrderbook>;
75
+ /**
76
+ * Detect arbitrage opportunity
77
+ *
78
+ * 使用有效价格计算套利机会(正确考虑镜像订单)
79
+ * 详细文档见: docs/01-polymarket-orderbook-arbitrage.md
80
+ */
81
+ detectArbitrage(conditionId: string, threshold?: number): Promise<ArbitrageOpportunity | null>;
82
+ private mergeMarkets;
83
+ private fromGammaMarket;
84
+ private fromClobMarket;
85
+ /**
86
+ * Clear all cached data
87
+ */
88
+ clearCache(): void;
89
+ /**
90
+ * Invalidate cache for a specific market
91
+ */
92
+ invalidateMarketCache(conditionId: string): void;
93
+ }
94
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.js ADDED
@@ -0,0 +1,258 @@
1
+ /**
2
+ * @prediction-router/poly-sdk
3
+ *
4
+ * Unified SDK for Polymarket APIs
5
+ * - Data API (positions, activity, trades, leaderboard)
6
+ * - Gamma API (markets, events, trending)
7
+ * - CLOB API (orderbook, market info, trading)
8
+ * - Services (WalletService, MarketService)
9
+ */
10
+ // Core infrastructure
11
+ export { RateLimiter, ApiType } from './core/rate-limiter.js';
12
+ export { Cache, CACHE_TTL } from './core/cache.js';
13
+ export { PolymarketError, ErrorCode, withRetry } from './core/errors.js';
14
+ export * from './core/types.js';
15
+ export { createUnifiedCache } from './core/unified-cache.js';
16
+ // API Clients
17
+ export { DataApiClient } from './clients/data-api.js';
18
+ export { GammaApiClient } from './clients/gamma-api.js';
19
+ export { ClobApiClient } from './clients/clob-api.js';
20
+ // Services
21
+ export { WalletService } from './services/wallet-service.js';
22
+ export { MarketService, getIntervalMs as getIntervalMsService } from './services/market-service.js';
23
+ // Real-time
24
+ export { WebSocketManager } from './clients/websocket-manager.js';
25
+ export { RealtimeService } from './services/realtime-service.js';
26
+ // NOTE: ArbitrageService has been moved to @prediction-router/arb package
27
+ // See packages/arb/src/services/arbitrage-service.ts
28
+ // Trading
29
+ export { TradingClient, POLYGON_MAINNET, POLYGON_AMOY } from './clients/trading-client.js';
30
+ // CTF (Conditional Token Framework)
31
+ // NOTE: USDC_CONTRACT is USDC.e (bridged), required for Polymarket CTF
32
+ // NATIVE_USDC_CONTRACT is native USDC, NOT compatible with CTF
33
+ export { CTFClient, CTF_CONTRACT, USDC_CONTRACT, // USDC.e (0x2791...) - Required for CTF
34
+ NATIVE_USDC_CONTRACT, // Native USDC (0x3c49...) - NOT for CTF
35
+ NEG_RISK_CTF_EXCHANGE, NEG_RISK_ADAPTER, USDC_DECIMALS, calculateConditionId, parseUsdc, formatUsdc, } from './clients/ctf-client.js';
36
+ export { RevertReason } from './clients/ctf-client.js';
37
+ // Bridge (Cross-chain Deposits)
38
+ export { BridgeClient, SUPPORTED_CHAINS, BRIDGE_TOKENS, estimateBridgeOutput, getExplorerUrl, depositUsdc, swapAndDeposit, getSupportedDepositTokens, } from './clients/bridge-client.js';
39
+ // Swap Service (DEX swaps on Polygon)
40
+ export { SwapService, QUICKSWAP_ROUTER, POLYGON_TOKENS, TOKEN_DECIMALS, } from './services/swap-service.js';
41
+ // Authorization (ERC20/ERC1155 Approvals)
42
+ export { AuthorizationService } from './services/authorization-service.js';
43
+ // Price Utilities
44
+ export { roundPrice, roundSize, validatePrice, validateSize, calculateBuyAmount, calculateSellPayout, calculateSharesForAmount, calculateSpread, calculateMidpoint, formatPrice, formatUSDC, calculatePnL, checkArbitrage, getEffectivePrices, ROUNDING_CONFIG, } from './utils/price-utils.js';
45
+ // NOTE: ArbitrageService has been moved to @prediction-router/arb package
46
+ // See packages/arb/src/services/arbitrage-service.ts
47
+ // MCP (Model Context Protocol) Tools
48
+ export { createMcpHandler, registerMcpTools, getToolDefinitions, allToolDefinitions, } from './mcp/index.js';
49
+ export { McpToolError, ErrorCode as McpErrorCode } from './mcp/errors.js';
50
+ // ===== Main SDK Class =====
51
+ import { RateLimiter } from './core/rate-limiter.js';
52
+ import { DataApiClient } from './clients/data-api.js';
53
+ import { GammaApiClient } from './clients/gamma-api.js';
54
+ import { ClobApiClient } from './clients/clob-api.js';
55
+ import { WalletService } from './services/wallet-service.js';
56
+ import { MarketService } from './services/market-service.js';
57
+ import { PolymarketError, ErrorCode } from './core/errors.js';
58
+ import { createUnifiedCache } from './core/unified-cache.js';
59
+ export class PolymarketSDK {
60
+ // Infrastructure
61
+ rateLimiter;
62
+ cache;
63
+ // API Clients
64
+ dataApi;
65
+ gammaApi;
66
+ clobApi;
67
+ // Services
68
+ wallets;
69
+ markets;
70
+ constructor(config = {}) {
71
+ // Initialize infrastructure
72
+ this.rateLimiter = new RateLimiter();
73
+ // Create unified cache (supports both legacy Cache and CacheAdapter)
74
+ this.cache = createUnifiedCache(config.cache);
75
+ // Initialize API clients
76
+ this.dataApi = new DataApiClient(this.rateLimiter, this.cache);
77
+ this.gammaApi = new GammaApiClient(this.rateLimiter, this.cache);
78
+ this.clobApi = new ClobApiClient(this.rateLimiter, this.cache, {
79
+ chainId: config.chainId,
80
+ signer: config.signer,
81
+ creds: config.creds,
82
+ });
83
+ // Initialize services
84
+ this.wallets = new WalletService(this.dataApi, this.cache);
85
+ this.markets = new MarketService(this.gammaApi, this.clobApi, this.dataApi, this.cache);
86
+ }
87
+ // ===== Unified Market Access =====
88
+ /**
89
+ * Get market by slug or condition ID
90
+ * Uses Gamma for slug, CLOB for conditionId
91
+ */
92
+ async getMarket(identifier) {
93
+ const isConditionId = identifier.startsWith('0x') || /^\d+$/.test(identifier);
94
+ if (isConditionId) {
95
+ return this.getMarketByConditionId(identifier);
96
+ }
97
+ else {
98
+ return this.getMarketBySlug(identifier);
99
+ }
100
+ }
101
+ async getMarketBySlug(slug) {
102
+ // Gamma as primary source for slug
103
+ const gammaMarket = await this.gammaApi.getMarketBySlug(slug);
104
+ if (!gammaMarket) {
105
+ throw new PolymarketError(ErrorCode.MARKET_NOT_FOUND, `Market not found: ${slug}`);
106
+ }
107
+ // Enrich with CLOB data
108
+ try {
109
+ const clobMarket = await this.clobApi.getMarket(gammaMarket.conditionId);
110
+ return this.mergeMarkets(gammaMarket, clobMarket);
111
+ }
112
+ catch {
113
+ return this.fromGammaMarket(gammaMarket);
114
+ }
115
+ }
116
+ async getMarketByConditionId(conditionId) {
117
+ // CLOB as primary source for conditionId (more reliable)
118
+ try {
119
+ const clobMarket = await this.clobApi.getMarket(conditionId);
120
+ // Try to enrich with Gamma data
121
+ try {
122
+ const gammaMarket = await this.gammaApi.getMarketByConditionId(conditionId);
123
+ if (gammaMarket) {
124
+ return this.mergeMarkets(gammaMarket, clobMarket);
125
+ }
126
+ }
127
+ catch {
128
+ // Gamma enrichment failed, use CLOB only
129
+ }
130
+ return this.fromClobMarket(clobMarket);
131
+ }
132
+ catch {
133
+ throw new PolymarketError(ErrorCode.MARKET_NOT_FOUND, `Market not found: ${conditionId}`);
134
+ }
135
+ }
136
+ // ===== Orderbook Analysis =====
137
+ /**
138
+ * Get processed orderbook with analytics
139
+ */
140
+ async getOrderbook(conditionId) {
141
+ return this.clobApi.getProcessedOrderbook(conditionId);
142
+ }
143
+ /**
144
+ * Detect arbitrage opportunity
145
+ *
146
+ * 使用有效价格计算套利机会(正确考虑镜像订单)
147
+ * 详细文档见: docs/01-polymarket-orderbook-arbitrage.md
148
+ */
149
+ async detectArbitrage(conditionId, threshold = 0.005) {
150
+ const orderbook = await this.getOrderbook(conditionId);
151
+ const { effectivePrices, longArbProfit, shortArbProfit } = orderbook.summary;
152
+ if (longArbProfit > threshold) {
153
+ return {
154
+ type: 'long',
155
+ profit: longArbProfit,
156
+ action: `Buy YES @ ${effectivePrices.effectiveBuyYes.toFixed(4)} + Buy NO @ ${effectivePrices.effectiveBuyNo.toFixed(4)}, merge for 1 USDC`,
157
+ expectedProfit: longArbProfit,
158
+ };
159
+ }
160
+ if (shortArbProfit > threshold) {
161
+ return {
162
+ type: 'short',
163
+ profit: shortArbProfit,
164
+ action: `Split 1 USDC, Sell YES @ ${effectivePrices.effectiveSellYes.toFixed(4)} + Sell NO @ ${effectivePrices.effectiveSellNo.toFixed(4)}`,
165
+ expectedProfit: shortArbProfit,
166
+ };
167
+ }
168
+ return null;
169
+ }
170
+ // ===== Helper Methods =====
171
+ mergeMarkets(gamma, clob) {
172
+ const yesToken = clob.tokens.find((t) => t.outcome === 'Yes');
173
+ const noToken = clob.tokens.find((t) => t.outcome === 'No');
174
+ return {
175
+ conditionId: clob.conditionId,
176
+ slug: gamma.slug,
177
+ question: clob.question,
178
+ description: clob.description || gamma.description,
179
+ tokens: {
180
+ yes: {
181
+ tokenId: yesToken?.tokenId || '',
182
+ price: yesToken?.price || gamma.outcomePrices[0] || 0.5,
183
+ },
184
+ no: {
185
+ tokenId: noToken?.tokenId || '',
186
+ price: noToken?.price || gamma.outcomePrices[1] || 0.5,
187
+ },
188
+ },
189
+ volume: gamma.volume,
190
+ volume24hr: gamma.volume24hr,
191
+ liquidity: gamma.liquidity,
192
+ spread: gamma.spread,
193
+ active: clob.active,
194
+ closed: clob.closed,
195
+ acceptingOrders: clob.acceptingOrders,
196
+ endDate: clob.endDateIso ? new Date(clob.endDateIso) : new Date(),
197
+ source: 'merged',
198
+ };
199
+ }
200
+ fromGammaMarket(gamma) {
201
+ return {
202
+ conditionId: gamma.conditionId,
203
+ slug: gamma.slug,
204
+ question: gamma.question,
205
+ description: gamma.description,
206
+ tokens: {
207
+ yes: { tokenId: '', price: gamma.outcomePrices[0] || 0.5 },
208
+ no: { tokenId: '', price: gamma.outcomePrices[1] || 0.5 },
209
+ },
210
+ volume: gamma.volume,
211
+ volume24hr: gamma.volume24hr,
212
+ liquidity: gamma.liquidity,
213
+ spread: gamma.spread,
214
+ active: gamma.active,
215
+ closed: gamma.closed,
216
+ acceptingOrders: !gamma.closed,
217
+ endDate: gamma.endDate,
218
+ source: 'gamma',
219
+ };
220
+ }
221
+ fromClobMarket(clob) {
222
+ const yesToken = clob.tokens.find((t) => t.outcome === 'Yes');
223
+ const noToken = clob.tokens.find((t) => t.outcome === 'No');
224
+ return {
225
+ conditionId: clob.conditionId,
226
+ slug: clob.marketSlug,
227
+ question: clob.question,
228
+ description: clob.description,
229
+ tokens: {
230
+ yes: { tokenId: yesToken?.tokenId || '', price: yesToken?.price || 0.5 },
231
+ no: { tokenId: noToken?.tokenId || '', price: noToken?.price || 0.5 },
232
+ },
233
+ volume: 0, // CLOB doesn't have volume
234
+ volume24hr: undefined,
235
+ liquidity: 0,
236
+ spread: undefined,
237
+ active: clob.active,
238
+ closed: clob.closed,
239
+ acceptingOrders: clob.acceptingOrders,
240
+ endDate: clob.endDateIso ? new Date(clob.endDateIso) : new Date(),
241
+ source: 'clob',
242
+ };
243
+ }
244
+ // ===== Cache Management =====
245
+ /**
246
+ * Clear all cached data
247
+ */
248
+ clearCache() {
249
+ this.cache.clear();
250
+ }
251
+ /**
252
+ * Invalidate cache for a specific market
253
+ */
254
+ invalidateMarketCache(conditionId) {
255
+ this.cache.invalidate(conditionId);
256
+ }
257
+ }
258
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,33 @@
1
+ /**
2
+ * MCP Error Handling for Polymarket Tools
3
+ */
4
+ export declare enum ErrorCode {
5
+ INVALID_ADDRESS = "INVALID_ADDRESS",
6
+ MARKET_NOT_FOUND = "MARKET_NOT_FOUND",
7
+ INSUFFICIENT_BALANCE = "INSUFFICIENT_BALANCE",
8
+ ORDER_REJECTED = "ORDER_REJECTED",
9
+ RATE_LIMITED = "RATE_LIMITED",
10
+ AUTH_REQUIRED = "AUTH_REQUIRED",
11
+ INVALID_INPUT = "INVALID_INPUT",
12
+ INTERNAL_ERROR = "INTERNAL_ERROR"
13
+ }
14
+ export declare class McpToolError extends Error {
15
+ code: ErrorCode;
16
+ details?: Record<string, unknown> | undefined;
17
+ constructor(code: ErrorCode, message: string, details?: Record<string, unknown> | undefined);
18
+ toResponse(): {
19
+ error: {
20
+ code: ErrorCode;
21
+ message: string;
22
+ details: Record<string, unknown> | undefined;
23
+ };
24
+ };
25
+ }
26
+ export declare function validateAddress(address: string): void;
27
+ export declare function validateConditionId(conditionId: string): void;
28
+ export declare function validateOutcome(outcome: string): void;
29
+ export declare function validateSide(side: string): void;
30
+ export declare function validatePrice(price: number): void;
31
+ export declare function validatePositiveNumber(value: number, name: string): void;
32
+ export declare function wrapError(err: unknown): McpToolError;
33
+ //# sourceMappingURL=errors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/mcp/errors.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,oBAAY,SAAS;IACnB,eAAe,oBAAoB;IACnC,gBAAgB,qBAAqB;IACrC,oBAAoB,yBAAyB;IAC7C,cAAc,mBAAmB;IACjC,YAAY,iBAAiB;IAC7B,aAAa,kBAAkB;IAC/B,aAAa,kBAAkB;IAC/B,cAAc,mBAAmB;CAClC;AAED,qBAAa,YAAa,SAAQ,KAAK;IAE5B,IAAI,EAAE,SAAS;IAEf,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;gBAFjC,IAAI,EAAE,SAAS,EACtB,OAAO,EAAE,MAAM,EACR,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,YAAA;IAM1C,UAAU;;;;;;;CASX;AAED,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAcrD;AAED,wBAAgB,mBAAmB,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAc7D;AAED,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAQrD;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAQ/C;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAQjD;AAED,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAQxE;AAED,wBAAgB,SAAS,CAAC,GAAG,EAAE,OAAO,GAAG,YAAY,CAepD"}
@@ -0,0 +1,86 @@
1
+ /**
2
+ * MCP Error Handling for Polymarket Tools
3
+ */
4
+ export var ErrorCode;
5
+ (function (ErrorCode) {
6
+ ErrorCode["INVALID_ADDRESS"] = "INVALID_ADDRESS";
7
+ ErrorCode["MARKET_NOT_FOUND"] = "MARKET_NOT_FOUND";
8
+ ErrorCode["INSUFFICIENT_BALANCE"] = "INSUFFICIENT_BALANCE";
9
+ ErrorCode["ORDER_REJECTED"] = "ORDER_REJECTED";
10
+ ErrorCode["RATE_LIMITED"] = "RATE_LIMITED";
11
+ ErrorCode["AUTH_REQUIRED"] = "AUTH_REQUIRED";
12
+ ErrorCode["INVALID_INPUT"] = "INVALID_INPUT";
13
+ ErrorCode["INTERNAL_ERROR"] = "INTERNAL_ERROR";
14
+ })(ErrorCode || (ErrorCode = {}));
15
+ export class McpToolError extends Error {
16
+ code;
17
+ details;
18
+ constructor(code, message, details) {
19
+ super(message);
20
+ this.code = code;
21
+ this.details = details;
22
+ this.name = 'McpToolError';
23
+ }
24
+ toResponse() {
25
+ return {
26
+ error: {
27
+ code: this.code,
28
+ message: this.message,
29
+ details: this.details,
30
+ },
31
+ };
32
+ }
33
+ }
34
+ export function validateAddress(address) {
35
+ if (!address || typeof address !== 'string') {
36
+ throw new McpToolError(ErrorCode.INVALID_ADDRESS, 'Address is required');
37
+ }
38
+ if (!address.startsWith('0x') || address.length !== 42) {
39
+ throw new McpToolError(ErrorCode.INVALID_ADDRESS, 'Address must be a valid Ethereum address (0x...)', { address });
40
+ }
41
+ }
42
+ export function validateConditionId(conditionId) {
43
+ if (!conditionId || typeof conditionId !== 'string') {
44
+ throw new McpToolError(ErrorCode.INVALID_INPUT, 'Condition ID is required');
45
+ }
46
+ if (!conditionId.startsWith('0x')) {
47
+ throw new McpToolError(ErrorCode.INVALID_INPUT, 'Condition ID must start with 0x', { conditionId });
48
+ }
49
+ }
50
+ export function validateOutcome(outcome) {
51
+ if (!['Yes', 'No'].includes(outcome)) {
52
+ throw new McpToolError(ErrorCode.INVALID_INPUT, 'Outcome must be "Yes" or "No"', { outcome });
53
+ }
54
+ }
55
+ export function validateSide(side) {
56
+ if (!['BUY', 'SELL'].includes(side)) {
57
+ throw new McpToolError(ErrorCode.INVALID_INPUT, 'Side must be "BUY" or "SELL"', { side });
58
+ }
59
+ }
60
+ export function validatePrice(price) {
61
+ if (typeof price !== 'number' || price < 0.001 || price > 0.999) {
62
+ throw new McpToolError(ErrorCode.INVALID_INPUT, 'Price must be between 0.001 and 0.999', { price });
63
+ }
64
+ }
65
+ export function validatePositiveNumber(value, name) {
66
+ if (typeof value !== 'number' || value <= 0) {
67
+ throw new McpToolError(ErrorCode.INVALID_INPUT, `${name} must be a positive number`, { [name]: value });
68
+ }
69
+ }
70
+ export function wrapError(err) {
71
+ if (err instanceof McpToolError) {
72
+ return err;
73
+ }
74
+ if (err instanceof Error) {
75
+ // Check for known error types
76
+ if (err.message.includes('rate limit')) {
77
+ return new McpToolError(ErrorCode.RATE_LIMITED, 'Rate limit exceeded');
78
+ }
79
+ if (err.message.includes('not found')) {
80
+ return new McpToolError(ErrorCode.MARKET_NOT_FOUND, err.message);
81
+ }
82
+ return new McpToolError(ErrorCode.INTERNAL_ERROR, err.message);
83
+ }
84
+ return new McpToolError(ErrorCode.INTERNAL_ERROR, 'An unexpected error occurred');
85
+ }
86
+ //# sourceMappingURL=errors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/mcp/errors.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,62 @@
1
+ /**
2
+ * Polymarket MCP Tools
3
+ *
4
+ * This module provides MCP (Model Context Protocol) tools for interacting with Polymarket.
5
+ * It can be used to build an MCP server that exposes Polymarket functionality to AI agents.
6
+ *
7
+ * Tool Categories:
8
+ * - Trader Tools: Analyze traders/wallets (positions, trades, profiles, leaderboard)
9
+ * - Market Tools: Discover and analyze markets (get, search, trending, trades)
10
+ * - Order Tools: Analyze orderbooks (depth, best prices, execution estimates)
11
+ * - Trade Tools: Execute trades (limit orders, market orders) - requires API credentials
12
+ * - Wallet Tools: Deposits and authorization management
13
+ *
14
+ * Usage:
15
+ * ```typescript
16
+ * import { PolymarketSDK } from '@prediction-router/poly-sdk';
17
+ * import { createMcpHandler, allToolDefinitions } from '@prediction-router/poly-sdk/mcp';
18
+ *
19
+ * const sdk = new PolymarketSDK();
20
+ * const handler = createMcpHandler(sdk);
21
+ *
22
+ * // Use with MCP server
23
+ * const result = await handler('get_trader_positions', { address: '0x...' });
24
+ * ```
25
+ */
26
+ import { PolymarketSDK } from '../index.js';
27
+ export * from './types.js';
28
+ export * from './errors.js';
29
+ export { allToolDefinitions } from './tools/index.js';
30
+ export type ToolHandler = (toolName: string, args: Record<string, unknown>) => Promise<unknown>;
31
+ /**
32
+ * Create an MCP tool handler for the given SDK instance
33
+ */
34
+ export declare function createMcpHandler(sdk: PolymarketSDK): ToolHandler;
35
+ /**
36
+ * Get all tool definitions for MCP registration
37
+ */
38
+ export declare function getToolDefinitions(): import("./types.js").ToolDefinition[];
39
+ /**
40
+ * MCP Server factory (for use with @modelcontextprotocol/sdk)
41
+ *
42
+ * Example usage with MCP SDK:
43
+ * ```typescript
44
+ * import { Server } from '@modelcontextprotocol/sdk/server/index.js';
45
+ * import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
46
+ * import { PolymarketSDK } from '@prediction-router/poly-sdk';
47
+ * import { registerMcpTools } from '@prediction-router/poly-sdk/mcp';
48
+ *
49
+ * const server = new Server(
50
+ * { name: 'poly-mcp', version: '1.0.0' },
51
+ * { capabilities: { tools: {} } }
52
+ * );
53
+ *
54
+ * const sdk = new PolymarketSDK();
55
+ * registerMcpTools(server, sdk);
56
+ *
57
+ * const transport = new StdioServerTransport();
58
+ * await server.connect(transport);
59
+ * ```
60
+ */
61
+ export declare function registerMcpTools(server: any, sdk: PolymarketSDK): void;
62
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/mcp/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAwC5C,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAGtD,MAAM,MAAM,WAAW,GAAG,CACxB,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAC1B,OAAO,CAAC,OAAO,CAAC,CAAC;AAEtB;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,aAAa,GAAG,WAAW,CAwKhE;AAED;;GAEG;AACH,wBAAgB,kBAAkB,0CAEjC;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,gBAAgB,CAE9B,MAAM,EAAE,GAAG,EACX,GAAG,EAAE,aAAa,GACjB,IAAI,CA0BN"}