@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,391 @@
1
+ /**
2
+ * CLOB API Client for Polymarket
3
+ *
4
+ * The Central Limit Order Book (CLOB) API provides access to Polymarket's
5
+ * trading infrastructure. This client handles market information retrieval
6
+ * and orderbook data.
7
+ *
8
+ * @remarks
9
+ * - Base URL: https://clob.polymarket.com
10
+ * - Rate limits are automatically handled by the RateLimiter
11
+ * - Market data is cached to reduce API calls
12
+ *
13
+ * @example
14
+ * ```typescript
15
+ * import { ClobApiClient, RateLimiter, Cache } from '@catalyst-team/poly-sdk';
16
+ *
17
+ * const client = new ClobApiClient(new RateLimiter(), new Cache());
18
+ *
19
+ * // Get market info
20
+ * const market = await client.getMarket('0x123...');
21
+ * console.log(market.question);
22
+ *
23
+ * // Get orderbook
24
+ * const orderbook = await client.getOrderbook(market.tokens[0].tokenId);
25
+ * console.log('Best bid:', orderbook.bids[0]);
26
+ * ```
27
+ *
28
+ * @see {@link https://docs.polymarket.com/#clob-api CLOB API Documentation}
29
+ *
30
+ * @module clients/clob-api
31
+ */
32
+ import { RateLimiter } from '../core/rate-limiter.js';
33
+ import type { UnifiedCache } from '../core/unified-cache.js';
34
+ import type { ProcessedOrderbook } from '../core/types.js';
35
+ /**
36
+ * Market information from the CLOB API
37
+ *
38
+ * @remarks
39
+ * A market represents a binary prediction market with YES/NO outcomes.
40
+ * Each outcome has its own ERC-1155 token that can be traded.
41
+ */
42
+ export interface ClobMarket {
43
+ conditionId: string;
44
+ questionId?: string;
45
+ marketSlug: string;
46
+ question: string;
47
+ description?: string;
48
+ image?: string;
49
+ icon?: string;
50
+ tokens: ClobToken[];
51
+ tags?: string[];
52
+ active: boolean;
53
+ closed: boolean;
54
+ archived?: boolean;
55
+ acceptingOrders: boolean;
56
+ acceptingOrderTimestamp?: string;
57
+ enableOrderBook?: boolean;
58
+ minimumOrderSize?: number;
59
+ minimumTickSize?: number;
60
+ makerBaseFee?: number;
61
+ takerBaseFee?: number;
62
+ endDateIso?: string | null;
63
+ gameStartTime?: string | null;
64
+ secondsDelay?: number;
65
+ negRisk?: boolean;
66
+ negRiskMarketId?: string;
67
+ negRiskRequestId?: string;
68
+ rewards?: {
69
+ rates?: unknown;
70
+ minSize?: number;
71
+ maxSpread?: number;
72
+ };
73
+ fpmm?: string;
74
+ notificationsEnabled?: boolean;
75
+ is5050Outcome?: boolean;
76
+ }
77
+ /**
78
+ * Token information for a market outcome
79
+ *
80
+ * @remarks
81
+ * Each outcome (YES/NO) has its own ERC-1155 token with a unique ID.
82
+ * The tokenId is used for trading and querying orderbooks.
83
+ */
84
+ export interface ClobToken {
85
+ /**
86
+ * ERC-1155 token ID for this outcome
87
+ * @example "21742633143463906290569050155826241533067272736897614950488156847949938836455"
88
+ */
89
+ tokenId: string;
90
+ /**
91
+ * Outcome name (typically "Yes" or "No")
92
+ */
93
+ outcome: string;
94
+ /**
95
+ * Current mid-market price (0-1)
96
+ * @example 0.65 for 65% probability
97
+ */
98
+ price: number;
99
+ /**
100
+ * Whether this token is the winning outcome (after resolution)
101
+ */
102
+ winner?: boolean;
103
+ }
104
+ /**
105
+ * Single price level in an orderbook
106
+ *
107
+ * @remarks
108
+ * Represents one row in the order book with a price and total size at that price.
109
+ */
110
+ export interface OrderbookLevel {
111
+ /**
112
+ * Price level (0.001 to 0.999)
113
+ * @example 0.55
114
+ */
115
+ price: number;
116
+ /**
117
+ * Total size available at this price (in shares)
118
+ * @example 1500.5
119
+ */
120
+ size: number;
121
+ }
122
+ /**
123
+ * Complete orderbook for a token
124
+ *
125
+ * @remarks
126
+ * The orderbook contains all open orders for a specific outcome token.
127
+ * - Bids are sorted descending (highest bid first)
128
+ * - Asks are sorted ascending (lowest ask first)
129
+ */
130
+ export interface Orderbook {
131
+ /**
132
+ * Buy orders, sorted by price descending (best bid first)
133
+ */
134
+ bids: OrderbookLevel[];
135
+ /**
136
+ * Sell orders, sorted by price ascending (best ask first)
137
+ */
138
+ asks: OrderbookLevel[];
139
+ /**
140
+ * Timestamp when the orderbook was fetched (Unix ms)
141
+ */
142
+ timestamp: number;
143
+ market?: string;
144
+ assetId?: string;
145
+ hash?: string;
146
+ minOrderSize?: string;
147
+ tickSize?: string;
148
+ negRisk?: boolean;
149
+ }
150
+ /**
151
+ * Single price point in a price history
152
+ *
153
+ * @remarks
154
+ * Represents a historical price at a specific timestamp.
155
+ * Used for charting and historical analysis.
156
+ */
157
+ export interface PricePoint {
158
+ /**
159
+ * Unix timestamp (seconds)
160
+ */
161
+ timestamp: number;
162
+ /**
163
+ * Price at this timestamp (0-1)
164
+ */
165
+ price: number;
166
+ }
167
+ /**
168
+ * Dual price history for both YES and NO outcomes
169
+ *
170
+ * @remarks
171
+ * Contains complete price history for both sides of a binary market.
172
+ * Useful for analyzing price movements and correlations.
173
+ */
174
+ export interface DualPriceHistory {
175
+ /**
176
+ * Market condition ID
177
+ */
178
+ conditionId: string;
179
+ /**
180
+ * Market question
181
+ */
182
+ question: string;
183
+ /**
184
+ * YES outcome price history
185
+ */
186
+ yes: {
187
+ tokenId: string;
188
+ history: PricePoint[];
189
+ };
190
+ /**
191
+ * NO outcome price history
192
+ */
193
+ no: {
194
+ tokenId: string;
195
+ history: PricePoint[];
196
+ };
197
+ }
198
+ /**
199
+ * CLOB API client for interacting with Polymarket's orderbook
200
+ *
201
+ * @remarks
202
+ * This client provides read-only access to market data and orderbooks.
203
+ * For trading operations, use {@link TradingClient} instead.
204
+ *
205
+ * @example
206
+ * ```typescript
207
+ * const client = new ClobApiClient(rateLimiter, cache);
208
+ *
209
+ * // Get market details
210
+ * const market = await client.getMarket('0x123...');
211
+ *
212
+ * // Get processed orderbook with analytics
213
+ * const processed = await client.getProcessedOrderbook('0x123...');
214
+ * console.log('Long arb profit:', processed.summary.longArbProfit);
215
+ * ```
216
+ */
217
+ export declare class ClobApiClient {
218
+ private rateLimiter;
219
+ private cache;
220
+ private config?;
221
+ /**
222
+ * Creates a new CLOB API client
223
+ *
224
+ * @param rateLimiter - Rate limiter instance for API throttling
225
+ * @param cache - Cache instance for storing market data (supports both legacy Cache and CacheAdapter)
226
+ * @param config - Optional configuration for trading capabilities
227
+ * @param config.chainId - Polygon chain ID (137 for mainnet, 80002 for Amoy testnet)
228
+ * @param config.signer - Ethers signer for authenticated requests
229
+ * @param config.creds - API credentials for L2 authentication
230
+ */
231
+ constructor(rateLimiter: RateLimiter, cache: UnifiedCache, config?: {
232
+ /** Polygon chain ID (137 = mainnet, 80002 = Amoy testnet) */
233
+ chainId?: number;
234
+ /** Ethers signer for authenticated requests */
235
+ signer?: unknown;
236
+ /** API credentials for L2 authentication */
237
+ creds?: {
238
+ key: string;
239
+ secret: string;
240
+ passphrase: string;
241
+ };
242
+ } | undefined);
243
+ /**
244
+ * Get the signer if configured
245
+ * @returns The signer or undefined if not configured
246
+ */
247
+ get signer(): unknown;
248
+ /**
249
+ * Get market information by condition ID
250
+ *
251
+ * @param conditionId - The unique condition identifier for the market
252
+ * @returns Market information including tokens and status
253
+ *
254
+ * @throws {@link PolymarketError} If the market is not found or API fails
255
+ *
256
+ * @example
257
+ * ```typescript
258
+ * const market = await client.getMarket('0x82ace55...');
259
+ * console.log(market.question); // "Will BTC reach $100k?"
260
+ * console.log(market.tokens[0].tokenId); // YES token ID
261
+ * console.log(market.tokens[1].tokenId); // NO token ID
262
+ * ```
263
+ */
264
+ getMarket(conditionId: string): Promise<ClobMarket>;
265
+ /**
266
+ * Get raw orderbook for a specific token
267
+ *
268
+ * @param tokenId - The ERC-1155 token ID (either YES or NO token)
269
+ * @returns Orderbook with sorted bids and asks
270
+ *
271
+ * @remarks
272
+ * - Bids are sorted descending (highest bid first)
273
+ * - Asks are sorted ascending (lowest ask first)
274
+ * - This returns the raw orderbook for ONE outcome token
275
+ * - For complete market analysis, use {@link getProcessedOrderbook}
276
+ *
277
+ * @throws {@link PolymarketError} If the token is not found or API fails
278
+ *
279
+ * @example
280
+ * ```typescript
281
+ * const orderbook = await client.getOrderbook('21742633...');
282
+ *
283
+ * console.log('Best bid:', orderbook.bids[0]?.price); // e.g., 0.55
284
+ * console.log('Best ask:', orderbook.asks[0]?.price); // e.g., 0.57
285
+ * console.log('Spread:', orderbook.asks[0]?.price - orderbook.bids[0]?.price);
286
+ * ```
287
+ */
288
+ getOrderbook(tokenId: string): Promise<Orderbook>;
289
+ /**
290
+ * Get historical prices for a token
291
+ *
292
+ * @param tokenId - The token ID (from market.tokens[].tokenId)
293
+ * @param interval - Time interval: '1d', '1w', '1m', 'max'
294
+ * @param fidelity - Data point frequency in minutes (default: 60)
295
+ * @returns Array of price points with timestamp and price
296
+ *
297
+ * @example
298
+ * ```typescript
299
+ * // Get daily prices for last week
300
+ * const prices = await client.getPricesHistory(tokenId, '1w', 60);
301
+ * console.log(prices); // [{ t: 1766649620, p: 0.55 }, ...]
302
+ * ```
303
+ */
304
+ getPricesHistory(tokenId: string, interval?: '1d' | '1w' | '1m' | 'max', fidelity?: number): Promise<PricePoint[]>;
305
+ /**
306
+ * Get dual price history for both YES and NO tokens
307
+ *
308
+ * @param conditionId - The market condition ID
309
+ * @param interval - Time interval
310
+ * @param fidelity - Data point frequency in minutes
311
+ * @returns Price histories for both outcomes
312
+ */
313
+ getDualPricesHistory(conditionId: string, interval?: '1d' | '1w' | '1m' | 'max', fidelity?: number): Promise<DualPriceHistory>;
314
+ /**
315
+ * Get processed orderbook with complete market analysis
316
+ *
317
+ * @param conditionId - The unique condition identifier for the market
318
+ * @returns Processed orderbook with both YES/NO books and arbitrage analysis
319
+ *
320
+ * @remarks
321
+ * This method fetches both YES and NO orderbooks and calculates:
322
+ * - Effective prices (accounting for order book mirroring)
323
+ * - Arbitrage opportunities (long and short)
324
+ * - Depth and liquidity metrics
325
+ *
326
+ * **Important**: Polymarket orderbooks have a mirroring property:
327
+ * - Buying YES @ P = Selling NO @ (1-P)
328
+ * - The same order appears in both books
329
+ *
330
+ * Therefore, correct arbitrage calculation must use "effective prices":
331
+ * - effectiveBuyYes = min(YES.ask, 1 - NO.bid)
332
+ * - effectiveBuyNo = min(NO.ask, 1 - YES.bid)
333
+ *
334
+ * @throws {@link PolymarketError} If market not found or missing tokens
335
+ *
336
+ * @example
337
+ * ```typescript
338
+ * const processed = await client.getProcessedOrderbook('0x82ace55...');
339
+ *
340
+ * // Check for arbitrage
341
+ * if (processed.summary.longArbProfit > 0.003) {
342
+ * console.log('Long arb opportunity!');
343
+ * console.log('Buy YES @', processed.summary.effectivePrices.effectiveBuyYes);
344
+ * console.log('Buy NO @', processed.summary.effectivePrices.effectiveBuyNo);
345
+ * console.log('Profit:', processed.summary.longArbProfit * 100, '%');
346
+ * }
347
+ * ```
348
+ */
349
+ getProcessedOrderbook(conditionId: string): Promise<ProcessedOrderbook>;
350
+ /**
351
+ * Process orderbooks and calculate analytics
352
+ *
353
+ * 关键概念:Polymarket 订单簿的镜像特性
354
+ *
355
+ * 买 YES @ P = 卖 NO @ (1-P)
356
+ * 因此同一订单会在 YES 和 NO 订单簿中同时出现
357
+ *
358
+ * 正确的套利计算必须使用"有效价格":
359
+ * - effectiveBuyYes = min(YES.ask, 1 - NO.bid)
360
+ * - effectiveBuyNo = min(NO.ask, 1 - YES.bid)
361
+ * - effectiveSellYes = max(YES.bid, 1 - NO.ask)
362
+ * - effectiveSellNo = max(NO.bid, 1 - YES.ask)
363
+ *
364
+ * 详细文档见: docs/01-polymarket-orderbook-arbitrage.md
365
+ */
366
+ private processOrderbooks;
367
+ /**
368
+ * Check if this client has trading capabilities
369
+ *
370
+ * @returns True if a signer or API credentials are configured
371
+ *
372
+ * @remarks
373
+ * Trading requires either:
374
+ * - A signer (for L1 authentication)
375
+ * - API credentials (for L2 authentication)
376
+ *
377
+ * For actual trading, use the {@link TradingClient} instead.
378
+ *
379
+ * @example
380
+ * ```typescript
381
+ * if (client.hasTradingCapabilities()) {
382
+ * console.log('Client can execute trades');
383
+ * } else {
384
+ * console.log('Read-only mode - use TradingClient for trading');
385
+ * }
386
+ * ```
387
+ */
388
+ hasTradingCapabilities(): boolean;
389
+ private normalizeMarket;
390
+ }
391
+ //# sourceMappingURL=clob-api.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"clob-api.d.ts","sourceRoot":"","sources":["../../src/clients/clob-api.ts"],"names":[],"mappings":"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"}