@catalyst-team/poly-sdk 0.2.1 → 0.4.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 (277) hide show
  1. package/README.md +665 -807
  2. package/README.zh-CN.md +645 -342
  3. package/dist/__tests__/integration/arbitrage-service.integration.test.d.ts +12 -0
  4. package/dist/__tests__/integration/arbitrage-service.integration.test.d.ts.map +1 -0
  5. package/dist/__tests__/integration/arbitrage-service.integration.test.js +267 -0
  6. package/dist/__tests__/integration/arbitrage-service.integration.test.js.map +1 -0
  7. package/dist/__tests__/integration/data-api.integration.test.js +6 -3
  8. package/dist/__tests__/integration/data-api.integration.test.js.map +1 -1
  9. package/dist/__tests__/integration/market-service.integration.test.d.ts +10 -0
  10. package/dist/__tests__/integration/market-service.integration.test.d.ts.map +1 -0
  11. package/dist/__tests__/integration/market-service.integration.test.js +173 -0
  12. package/dist/__tests__/integration/market-service.integration.test.js.map +1 -0
  13. package/dist/__tests__/integration/realtime-service-v2.integration.test.d.ts +10 -0
  14. package/dist/__tests__/integration/realtime-service-v2.integration.test.d.ts.map +1 -0
  15. package/dist/__tests__/integration/realtime-service-v2.integration.test.js +307 -0
  16. package/dist/__tests__/integration/realtime-service-v2.integration.test.js.map +1 -0
  17. package/dist/__tests__/integration/trading-service.integration.test.d.ts +10 -0
  18. package/dist/__tests__/integration/trading-service.integration.test.d.ts.map +1 -0
  19. package/dist/__tests__/integration/trading-service.integration.test.js +58 -0
  20. package/dist/__tests__/integration/trading-service.integration.test.js.map +1 -0
  21. package/dist/clients/clob-api.d.ts +73 -0
  22. package/dist/clients/clob-api.d.ts.map +1 -1
  23. package/dist/clients/clob-api.js +60 -0
  24. package/dist/clients/clob-api.js.map +1 -1
  25. package/dist/clients/ctf-client.d.ts +6 -4
  26. package/dist/clients/ctf-client.d.ts.map +1 -1
  27. package/dist/clients/ctf-client.js.map +1 -1
  28. package/dist/clients/data-api.d.ts +333 -15
  29. package/dist/clients/data-api.d.ts.map +1 -1
  30. package/dist/clients/data-api.js +398 -26
  31. package/dist/clients/data-api.js.map +1 -1
  32. package/dist/clients/gamma-api.d.ts +5 -0
  33. package/dist/clients/gamma-api.d.ts.map +1 -1
  34. package/dist/clients/gamma-api.js +2 -0
  35. package/dist/clients/gamma-api.js.map +1 -1
  36. package/dist/clients/subgraph.d.ts +196 -0
  37. package/dist/clients/subgraph.d.ts.map +1 -0
  38. package/dist/clients/subgraph.js +332 -0
  39. package/dist/clients/subgraph.js.map +1 -0
  40. package/dist/clients/websocket-manager.d.ts +3 -0
  41. package/dist/clients/websocket-manager.d.ts.map +1 -1
  42. package/dist/clients/websocket-manager.js +10 -3
  43. package/dist/clients/websocket-manager.js.map +1 -1
  44. package/dist/core/cache.d.ts +3 -0
  45. package/dist/core/cache.d.ts.map +1 -1
  46. package/dist/core/cache.js +5 -0
  47. package/dist/core/cache.js.map +1 -1
  48. package/dist/core/errors.d.ts +2 -1
  49. package/dist/core/errors.d.ts.map +1 -1
  50. package/dist/core/errors.js +2 -0
  51. package/dist/core/errors.js.map +1 -1
  52. package/dist/core/rate-limiter.d.ts +3 -1
  53. package/dist/core/rate-limiter.d.ts.map +1 -1
  54. package/dist/core/rate-limiter.js +12 -0
  55. package/dist/core/rate-limiter.js.map +1 -1
  56. package/dist/core/types.d.ts +205 -13
  57. package/dist/core/types.d.ts.map +1 -1
  58. package/dist/core/types.js +30 -0
  59. package/dist/core/types.js.map +1 -1
  60. package/dist/core/types.test.d.ts +7 -0
  61. package/dist/core/types.test.d.ts.map +1 -0
  62. package/dist/core/types.test.js +122 -0
  63. package/dist/core/types.test.js.map +1 -0
  64. package/dist/index.d.ts +84 -18
  65. package/dist/index.d.ts.map +1 -1
  66. package/dist/index.js +139 -132
  67. package/dist/index.js.map +1 -1
  68. package/dist/scripts/dip-arb/auto-trade.d.ts +20 -0
  69. package/dist/scripts/dip-arb/auto-trade.d.ts.map +1 -0
  70. package/dist/scripts/dip-arb/auto-trade.js +373 -0
  71. package/dist/scripts/dip-arb/auto-trade.js.map +1 -0
  72. package/dist/scripts/dip-arb/example-basic.d.ts +30 -0
  73. package/dist/scripts/dip-arb/example-basic.d.ts.map +1 -0
  74. package/dist/scripts/dip-arb/example-basic.js +222 -0
  75. package/dist/scripts/dip-arb/example-basic.js.map +1 -0
  76. package/dist/scripts/dip-arb/redeem-positions.d.ts +11 -0
  77. package/dist/scripts/dip-arb/redeem-positions.d.ts.map +1 -0
  78. package/dist/scripts/dip-arb/redeem-positions.js +201 -0
  79. package/dist/scripts/dip-arb/redeem-positions.js.map +1 -0
  80. package/dist/scripts/dip-arb/scan-markets.d.ts +6 -0
  81. package/dist/scripts/dip-arb/scan-markets.d.ts.map +1 -0
  82. package/dist/scripts/dip-arb/scan-markets.js +73 -0
  83. package/dist/scripts/dip-arb/scan-markets.js.map +1 -0
  84. package/dist/services/arbitrage-service.d.ts +3 -2
  85. package/dist/services/arbitrage-service.d.ts.map +1 -1
  86. package/dist/services/arbitrage-service.js +71 -43
  87. package/dist/services/arbitrage-service.js.map +1 -1
  88. package/dist/services/binance-service.d.ts +154 -0
  89. package/dist/services/binance-service.d.ts.map +1 -0
  90. package/dist/services/binance-service.js +266 -0
  91. package/dist/services/binance-service.js.map +1 -0
  92. package/dist/services/dip-arb-service.d.ts +209 -0
  93. package/dist/services/dip-arb-service.d.ts.map +1 -0
  94. package/dist/services/dip-arb-service.js +1602 -0
  95. package/dist/services/dip-arb-service.js.map +1 -0
  96. package/dist/services/dip-arb-types.d.ts +553 -0
  97. package/dist/services/dip-arb-types.d.ts.map +1 -0
  98. package/dist/services/dip-arb-types.js +164 -0
  99. package/dist/services/dip-arb-types.js.map +1 -0
  100. package/dist/services/market-service.d.ts +267 -8
  101. package/dist/services/market-service.d.ts.map +1 -1
  102. package/dist/services/market-service.js +771 -42
  103. package/dist/services/market-service.js.map +1 -1
  104. package/dist/services/onchain-service.d.ts +309 -0
  105. package/dist/services/onchain-service.d.ts.map +1 -0
  106. package/dist/services/onchain-service.js +417 -0
  107. package/dist/services/onchain-service.js.map +1 -0
  108. package/dist/services/realtime-service-v2.d.ts +362 -0
  109. package/dist/services/realtime-service-v2.d.ts.map +1 -0
  110. package/dist/services/realtime-service-v2.js +858 -0
  111. package/dist/services/realtime-service-v2.js.map +1 -0
  112. package/dist/services/realtime-service.d.ts +17 -17
  113. package/dist/services/realtime-service.d.ts.map +1 -1
  114. package/dist/services/realtime-service.js +91 -59
  115. package/dist/services/realtime-service.js.map +1 -1
  116. package/dist/services/smart-money-service.d.ts +352 -0
  117. package/dist/services/smart-money-service.d.ts.map +1 -0
  118. package/dist/services/smart-money-service.js +582 -0
  119. package/dist/services/smart-money-service.js.map +1 -0
  120. package/dist/services/trading-service.d.ts +177 -0
  121. package/dist/services/trading-service.d.ts.map +1 -0
  122. package/dist/services/trading-service.js +422 -0
  123. package/dist/services/trading-service.js.map +1 -0
  124. package/dist/services/wallet-service.d.ts +225 -3
  125. package/dist/services/wallet-service.d.ts.map +1 -1
  126. package/dist/services/wallet-service.js +511 -3
  127. package/dist/services/wallet-service.js.map +1 -1
  128. package/dist/src/__tests__/integration/arbitrage-service.integration.test.d.ts +12 -0
  129. package/dist/src/__tests__/integration/arbitrage-service.integration.test.d.ts.map +1 -0
  130. package/dist/src/__tests__/integration/arbitrage-service.integration.test.js +267 -0
  131. package/dist/src/__tests__/integration/arbitrage-service.integration.test.js.map +1 -0
  132. package/dist/src/__tests__/integration/bridge-client.integration.test.d.ts +11 -0
  133. package/dist/src/__tests__/integration/bridge-client.integration.test.d.ts.map +1 -0
  134. package/dist/src/__tests__/integration/bridge-client.integration.test.js +260 -0
  135. package/dist/src/__tests__/integration/bridge-client.integration.test.js.map +1 -0
  136. package/dist/src/__tests__/integration/ctf-client.integration.test.d.ts +17 -0
  137. package/dist/src/__tests__/integration/ctf-client.integration.test.d.ts.map +1 -0
  138. package/dist/src/__tests__/integration/ctf-client.integration.test.js +234 -0
  139. package/dist/src/__tests__/integration/ctf-client.integration.test.js.map +1 -0
  140. package/dist/src/__tests__/integration/data-api.integration.test.d.ts +9 -0
  141. package/dist/src/__tests__/integration/data-api.integration.test.d.ts.map +1 -0
  142. package/dist/src/__tests__/integration/data-api.integration.test.js +164 -0
  143. package/dist/src/__tests__/integration/data-api.integration.test.js.map +1 -0
  144. package/dist/src/__tests__/integration/gamma-api.integration.test.d.ts +9 -0
  145. package/dist/src/__tests__/integration/gamma-api.integration.test.d.ts.map +1 -0
  146. package/dist/src/__tests__/integration/gamma-api.integration.test.js +170 -0
  147. package/dist/src/__tests__/integration/gamma-api.integration.test.js.map +1 -0
  148. package/dist/src/__tests__/integration/market-service.integration.test.d.ts +10 -0
  149. package/dist/src/__tests__/integration/market-service.integration.test.d.ts.map +1 -0
  150. package/dist/src/__tests__/integration/market-service.integration.test.js +180 -0
  151. package/dist/src/__tests__/integration/market-service.integration.test.js.map +1 -0
  152. package/dist/src/__tests__/integration/realtime-service-v2.integration.test.d.ts +10 -0
  153. package/dist/src/__tests__/integration/realtime-service-v2.integration.test.d.ts.map +1 -0
  154. package/dist/src/__tests__/integration/realtime-service-v2.integration.test.js +307 -0
  155. package/dist/src/__tests__/integration/realtime-service-v2.integration.test.js.map +1 -0
  156. package/dist/src/__tests__/integration/trading-service.integration.test.d.ts +10 -0
  157. package/dist/src/__tests__/integration/trading-service.integration.test.d.ts.map +1 -0
  158. package/dist/src/__tests__/integration/trading-service.integration.test.js +58 -0
  159. package/dist/src/__tests__/integration/trading-service.integration.test.js.map +1 -0
  160. package/dist/src/__tests__/test-utils.d.ts +92 -0
  161. package/dist/src/__tests__/test-utils.d.ts.map +1 -0
  162. package/dist/src/__tests__/test-utils.js +143 -0
  163. package/dist/src/__tests__/test-utils.js.map +1 -0
  164. package/dist/src/clients/bridge-client.d.ts +388 -0
  165. package/dist/src/clients/bridge-client.d.ts.map +1 -0
  166. package/dist/src/clients/bridge-client.js +587 -0
  167. package/dist/src/clients/bridge-client.js.map +1 -0
  168. package/dist/src/clients/ctf-client.d.ts +475 -0
  169. package/dist/src/clients/ctf-client.d.ts.map +1 -0
  170. package/dist/src/clients/ctf-client.js +915 -0
  171. package/dist/src/clients/ctf-client.js.map +1 -0
  172. package/dist/src/clients/data-api.d.ts +452 -0
  173. package/dist/src/clients/data-api.d.ts.map +1 -0
  174. package/dist/src/clients/data-api.js +637 -0
  175. package/dist/src/clients/data-api.js.map +1 -0
  176. package/dist/src/clients/gamma-api.d.ts +421 -0
  177. package/dist/src/clients/gamma-api.d.ts.map +1 -0
  178. package/dist/src/clients/gamma-api.js +359 -0
  179. package/dist/src/clients/gamma-api.js.map +1 -0
  180. package/dist/src/clients/subgraph.d.ts +196 -0
  181. package/dist/src/clients/subgraph.d.ts.map +1 -0
  182. package/dist/src/clients/subgraph.js +332 -0
  183. package/dist/src/clients/subgraph.js.map +1 -0
  184. package/dist/src/core/cache-adapter-bridge.d.ts +36 -0
  185. package/dist/src/core/cache-adapter-bridge.d.ts.map +1 -0
  186. package/dist/src/core/cache-adapter-bridge.js +81 -0
  187. package/dist/src/core/cache-adapter-bridge.js.map +1 -0
  188. package/dist/src/core/cache.d.ts +43 -0
  189. package/dist/src/core/cache.d.ts.map +1 -0
  190. package/dist/src/core/cache.js +76 -0
  191. package/dist/src/core/cache.js.map +1 -0
  192. package/dist/src/core/errors.d.ts +39 -0
  193. package/dist/src/core/errors.d.ts.map +1 -0
  194. package/dist/src/core/errors.js +86 -0
  195. package/dist/src/core/errors.js.map +1 -0
  196. package/dist/src/core/rate-limiter.d.ts +33 -0
  197. package/dist/src/core/rate-limiter.d.ts.map +1 -0
  198. package/dist/src/core/rate-limiter.js +82 -0
  199. package/dist/src/core/rate-limiter.js.map +1 -0
  200. package/dist/src/core/types.d.ts +506 -0
  201. package/dist/src/core/types.d.ts.map +1 -0
  202. package/dist/src/core/types.js +49 -0
  203. package/dist/src/core/types.js.map +1 -0
  204. package/dist/src/core/types.test.d.ts +7 -0
  205. package/dist/src/core/types.test.d.ts.map +1 -0
  206. package/dist/src/core/types.test.js +122 -0
  207. package/dist/src/core/types.test.js.map +1 -0
  208. package/dist/src/core/unified-cache.d.ts +63 -0
  209. package/dist/src/core/unified-cache.d.ts.map +1 -0
  210. package/dist/src/core/unified-cache.js +114 -0
  211. package/dist/src/core/unified-cache.js.map +1 -0
  212. package/dist/src/index.d.ts +159 -0
  213. package/dist/src/index.d.ts.map +1 -0
  214. package/dist/src/index.js +262 -0
  215. package/dist/src/index.js.map +1 -0
  216. package/dist/src/services/arbitrage-service.d.ts +409 -0
  217. package/dist/src/services/arbitrage-service.d.ts.map +1 -0
  218. package/dist/src/services/arbitrage-service.js +1450 -0
  219. package/dist/src/services/arbitrage-service.js.map +1 -0
  220. package/dist/src/services/authorization-service.d.ts +97 -0
  221. package/dist/src/services/authorization-service.d.ts.map +1 -0
  222. package/dist/src/services/authorization-service.js +279 -0
  223. package/dist/src/services/authorization-service.js.map +1 -0
  224. package/dist/src/services/binance-service.d.ts +154 -0
  225. package/dist/src/services/binance-service.d.ts.map +1 -0
  226. package/dist/src/services/binance-service.js +266 -0
  227. package/dist/src/services/binance-service.js.map +1 -0
  228. package/dist/src/services/dip-arb-service.d.ts +245 -0
  229. package/dist/src/services/dip-arb-service.d.ts.map +1 -0
  230. package/dist/src/services/dip-arb-service.js +1865 -0
  231. package/dist/src/services/dip-arb-service.js.map +1 -0
  232. package/dist/src/services/dip-arb-types.d.ts +553 -0
  233. package/dist/src/services/dip-arb-types.d.ts.map +1 -0
  234. package/dist/src/services/dip-arb-types.js +164 -0
  235. package/dist/src/services/dip-arb-types.js.map +1 -0
  236. package/dist/src/services/market-service.d.ts +370 -0
  237. package/dist/src/services/market-service.d.ts.map +1 -0
  238. package/dist/src/services/market-service.js +1200 -0
  239. package/dist/src/services/market-service.js.map +1 -0
  240. package/dist/src/services/onchain-service.d.ts +309 -0
  241. package/dist/src/services/onchain-service.d.ts.map +1 -0
  242. package/dist/src/services/onchain-service.js +417 -0
  243. package/dist/src/services/onchain-service.js.map +1 -0
  244. package/dist/src/services/realtime-service-v2.d.ts +367 -0
  245. package/dist/src/services/realtime-service-v2.d.ts.map +1 -0
  246. package/dist/src/services/realtime-service-v2.js +876 -0
  247. package/dist/src/services/realtime-service-v2.js.map +1 -0
  248. package/dist/src/services/smart-money-service.d.ts +352 -0
  249. package/dist/src/services/smart-money-service.d.ts.map +1 -0
  250. package/dist/src/services/smart-money-service.js +582 -0
  251. package/dist/src/services/smart-money-service.js.map +1 -0
  252. package/dist/src/services/swap-service.d.ts +217 -0
  253. package/dist/src/services/swap-service.d.ts.map +1 -0
  254. package/dist/src/services/swap-service.js +695 -0
  255. package/dist/src/services/swap-service.js.map +1 -0
  256. package/dist/src/services/trading-service.d.ts +177 -0
  257. package/dist/src/services/trading-service.d.ts.map +1 -0
  258. package/dist/src/services/trading-service.js +422 -0
  259. package/dist/src/services/trading-service.js.map +1 -0
  260. package/dist/src/services/wallet-service.d.ts +316 -0
  261. package/dist/src/services/wallet-service.d.ts.map +1 -0
  262. package/dist/src/services/wallet-service.js +681 -0
  263. package/dist/src/services/wallet-service.js.map +1 -0
  264. package/dist/src/utils/price-utils.d.ts +153 -0
  265. package/dist/src/utils/price-utils.d.ts.map +1 -0
  266. package/dist/src/utils/price-utils.js +236 -0
  267. package/dist/src/utils/price-utils.js.map +1 -0
  268. package/dist/src/utils/price-utils.test.d.ts +5 -0
  269. package/dist/src/utils/price-utils.test.d.ts.map +1 -0
  270. package/dist/src/utils/price-utils.test.js +192 -0
  271. package/dist/src/utils/price-utils.test.js.map +1 -0
  272. package/dist/utils/price-utils.test.d.ts +5 -0
  273. package/dist/utils/price-utils.test.d.ts.map +1 -0
  274. package/dist/utils/price-utils.test.js +192 -0
  275. package/dist/utils/price-utils.test.js.map +1 -0
  276. package/package.json +6 -5
  277. package/README.en.md +0 -502
@@ -0,0 +1,332 @@
1
+ /**
2
+ * Polymarket Subgraph Client
3
+ *
4
+ * 官方文档: https://docs.polymarket.com/developers/subgraph/overview
5
+ * Schema 仓库: https://github.com/Polymarket/polymarket-subgraph
6
+ *
7
+ * 5 个 Subgraph:
8
+ * - Positions (0.0.7): 用户余额、Net 余额
9
+ * - PnL (0.0.14): 用户持仓、PnL、Condition 结算状态
10
+ * - Activity (0.0.4): Split/Merge/Redemption 事件
11
+ * - OI (0.0.6): 市场/全局 Open Interest
12
+ * - Orderbook (0.0.1): 订单成交事件
13
+ */
14
+ import { ApiType } from '../core/rate-limiter.js';
15
+ // ==================== 端点配置 ====================
16
+ export const SUBGRAPH_ENDPOINTS = {
17
+ positions: 'https://api.goldsky.com/api/public/project_cl6mb8i9h0003e201j6li0diw/subgraphs/positions-subgraph/0.0.7/gn',
18
+ pnl: 'https://api.goldsky.com/api/public/project_cl6mb8i9h0003e201j6li0diw/subgraphs/pnl-subgraph/0.0.14/gn',
19
+ activity: 'https://api.goldsky.com/api/public/project_cl6mb8i9h0003e201j6li0diw/subgraphs/activity-subgraph/0.0.4/gn',
20
+ oi: 'https://api.goldsky.com/api/public/project_cl6mb8i9h0003e201j6li0diw/subgraphs/oi-subgraph/0.0.6/gn',
21
+ orderbook: 'https://api.goldsky.com/api/public/project_cl6mb8i9h0003e201j6li0diw/subgraphs/orderbook-subgraph/0.0.1/gn',
22
+ };
23
+ // ==================== 客户端实现 ====================
24
+ export class SubgraphClient {
25
+ rateLimiter;
26
+ cache;
27
+ constructor(rateLimiter, cache) {
28
+ this.rateLimiter = rateLimiter;
29
+ this.cache = cache;
30
+ }
31
+ /**
32
+ * 执行 GraphQL 查询
33
+ */
34
+ async query(subgraph, queryStr) {
35
+ const endpoint = SUBGRAPH_ENDPOINTS[subgraph];
36
+ const cacheKey = `subgraph:${subgraph}:${queryStr}`;
37
+ // 检查缓存
38
+ const cached = await this.cache.get(cacheKey);
39
+ if (cached !== undefined) {
40
+ return cached;
41
+ }
42
+ // 限流并执行请求
43
+ const data = await this.rateLimiter.execute(ApiType.SUBGRAPH, async () => {
44
+ const response = await fetch(endpoint, {
45
+ method: 'POST',
46
+ headers: { 'Content-Type': 'application/json' },
47
+ body: JSON.stringify({ query: queryStr }),
48
+ });
49
+ if (!response.ok) {
50
+ const text = await response.text();
51
+ throw new Error(`Subgraph request failed: HTTP ${response.status} - ${text.slice(0, 200)}`);
52
+ }
53
+ const result = (await response.json());
54
+ if (result.errors && result.errors.length > 0) {
55
+ throw new Error(`GraphQL error: ${result.errors.map((e) => e.message).join(', ')}`);
56
+ }
57
+ if (!result.data) {
58
+ throw new Error(`No data returned from subgraph. Response: ${JSON.stringify(result).slice(0, 200)}`);
59
+ }
60
+ return result.data;
61
+ });
62
+ // 缓存结果 (短 TTL,subgraph 数据更新较快)
63
+ await this.cache.set(cacheKey, data, 30_000);
64
+ return data;
65
+ }
66
+ /**
67
+ * 构建查询字符串
68
+ */
69
+ buildQuery(entityName, fields, params = {}) {
70
+ const args = [];
71
+ if (params.first !== undefined) {
72
+ args.push(`first: ${params.first}`);
73
+ }
74
+ if (params.skip !== undefined) {
75
+ args.push(`skip: ${params.skip}`);
76
+ }
77
+ if (params.orderBy) {
78
+ args.push(`orderBy: ${params.orderBy}`);
79
+ }
80
+ if (params.orderDirection) {
81
+ args.push(`orderDirection: ${params.orderDirection}`);
82
+ }
83
+ if (params.where && Object.keys(params.where).length > 0) {
84
+ // Build where clause manually to avoid JSON quote issues
85
+ const whereParts = Object.entries(params.where).map(([key, value]) => {
86
+ if (typeof value === 'string') {
87
+ return `${key}: "${value}"`;
88
+ }
89
+ return `${key}: ${JSON.stringify(value)}`;
90
+ });
91
+ args.push(`where: { ${whereParts.join(', ')} }`);
92
+ }
93
+ const argsStr = args.length > 0 ? `(${args.join(', ')})` : '';
94
+ const fieldsStr = fields.join('\n ');
95
+ return `{
96
+ ${entityName}${argsStr} {
97
+ ${fieldsStr}
98
+ }
99
+ }`;
100
+ }
101
+ // ==================== Positions Subgraph ====================
102
+ /**
103
+ * 获取用户余额
104
+ */
105
+ async getUserBalances(user, params = {}) {
106
+ const query = this.buildQuery('userBalances', ['id', 'user', 'asset', 'balance'], {
107
+ ...params,
108
+ where: { ...params.where, user: user.toLowerCase() },
109
+ });
110
+ const result = await this.query('positions', query);
111
+ return result.userBalances;
112
+ }
113
+ /**
114
+ * 获取 Net 用户余额
115
+ */
116
+ async getNetUserBalances(user, params = {}) {
117
+ const query = this.buildQuery('netUserBalances', ['id', 'user', 'asset', 'balance'], {
118
+ ...params,
119
+ where: { ...params.where, user: user.toLowerCase() },
120
+ });
121
+ const result = await this.query('positions', query);
122
+ return result.netUserBalances;
123
+ }
124
+ // ==================== PnL Subgraph ====================
125
+ /**
126
+ * 获取用户持仓 (含 PnL)
127
+ */
128
+ async getUserPositions(user, params = {}) {
129
+ const query = this.buildQuery('userPositions', ['id', 'user', 'tokenId', 'amount', 'avgPrice', 'realizedPnl', 'totalBought'], {
130
+ orderBy: 'realizedPnl',
131
+ orderDirection: 'desc',
132
+ ...params,
133
+ where: { ...params.where, user: user.toLowerCase() },
134
+ });
135
+ const result = await this.query('pnl', query);
136
+ return result.userPositions;
137
+ }
138
+ /**
139
+ * 获取 Condition 结算状态
140
+ */
141
+ async getConditions(params = {}) {
142
+ const query = this.buildQuery('conditions', ['id', 'positionIds', 'payoutNumerators', 'payoutDenominator'], params);
143
+ const result = await this.query('pnl', query);
144
+ return result.conditions;
145
+ }
146
+ /**
147
+ * 获取单个 Condition
148
+ */
149
+ async getCondition(conditionId) {
150
+ const query = `{
151
+ condition(id: "${conditionId.toLowerCase()}") {
152
+ id
153
+ positionIds
154
+ payoutNumerators
155
+ payoutDenominator
156
+ }
157
+ }`;
158
+ const result = await this.query('pnl', query);
159
+ return result.condition;
160
+ }
161
+ /**
162
+ * 检查 Condition 是否已结算
163
+ */
164
+ async isConditionResolved(conditionId) {
165
+ const condition = await this.getCondition(conditionId);
166
+ if (!condition)
167
+ return false;
168
+ return condition.payoutNumerators.length > 0 && condition.payoutDenominator !== '0';
169
+ }
170
+ // ==================== Activity Subgraph ====================
171
+ /**
172
+ * 获取用户的 Split 事件
173
+ */
174
+ async getSplits(user, params = {}) {
175
+ const query = this.buildQuery('splits', ['id', 'timestamp', 'stakeholder', 'condition', 'amount'], {
176
+ orderBy: 'timestamp',
177
+ orderDirection: 'desc',
178
+ ...params,
179
+ where: { ...params.where, stakeholder: user.toLowerCase() },
180
+ });
181
+ const result = await this.query('activity', query);
182
+ return result.splits;
183
+ }
184
+ /**
185
+ * 获取用户的 Merge 事件
186
+ */
187
+ async getMerges(user, params = {}) {
188
+ const query = this.buildQuery('merges', ['id', 'timestamp', 'stakeholder', 'condition', 'amount'], {
189
+ orderBy: 'timestamp',
190
+ orderDirection: 'desc',
191
+ ...params,
192
+ where: { ...params.where, stakeholder: user.toLowerCase() },
193
+ });
194
+ const result = await this.query('activity', query);
195
+ return result.merges;
196
+ }
197
+ /**
198
+ * 获取用户的 Redemption 事件
199
+ */
200
+ async getRedemptions(user, params = {}) {
201
+ const query = this.buildQuery('redemptions', ['id', 'timestamp', 'redeemer', 'condition', 'payout'], {
202
+ orderBy: 'timestamp',
203
+ orderDirection: 'desc',
204
+ ...params,
205
+ where: { ...params.where, redeemer: user.toLowerCase() },
206
+ });
207
+ const result = await this.query('activity', query);
208
+ return result.redemptions;
209
+ }
210
+ /**
211
+ * 获取最近的 Redemption 事件 (不限用户)
212
+ */
213
+ async getRecentRedemptions(params = {}) {
214
+ const query = this.buildQuery('redemptions', ['id', 'timestamp', 'redeemer', 'condition', 'payout'], {
215
+ orderBy: 'timestamp',
216
+ orderDirection: 'desc',
217
+ first: 100,
218
+ ...params,
219
+ });
220
+ const result = await this.query('activity', query);
221
+ return result.redemptions;
222
+ }
223
+ // ==================== OI Subgraph ====================
224
+ /**
225
+ * 获取市场 Open Interest
226
+ */
227
+ async getMarketOpenInterest(conditionId) {
228
+ const query = `{
229
+ marketOpenInterest(id: "${conditionId.toLowerCase()}") {
230
+ id
231
+ amount
232
+ }
233
+ }`;
234
+ const result = await this.query('oi', query);
235
+ return result.marketOpenInterest;
236
+ }
237
+ /**
238
+ * 获取 Top 市场按 OI 排序
239
+ */
240
+ async getTopMarketsByOI(params = {}) {
241
+ const query = this.buildQuery('marketOpenInterests', ['id', 'amount'], {
242
+ orderBy: 'amount',
243
+ orderDirection: 'desc',
244
+ first: 50,
245
+ ...params,
246
+ });
247
+ const result = await this.query('oi', query);
248
+ return result.marketOpenInterests;
249
+ }
250
+ /**
251
+ * 获取全局 Open Interest
252
+ */
253
+ async getGlobalOpenInterest() {
254
+ const query = `{
255
+ globalOpenInterests(first: 1) {
256
+ id
257
+ amount
258
+ }
259
+ }`;
260
+ const result = await this.query('oi', query);
261
+ return result.globalOpenInterests[0]?.amount || '0';
262
+ }
263
+ // ==================== Orderbook Subgraph ====================
264
+ /**
265
+ * 获取订单成交事件
266
+ */
267
+ async getOrderFilledEvents(params = {}) {
268
+ const query = this.buildQuery('orderFilledEvents', ['id', 'transactionHash', 'timestamp', 'orderHash', 'maker', 'taker', 'makerAssetId', 'takerAssetId', 'makerAmountFilled', 'takerAmountFilled', 'fee'], {
269
+ orderBy: 'timestamp',
270
+ orderDirection: 'desc',
271
+ first: 100,
272
+ ...params,
273
+ });
274
+ const result = await this.query('orderbook', query);
275
+ return result.orderFilledEvents;
276
+ }
277
+ /**
278
+ * 获取用户作为 maker 的成交事件
279
+ */
280
+ async getMakerFills(maker, params = {}) {
281
+ const query = this.buildQuery('orderFilledEvents', ['id', 'transactionHash', 'timestamp', 'orderHash', 'maker', 'taker', 'makerAssetId', 'takerAssetId', 'makerAmountFilled', 'takerAmountFilled', 'fee'], {
282
+ orderBy: 'timestamp',
283
+ orderDirection: 'desc',
284
+ ...params,
285
+ where: { ...params.where, maker: maker.toLowerCase() },
286
+ });
287
+ const result = await this.query('orderbook', query);
288
+ return result.orderFilledEvents;
289
+ }
290
+ /**
291
+ * 获取用户作为 taker 的成交事件
292
+ */
293
+ async getTakerFills(taker, params = {}) {
294
+ const query = this.buildQuery('orderFilledEvents', ['id', 'transactionHash', 'timestamp', 'orderHash', 'maker', 'taker', 'makerAssetId', 'takerAssetId', 'makerAmountFilled', 'takerAmountFilled', 'fee'], {
295
+ orderBy: 'timestamp',
296
+ orderDirection: 'desc',
297
+ ...params,
298
+ where: { ...params.where, taker: taker.toLowerCase() },
299
+ });
300
+ const result = await this.query('orderbook', query);
301
+ return result.orderFilledEvents;
302
+ }
303
+ /**
304
+ * 获取市场数据
305
+ */
306
+ async getMarketData(assetId) {
307
+ const query = `{
308
+ marketData(id: "${assetId}") {
309
+ id
310
+ volume
311
+ }
312
+ }`;
313
+ const result = await this.query('orderbook', query);
314
+ return result.marketData;
315
+ }
316
+ // ==================== 便捷方法 ====================
317
+ /**
318
+ * 获取用户完整的链上活动摘要
319
+ */
320
+ async getUserActivitySummary(user) {
321
+ const [positions, splits, merges, redemptions, makerFills, takerFills] = await Promise.all([
322
+ this.getUserPositions(user, { first: 100 }),
323
+ this.getSplits(user, { first: 50 }),
324
+ this.getMerges(user, { first: 50 }),
325
+ this.getRedemptions(user, { first: 50 }),
326
+ this.getMakerFills(user, { first: 50 }),
327
+ this.getTakerFills(user, { first: 50 }),
328
+ ]);
329
+ return { positions, splits, merges, redemptions, makerFills, takerFills };
330
+ }
331
+ }
332
+ //# sourceMappingURL=subgraph.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"subgraph.js","sourceRoot":"","sources":["../../../src/clients/subgraph.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,36 @@
1
+ /**
2
+ * Bridge adapter between legacy Cache class and new CacheAdapter interface
3
+ *
4
+ * This allows the SDK to work with both:
5
+ * 1. Legacy internal Cache (synchronous, millisecond TTL)
6
+ * 2. New CacheAdapter interface (async, second TTL)
7
+ */
8
+ import type { CacheAdapter } from '@catalyst-team/cache';
9
+ import { Cache } from './cache.js';
10
+ /**
11
+ * Wraps the legacy Cache class to implement CacheAdapter interface
12
+ */
13
+ export declare class LegacyCacheAdapter implements CacheAdapter {
14
+ private cache;
15
+ constructor(cache: Cache);
16
+ get<T>(key: string): Promise<T | null>;
17
+ set<T>(key: string, value: T, ttl?: number): Promise<void>;
18
+ del(key: string): Promise<void>;
19
+ exists(key: string): Promise<boolean>;
20
+ clear(): Promise<void>;
21
+ }
22
+ /**
23
+ * Wraps a CacheAdapter to provide the legacy Cache interface
24
+ * This allows using new cache adapters with code expecting the old Cache class
25
+ */
26
+ export declare class CacheAdapterWrapper {
27
+ private adapter;
28
+ constructor(adapter: CacheAdapter);
29
+ get<T>(key: string): T | undefined;
30
+ set<T>(key: string, value: T, ttlMs: number): void;
31
+ getOrSet<T>(key: string, ttlMs: number, factory: () => Promise<T>): Promise<T>;
32
+ invalidate(pattern: string): void;
33
+ clear(): void;
34
+ size(): number;
35
+ }
36
+ //# sourceMappingURL=cache-adapter-bridge.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cache-adapter-bridge.d.ts","sourceRoot":"","sources":["../../../src/core/cache-adapter-bridge.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAEnC;;GAEG;AACH,qBAAa,kBAAmB,YAAW,YAAY;IACzC,OAAO,CAAC,KAAK;gBAAL,KAAK,EAAE,KAAK;IAE1B,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC;IAKtC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAM1D,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAI/B,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAKrC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAG7B;AAED;;;GAGG;AACH,qBAAa,mBAAmB;IAClB,OAAO,CAAC,OAAO;gBAAP,OAAO,EAAE,YAAY;IAEzC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,CAAC,GAAG,SAAS;IAUlC,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAM5C,QAAQ,CAAC,CAAC,EACd,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GACxB,OAAO,CAAC,CAAC,CAAC;IAUb,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAMjC,KAAK,IAAI,IAAI;IAIb,IAAI,IAAI,MAAM;CAIf"}
@@ -0,0 +1,81 @@
1
+ /**
2
+ * Bridge adapter between legacy Cache class and new CacheAdapter interface
3
+ *
4
+ * This allows the SDK to work with both:
5
+ * 1. Legacy internal Cache (synchronous, millisecond TTL)
6
+ * 2. New CacheAdapter interface (async, second TTL)
7
+ */
8
+ /**
9
+ * Wraps the legacy Cache class to implement CacheAdapter interface
10
+ */
11
+ export class LegacyCacheAdapter {
12
+ cache;
13
+ constructor(cache) {
14
+ this.cache = cache;
15
+ }
16
+ async get(key) {
17
+ const value = this.cache.get(key);
18
+ return value === undefined ? null : value;
19
+ }
20
+ async set(key, value, ttl) {
21
+ // Convert seconds to milliseconds (CacheAdapter uses seconds, Cache uses ms)
22
+ const ttlMs = ttl ? ttl * 1000 : 60000; // Default 60s
23
+ this.cache.set(key, value, ttlMs);
24
+ }
25
+ async del(key) {
26
+ this.cache.invalidate(key);
27
+ }
28
+ async exists(key) {
29
+ const value = this.cache.get(key);
30
+ return value !== undefined;
31
+ }
32
+ async clear() {
33
+ this.cache.clear();
34
+ }
35
+ }
36
+ /**
37
+ * Wraps a CacheAdapter to provide the legacy Cache interface
38
+ * This allows using new cache adapters with code expecting the old Cache class
39
+ */
40
+ export class CacheAdapterWrapper {
41
+ adapter;
42
+ constructor(adapter) {
43
+ this.adapter = adapter;
44
+ }
45
+ get(key) {
46
+ // Note: This makes an async operation sync, which may cause issues
47
+ // However, we need to maintain backward compatibility
48
+ let result;
49
+ this.adapter.get(key).then((value) => {
50
+ result = value ?? undefined;
51
+ });
52
+ return result;
53
+ }
54
+ set(key, value, ttlMs) {
55
+ // Convert milliseconds to seconds
56
+ const ttlSeconds = Math.ceil(ttlMs / 1000);
57
+ void this.adapter.set(key, value, ttlSeconds);
58
+ }
59
+ async getOrSet(key, ttlMs, factory) {
60
+ const cached = await this.adapter.get(key);
61
+ if (cached !== null)
62
+ return cached;
63
+ const value = await factory();
64
+ const ttlSeconds = Math.ceil(ttlMs / 1000);
65
+ await this.adapter.set(key, value, ttlSeconds);
66
+ return value;
67
+ }
68
+ invalidate(pattern) {
69
+ // CacheAdapter doesn't have pattern matching, so we can't implement this
70
+ // This is a limitation of the adapter approach
71
+ console.warn('invalidate(pattern) not supported with external cache adapter');
72
+ }
73
+ clear() {
74
+ void this.adapter.clear?.();
75
+ }
76
+ size() {
77
+ // CacheAdapter doesn't expose size, return -1 to indicate unknown
78
+ return -1;
79
+ }
80
+ }
81
+ //# sourceMappingURL=cache-adapter-bridge.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cache-adapter-bridge.js","sourceRoot":"","sources":["../../../src/core/cache-adapter-bridge.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAKH;;GAEG;AACH,MAAM,OAAO,kBAAkB;IACT;IAApB,YAAoB,KAAY;QAAZ,UAAK,GAAL,KAAK,CAAO;IAAG,CAAC;IAEpC,KAAK,CAAC,GAAG,CAAI,GAAW;QACtB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAI,GAAG,CAAC,CAAC;QACrC,OAAO,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC;IAC5C,CAAC;IAED,KAAK,CAAC,GAAG,CAAI,GAAW,EAAE,KAAQ,EAAE,GAAY;QAC9C,6EAA6E;QAC7E,MAAM,KAAK,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,cAAc;QACtD,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;IACpC,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,GAAW;QACnB,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;IAC7B,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,GAAW;QACtB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAClC,OAAO,KAAK,KAAK,SAAS,CAAC;IAC7B,CAAC;IAED,KAAK,CAAC,KAAK;QACT,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;IACrB,CAAC;CACF;AAED;;;GAGG;AACH,MAAM,OAAO,mBAAmB;IACV;IAApB,YAAoB,OAAqB;QAArB,YAAO,GAAP,OAAO,CAAc;IAAG,CAAC;IAE7C,GAAG,CAAI,GAAW;QAChB,mEAAmE;QACnE,sDAAsD;QACtD,IAAI,MAAqB,CAAC;QAC1B,IAAI,CAAC,OAAO,CAAC,GAAG,CAAI,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE;YACtC,MAAM,GAAG,KAAK,IAAI,SAAS,CAAC;QAC9B,CAAC,CAAC,CAAC;QACH,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,GAAG,CAAI,GAAW,EAAE,KAAQ,EAAE,KAAa;QACzC,kCAAkC;QAClC,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC;QAC3C,KAAK,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC;IAChD,CAAC;IAED,KAAK,CAAC,QAAQ,CACZ,GAAW,EACX,KAAa,EACb,OAAyB;QAEzB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CAAI,GAAG,CAAC,CAAC;QAC9C,IAAI,MAAM,KAAK,IAAI;YAAE,OAAO,MAAM,CAAC;QAEnC,MAAM,KAAK,GAAG,MAAM,OAAO,EAAE,CAAC;QAC9B,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,CAAC;QAC3C,MAAM,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC;QAC/C,OAAO,KAAK,CAAC;IACf,CAAC;IAED,UAAU,CAAC,OAAe;QACxB,yEAAyE;QACzE,+CAA+C;QAC/C,OAAO,CAAC,IAAI,CAAC,+DAA+D,CAAC,CAAC;IAChF,CAAC;IAED,KAAK;QACH,KAAK,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;IAC9B,CAAC;IAED,IAAI;QACF,kEAAkE;QAClE,OAAO,CAAC,CAAC,CAAC;IACZ,CAAC;CACF"}
@@ -0,0 +1,43 @@
1
+ /**
2
+ * Simple in-memory cache with TTL support
3
+ */
4
+ export declare class Cache {
5
+ private store;
6
+ /**
7
+ * Get a cached value
8
+ */
9
+ get<T>(key: string): T | undefined;
10
+ /**
11
+ * Set a cached value with TTL
12
+ */
13
+ set<T>(key: string, value: T, ttlMs: number): void;
14
+ /**
15
+ * Get a cached value or set it if not present
16
+ */
17
+ getOrSet<T>(key: string, ttlMs: number, factory: () => Promise<T>): Promise<T>;
18
+ /**
19
+ * Invalidate all keys matching a pattern
20
+ */
21
+ invalidate(pattern: string): void;
22
+ /**
23
+ * Clear all cached values
24
+ */
25
+ clear(): void;
26
+ /**
27
+ * Get the number of cached entries
28
+ */
29
+ size(): number;
30
+ }
31
+ /**
32
+ * Cache TTL constants (in milliseconds)
33
+ */
34
+ export declare const CACHE_TTL: {
35
+ MARKET_INFO: number;
36
+ WALLET_POSITIONS: number;
37
+ LEADERBOARD: number;
38
+ TICK_SIZE: number;
39
+ ACTIVITY: number;
40
+ BINANCE_KLINE: number;
41
+ BINANCE_PRICE: number;
42
+ };
43
+ //# sourceMappingURL=cache.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cache.d.ts","sourceRoot":"","sources":["../../../src/core/cache.ts"],"names":[],"mappings":"AAAA;;GAEG;AAOH,qBAAa,KAAK;IAChB,OAAO,CAAC,KAAK,CAA+C;IAE5D;;OAEG;IACH,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,CAAC,GAAG,SAAS;IAUlC;;OAEG;IACH,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAOlD;;OAEG;IACG,QAAQ,CAAC,CAAC,EACd,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GACxB,OAAO,CAAC,CAAC,CAAC;IAQb;;OAEG;IACH,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAQjC;;OAEG;IACH,KAAK,IAAI,IAAI;IAIb;;OAEG;IACH,IAAI,IAAI,MAAM;CAGf;AAED;;GAEG;AACH,eAAO,MAAM,SAAS;;;;;;;;CAUrB,CAAC"}
@@ -0,0 +1,76 @@
1
+ /**
2
+ * Simple in-memory cache with TTL support
3
+ */
4
+ export class Cache {
5
+ store = new Map();
6
+ /**
7
+ * Get a cached value
8
+ */
9
+ get(key) {
10
+ const entry = this.store.get(key);
11
+ if (!entry)
12
+ return undefined;
13
+ if (Date.now() > entry.expiresAt) {
14
+ this.store.delete(key);
15
+ return undefined;
16
+ }
17
+ return entry.value;
18
+ }
19
+ /**
20
+ * Set a cached value with TTL
21
+ */
22
+ set(key, value, ttlMs) {
23
+ this.store.set(key, {
24
+ value,
25
+ expiresAt: Date.now() + ttlMs,
26
+ });
27
+ }
28
+ /**
29
+ * Get a cached value or set it if not present
30
+ */
31
+ async getOrSet(key, ttlMs, factory) {
32
+ const cached = this.get(key);
33
+ if (cached !== undefined)
34
+ return cached;
35
+ const value = await factory();
36
+ this.set(key, value, ttlMs);
37
+ return value;
38
+ }
39
+ /**
40
+ * Invalidate all keys matching a pattern
41
+ */
42
+ invalidate(pattern) {
43
+ for (const key of this.store.keys()) {
44
+ if (key.includes(pattern)) {
45
+ this.store.delete(key);
46
+ }
47
+ }
48
+ }
49
+ /**
50
+ * Clear all cached values
51
+ */
52
+ clear() {
53
+ this.store.clear();
54
+ }
55
+ /**
56
+ * Get the number of cached entries
57
+ */
58
+ size() {
59
+ return this.store.size;
60
+ }
61
+ }
62
+ /**
63
+ * Cache TTL constants (in milliseconds)
64
+ */
65
+ export const CACHE_TTL = {
66
+ MARKET_INFO: 60 * 1000, // 1 minute
67
+ WALLET_POSITIONS: 5 * 60 * 1000, // 5 minutes
68
+ LEADERBOARD: 60 * 60 * 1000, // 1 hour
69
+ TICK_SIZE: 24 * 60 * 60 * 1000, // 24 hours
70
+ ACTIVITY: 2 * 60 * 1000, // 2 minutes (wallet activity data)
71
+ // Binance K-line cache (historical data doesn't change)
72
+ BINANCE_KLINE: 60 * 1000, // 1 minute
73
+ // Binance current price cache (more volatile)
74
+ BINANCE_PRICE: 5 * 1000, // 5 seconds
75
+ };
76
+ //# sourceMappingURL=cache.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cache.js","sourceRoot":"","sources":["../../../src/core/cache.ts"],"names":[],"mappings":"AAAA;;GAEG;AAOH,MAAM,OAAO,KAAK;IACR,KAAK,GAAqC,IAAI,GAAG,EAAE,CAAC;IAE5D;;OAEG;IACH,GAAG,CAAI,GAAW;QAChB,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAClC,IAAI,CAAC,KAAK;YAAE,OAAO,SAAS,CAAC;QAC7B,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,SAAS,EAAE,CAAC;YACjC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACvB,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,OAAO,KAAK,CAAC,KAAU,CAAC;IAC1B,CAAC;IAED;;OAEG;IACH,GAAG,CAAI,GAAW,EAAE,KAAQ,EAAE,KAAa;QACzC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE;YAClB,KAAK;YACL,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK;SAC9B,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,QAAQ,CACZ,GAAW,EACX,KAAa,EACb,OAAyB;QAEzB,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAI,GAAG,CAAC,CAAC;QAChC,IAAI,MAAM,KAAK,SAAS;YAAE,OAAO,MAAM,CAAC;QACxC,MAAM,KAAK,GAAG,MAAM,OAAO,EAAE,CAAC;QAC9B,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;QAC5B,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;OAEG;IACH,UAAU,CAAC,OAAe;QACxB,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC;YACpC,IAAI,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC1B,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACzB,CAAC;QACH,CAAC;IACH,CAAC;IAED;;OAEG;IACH,KAAK;QACH,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;IACrB,CAAC;IAED;;OAEG;IACH,IAAI;QACF,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;IACzB,CAAC;CACF;AAED;;GAEG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG;IACvB,WAAW,EAAE,EAAE,GAAG,IAAI,EAAE,WAAW;IACnC,gBAAgB,EAAE,CAAC,GAAG,EAAE,GAAG,IAAI,EAAE,YAAY;IAC7C,WAAW,EAAE,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,SAAS;IACtC,SAAS,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,WAAW;IAC3C,QAAQ,EAAE,CAAC,GAAG,EAAE,GAAG,IAAI,EAAE,mCAAmC;IAC5D,wDAAwD;IACxD,aAAa,EAAE,EAAE,GAAG,IAAI,EAAE,WAAW;IACrC,8CAA8C;IAC9C,aAAa,EAAE,CAAC,GAAG,IAAI,EAAE,YAAY;CACtC,CAAC"}
@@ -0,0 +1,39 @@
1
+ /**
2
+ * Unified error handling for Polymarket SDK
3
+ */
4
+ export declare enum ErrorCode {
5
+ NETWORK_ERROR = "NETWORK_ERROR",
6
+ TIMEOUT = "TIMEOUT",
7
+ RATE_LIMITED = "RATE_LIMITED",
8
+ AUTH_FAILED = "AUTH_FAILED",
9
+ API_KEY_EXPIRED = "API_KEY_EXPIRED",
10
+ INVALID_SIGNATURE = "INVALID_SIGNATURE",
11
+ MARKET_NOT_FOUND = "MARKET_NOT_FOUND",
12
+ WALLET_NOT_FOUND = "WALLET_NOT_FOUND",
13
+ INVALID_RESPONSE = "INVALID_RESPONSE",
14
+ INSUFFICIENT_BALANCE = "INSUFFICIENT_BALANCE",
15
+ ORDER_REJECTED = "ORDER_REJECTED",
16
+ ORDER_FAILED = "ORDER_FAILED",
17
+ MARKET_CLOSED = "MARKET_CLOSED",
18
+ API_ERROR = "API_ERROR",
19
+ INTERNAL_ERROR = "INTERNAL_ERROR",
20
+ INVALID_CONFIG = "INVALID_CONFIG"
21
+ }
22
+ export declare class PolymarketError extends Error {
23
+ code: ErrorCode;
24
+ retryable: boolean;
25
+ originalError?: Error | undefined;
26
+ constructor(code: ErrorCode, message: string, retryable?: boolean, originalError?: Error | undefined);
27
+ /**
28
+ * Create error from HTTP response status
29
+ */
30
+ static fromHttpError(status: number, body?: unknown): PolymarketError;
31
+ }
32
+ /**
33
+ * Retry decorator for async functions
34
+ */
35
+ export declare function withRetry<T>(fn: () => Promise<T>, options?: {
36
+ maxRetries?: number;
37
+ delay?: number;
38
+ }): Promise<T>;
39
+ //# sourceMappingURL=errors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../../src/core/errors.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,oBAAY,SAAS;IAEnB,aAAa,kBAAkB;IAC/B,OAAO,YAAY;IACnB,YAAY,iBAAiB;IAG7B,WAAW,gBAAgB;IAC3B,eAAe,oBAAoB;IACnC,iBAAiB,sBAAsB;IAGvC,gBAAgB,qBAAqB;IACrC,gBAAgB,qBAAqB;IACrC,gBAAgB,qBAAqB;IAGrC,oBAAoB,yBAAyB;IAC7C,cAAc,mBAAmB;IACjC,YAAY,iBAAiB;IAC7B,aAAa,kBAAkB;IAG/B,SAAS,cAAc;IAGvB,cAAc,mBAAmB;IAGjC,cAAc,mBAAmB;CAClC;AAED,qBAAa,eAAgB,SAAQ,KAAK;IAE/B,IAAI,EAAE,SAAS;IAEf,SAAS,EAAE,OAAO;IAClB,aAAa,CAAC,EAAE,KAAK;gBAHrB,IAAI,EAAE,SAAS,EACtB,OAAO,EAAE,MAAM,EACR,SAAS,GAAE,OAAe,EAC1B,aAAa,CAAC,EAAE,KAAK,YAAA;IAM9B;;OAEG;IACH,MAAM,CAAC,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,eAAe;CAyCtE;AAED;;GAEG;AACH,wBAAsB,SAAS,CAAC,CAAC,EAC/B,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EACpB,OAAO,GAAE;IAAE,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAO,GACpD,OAAO,CAAC,CAAC,CAAC,CAoBZ"}